1 #include <stdlib.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <unistd.h> 5 #ifndef __LITEOS__ 6 #include "param_check.h" 7 #endif 8 dummy(char * old,char * new)9static void dummy(char *old, char *new) {} 10 weak_alias(dummy, __env_rm_add); 11 unsetenv(const char * name)12int unsetenv(const char *name) 13 { 14 #ifndef __LITEOS__ 15 PARAM_CHECK(name); 16 #endif 17 size_t l = __strchrnul(name, '=') - name; 18 if (!l || name[l]) { 19 errno = EINVAL; 20 return -1; 21 } 22 if (__environ) { 23 char **e = __environ, **eo = e; 24 for (; *e; e++) 25 if (!strncmp(name, *e, l) && l[*e] == '=') 26 __env_rm_add(*e, 0); 27 else if (eo != e) 28 *eo++ = *e; 29 else 30 eo++; 31 if (eo != e) *eo = 0; 32 } 33 return 0; 34 } 35