From c82be78035e536b2b2248be6d6f3cd5a995f11f1 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sat, 15 Aug 2015 09:09:57 -0500 Subject: Kylie McClain pointed out that env should clear variables with NAME= by itself. --- toys/posix/env.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'toys/posix/env.c') diff --git a/toys/posix/env.c b/toys/posix/env.c index f20517eb..87c25a01 100644 --- a/toys/posix/env.c +++ b/toys/posix/env.c @@ -24,16 +24,17 @@ extern char **environ; void env_main(void) { char **ev; - char *del = "="; if (toys.optflags) clearenv(); - for (ev = toys.optargs; *ev != NULL; ev++) { - char *env = strtok(*ev, del), *val = 0; + for (ev = toys.optargs; *ev; ev++) { + char *name = *ev, *val = strchr(name, '='); - if (env) val = strtok(0, del); - if (val) setenv(env, val, 1); - else xexec(ev); + if (val) { + *(val++) = 0; + if (*val) setenv(name, val, 1); + else unsetenv(name); + } else xexec(ev); } if (environ) for (ev = environ; *ev; ev++) xputs(*ev); -- cgit v1.2.3