• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)9 static void dummy(char *old, char *new) {}
10 weak_alias(dummy, __env_rm_add);
11 
unsetenv(const char * name)12 int 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