summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2013-05-01 18:31:53 +0300
committerEli Zaretskii <eliz@gnu.org>2013-05-01 18:31:53 +0300
commit2926f7b4662409d3445df7c590e80f001b088cc6 (patch)
tree73c2333cc1159e493c6ecf85ae57c6a79debb3a5
parenta87ff20158eead839d9457e240934bdc05ba509d (diff)
downloadgunmake-2926f7b4662409d3445df7c590e80f001b088cc6.tar.gz
Fix treatment of whitespace after a backslash on MS-Windows.
job.c (construct_command_argv_internal): Don't treat a backslash as an escape character before whitespace, if the shell is not a Posix shell. For the description of the problem, see http://lists.gnu.org/archive/html/make-w32/2013-04/msg00014.html.
-rw-r--r--ChangeLog4
-rw-r--r--job.c9
2 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index cfd59f7..e8033d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
* job.c (start_job_command) [WINDOWS32]: Make the same fix for
MS-Windows as the previous commit did for Posix platforms.
+ (construct_command_argv_internal): Don't treat a backslash as an
+ escape character before whitespace, if the shell is not a Posix
+ shell. For the description of the problem, see
+ http://lists.gnu.org/archive/html/make-w32/2013-04/msg00014.html.
2013-05-01 Paul Smith <psmith@gnu.org>
diff --git a/job.c b/job.c
index 5b626b1..b245007 100644
--- a/job.c
+++ b/job.c
@@ -3076,6 +3076,15 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
if (ap == new_argv[i])
p = next_token (p + 1) - 1;
}
+#ifdef WINDOWS32
+ /* Backslash before whitespace is not special if our shell
+ is not Unixy. */
+ else if (isspace (p[1]) && !unixy_shell)
+ {
+ *ap++ = *p;
+ break;
+ }
+#endif
else if (p[1] != '\0')
{
#ifdef HAVE_DOS_PATHS