-
Notifications
You must be signed in to change notification settings - Fork 0
/
v9___setenv.c
38 lines (31 loc) · 871 Bytes
/
v9___setenv.c
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
28
29
30
31
32
33
34
35
36
37
38
#include "main.h"
int z_setenv(const char *name, const char *value, char **pnt3)
{
int i = 0;
char *new_var;
if (value == NULL)
{
value = "";
}
/* Check if the variable already exists and update it */
while (environ[i] != NULL)
{
if (z_strncmp(environ[i], name, strlen(name)) == 0)
{
/* Update the existing variable */
new_var = malloc(strlen(name) + strlen(value) + 2);
z_sprintf(new_var, "%s=%s", name, value);
environ[i] = new_var;
*pnt3 = new_var;
return 0;
}
i++;
}
/* If the variable doesn't exist, add a new one */
new_var = malloc(strlen(name) + strlen(value) + 2);
z_sprintf(new_var, "%s=%s", name, value);
environ[i++] = new_var;
environ[i] = NULL;
*pnt3 = new_var;
return 0;
}