diff --git a/ghc/lib/std/cbits/system.c b/ghc/lib/std/cbits/system.c index 41bafd361fa6dd370a46801bbb124dafc5bae087..2349ea7c3ca4cb4ddb1c0960a1a81beb66143abd 100644 --- a/ghc/lib/std/cbits/system.c +++ b/ghc/lib/std/cbits/system.c @@ -1,7 +1,7 @@ /* * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998 * - * $Id: system.c,v 1.4 1999/01/07 15:42:33 simonm Exp $ + * $Id: system.c,v 1.5 1999/03/01 08:57:57 sof Exp $ * * system Runtime Support */ @@ -13,8 +13,10 @@ #include <unistd.h> #endif -#ifdef HAVE_SYS_WAIT_H -#include <sys/wait.h> +#ifndef mingw32_TARGET_OS +# ifdef HAVE_SYS_WAIT_H +# include <sys/wait.h> +# endif #endif #ifdef HAVE_VFORK_H @@ -29,6 +31,15 @@ StgInt systemCmd(cmd) StgByteArray cmd; { +#if defined(mingw32_TARGET_OS) + if (system(cmd) < 0) { + cvtErrno(); + stdErrno(); + return -1; + } + sleep(1); + return 0; +#else #if defined(cygwin32_TARGET_OS) /* The implementation of std. fork() has its problems under cygwin32-b18, so we fall back on using libc's @@ -81,4 +92,5 @@ StgByteArray cmd; } return -1; #endif +#endif }