Author: aandrejevic
Date: Tue Nov 12 01:56:18 2013
New Revision: 60959

URL: http://svn.reactos.org/svn/reactos?rev=60959&view=rev
Log:
[NTVDM]
The command line in the PSP consists only of the parameters, the program
name is omitted.


Modified:
    branches/ntvdm/subsystems/ntvdm/dos.c

Modified: branches/ntvdm/subsystems/ntvdm/dos.c
URL: 
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/dos.c?rev=60959&r1=60958&r2=60959&view=diff
==============================================================================
--- branches/ntvdm/subsystems/ntvdm/dos.c       [iso-8859-1] (original)
+++ branches/ntvdm/subsystems/ntvdm/dos.c       [iso-8859-1] Tue Nov 12 
01:56:18 2013
@@ -1025,6 +1025,7 @@
     LPBYTE Address = NULL;
     LPSTR ProgramFilePath, Parameters[256];
     CHAR CommandLineCopy[DOS_CMDLINE_LENGTH];
+    CHAR ParamString[DOS_CMDLINE_LENGTH];
     INT ParamCount = 0;
     WORD Segment = 0;
     WORD MaxAllocSize;
@@ -1040,8 +1041,6 @@
     /* Save a copy of the command line */
     strcpy(CommandLineCopy, CommandLine);
 
-    // FIXME: Improve parsing (especially: "some_path\with spaces\program.exe" 
options)
-
     /* Get the file name of the executable */
     ProgramFilePath = strtok(CommandLineCopy, " \t");
 
@@ -1050,6 +1049,15 @@
            && ((Parameters[ParamCount] = strtok(NULL, " \t")) != NULL))
     {
         ParamCount++;
+    }
+
+    ZeroMemory(ParamString, sizeof(ParamString));
+
+    /* Store the parameters in a string */
+    for (i = 0; i < ParamCount; i++)
+    {
+        strncat(ParamString, Parameters[i], DOS_CMDLINE_LENGTH - 
strlen(ParamString) - 1);
+        strncat(ParamString, " ", DOS_CMDLINE_LENGTH - strlen(ParamString) - 
1);
     }
 
     /* Open a handle to the executable */
@@ -1124,7 +1132,7 @@
 
         /* Initialize the PSP */
         DosInitializePsp(Segment,
-                         CommandLine,
+                         ParamString,
                          (WORD)ExeSize,
                          EnvBlock);
 
@@ -1193,7 +1201,7 @@
 
         /* Initialize the PSP */
         DosInitializePsp(Segment,
-                         CommandLine,
+                         ParamString,
                          MaxAllocSize,
                          EnvBlock);
 


Reply via email to