blob: 0d817b32af67de173a3849d8bf0b10ffedc93013 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
int put_env(const char *string) {
unsigned int len, envc, remove=0;
char **ep;
len=str_chr(string,'=');
if (string[len]==0) remove=1;
for (envc=0, ep=environ; *ep; ++ep) {
if (!byte_diff(string, len, *ep) && (*ep)[len]=='=') {
if (remove) {
for (; ep[1]; ++ep) ep[0]=ep[1];
ep[0]=0;
++env_free;
return 0;
}
*ep=(char *)string;
return 0;
}
++envc;
}
if (remove==0) {
if (env_free==0) return -1;
environ[envc++]=(char*)string;
environ[envc]=0;
--env_free;
}
return 0;
}
|