aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/hush.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/shell/hush.c b/shell/hush.c
index a888332bc..6e36078c2 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -707,8 +707,7 @@ struct globals {
707#endif 707#endif
708 const char *ifs; 708 const char *ifs;
709 const char *cwd; 709 const char *cwd;
710 struct variable *top_var; /* = &G.shell_ver (set in main()) */ 710 struct variable *top_var;
711 struct variable shell_ver;
712 char **expanded_assignments; 711 char **expanded_assignments;
713#if ENABLE_HUSH_FUNCTIONS 712#if ENABLE_HUSH_FUNCTIONS
714 struct function *top_func; 713 struct function *top_func;
@@ -7337,6 +7336,7 @@ int hush_main(int argc, char **argv)
7337 unsigned builtin_argc; 7336 unsigned builtin_argc;
7338 char **e; 7337 char **e;
7339 struct variable *cur_var; 7338 struct variable *cur_var;
7339 struct variable shell_ver;
7340 7340
7341 INIT_G(); 7341 INIT_G();
7342 if (EXIT_SUCCESS) /* if EXIT_SUCCESS == 0, it is already done */ 7342 if (EXIT_SUCCESS) /* if EXIT_SUCCESS == 0, it is already done */
@@ -7345,12 +7345,13 @@ int hush_main(int argc, char **argv)
7345 G.argv0_for_re_execing = argv[0]; 7345 G.argv0_for_re_execing = argv[0];
7346#endif 7346#endif
7347 /* Deal with HUSH_VERSION */ 7347 /* Deal with HUSH_VERSION */
7348 G.shell_ver.flg_export = 1; 7348 memset(&shell_ver, 0, sizeof(shell_ver));
7349 G.shell_ver.flg_read_only = 1; 7349 shell_ver.flg_export = 1;
7350 shell_ver.flg_read_only = 1;
7350 /* Code which handles ${var<op>...} needs writable values for all variables, 7351 /* Code which handles ${var<op>...} needs writable values for all variables,
7351 * therefore we xstrdup: */ 7352 * therefore we xstrdup: */
7352 G.shell_ver.varstr = xstrdup(hush_version_str), 7353 shell_ver.varstr = xstrdup(hush_version_str),
7353 G.top_var = &G.shell_ver; 7354 G.top_var = &shell_ver;
7354 /* Create shell local variables from the values 7355 /* Create shell local variables from the values
7355 * currently living in the environment */ 7356 * currently living in the environment */
7356 debug_printf_env("unsetenv '%s'\n", "HUSH_VERSION"); 7357 debug_printf_env("unsetenv '%s'\n", "HUSH_VERSION");
@@ -7369,8 +7370,8 @@ int hush_main(int argc, char **argv)
7369 e++; 7370 e++;
7370 } 7371 }
7371 /* (Re)insert HUSH_VERSION into env (AFTER we scanned the env!) */ 7372 /* (Re)insert HUSH_VERSION into env (AFTER we scanned the env!) */
7372 debug_printf_env("putenv '%s'\n", G.shell_ver.varstr); 7373 debug_printf_env("putenv '%s'\n", shell_ver.varstr);
7373 putenv(G.shell_ver.varstr); 7374 putenv(shell_ver.varstr);
7374 7375
7375 /* Export PWD */ 7376 /* Export PWD */
7376 set_pwd_var(/*exp:*/ 1); 7377 set_pwd_var(/*exp:*/ 1);