#include #include #include #include static void dummy(char *old, char *new) {} weak_alias(dummy, __env_rm_add); int unsetenv(const char *name) { size_t l = __strchrnul(name, '=') - name; if (!l || name[l]) { errno = EINVAL; return -1; } if (__environ) { char **e = __environ, **eo = e; for (; *e; e++) if (!strncmp(name, *e, l) && l[*e] == '=') __env_rm_add(*e, 0); else if (eo != e) *eo++ = *e; else eo++; if (eo != e) *eo = 0; } return 0; }