Report compiler in -d -bV. Clang compat.
[exim.git] / src / src / buildconfig.c
index 3cd9b2924d5fbdfa03be3b4fc8a538bdda1d827d..56939770d1ae5dd11bec2a8d085679374e28aa41 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/buildconfig.c,v 1.18 2010/06/07 18:09:07 pdp Exp $ */
+/* $Cambridge: exim/src/src/buildconfig.c,v 1.21 2010/06/13 08:26:40 pdp Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -34,7 +34,6 @@ normally called independently. */
 
 
 #include <ctype.h>
-#include <inttypes.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -43,16 +42,16 @@ normally called independently. */
 #include <grp.h>
 
 typedef struct {
-  char *name;
+  const char *name;
   int *flag;
 } have_item;
 
 typedef struct {
-  char *name;
+  const char *name;
   char *data;
 } save_item;
 
-static char *db_opts[] = { "", "USE_DB", "USE_GDBM", "USE_TDB" };
+static const char *db_opts[] = { "", "USE_DB", "USE_GDBM", "USE_TDB" };
 
 static int have_ipv6 = 0;
 static int have_iconv = 0;
@@ -104,7 +103,7 @@ main(int argc, char **argv)
 {
 off_t test_off_t = 0;
 time_t test_time_t = 0;
-#if !(__STDC_VERSION__ >= 199901L) && !defined(PRIdMAX)
+#if ! (__STDC_VERSION__ >= 199901L)
 size_t test_size_t = 0;
 unsigned long test_ulong_t = 0L;
 #endif
@@ -187,14 +186,10 @@ with C99 not being ubiquitous yet.  Unfortunately. */
 #if __STDC_VERSION__ >= 199901L
 fprintf(new, "#define SIZE_T_FMT  \"%%zu\"\n");
 #else
-# ifdef PRIdMAX
-fprintf(new, "#define SIZE_T_FMT  \"%%" PRIdMAX "\"\n");
-# else
 if (sizeof(test_size_t) > sizeof (test_ulong_t))
   fprintf(new, "#define SIZE_T_FMT  \"%%llu\"\n");
 else
   fprintf(new, "#define SIZE_T_FMT  \"%%lu\"\n");
-# endif
 #endif
 
 /* Now search the makefile for certain settings */
@@ -532,8 +527,9 @@ while (fgets(buffer, sizeof(buffer), base) != NULL)
     steps to filter out the most obvious ones.  */
 
     if ((!uid_not_set && uid == 0) ||
-        (strcmp(username, "root") == 0) ||
-        (strcmp(username, "toor") == 0) )
+        ((username != NULL) && (
+          (strcmp(username, "root") == 0) ||
+          (strcmp(username, "toor") == 0) )))
       {
       printf("\n*** Exim's internal user must not be root.\n\n");
       return 1;
@@ -563,9 +559,9 @@ while (fgets(buffer, sizeof(buffer), base) != NULL)
     int isgroup = name[10] == 'G';
     uid_t uid = 0;
     gid_t gid = 0;
-    char *s;
-    char *username = NULL;
-    char *user = getenv(name);
+    const char *s;
+    const char *username = NULL;
+    const char *user = getenv(name);
 
     if (user == NULL) user = "";
     while (isspace((unsigned char)(*user))) user++;
@@ -606,8 +602,7 @@ while (fgets(buffer, sizeof(buffer), base) != NULL)
       while (isspace(*user)) user++;
       username = user;
       }
-
-    else if (isgroup)
+else if (isgroup)
       {
       struct group *gr = getgrnam(user);
       if (gr == NULL)
@@ -806,10 +801,13 @@ while (fgets(buffer, sizeof(buffer), base) != NULL)
         fprintf(new, "\"%s\"\n", value);
         }
 
-      /* Timezone values and HEADERS_CHARSET get quoted */
+      /* Timezone values HEADERS_CHARSET, TCP_WRAPPERS_DAEMON_NAME and
+      WHITELIST_D_MACROS get quoted */
 
       else if (strcmp(name, "TIMEZONE_DEFAULT") == 0||
-               strcmp(name, "HEADERS_CHARSET") == 0)
+               strcmp(name, "TCP_WRAPPERS_DAEMON_NAME") == 0||
+               strcmp(name, "HEADERS_CHARSET") == 0||
+              strcmp(name, "WHITELIST_D_MACROS") == 0)
         fprintf(new, "\"%s\"\n", value);
 
       /* For others, quote any paths and don't quote anything else */