[project @ 1999-11-05 15:22:59 by simonmar]
authorsimonmar <unknown>
Fri, 5 Nov 1999 15:22:59 +0000 (15:22 +0000)
committersimonmar <unknown>
Fri, 5 Nov 1999 15:22:59 +0000 (15:22 +0000)
Clear the non-blocking flag on stderr before trying to print an error
message.

ghc/lib/std/cbits/writeError.c

index e948233..3f58833 100644 (file)
@@ -1,7 +1,7 @@
 /* 
  * (c) The GRASP/AQUA Project, Glasgow University, 1998
  *
- * $Id: writeError.c,v 1.2 1998/12/02 13:28:05 simonm Exp $
+ * $Id: writeError.c,v 1.3 1999/11/05 15:22:59 simonmar Exp $
  *
  * hPutStr Runtime Support
  */
@@ -19,6 +19,10 @@ implementation in one or two places.)
 #include "Rts.h"
 #include "stgio.h"
 
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
 void
 writeErrString__ (msg_hdr, msg, len)
 StgAddr msg_hdr;
@@ -28,6 +32,13 @@ StgInt len;
   int count = 0;
   char* p  = (char*)msg;
   char  nl = '\n';
+  long fd_flags;
+
+#if !defined(_WIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__)
+    /* clear the non-blocking flag on this file descriptor */
+    fd_flags = fcntl(2, F_GETFL);
+    fcntl(2, F_SETFL, fd_flags & ~O_NONBLOCK);
+#endif
 
   /* Print error msg header */
   if (msg_hdr) {