cURL / Mailing Lists / curl-library / Single Mail

curl-library

Windows build failures!

From: Steve Holme <steve_holme_at_hotmail.com>
Date: Sun, 29 Dec 2013 12:39:03 +0000

Dear friends,

The Windows auto build that Guenter runs are able to run our test suite as
it is compiled under MinGW32/MSYS on Windows 7.

For a while I have been wanting to try and get this build to run without any
failures. On and off over the last month or so I worked on a some fixes,
that I pushed yesterday, so that the NTLM tests will not run when curl is
compiled against Windows SSPI (as the Windows NTLM SSPI libraries generate
NTLM messages that are different to the native message creation). Long term
this is not the best fix but for now it gets the failure number down to 78.

At the moment I am guessing some of those failures are line ending related
(such as Test 100, 503, 540, etc...).

However, there are two other interesting failures that I noticed today.

1) ftpserver.pl seems to be returning certain FTP response codes with a
single LF rather than a CRLF combination. I believe this is limited to the
PASV and EPSV command responses but I wanted to confirm whether this is
correct or not (Please see: ftpserver.pl line 2577 and 2582).

2) The libcurl source output option (--libcurl) doesn't work properly under
Windows when generating curl_easy_setopt() code that contains a CURL_OFF_T -
Test 1402 for example generates:

curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)64d);

Rather than:

curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)16);

Please see:

http://curl.haxx.se/dev/log.cgi?id=20131229052601-32542#prob68

I have reproduced this under a normal Visual Studio 2010 build - as I don't
run MinGW32 myself.

I believe this happens because the built in sprintf() replacement functions
don't understand %I64d.

So should we consider adding support the Visual Studio format specifiers to
curl_msnprintf () which ultimately calls dprintf_formatf() or should we use
the "long long" format specifier in curlbuild.h?

For example replace the following at line 506:

# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_FORMAT_OFF_T "%I64d"

With:

# if !defined(ENABLE_CURLX_PRINTF)
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# else
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_FORMAT_OFF_T "%I64d"
# endif

Note: This doesn't change the definition of CURL_TYPEOF_CURL_OFF_T from
__int64 to long long.

This fixes the output on my system and I can quite quickly push a patch to
fix curlbuild.h.dist if need be.

Many thanks

Steve
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2013-12-29