| OLD | NEW | 
|---|
| 1 #include <stdlib.h> | 1 #include <stdlib.h> | 
| 2 #include <string.h> | 2 #include <string.h> | 
| 3 #include <errno.h> | 3 #include <errno.h> | 
| 4 | 4 | 
| 5 extern char **__environ; | 5 extern char** __environ; | 
| 6 extern char **__env_map; | 6 extern char** __env_map; | 
| 7 | 7 | 
| 8 int unsetenv(const char *name) | 8 int unsetenv(const char* name) { | 
| 9 { | 9   int i, j; | 
| 10 »       int i, j; | 10   size_t l = strlen(name); | 
| 11 »       size_t l = strlen(name); |  | 
| 12 | 11 | 
| 13 »       if (!*name || strchr(name, '=')) { | 12   if (!*name || strchr(name, '=')) { | 
| 14 »       »       errno = EINVAL; | 13     errno = EINVAL; | 
| 15 »       »       return -1; | 14     return -1; | 
| 16 »       } | 15   } | 
| 17 again: | 16 again: | 
| 18 »       for (i=0; __environ[i] && (memcmp(name, __environ[i], l) || __environ[i]
    [l] != '='); i++); | 17   for (i = 0; __environ[i] && | 
| 19 »       if (__environ[i]) { | 18               (memcmp(name, __environ[i], l) || __environ[i][l] != '='); | 
| 20 »       »       if (__env_map) { | 19        i++) | 
| 21 »       »       »       for (j=0; __env_map[j] && __env_map[j] != __environ[i]; 
    j++); | 20     ; | 
| 22 »       »       »       free (__env_map[j]); | 21   if (__environ[i]) { | 
| 23 »       »       »       for (; __env_map[j]; j++) | 22     if (__env_map) { | 
| 24 »       »       »       »       __env_map[j] = __env_map[j+1]; | 23       for (j = 0; __env_map[j] && __env_map[j] != __environ[i]; j++) | 
| 25 »       »       } | 24         ; | 
| 26 »       »       for (; __environ[i]; i++) | 25       free(__env_map[j]); | 
| 27 »       »       »       __environ[i] = __environ[i+1]; | 26       for (; __env_map[j]; j++) | 
| 28 »       »       goto again; | 27         __env_map[j] = __env_map[j + 1]; | 
| 29 »       } | 28     } | 
| 30 »       return 0; | 29     for (; __environ[i]; i++) | 
|  | 30       __environ[i] = __environ[i + 1]; | 
|  | 31     goto again; | 
|  | 32   } | 
|  | 33   return 0; | 
| 31 } | 34 } | 
| OLD | NEW | 
|---|