From: Rich Felker Date: Sun, 21 Oct 2012 22:37:15 +0000 (-0400) Subject: as an extension, have putenv("VAR") behave as unsetenv("VAR") X-Git-Tag: v0.9.7~13 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=31a55f233b313030a787240b76c06f2d08cde29f;p=oweals%2Fmusl.git 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. --- diff --git a/src/env/putenv.c b/src/env/putenv.c index 181a4181..d141db13 100644 --- a/src/env/putenv.c +++ b/src/env/putenv.c @@ -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 *));