summaryrefslogtreecommitdiff
path: root/ghc/lib/std/cbits/fileObject.c
diff options
context:
space:
mode:
Diffstat (limited to 'ghc/lib/std/cbits/fileObject.c')
-rw-r--r--ghc/lib/std/cbits/fileObject.c18
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 = "";