as an extension, have putenv("VAR") behave as unsetenv("VAR")
[musl] / src / env / putenv.c
index 181a418..d141db1 100644 (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 *));