github.com/afumu/libc@v0.0.6/musl/src/env/unsetenv.c (about) 1 #include <stdlib.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <unistd.h> 5 6 static void dummy(char *old, char *new) {} 7 weak_alias(dummy, __env_rm_add); 8 9 int unsetenv(const char *name) 10 { 11 size_t l = __strchrnul(name, '=') - name; 12 if (!l || name[l]) { 13 errno = EINVAL; 14 return -1; 15 } 16 if (__environ) { 17 char **e = __environ, **eo = e; 18 for (; *e; e++) 19 //TODO if (!strncmp(name, *e, l) && l[*e] == '=') 20 if (!strncmp(name, *e, l) && (*e)[l] == '=') 21 __env_rm_add(*e, 0); 22 else if (eo != e) 23 *eo++ = *e; 24 else 25 eo++; 26 if (eo != e) *eo = 0; 27 } 28 return 0; 29 }