summaryrefslogtreecommitdiffhomepage
path: root/coreutils/env.c
diff options
context:
space:
mode:
Diffstat (limited to 'coreutils/env.c')
-rw-r--r--coreutils/env.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/coreutils/env.c b/coreutils/env.c
index 7be0c63a5..f47d450c5 100644
--- a/coreutils/env.c
+++ b/coreutils/env.c
@@ -44,8 +44,8 @@ static const struct option env_long_options[] = {
int env_main(int argc, char** argv);
int env_main(int argc, char** argv)
{
- static char *cleanenv[1] = { NULL };
-
+ /* cleanenv was static - why? */
+ char *cleanenv[1];
char **ep;
unsigned opt;
llist_t *unset_env = NULL;
@@ -55,18 +55,16 @@ int env_main(int argc, char** argv)
#if ENABLE_FEATURE_ENV_LONG_OPTIONS
applet_long_options = env_long_options;
#endif
-
opt = getopt32(argc, argv, "+iu:", &unset_env);
-
argv += optind;
if (*argv && LONE_DASH(argv[0])) {
opt |= 1;
++argv;
}
-
- if (opt & 1)
+ if (opt & 1) {
+ cleanenv[0] = NULL;
environ = cleanenv;
- else if (opt & 2) {
+ } else if (opt & 2) {
while (unset_env) {
unsetenv(unset_env->data);
unset_env = unset_env->link;