[ros-diffs] [jmorlan] 39836: Fix BatchParams to handle unconventional spacing/quoting properly.

jmorlan at svn.reactos.org jmorlan at svn.reactos.org
Sun Mar 1 21:25:14 CET 2009


Author: jmorlan
Date: Sun Mar  1 23:25:13 2009
New Revision: 39836

URL: http://svn.reactos.org/svn/reactos?rev=39836&view=rev
Log:
Fix BatchParams to handle unconventional spacing/quoting properly.

Modified:
    trunk/reactos/base/shell/cmd/batch.c

Modified: trunk/reactos/base/shell/cmd/batch.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/batch.c?rev=39836&r1=39835&r2=39836&view=diff
==============================================================================
--- trunk/reactos/base/shell/cmd/batch.c [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/batch.c [iso-8859-1] Sun Mar  1 23:25:13 2009
@@ -130,28 +130,25 @@
 
 	while (*s2)
 	{
-		if (_istspace (*s2) || _tcschr (_T(",;"), *s2))
-		{
-			*s1++ = _T('\0');
+		BOOL inquotes = FALSE;
+
+		/* Find next parameter */
+		while (_istspace(*s2) || (*s2 && _tcschr(_T(",;="), *s2)))
 			s2++;
-			while (*s2 && _tcschr (_T(" ,;"), *s2))
-				s2++;
-			continue;
-		}
-
-		if ((*s2 == _T('"')) || (*s2 == _T('\'')))
-		{
-			TCHAR st = *s2;
-
-			do
-				*s1++ = *s2++;
-			while (*s2 && (*s2 != st));
-		}
-
-		*s1++ = *s2++;
-	}
-
-	*s1++ = _T('\0');
+		if (!*s2)
+			break;
+
+		/* Copy it */
+		do
+		{
+			if (!inquotes && (_istspace(*s2) || _tcschr(_T(",;="), *s2)))
+				break;
+			inquotes ^= (*s2 == _T('"'));
+			*s1++ = *s2++;
+		} while (*s2);
+		*s1++ = _T('\0');
+	}
+
 	*s1 = _T('\0');
 
 	return dp;



More information about the Ros-diffs mailing list