-/* $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. */
else
{
int count = 1;
- int i;
+ int i, j;
uid_t *vector;
char *p = list;
while (*p != 0) if (*p++ == ':') count++;
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
{
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. */