[ros-diffs] [jmorlan] 39890: - Ignore special characters in a REM line. - Make the \n-printing in batch files with ECHO on more consistant with how Windows does it.

jmorlan at svn.reactos.org jmorlan at svn.reactos.org
Fri Mar 6 18:27:43 CET 2009


Author: jmorlan
Date: Fri Mar  6 20:27:42 2009
New Revision: 39890

URL: http://svn.reactos.org/svn/reactos?rev=39890&view=rev
Log:
- Ignore special characters in a REM line.
- Make the \n-printing in batch files with ECHO on more consistant with how Windows does it.

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

Modified: trunk/reactos/base/shell/cmd/batch.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/batch.c?rev=39890&r1=39889&r2=39890&view=diff
==============================================================================
--- trunk/reactos/base/shell/cmd/batch.c [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/batch.c [iso-8859-1] Fri Mar  6 20:27:42 2009
@@ -285,6 +285,7 @@
 		/* Echo batch file line */
 		if (bEcho && Cmd->Type != C_QUIET)
 		{
+			ConOutChar(_T('\n'));
 			PrintPrompt();
 			EchoCommand(Cmd);
 			ConOutChar(_T('\n'));
@@ -292,14 +293,8 @@
 
 		bc->current = Cmd;
 		ExecuteCommand(Cmd);
-		if (bEcho && !bIgnoreEcho && Cmd->Type != C_QUIET)
-			ConOutChar(_T('\n'));
 		FreeCommand(Cmd);
-		bIgnoreEcho = FALSE;
-	}
-
-    /* Don't print a newline for this command */
-    bIgnoreEcho = TRUE;
+	}
 
 	TRACE ("Batch: returns TRUE\n");
 

Modified: trunk/reactos/base/shell/cmd/parser.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/parser.c?rev=39890&r1=39889&r2=39890&view=diff
==============================================================================
--- trunk/reactos/base/shell/cmd/parser.c [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/parser.c [iso-8859-1] Fri Mar  6 20:27:42 2009
@@ -522,12 +522,22 @@
 	return NULL;
 }
 
+/* Parse a REM command */
+static PARSED_COMMAND *ParseRem(void)
+{
+	/* Just ignore the rest of the line */
+	while (CurChar && CurChar != _T('\n'))
+		ParseChar();
+	return NULL;
+}
+
 static PARSED_COMMAND *ParseCommandPart(void)
 {
 	TCHAR ParsedLine[CMDLINE_LENGTH];
 	TCHAR *Pos;
 	DWORD TailOffset;
 	PARSED_COMMAND *Cmd;
+	PARSED_COMMAND *(*Func)(void);
 	REDIRECTION *RedirList = NULL;
 	int Type;
 
@@ -595,8 +605,9 @@
 	TailOffset = Pos - ParsedLine;
 
 	/* Check for special forms */
-	if (_tcsicmp(ParsedLine, _T("for")) == 0 ||
-	    _tcsicmp(ParsedLine, _T("if")) == 0)
+	if ((Func = ParseFor, _tcsicmp(ParsedLine, _T("for")) == 0) ||
+	    (Func = ParseIf,  _tcsicmp(ParsedLine, _T("if")) == 0)  ||
+	    (Func = ParseRem, _tcsicmp(ParsedLine, _T("rem")) == 0))
 	{
 		ParseToken(0, STANDARD_SEPS);
 		/* Do special parsing only if it's not followed by /? */
@@ -608,7 +619,7 @@
 				FreeRedirection(RedirList);
 				return NULL;
 			}
-			return _totlower(*ParsedLine) == _T('f') ? ParseFor() : ParseIf();
+			return Func();
 		}
 		Pos = _stpcpy(Pos, _T(" /?"));
 	}



More information about the Ros-diffs mailing list