#include #include #include #include "libc.h" char *__strchrnul(const char *, int); static void dummy(char *p, char *r) {} weak_alias(dummy, __env_change); int __unsetenv(const char *name, size_t l, char **e) { for (; *e; e++) while (*e && !strncmp(name, *e, l) && l[*e] == '=') { char **ee = e, *tmp = *e; do *ee = *(ee+1); while (*++ee); __env_change(tmp, 0); } return 0; } int unsetenv(const char *name) { size_t l = __strchrnul(name, '=') - name; if (!l || name[l]) { errno = EINVAL; return -1; } if (!__environ) return 0; return __unsetenv(name, l, __environ); }