]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
Avoid unnecessary copying of environment.
authorJim Meyering <jim@meyering.net>
Tue, 3 Jun 2003 08:29:41 +0000 (08:29 +0000)
committerJim Meyering <jim@meyering.net>
Tue, 3 Jun 2003 08:29:41 +0000 (08:29 +0000)
(main): Rather than clearing the environment and --
unless told to ignore environment -- copying all settings from
the saved, original environment, clear the environment only when
that is requested.  Suggested by Jens Elkner.

src/env.c

index 2db3ad6dd8b5aa5e992fd2e796b01ba9719cc552..c6879aed541fb5d4d0824575cfd756be738b2a0b 100644 (file)
--- a/src/env.c
+++ b/src/env.c
@@ -139,7 +139,6 @@ A mere - implies -i.  If no COMMAND, print the resulting environment.\n\
 int
 main (register int argc, register char **argv, char **envp)
 {
-  char *dummy_environ[1];
   int optc;
   int ignore_environment = 0;
 
@@ -171,12 +170,11 @@ main (register int argc, register char **argv, char **envp)
   if (optind < argc && !strcmp (argv[optind], "-"))
     ignore_environment = 1;
 
-  environ = dummy_environ;
-  environ[0] = NULL;
-
-  if (!ignore_environment)
-    for (; *envp; envp++)
-      putenv (*envp);
+  if (ignore_environment)
+    {
+      static char *dummy_environ[] = { NULL };
+      environ = dummy_environ;
+    }
 
   optind = 0;                  /* Force GNU getopt to re-initialize. */
   while ((optc = getopt_long (argc, argv, "+iu:", longopts, NULL)) != -1)