# But we include them only after the EXPRESSION has been evaluated.
m4_define([AC_LANG_INT_SAVE(C)],
[AC_LANG_PROGRAM([$1
-unsigned long conftestval () { return $2; }
+long longval () { return $2; }
+unsigned long ulongval () { return $2; }
@%:@include <stdio.h>
@%:@include <stdlib.h>],
[
FILE *f = fopen ("conftest.val", "w");
- if (f)
+ if (! f)
+ exit (1);
+ if (($2) < 0)
{
- unsigned long i = conftestval ();
- if (0 <= ($2) && i == ($2))
- {
- fprintf (f, "%lu\n", i);
- if (! ferror (f) && fclose (f) == 0)
- exit (0);
- }
+ long i = longval ();
+ if (i != ($2))
+ exit (1);
+ fprintf (f, "%ld\n", i);
}
- exit (1);
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ($2))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
])])