diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-11-11 21:32:39 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-11-11 21:32:39 +0000 |
commit | f3c2d1360222f54126e5b0322ae4f8c1853e4782 (patch) | |
tree | 922edc5329bfbc6be1fefce85b8f95daea70cf7d | |
parent | 618a3027edbfd42e52bfd7680cd24affe7a29b4c (diff) | |
download | busybox-w32-f3c2d1360222f54126e5b0322ae4f8c1853e4782.tar.gz busybox-w32-f3c2d1360222f54126e5b0322ae4f8c1853e4782.tar.bz2 busybox-w32-f3c2d1360222f54126e5b0322ae4f8c1853e4782.zip |
env: support -uVAR=VAL
function old new delta
env_main 245 233 -12
-rw-r--r-- | coreutils/env.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/coreutils/env.c b/coreutils/env.c index 2f8c8b71d..f50a03e8b 100644 --- a/coreutils/env.c +++ b/coreutils/env.c | |||
@@ -43,8 +43,6 @@ static const char env_longopts[] ALIGN1 = | |||
43 | int env_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 43 | int env_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
44 | int env_main(int argc UNUSED_PARAM, char **argv) | 44 | int env_main(int argc UNUSED_PARAM, char **argv) |
45 | { | 45 | { |
46 | /* cleanenv was static - why? */ | ||
47 | char *cleanenv[1]; | ||
48 | char **ep; | 46 | char **ep; |
49 | unsigned opt; | 47 | unsigned opt; |
50 | llist_t *unset_env = NULL; | 48 | llist_t *unset_env = NULL; |
@@ -60,12 +58,16 @@ int env_main(int argc UNUSED_PARAM, char **argv) | |||
60 | ++argv; | 58 | ++argv; |
61 | } | 59 | } |
62 | if (opt & 1) { | 60 | if (opt & 1) { |
63 | cleanenv[0] = NULL; | 61 | clearenv(); |
64 | environ = cleanenv; | 62 | } |
65 | } else { | 63 | while (unset_env) { |
66 | while (unset_env) { | 64 | char *var = llist_pop(&unset_env); |
67 | unsetenv(llist_pop(&unset_env)); | 65 | /* This does not handle -uVAR=VAL |
68 | } | 66 | * (coreutils _sets_ the variable in that case): */ |
67 | /*unsetenv(var);*/ | ||
68 | /* This does, but uses somewhan undocumented feature that | ||
69 | * putenv("name_without_equal_sign") unsets the variable: */ | ||
70 | putenv(var); | ||
69 | } | 71 | } |
70 | 72 | ||
71 | while (*argv && (strchr(*argv, '=') != NULL)) { | 73 | while (*argv && (strchr(*argv, '=') != NULL)) { |