Re: [exim] Exim 4.87 RC7 uploaded

Top Page
Delete this message
Reply to this message
Author: Heiko Schlittermann
Date:  
To: Mike Tubby
Subject: Re: [exim] Exim 4.87 RC7 uploaded
Mike Tubby <mike@???> (Fr 01 Apr 2016 23:16:19 CEST):
> 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 ...


src/buildconfig.c defines the SIZE_T_FMT macro, depending on your
platform. (Different platforms, different formats for displaying an
size_t/ssizt_t value).

For you platform it seems to be broken.

Plaese try to compile and run the attached short program.

    Best regards from Dresden/Germany
    Viele Grüße aus Dresden
    Heiko Schlittermann
-- 
 SCHLITTERMANN.de ---------------------------- internet & unix support -
 Heiko Schlittermann, Dipl.-Ing. (TU) - {fon,fax}: +49.351.802998{1,3} -
 gnupg encrypted messages are welcome --------------- key ID: F69376CE -
 ! key id 7CBF764A and 972EAC9F are revoked since 2015-01 ------------ -

#include <stdio.h>

int main(int argc, char **argv)
{

#if ! (__STDC_VERSION__ >= 199901L)
    size_t test_size_t = 0;
    ssize_t test_ssize_t = 0;
    unsigned long test_ulong_t = 0L;
#endif
    long test_long_t = 0;



#if __STDC_VERSION__ >= 199901L
    fprintf(stdout, "#define SIZE_T_FMT  \"%%zu\"\n");
    fprintf(stdout, "#define SSIZE_T_FMT  \"%%zd\"\n");
#else
    if (sizeof(test_size_t) > sizeof (test_ulong_t))
    fprintf(stdout, "#define SIZE_T_FMT  \"%%llu\"\n");
    else
    fprintf(stdout, "#define SIZE_T_FMT  \"%%lu\"\n");
    if (sizeof(test_ssize_t) > sizeof(test_long_t))
    fprintf(stdout, "#define SSIZE_T_FMT  \"%%lld\"\n");
else
    fprintf(stdout, "#define SSIZE_T_FMT  \"%%ld\"\n");
#endif


    return 0;


}