cURL / Mailing Lists / curl-library / Single Mail


Re: curl_endian using int64 with out checking curl_config.h

From: John E. Malmberg <>
Date: Sun, 18 Jan 2015 13:03:11 -0600

On 1/18/2015 10:36 AM, Steve Holme wrote:
> On Sun, 18 Jan 2015, John E. Malmberg wrote:
>> The assumption is that if the compiler does not have long long,
>> that it has __int64. I do not see a test in config.h for __int64.
> That is in the function Curl_ntlm_core_mk_ntlmv2_resp() which is
> only included if USE_NTLM_V2 is not zero which won't be the case when 64-bit
> integers aren't supported due to the following in the header file:
> #define USE_NTLM_V2 1
> #endif
>> I discovered that a new option had been added to configure that
>> needed to be disabled on VAX since the external libraries to
>> support NTLM have not been ported to VAX.

In packages/vms/

$write cvh "#ifndef __VAX"
$write cvh "#ifdef CURL_DISABLE_NTLM"
$write cvh "#undef CURL_DISABLE_NTLM"
$write cvh "#endif"
$write cvh "#else"
$! NTLM needs long long or int64 support, missing from DECC C.
$write cvh "#ifdef __DECC
$write cvh "#ifndef CURL_DISABLE_NTLM"
$write cvh "#define CURL_DISABLE_NTLM 1"
$write cvh "#endif"
$write cvh "#endif"
$write cvh "#endif"

This is what I had to add for VAX to compile lib/curl_ntlm_core.c for
the daily build back in the November/December time frame where I
submitted the patch.

I have not checked if it is still needed for 7.40.0.

> Yes - we added support for SMB in v7.40.0. However, all the SMB code
> is disabled when NTLM is not available.
> If you had to explicitly disable SMB I would consider that a bug -
> which we should try and identify and fix.

I did not have to do anything for SMB.

> Any assistance / additional info you can provide on a possible
> configure bug would be very much appreciated.

VMS does not typically run the configure script. While it is possible
with GNV (GNU on VMS) for Alpha and Itanium, not enough of GNV works on
VAX to use it.

On VMS, configure is done by two DCL scripts. The first script,
lib/curl_ntlm_core.c, is custom written to know what VMS can not figure
out from reading the file to generate a config_vms.h

The second script, reads the file and then
scans the header files, shared libraries, and the configure script to
build the curl_config.h with includes the config_vms.h as a last step.
The is shared with multiple projects.

The file that processes scans the configure script to guess
the defaults for symbols that are only defined in the configure script
and takes the first value assigned to that symbol. For curl that
usually defaults to enabling the build option, so the first script has
to know which to override for a platform.

On my Alpha systems, the DCL scripts run more than an order of magnitude
faster than the configure script, so that is what is normally used.

Personal Opinion Only
List admin:
Received on 2015-01-18