#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 = __strchrnul(name, '=') - name; if (!l || name[l]) { errno = EINVAL; return -1; } if (!__environ) return 0; for (char **e = __environ; *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; }