From 6c2179059550ac8e9db87c119bc01b8b2959d2ff Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sun, 5 Dec 2004 18:09:31 +0000 Subject: [PATCH] Fix bug with SHELL handling: make sure the variable struct is initialized. --- ChangeLog | 5 +++++ main.c | 5 +++-- make.h | 2 -- variable.c | 16 +++++++--------- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index a30f9892..fe318e7c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-12-01 Paul D. Smith + + * main.c (main): Change char* env_shell to struct variable shell_var. + * variable.c (target_environment): Use new shell_var. + 2004-11-30 Paul D. Smith * configure.in: The old way we avoided creating build.sh from diff --git a/main.c b/main.c index 763fd546..10869085 100644 --- a/main.c +++ b/main.c @@ -266,7 +266,7 @@ int rebuilding_makefiles = 0; /* Remember the original value of the SHELL variable, from the environment. */ -const char *env_shell = 0; +struct variable shell_var; /* The usage output. We write it this way to make life easier for the @@ -1084,7 +1084,8 @@ main (int argc, char **argv, char **envp) if (strncmp (envp[i], "SHELL=", 6) == 0) { v->export = v_noexport; - env_shell = xstrdup (ep + 1); + shell_var.name = "SHELL"; + shell_var.value = xstrdup (ep + 1); } } } diff --git a/make.h b/make.h index 55dcc215..ad46e1f8 100644 --- a/make.h +++ b/make.h @@ -496,8 +496,6 @@ extern int print_version_flag, print_directory_flag; extern int warn_undefined_variables_flag, posix_pedantic, not_parallel; extern int clock_skew_detected, rebuilding_makefiles; -extern const char *env_shell; - /* can we run commands via 'sh -c xxx' or must we use batch files? */ extern int batch_mode_shell; diff --git a/variable.c b/variable.c index 8398d18b..495aef45 100644 --- a/variable.c +++ b/variable.c @@ -807,11 +807,6 @@ target_environment (struct file *file) struct variable makelevel_key; char **result_0; char **result; - struct variable ev; - - /* Set up a fake variable struct for the original SHELL value. */ - ev.name = "SHELL"; - ev.value = env_shell; if (file == 0) set_list = current_variable_set_list; @@ -868,12 +863,15 @@ target_environment (struct file *file) break; case v_noexport: - if (!streq (v->name, "SHELL")) - continue; /* If this is the SHELL variable and it's not exported, then add the value from our original environment. */ - v = &ev; - break; + if (streq (v->name, "SHELL")) + { + extern struct variable shell_var; + v = &shell_var; + break; + } + continue; case v_ifset: if (v->origin == o_default)