X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fenvironment.c;h=9d3d126a693629ad7358ac9963dcf39ff4d96fe2;hb=9c5e54499afef5167bee6ecdcbf8dd5f023f51e0;hp=c41d19ebac552ac233738a07dcf6756075ed20f6;hpb=2478dbdfba7cf729ddee43a5a77bde8c25ccdede;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/environment.c b/src/src/environment.c index c41d19eba..9d3d126a6 100644 --- a/src/src/environment.c +++ b/src/src/environment.c @@ -9,9 +9,7 @@ #include "exim.h" -#ifndef environ extern char **environ; -#endif /* The cleanup_environment() function is used during the startup phase of the Exim process, right after reading the configurations main @@ -39,34 +37,32 @@ if (!keep_environment || *keep_environment == '\0') } else if (Ustrcmp(keep_environment, "*") != 0) - { - uschar **p; - if (environ) for (p = USS environ; *p; /* see below */) + if (environ) for (uschar ** p = USS environ; *p; /* see below */) { /* It's considered broken if we do not find the '=', according to Florian Weimer. For now we ignore such strings. unsetenv() would complain, getenv() would complain. */ - uschar *eqp = Ustrchr(*p, '='); + uschar * eqp = Ustrchr(*p, '='); if (eqp) { - uschar *name = string_copyn(*p, eqp - *p); + uschar * name = string_copyn(*p, eqp - *p); + if (OK != match_isinlist(name, CUSS &keep_environment, 0, NULL, NULL, MCL_NOEXPAND, FALSE, NULL)) - if (unsetenv(CS name) < 0) return FALSE; + if (os_unsetenv(name) < 0) return FALSE; else p = USS environ; /* RESTART from the beginning */ else p++; store_reset(name); } } - } if (add_environment) { - uschar *p; + uschar * p; int sep = 0; - const uschar* envlist = add_environment; - while ((p = string_nextinlist(&envlist, &sep, NULL, 0))) - putenv(CS p); + const uschar * envlist = add_environment; + + while ((p = string_nextinlist(&envlist, &sep, NULL, 0))) putenv(CS p); } return TRUE;