From: Jim Meyering Date: Tue, 3 Jun 2003 08:29:41 +0000 (+0000) Subject: Avoid unnecessary copying of environment. X-Git-Tag: v5.0.1~408 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e53732b471a06467b7e8c7c16860a7f023770b4c;p=thirdparty%2Fcoreutils.git Avoid unnecessary copying of environment. (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. --- diff --git a/src/env.c b/src/env.c index 2db3ad6dd8..c6879aed54 100644 --- 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)