5 static void dummy(char *old
, char *new) {}
6 weak_alias(dummy
, __env_rm_add
);
8 int __putenv(char *s
, size_t l
, char *r
)
12 for (char **e
= __environ
; *e
; e
++, i
++)
13 if (!strncmp(s
, *e
, l
+1)) {
22 if (__environ
== oldenv
) {
23 newenv
= realloc(oldenv
, sizeof *newenv
* (i
+2));
24 if (!newenv
) goto oom
;
26 newenv
= malloc(sizeof *newenv
* (i
+2));
27 if (!newenv
) goto oom
;
28 if (i
) memcpy(newenv
, __environ
, sizeof *newenv
* i
);
33 __environ
= oldenv
= newenv
;
34 if (r
) __env_rm_add(0, r
);
43 size_t l
= __strchrnul(s
, '=') - s
;
44 if (!l
|| !s
[l
]) return unsetenv(s
);
45 return __putenv(s
, l
, 0);