Martin Rottensteiner (2005only@pianonote.at):
- set errorlevel to 9009 if command not found
- implemented exit /b # in batchfiles
Modified: trunk/reactos/subsys/system/cmd/error.c
Modified: trunk/reactos/subsys/system/cmd/if.c
Modified: trunk/reactos/subsys/system/cmd/internal.c

Modified: trunk/reactos/subsys/system/cmd/error.c
--- trunk/reactos/subsys/system/cmd/error.c	2005-06-21 18:44:20 UTC (rev 16208)
+++ trunk/reactos/subsys/system/cmd/error.c	2005-06-21 19:17:49 UTC (rev 16209)
@@ -119,12 +119,14 @@
 VOID error_path_not_found (VOID)
 {
 	ConErrResPuts(STRING_ERROR_PATH_NOT_FOUND);
+	nErrorLevel = 1;
 }
 
 
 VOID error_file_not_found (VOID)
 {
 	ConErrResPuts(STRING_ERROR_FILE_NOT_FOUND);
+	nErrorLevel = 1;
 }
 
 
@@ -152,6 +154,7 @@
 VOID error_bad_command (VOID)
 {
 	ConErrResPuts(STRING_ERROR_BADCOMMAND);
+	nErrorLevel = 9009;
 }
 
 

Modified: trunk/reactos/subsys/system/cmd/if.c
--- trunk/reactos/subsys/system/cmd/if.c	2005-06-21 18:44:20 UTC (rev 16208)
+++ trunk/reactos/subsys/system/cmd/if.c	2005-06-21 19:17:49 UTC (rev 16209)
@@ -130,7 +130,7 @@
 		while (_istdigit (*pp))
 			n = n * 10 + (*pp++ - _T('0'));
 
-		x_flag ^= (nErrorLevel < n) ? 0 : X_EXEC;
+		x_flag ^= (nErrorLevel != n) ? 0 : X_EXEC;
 
 		x_flag |= X_EMPTY;          /* Syntax error if comd empty */
 	}

Modified: trunk/reactos/subsys/system/cmd/internal.c
--- trunk/reactos/subsys/system/cmd/internal.c	2005-06-21 18:44:20 UTC (rev 16208)
+++ trunk/reactos/subsys/system/cmd/internal.c	2005-06-21 19:17:49 UTC (rev 16209)
@@ -482,16 +482,26 @@
 INT CommandExit (LPTSTR cmd, LPTSTR param)
 {
 	if (!_tcsncmp (param, _T("/?"), 2))
+		ConOutResPuts(STRING_EXIT_HELP);
+
+	if (bc != NULL && _tcsnicmp(param,_T("/b"),2) == 0)
 	{
-		ConOutResPuts(STRING_EXIT_HELP);
-		return 0;
+		param += 2;
+		while (_istspace (*param))
+			param++;
+		if (_istdigit(*param))
+			nErrorLevel = _ttoi(param);
+		ExitBatch (NULL);
 	}
+		
+	else
+		bExit = TRUE;
 
-	bExit = TRUE;
+	
 	return 0;
+
 }
 
-
 #ifdef INCLUDE_CMD_REM
 /*
  * does nothing