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;
}