> Date: Fri, 21 Apr 2006 16:17:21 -0400
> Cc: J David Bryan <[EMAIL PROTECTED]>, [EMAIL PROTECTED], [email protected]
> From: "Paul D. Smith" <[EMAIL PROTECTED]>
>
> %% Eli Zaretskii <[EMAIL PROTECTED]> writes:
>
> ez> I see an easy, although not very elegant, band-aid: Temporarily turn
> ez> off just_print_flag inside func_shell, since $(shell) is supposed to
> ez> run the subsidiary process even under -n. (Alternatively, we could
> ez> use some other global variable, but that's even less clean.)
>
> ez> Paul, will that DTRT? That is, is it okay to disregard
> ez> just_print_flag inside func_shell, or could this cause trouble in some
> ez> situations?
>
> I can't think of any way this could cause problems.
Thanks. Here's the suggested patch:
2006-05-27 Eli Zaretskii <[EMAIL PROTECTED]>
* 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).
--- function.c~0 2006-04-01 12:36:40.000000000 +0300
+++ function.c 2006-05-27 15:58:26.984375000 +0300
@@ -1589,12 +1589,25 @@ func_shell (char *o, char **argv, const
int pid;
#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. */
command_argv = construct_command_argv (argv[0],
(char **) NULL, (struct file *) 0,
&batch_filename);
if (command_argv == 0)
- return o;
+ {
+#ifdef WINDOWS32
+ just_print_flag = j_p_f;
+#endif
+ return o;
+ }
#endif
/* Using a target environment for `shell' loses in cases like:
@@ -1622,12 +1635,14 @@ func_shell (char *o, char **argv, const
#ifdef WINDOWS32
windows32_openpipe (pipedes, &pid, command_argv, envp);
+ /* Restore the value of just_print_flag. */
+ just_print_flag = j_p_f;
if (pipedes[0] < 0) {
/* open of the pipe failed, mark as failed execution */
shell_function_completed = -1;
- return o;
+ return o;
} else
#elif defined(__MSDOS__)
_______________________________________________
Make-w32 mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/make-w32