From 31a55f233b313030a787240b76c06f2d08cde29f Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 21 Oct 2012 18:37:15 -0400 Subject: [PATCH] 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. --- src/env/putenv.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 *)); -- 2.25.1