X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/35edf2ff67ad9fa5fc0e83bde865d807c297864f..c988f1f4faa9f679f79beddf3c14676c5dcb8e28:/src/src/buildconfig.c diff --git a/src/src/buildconfig.c b/src/src/buildconfig.c index f596ff827..6cc5e9abf 100644 --- a/src/src/buildconfig.c +++ b/src/src/buildconfig.c @@ -1,10 +1,10 @@ -/* $Cambridge: exim/src/src/buildconfig.c,v 1.2 2004/10/18 09:16:57 ph10 Exp $ */ +/* $Cambridge: exim/src/src/buildconfig.c,v 1.5 2005/01/04 10:00:42 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2004 */ +/* Copyright (c) University of Cambridge 1995 - 2005 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -584,7 +584,7 @@ while (fgets(buffer, sizeof(buffer), base) != NULL) else { int count = 1; - int i; + int i, j; uid_t *vector; char *p = list; while (*p != 0) if (*p++ == ':') count++; @@ -592,17 +592,22 @@ while (fgets(buffer, sizeof(buffer), base) != NULL) vector = malloc((count+1) * sizeof(uid_t)); vector[0] = (uid_t)count; - for (i = 1; i <= count; list++, i++) + for (i = 1, j = 0; i <= count; list++, i++) { char name[64]; + p = list; while (*list != 0 && *list != ':') list++; strncpy(name, p, list-p); name[list-p] = 0; - - if (name[strspn(name, "0123456789")] == 0) + + if (name[0] == 0) + { + continue; + } + else if (name[strspn(name, "0123456789")] == 0) { - vector[i] = (uid_t)atoi(name); + vector[j++] = (uid_t)atoi(name); } else { @@ -614,17 +619,29 @@ while (fgets(buffer, sizeof(buffer), base) != NULL) name); return 1; } - vector[i] = pw->pw_uid; + vector[j++] = pw->pw_uid; } } - fprintf(new, "#define FIXED_NEVER_USERS %d, ", count); - for (i = 1; i <= count - 1; i++) - fprintf(new, "%d, ", (unsigned int)vector[i]); - fprintf(new, "%d\n", (unsigned int)vector[i]); + fprintf(new, "#define FIXED_NEVER_USERS %d", j); + for (i = 0; i < j; i++) fprintf(new, ", %d", (unsigned int)vector[i]); + fprintf(new, "\n"); } continue; } + /* WITH_CONTENT_SCAN is another special case: it must be set if either it or + WITH_OLD_DEMIME is set. */ + + if (strcmp(name, "WITH_CONTENT_SCAN") == 0) + { + char *wcs = getenv("WITH_CONTENT_SCAN"); + char *wod = getenv("WITH_OLD_DEMIME"); + if (wcs != NULL || wod != NULL) + fprintf(new, "#define WITH_CONTENT_SCAN yes\n"); + else fprintf(new, "/* WITH_CONTENT_SCAN not set */\n"); + continue; + } + /* Otherwise, check whether a value exists in the environment. Remember if it is an AUTH setting or SUPPORT_CRYPTEQ. */