[ros-diffs] [cwittich] 32589: replace execv with CreateProcess because we have to wait for the process

cwittich at svn.reactos.org cwittich at svn.reactos.org
Sun Mar 9 12:34:55 CET 2008


Author: cwittich
Date: Thu Mar  6 17:54:08 2008
New Revision: 32589

URL: http://svn.reactos.org/svn/reactos?rev=3D32589&view=3Drev
Log:
replace execv with CreateProcess because we have to wait for the process

Modified:
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Too=
ls/ccache-2.4/ccache.c?rev=3D32589&r1=3D32588&r2=3D32589&view=3Ddiff
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c Thu Mar  6 17=
:54:08 2008
@@ -125,6 +125,9 @@
 static void failed(void)
 {
 	char *e;
+	STARTUPINFO si;
+	PROCESS_INFORMATION pi;
+	char* merged =3D build_command(orig_args->argv);
 =

 	/* delete intermediate pre-processor file if needed */
 	if (i_tmpfile) {
@@ -154,10 +157,23 @@
 		args_add_prefix(orig_args, p);
 	}
 =

-	execv(orig_args->argv[0], orig_args->argv);
-	cc_log("execv returned (%s)!\n", strerror(errno));
-	perror(orig_args->argv[0]);
-	exit(1);
+	ZeroMemory(&si, sizeof(STARTUPINFO));
+	ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
+
+	si.cb =3D sizeof(STARTUPINFO);
+
+	if(!CreateProcessA(orig_args->argv[0], merged, NULL, NULL, FALSE, 0, NULL=
, NULL, &si, &pi))
+	{
+		perror(orig_args->argv[0]);
+		exit(1);
+	}
+
+	WaitForSingleObject( pi.hProcess, INFINITE );
+
+	CloseHandle( pi.hProcess );
+	CloseHandle( pi.hThread );
+
+	exit(0);
 }
 =

 =





More information about the Ros-diffs mailing list