From 2701c66e9621f2830bee825c95530f66db2b97d2 Mon Sep 17 00:00:00 2001
From: sof <unknown>
Date: Mon, 9 Feb 1998 09:07:32 +0000
Subject: [PATCH] [project @ 1998-02-09 09:07:32 by sof] Re-commit of cygwin32
 fix

---
 ghc/lib/std/cbits/system.lc | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/ghc/lib/std/cbits/system.lc b/ghc/lib/std/cbits/system.lc
index 013f111ba676..924c8d463677 100644
--- a/ghc/lib/std/cbits/system.lc
+++ b/ghc/lib/std/cbits/system.lc
@@ -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}
-- 
GitLab