svn commit: trunk/busybox/coreutils

vda at busybox.net vda at busybox.net
Tue Nov 11 21:32:39 UTC 2008


Author: vda
Date: 2008-11-11 13:32:39 -0800 (Tue, 11 Nov 2008)
New Revision: 24005

Log:
env: support -uVAR=VAL

function                                             old     new   delta
env_main                                             245     233     -12



Modified:
   trunk/busybox/coreutils/env.c


Changeset:
Modified: trunk/busybox/coreutils/env.c
===================================================================
--- trunk/busybox/coreutils/env.c	2008-11-11 21:15:56 UTC (rev 24004)
+++ trunk/busybox/coreutils/env.c	2008-11-11 21:32:39 UTC (rev 24005)
@@ -43,8 +43,6 @@
 int env_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int env_main(int argc UNUSED_PARAM, char **argv)
 {
-	/* cleanenv was static - why? */
-	char *cleanenv[1];
 	char **ep;
 	unsigned opt;
 	llist_t *unset_env = NULL;
@@ -60,13 +58,17 @@
 		++argv;
 	}
 	if (opt & 1) {
-		cleanenv[0] = NULL;
-		environ = cleanenv;
-	} else {
-		while (unset_env) {
-			unsetenv(llist_pop(&unset_env));
-		}
+		clearenv();
 	}
+	while (unset_env) {
+		char *var = llist_pop(&unset_env);
+		/* This does not handle -uVAR=VAL
+		 * (coreutils _sets_ the variable in that case): */
+		/*unsetenv(var);*/
+		/* This does, but uses somewhan undocumented feature that
+		 * putenv("name_without_equal_sign") unsets the variable: */
+		putenv(var);
+	}
 
 	while (*argv && (strchr(*argv, '=') != NULL)) {
 		if (putenv(*argv) < 0) {




More information about the busybox-cvs mailing list