as an extension, have putenv("VAR") behave as unsetenv("VAR")

the behavior of putenv is left undefined if the argument does not
contain an equal sign, but traditional implementations behave this way
and gnulib replaces putenv if it doesn't do this.
This commit is contained in:
Rich Felker
2012-10-21 18:37:15 -04:00
parent 8489897e01
commit 31a55f233b

10
src/env/putenv.c vendored
View File

@ -9,14 +9,14 @@ char **__env_map;
int __putenv(char *s, int a)
{
int i=0, j=0;
char *end = strchr(s, '=');
size_t l = end-s+1;
char *z = strchr(s, '=');
char **newenv = 0;
char **newmap = 0;
static char **oldenv;
if (!end || l == 1) return -1;
for (; __environ[i] && memcmp(s, __environ[i], l); i++);
if (!z) return unsetenv(s);
if (z==s) return -1;
for (; __environ[i] && memcmp(s, __environ[i], z-s+1); i++);
if (a) {
if (!__env_map) {
__env_map = calloc(2, sizeof(char *));