diff options
Diffstat (limited to 'ghc/lib/std/cbits/fileObject.c')
-rw-r--r-- | ghc/lib/std/cbits/fileObject.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/ghc/lib/std/cbits/fileObject.c b/ghc/lib/std/cbits/fileObject.c index f8f25e2c84..badb5c7ec4 100644 --- a/ghc/lib/std/cbits/fileObject.c +++ b/ghc/lib/std/cbits/fileObject.c @@ -1,7 +1,7 @@ /* * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998 * - * $Id: fileObject.c,v 1.2 1998/12/02 13:27:26 simonm Exp $ + * $Id: fileObject.c,v 1.3 1999/05/05 10:33:14 sof Exp $ * * hPutStr Runtime Support */ @@ -10,6 +10,12 @@ #include "stgio.h" #include "fileObject.h" +#include <stdio.h> + +#ifdef HAVE_WINSOCK_H +#include <winsock.h> +#endif + void setBufFlags(fo, flg) StgForeignPtr fo; @@ -173,7 +179,15 @@ IOFileObject* fo; if ( fo->flags & FILEOBJ_NONBLOCKING_IO && inputReady ((StgForeignPtr)fo,0) != 1 ) return FILEOBJ_BLOCKED_READ; - if ((count = read(fo->fd, p, len)) <= 0) { + if ((count = + ( +#ifdef HAVE_WINSOCK_H + fo->flags & FILEOBJ_WINSOCK ? + recv(fo->fd, p, len, 0) : + read(fo->fd, p, len))) <= 0 ) { +#else + read(fo->fd, p, len))) <= 0 ) { +#endif if (count == 0) { ghc_errtype = ERR_EOF; ghc_errstr = ""; |