Right,
I've spent a couple of CPU cycles on this... according to Stack Exchange
there 's a "%z" modifier for format that is supported in C99 onwards
that gives the correct results for size_t on both 32-bit and 64-bit
platforms:
http://stackoverflow.com/questions/2524611/how-can-one-print-a-size-t-variable-portably-using-the-printf-family
Mike
On 01/04/2016 22:16, Mike Tubby wrote:
> Exim 4.87-RC7 doesn't compile clean on:
>
> Ubuntu 14.04 LTS 32-bit
>
> we have several 'format' errors - possibly as a result of "unisgned
> int" being loosly constrained and able to be 64-bit on 64-bit machines
> but actually being 32-bit on this platform?
>
> I've not looked at the code in question but the error messages appear
> to suggest that we need to use size_t or an appropriate cast ...
>
> Mike
>
>
>
> gcc readconf.c
> readconf.c: In function ‘read_macro_assignment’:
> readconf.c:585:7: warning: format ‘%lu’ expects argument of type ‘long
> unsigned int’, but argument 4 has type ‘unsigned int’ [-Wformat=]
> "macro name too long (maximum is " SIZE_T_FMT " characters)",
> sizeof(name) - 1);
> ^
> gcc receive.c
> gcc retry.c
> gcc rewrite.c
> gcc rfc2047.c
> gcc route.c
> gcc search.c
> gcc sieve.c
> gcc smtp_in.c
> gcc smtp_out.c
> gcc spool_in.c
> gcc spool_out.c
> gcc std-crypto.c
> gcc store.c
> gcc string.c
> string.c: In function ‘string_sprintf’:
> string.c:722:5: warning: format ‘%lu’ expects argument of type ‘long
> unsigned int’, but argument 4 has type ‘unsigned int’ [-Wformat=]
> sizeof(buffer), format, buffer);
> ^
> gcc tls.c
> gcc tod.c
> gcc transport.c
> gcc tree.c
>
>
>
>
>
>
>
>
>
>
> On 01/04/2016 22:01, Odhiambo Washington wrote:
>> On 1 April 2016 at 22:46, Jeremy Harris <jgh@???> wrote:
>>
>>> On 01/04/16 20:17, Odhiambo Washington wrote:
>>>> [wash@gw ~/Tools/Exim]$ git clone git://git.exim.org/exim-src.git
>>>> Cloning into exim-src...
>>>> fatal: remote error: access denied or repository not exported:
>>>> /exim-src.git
>>>
>>> git clone git://git.exim.org/exim.git
>>>
>>>
>> Thank you.
>>
>> It's almost clean now, with one exception:
>>
>> ...
>> gcc cdb.c
>> cdb.c: In function 'cdb_find':
>> cdb.c:301: warning: passing argument 1 of 'cdb_hash' discards qualifiers
>> from pointer target type
>> gcc dbmdb.c
>> ...
>>
>>
>>
>>
>
>