version 1.3, 2016/06/27 15:41:17 |
version 1.4, 2016/07/10 03:24:31 |
|
|
struct envnode *node; |
struct envnode *node; |
const char *e, *eq; |
const char *e, *eq; |
size_t len; |
size_t len; |
char keybuf[1024]; |
char name[1024]; |
|
|
e = environ[i]; |
e = environ[i]; |
|
|
|
|
if ((eq = strchr(e, '=')) == NULL || eq == e) |
if ((eq = strchr(e, '=')) == NULL || eq == e) |
continue; |
continue; |
len = eq - e; |
len = eq - e; |
if (len > sizeof(keybuf) - 1) |
if (len > sizeof(name) - 1) |
continue; |
continue; |
memcpy(keybuf, e, len); |
memcpy(name, e, len); |
keybuf[len] = '\0'; |
name[len] = '\0'; |
|
|
node = createnode(keybuf, eq + 1); |
node = createnode(name, eq + 1); |
if (RB_INSERT(envtree, &env->root, node)) { |
if (RB_INSERT(envtree, &env->root, node)) { |
/* ignore any later duplicates */ |
/* ignore any later duplicates */ |
freenode(node); |
freenode(node); |