hush: revert a recent buggy change which resulted in two HUSH_VERSIONs
authorDenys Vlasenko <dvlasenk@redhat.com>
Mon, 6 Sep 2010 10:10:51 +0000 (12:10 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Mon, 6 Sep 2010 10:10:51 +0000 (12:10 +0200)
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
shell/hush.c

index 991737c5986af48144f9027b54608ca7991400ca..541962470d215c49c60e4bc42cc9f2b3b14b2ddc 100644 (file)
@@ -7329,14 +7329,10 @@ int hush_main(int argc, char **argv)
         * therefore we xstrdup: */
        G.shell_ver.varstr = xstrdup(hush_version_str),
        G.top_var = &G.shell_ver;
+       /* Create shell local variables from the values
+        * currently living in the environment */
        debug_printf_env("unsetenv '%s'\n", "HUSH_VERSION");
        unsetenv("HUSH_VERSION"); /* in case it exists in initial env */
-       /* reinstate HUSH_VERSION in environment */
-       debug_printf_env("putenv '%s'\n", G.shell_ver.varstr);
-       putenv(G.shell_ver.varstr);
-
-       /* Initialize our shell local variables with the values
-        * currently living in the environment */
        cur_var = G.top_var;
        e = environ;
        if (e) while (*e) {
@@ -7350,6 +7346,9 @@ int hush_main(int argc, char **argv)
                }
                e++;
        }
+       /* (Re)insert HUSH_VERSION into env (AFTER we scanned the env!) */
+       debug_printf_env("putenv '%s'\n", G.shell_ver.varstr);
+       putenv(G.shell_ver.varstr);
 
        /* Export PWD */
        set_pwd_var(/*exp:*/ 1);