[project @ 2001-08-07 08:18:15 by rrt]
authorrrt <unknown>
Tue, 7 Aug 2001 08:18:15 +0000 (08:18 +0000)
committerrrt <unknown>
Tue, 7 Aug 2001 08:18:15 +0000 (08:18 +0000)
Revert to shell-based method on Windows; the raw CreateProcess method is now
in hslibs/lang/SystemExts.

ghc/lib/std/cbits/system.c

index 5979630..d077323 100644 (file)
@@ -1,7 +1,7 @@
 /* 
  * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
  *
- * $Id: system.c,v 1.16 2001/06/29 11:40:48 simonpj Exp $
+ * $Id: system.c,v 1.17 2001/08/07 08:18:15 rrt Exp $
  *
  * system Runtime Support
  */
@@ -20,32 +20,8 @@ systemCmd(HsAddr cmd)
 {
   /* -------------------- WINDOWS VERSION --------------------- */
 #if defined(mingw32_TARGET_OS)
-  STARTUPINFO sInfo;
-  PROCESS_INFORMATION pInfo;
-  DWORD retCode;
-
-  sInfo.cb              = sizeof(STARTUPINFO);
-  sInfo.lpReserved      = NULL;
-  sInfo.lpReserved2     = NULL;
-  sInfo.cbReserved2     = 0;
-  sInfo.lpDesktop       = NULL;
-  sInfo.lpTitle         = NULL;
-  sInfo.dwFlags         = 0;
-
-  if (!CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &sInfo, &pInfo))
-    /* The 'TRUE' says that the created process should share
-       handles with the current process.  This is vital to ensure
-       that error messages sent to stderr actually appear on the screen.
-       Since we are going to wait for the process to terminate anyway,
-       there is no problem with such sharing. */
-
-    return -1;
-  WaitForSingleObject(pInfo.hProcess, INFINITE);
-  if (GetExitCodeProcess(pInfo.hProcess, &retCode) == 0) return -1;
-  CloseHandle(pInfo.hProcess);
-  CloseHandle(pInfo.hThread);
-  return retCode;
-
+  if (system(cmd) < 0) return -1;
+  return 0;
 #else
   /* -------------------- UNIX VERSION --------------------- */
     int pid;