[project @ 1998-02-09 09:07:32 by sof]
authorsof <unknown>
Mon, 9 Feb 1998 09:07:32 +0000 (09:07 +0000)
committersof <unknown>
Mon, 9 Feb 1998 09:07:32 +0000 (09:07 +0000)
Re-commit of cygwin32 fix

ghc/lib/std/cbits/system.lc

index 013f111..924c8d4 100644 (file)
@@ -24,6 +24,21 @@ StgInt
 systemCmd(cmd)
 StgByteArray cmd;
 {
+#if defined(cygwin32_TARGET_OS)
+   /* The implementation of std. fork() has its problems
+      under cygwin32-b18, so we fall back on using libc's
+      system() instead. (It in turn has problems, as it
+      does not wait until the sub shell has finished before
+      returning. Using sleep() works around that.)
+  */
+  if (system(cmd) < 0) {
+     cvtErrno();
+     stdErrno();
+     return -1;
+  }
+  sleep(1);
+  return 0;
+#else
     int pid;
     int wstat;
 
@@ -60,6 +75,7 @@ StgByteArray cmd;
        ghc_errstr = "internal error (process neither exited nor signalled)";
     }
     return -1;
+#endif
 }
 
 \end{code}