[project @ 2002-09-09 13:48:35 by simonpj]
[ghc-hetmet.git] / ghc / rts / RtsUtils.c
index 0e302a7..7757359 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: RtsUtils.c,v 1.23 2001/10/31 10:30:29 simonmar Exp $
+ * $Id: RtsUtils.c,v 1.27 2002/08/16 13:29:07 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -31,6 +31,8 @@
 #include <sys/time.h>
 #endif
 
+#include <stdlib.h>
+#include <string.h>
 #include <stdarg.h>
 
 /* variable-argument error function. */
@@ -49,6 +51,7 @@ void barf(char *s, ...)
   fprintf(stderr, "\n");
   fflush(stderr);
   stg_exit(EXIT_INTERNAL_ERROR);
+  va_end(ap);
 }
 
 void prog_belch(char *s, ...)
@@ -61,6 +64,7 @@ void prog_belch(char *s, ...)
   } 
   vfprintf(stderr, s, ap);
   fprintf(stderr, "\n");
+  va_end(ap);
 }
 
 void belch(char *s, ...)
@@ -70,6 +74,7 @@ void belch(char *s, ...)
   /* don't fflush(stdout); WORKAROUND bug in Linux glibc */
   vfprintf(stderr, s, ap);
   fprintf(stderr, "\n");
+  va_end(ap);
 }
 
 /* result-checking malloc wrappers. */
@@ -183,7 +188,7 @@ nat stg_strlen(char *s)
    ToDo: put this somewhere sensible.
    -------------------------------------------------------------------------  */
 
-I_ __GenSymCounter = 0;
+static I_ __GenSymCounter = 0;
 
 I_
 genSymZh(void)
@@ -224,18 +229,17 @@ time_str(void)
  * clean up for us.
  * -------------------------------------------------------------------------- */
 
+#if !defined(mingw32_TARGET_OS)
 void
 resetNonBlockingFd(int fd)
 {
   long fd_flags;
 
-#if !defined(mingw32_TARGET_OS)
   /* clear the non-blocking flag on this file descriptor */
   fd_flags = fcntl(fd, F_GETFL);
   if (fd_flags & O_NONBLOCK) {
     fcntl(fd, F_SETFL, fd_flags & ~O_NONBLOCK);
   }
-#endif
 }
 
 void
@@ -243,12 +247,15 @@ setNonBlockingFd(int fd)
 {
   long fd_flags;
 
-#if !defined(mingw32_TARGET_OS)
   /* clear the non-blocking flag on this file descriptor */
   fd_flags = fcntl(fd, F_GETFL);
   fcntl(fd, F_SETFL, fd_flags | O_NONBLOCK);
-#endif
 }
+#else
+/* Don't support non-blocking FDs (yet) on mingw */
+void resetNonBlockingFd(int fd STG_UNUSED) {}
+void setNonBlockingFd(int fd STG_UNUSED) {}
+#endif
 
 static ullong startTime = 0;