X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FRtsUtils.c;h=69a1450aea0d3ab1b30863beb22dc2815df69329;hb=05a9c035960327b23bad8d8dc501141b183f33b5;hp=a8ce114fae5ce808c40db2d0707f91aaa7d2173d;hpb=fd7763c587c305a562b68ee8fc0846dedf7061be;p=ghc-hetmet.git diff --git a/ghc/rts/RtsUtils.c b/ghc/rts/RtsUtils.c index a8ce114..69a1450 100644 --- a/ghc/rts/RtsUtils.c +++ b/ghc/rts/RtsUtils.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: RtsUtils.c,v 1.22 2001/08/29 15:02:02 sewardj Exp $ + * $Id: RtsUtils.c,v 1.28 2002/10/05 22:31:04 panne Exp $ * * (c) The GHC Team, 1998-1999 * @@ -31,6 +31,8 @@ #include #endif +#include +#include #include /* 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,20 +229,34 @@ 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 +setNonBlockingFd(int fd) +{ + long fd_flags; + + /* clear the non-blocking flag on this file descriptor */ + fd_flags = fcntl(fd, F_GETFL); + fcntl(fd, F_SETFL, fd_flags | O_NONBLOCK); +} +#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; /* used in a parallel setup */ @@ -281,21 +300,21 @@ char * ullong_format_string(ullong x, char *s, rtsBool with_commas) { if (x < (ullong)1000) - sprintf(s, "%d", (nat)x); + sprintf(s, "%lu", (lnat)x); else if (x < (ullong)1000000) - sprintf(s, (with_commas) ? "%ld,%3.3ld" : "%ld%3.3ld", - (nat)((x)/(ullong)1000), - (nat)((x)%(ullong)1000)); + sprintf(s, (with_commas) ? "%lu,%3.3lu" : "%lu%3.3lu", + (lnat)((x)/(ullong)1000), + (lnat)((x)%(ullong)1000)); else if (x < (ullong)1000000000) - sprintf(s, (with_commas) ? "%ld,%3.3ld,%3.3ld" : "%ld%3.3ld%3.3ld", - (nat)((x)/(ullong)1000000), - (nat)((x)/(ullong)1000%(ullong)1000), - (nat)((x)%(ullong)1000)); + sprintf(s, (with_commas) ? "%lu,%3.3lu,%3.3lu" : "%lu%3.3lu%3.3lu", + (lnat)((x)/(ullong)1000000), + (lnat)((x)/(ullong)1000%(ullong)1000), + (lnat)((x)%(ullong)1000)); else - sprintf(s, (with_commas) ? "%ld,%3.3ld,%3.3ld,%3.3ld" : "%ld%3.3ld%3.3ld%3.3ld", - (nat)((x)/(ullong)1000000000), - (nat)((x)/(ullong)1000000%(ullong)1000), - (nat)((x)/(ullong)1000%(ullong)1000), - (nat)((x)%(ullong)1000)); + sprintf(s, (with_commas) ? "%lu,%3.3lu,%3.3lu,%3.3lu" : "%lu%3.3lu%3.3lu%3.3lu", + (lnat)((x)/(ullong)1000000000), + (lnat)((x)/(ullong)1000000%(ullong)1000), + (lnat)((x)/(ullong)1000%(ullong)1000), + (lnat)((x)%(ullong)1000)); return s; }