mirror of
https://github.com/mirror/make.git
synced 2025-02-04 16:51:12 +08:00
function.c (func_shell) [WINDOWS32]: Reset just_print_flag
around the call to construct_command_argv, so that a temporary batch file _is_ created when needed for $(shell). Fixes Savannah bug #16362.
This commit is contained in:
parent
8f029808af
commit
b6b6875986
@ -1,3 +1,10 @@
|
|||||||
|
2010-08-07 Eli Zaretskii <eliz@gnu.org>
|
||||||
|
|
||||||
|
* function.c (func_shell) [WINDOWS32]: Reset just_print_flag
|
||||||
|
around the call to construct_command_argv, so that a temporary
|
||||||
|
batch file _is_ created when needed for $(shell). Fixes Savannah
|
||||||
|
bug #16362.
|
||||||
|
|
||||||
2010-08-07 Juan Manuel Guerrero <juan.guerrero@gmx.de>
|
2010-08-07 Juan Manuel Guerrero <juan.guerrero@gmx.de>
|
||||||
|
|
||||||
* configh.dos.template (HAVE_STRNCASECMP): Define.
|
* configh.dos.template (HAVE_STRNCASECMP): Define.
|
||||||
|
19
function.c
19
function.c
@ -1597,11 +1597,24 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
|
|||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
#ifndef __MSDOS__
|
#ifndef __MSDOS__
|
||||||
|
#ifdef WINDOWS32
|
||||||
|
/* Reset just_print_flag. This is needed on Windows when batch files
|
||||||
|
are used to run the commands, because we normally refrain from
|
||||||
|
creating batch files under -n. */
|
||||||
|
int j_p_f = just_print_flag;
|
||||||
|
|
||||||
|
just_print_flag = 0;
|
||||||
|
#endif
|
||||||
/* Construct the argument list. */
|
/* Construct the argument list. */
|
||||||
command_argv = construct_command_argv (argv[0], NULL, NULL, 0,
|
command_argv = construct_command_argv (argv[0], NULL, NULL, 0,
|
||||||
&batch_filename);
|
&batch_filename);
|
||||||
if (command_argv == 0)
|
if (command_argv == 0)
|
||||||
|
{
|
||||||
|
#ifdef WINDOWS32
|
||||||
|
just_print_flag = j_p_f;
|
||||||
|
#endif
|
||||||
return o;
|
return o;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Using a target environment for `shell' loses in cases like:
|
/* Using a target environment for `shell' loses in cases like:
|
||||||
@ -1637,11 +1650,13 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
|
|||||||
}
|
}
|
||||||
#elif defined(WINDOWS32)
|
#elif defined(WINDOWS32)
|
||||||
windows32_openpipe (pipedes, &pid, command_argv, envp);
|
windows32_openpipe (pipedes, &pid, command_argv, envp);
|
||||||
|
/* Restore the value of just_print_flag. */
|
||||||
|
just_print_flag = j_p_f;
|
||||||
|
|
||||||
if (pipedes[0] < 0)
|
if (pipedes[0] < 0)
|
||||||
{
|
{
|
||||||
/* open of the pipe failed, mark as failed execution */
|
/* Open of the pipe failed, mark as failed execution. */
|
||||||
shell_function_completed = -1;
|
shell_function_completed = -1;
|
||||||
|
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user