_ISOC99_SOURCE broke build on Linux (Ubuntu 11.10) because it broke <resolv.h>, <arpa/nameser.h>, etc.
Their u_char and u_int usage relies upon BSD source being enabled too. So use _GNU_SOURCE.
PP/35 Pull in <features.h> on Linux, for some portability edge-cases of
64-bit ${eval} (JH/03).
-PP/36 Define _ISOC99_SOURCE in exim.h; it's needed for some releases of
+PP/36 Define _GNU_SOURCE in exim.h; it's needed for some releases of
GNU libc to support some of the 64-bit stuff, should not lead to
conflicts. Defined before os.h is pulled in, so if a given platform
needs to override this, it can.
#define HAVE_SRANDOM
/* This is primarily for the Gnu C library; we define it before os.h so that
-os.h has a chance to hurriedly undef it, Just In Case. */
+os.h has a chance to hurriedly undef it, Just In Case. We need C99 for some
+64-bit math support, and defining _ISOC99_SOURCE breaks <resolv.h> and friends.
+*/
-#define _ISOC99_SOURCE 1
+#define _GNU_SOURCE 1
/* First of all include the os-specific header, which might set things that
are needed by any of the other headers, including system headers. */