From d27cac1598207e9bfc3ffb47c7e609360b83ca69 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sun, 28 Nov 2004 16:58:51 +0000 Subject: Fix WINDOWS32 bug #11155 with patch from Alessandro Vesely. --- ChangeLog | 6 ++++++ main.c | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4620aa2..6ec8a1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-11-28 Paul D. Smith + + * main.c (find_and_set_default_shell) [WINDOWS32]: check for + equality of "cmd"/"cmd.exe", not inequality. Fixes bug #11155. + Patch by Alessandro Vesely. + 2004-11-12 Paul D. Smith * job.c (child_execute_job) [VMS]: Don't treat "#" as a comment on diff --git a/main.c b/main.c index 5cb387f..ca6318b 100644 --- a/main.c +++ b/main.c @@ -718,11 +718,11 @@ find_and_set_default_shell (char *token) if (((tokend == search_token || (tokend > search_token && (tokend[-1] == '/' || tokend[-1] == '\\'))) - && strcmpi (tokend, "cmd")) + && !strcmpi (tokend, "cmd")) || ((tokend - 4 == search_token || (tokend - 4 > search_token && (tokend[-5] == '/' || tokend[-5] == '\\'))) - && strcmpi (tokend - 4, "cmd.exe"))) { + && !strcmpi (tokend - 4, "cmd.exe"))) { batch_mode_shell = 1; unixy_shell = 0; sh_found = 0; @@ -1071,8 +1071,11 @@ main (int argc, char **argv, char **envp) We used to rely on target_environment's v_default code to do this. But that does not work for the case where an environment variable is redefined in a makefile with `override'; it should then still - be exported, because it was originally in the environment. */ - ->export = v_export; + be exported, because it was originally in the environment. + Another wrinkle is that POSIX says the value of SHELL set in the + makefile should not change the value of SHELL given to + subprocesses, which seems silly to me but... */ + ->export = strncmp(envp[i], "SHELL=", 6) ? v_noexport : v_export; } #ifdef WINDOWS32 /* -- cgit v1.2.3