From e8e4c19873445d9f4efd3e45ede0e11a46899f50 Mon Sep 17 00:00:00 2001
From: Paul Smith <psmith@gnu.org>
Date: Fri, 12 Nov 2004 21:30:20 +0000
Subject: [PATCH] Patch for command line parsing for VMS from Hartmut Becker.

---
 ChangeLog |  8 +++++++-
 job.c     | 11 +++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 37df6bb2..4620aa29 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-11-12  Paul D. Smith  <psmith@gnu.org>
+
+	* job.c (child_execute_job) [VMS]: Don't treat "#" as a comment on
+	the command line if it's inside a string.
+	Patch by: Hartmut Becker <Hartmut.Becker@hp.com>
+
 2004-10-21  Boris Kolpackov  <boris@kolpackov.net>
 
 	* function.c (func_lastword): New function: return last word
@@ -64,7 +70,7 @@
 	idea behind Savannah Patch #3144 from david.baird@homemail.com.
 	If SHELL is set to CMD.EXE then assume it's batch-mode and
 	non-unixy.  I wrote the code differently from the patch, though,
-	to make it safer.
+	to make it safer.  This also resolves bug #9174.
 
 2004-09-20  Paul D. Smith  <psmith@gnu.org>
 
diff --git a/job.c b/job.c
index f198fc56..28d1e6b8 100644
--- a/job.c
+++ b/job.c
@@ -2088,6 +2088,7 @@ child_execute_job (char *argv, struct child *child)
   char ifile[256], ofile[256], efile[256];
   char *comname = 0;
   char procname[100];
+  int in_string;
 
   /* Parse IO redirection.  */
 
@@ -2109,9 +2110,17 @@ child_execute_job (char *argv, struct child *child)
   pnamedsc.dsc$b_dtype = DSC$K_DTYPE_T;
   pnamedsc.dsc$b_class = DSC$K_CLASS_S;
 
+  in_string = 0;
   /* Handle comments and redirection. */
   for (p = argv, q = cmd; *p; p++, q++)
     {
+      if (*p == '"')
+        in_string = !in_string;
+      if (in_string)
+        {
+          *q = *p;
+          continue;
+        }
       switch (*p)
 	{
 	  case '#':
@@ -2167,6 +2176,8 @@ child_execute_job (char *argv, struct child *child)
 	}
     }
   *q = *p;
+  while (isspace ((unsigned char)*--q))
+    *q = '\0';
 
   if (strncmp (cmd, "builtin_", 8) == 0)
     {