Batch support for CreateProcess (3 of 3)

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Fri Nov 29 04:05:19 CST 2002


Changelog:     
	       wine/scheduler/process.c
	       Use COMSPEC command interpreter to run .bat files
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Index: wine/scheduler/process.c
===================================================================
RCS file: /home/wine/wine/scheduler/process.c,v
retrieving revision 1.203
diff -u -r1.203 process.c
--- wine/scheduler/process.c	21 Nov 2002 03:45:01 -0000	1.203
+++ wine/scheduler/process.c	24 Nov 2002 17:47:11 -0000
@@ -1263,7 +1263,23 @@
                                    inherit, flags, startup_info, info, unixdir );
             break;
         }
-        /* fall through */
+	else if ((p = strrchr( name, '.' )) && !FILE_strcasecmp( p, ".bat" ))
+        {
+	  char * newcmdline, *q;
+	  char buff[MAX_PATH];
+	  GetEnvironmentVariableA("COMSPEC", buff, MAX_PATH);
+	  q = strchr(cmd_line, ' ');
+	  TRACE( "starting %s as batch binary, rest of cmdline %s\n", debugstr_a(name), q?q:"" );
+	  if ((newcmdline = HeapAlloc( GetProcessHeap(), 0, strlen(buff) + strlen(name) + (q?strlen(q):0) + 8)))
+	    {
+	      sprintf( newcmdline, "%s /c %s %s", buff, name, (q)?q:"");
+	      retv = CreateProcessA( NULL, newcmdline, process_attr, thread_attr,inherit,
+				     flags, env, cur_dir, startup_info, info );
+	      HeapFree( GetProcessHeap(), 0, newcmdline);
+	      break;
+	    }
+	}
+	/* fall through */
     case BINARY_UNIX_EXE:
         {
             /* unknown file, try as unix executable */



More information about the wine-patches mailing list