mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-26 14:00:55 +00:00
Fix bug with SHELL handling: make sure the variable struct is initialized.
This commit is contained in:
parent
6c9e53d648
commit
6c21790595
4 changed files with 15 additions and 13 deletions
|
@ -1,3 +1,8 @@
|
|||
2004-12-01 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
* 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 <psmith@gnu.org>
|
||||
|
||||
* configure.in: The old way we avoided creating build.sh from
|
||||
|
|
5
main.c
5
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
2
make.h
2
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;
|
||||
|
||||
|
|
16
variable.c
16
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)
|
||||
|
|
Loading…
Reference in a new issue