"start" or "start cmd" now opens a new cmd.exe in its own process.
this
is how MS cmd does it.
Modified: trunk/reactos/subsys/system/cmd/start.c
_____
Modified: trunk/reactos/subsys/system/cmd/start.c
--- trunk/reactos/subsys/system/cmd/start.c 2005-09-16 04:53:07 UTC
(rev 17874)
+++ trunk/reactos/subsys/system/cmd/start.c 2005-09-16 05:35:43 UTC
(rev 17875)
@@ -169,7 +169,6 @@
return 0;
}
-
/* get the PATH environment variable and parse it */
/* search the PATH environment variable for the binary */
if (!SearchForExecutable (rest, szFullName))
@@ -186,6 +185,7 @@
free(comspec);
return 1;
}
+
/* check if this is a .BAT or .CMD file */
if (!_tcsicmp (_tcsrchr (szFullName, _T('.')), _T(".bat")) ||
@@ -197,14 +197,11 @@
_tcscpy(szFullCmdLine,comspec);
- memcpy(&szFullCmdLine[_tcslen(szFullCmdLine)],_T(" \" /K
\""), 6 * sizeof(TCHAR));
+ memcpy(&szFullCmdLine[_tcslen(szFullCmdLine)],_T("\" /K
\""), 6 * sizeof(TCHAR));
memcpy(&szFullCmdLine[_tcslen(szFullCmdLine)],
szFullName, _tcslen(szFullName) * sizeof(TCHAR));
memcpy(&szFullCmdLine[1], &szFullCmdLine[0],
_tcslen(szFullCmdLine) * sizeof(TCHAR));
szFullCmdLine[0] = _T('\"');
szFullCmdLine[_tcslen(szFullCmdLine)] = _T('\"');
-
-
-
}
#ifdef _DEBUG
@@ -240,8 +237,17 @@
}
else
{
- bCreate = CreateProcess (szFullName, szFullCmdLine,
NULL, NULL, FALSE,
- DETACHED_PROCESS, NULL, NULL, &stui, &prci);
+ if(!_tcsicmp(szFullName,comspec))
+ {
+ bCreate = CreateProcess (szFullName,
szFullCmdLine, NULL, NULL, FALSE,
+ CREATE_NEW_CONSOLE, NULL, NULL,
&stui, &prci);
+
+ }
+ else
+ {
+ bCreate = CreateProcess (szFullName,
szFullCmdLine, NULL, NULL, FALSE,
+ DETACHED_PROCESS, NULL, NULL,
&stui, &prci);
+ }
}