[project @ 2000-10-10 09:28:50 by simonmar]
[ghc-hetmet.git] / ghc / lib / std / cbits / fileObject.c
index d209f66..20c0ab3 100644 (file)
@@ -1,14 +1,13 @@
 /* 
  * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
  *
- * $Id: fileObject.c,v 1.5 1999/07/12 10:43:12 sof Exp $
+ * $Id: fileObject.c,v 1.11 2000/10/10 09:28:50 simonmar Exp $
  *
  * hPutStr Runtime Support
  */
 
 #include "Rts.h"
 #include "stgio.h"
-#include "fileObject.h"
 
 #include <stdio.h>
 
 #endif
 
 void
-setBufFlags(fo, flg)
-StgForeignPtr fo;
-StgInt flg;
+setBufFlags(StgForeignPtr fo, StgInt flg)
 {
   ((IOFileObject*)fo)->flags = flg;
   return;
 }
 
 void
-setBufWPtr(fo, len)
-StgForeignPtr fo;
-StgInt len;
+setBufWPtr(StgForeignPtr fo, StgInt len)
 {
   ((IOFileObject*)fo)->bufWPtr = len;
   return;
 }
 
 StgInt
-getBufWPtr(fo)
-StgForeignPtr fo;
+getBufWPtr(StgForeignPtr fo)
 {
   return (((IOFileObject*)fo)->bufWPtr);
 }
 
 StgInt
-getBufSize(fo)
-StgForeignPtr fo;
+getBufSize(StgForeignPtr fo)
 {
   return (((IOFileObject*)fo)->bufSize);
 }
 
 void
-setBuf(fo, buf,sz)
-StgForeignPtr fo;
-StgAddr buf;
-StgInt sz;
+setBuf(StgForeignPtr fo, StgAddr buf,StgInt sz)
 {
   ((IOFileObject*)fo)->buf     = buf;
   ((IOFileObject*)fo)->bufSize = sz;
@@ -64,13 +54,11 @@ StgInt sz;
 }
 
 StgAddr
-getBuf(fo)
-StgForeignPtr fo;
+getBuf(StgForeignPtr fo)
 { return (((IOFileObject*)fo)->buf); }
 
 StgAddr
-getWriteableBuf(ptr)
-StgForeignPtr ptr;
+getWriteableBuf(StgForeignPtr ptr)
 { 
    /* getWriteableBuf() is called prior to starting to pack
       a Haskell string into the IOFileObject buffer. It takes
@@ -88,35 +76,26 @@ StgForeignPtr ptr;
 }
 
 StgAddr
-getBufStart(fo,count)
-StgForeignPtr fo;
-StgInt count;
+getBufStart(StgForeignPtr fo, StgInt count)
 { return ((char*)((IOFileObject*)fo)->buf + (((IOFileObject*)fo)->bufRPtr) - count); }
 
 StgInt
-getFileFd(fo)
-StgForeignPtr fo;
+getFileFd(StgForeignPtr fo)
 { return (((IOFileObject*)fo)->fd); }
 
 StgInt
-getConnFileFd(fo)
-StgForeignPtr fo;
+getConnFileFd(StgForeignPtr fo)
 { return (((IOFileObject*)fo)->connectedTo->fd); }
 
 
 void
-setFd(fo,fp)
-StgForeignPtr fo;
-StgInt fp;
+setFd(StgForeignPtr fo,StgInt fp)
 { ((IOFileObject*)fo)->fd = fp;
   return;
 }
 
 void
-setConnectedTo(fo, fw, flg)
-StgForeignPtr fo;
-StgForeignPtr fw;
-StgInt flg;
+setConnectedTo(StgForeignPtr fo, StgForeignPtr fw, StgInt flg)
 {
   if( flg && (! isatty(((IOFileObject*)fo)->fd) || !isatty(((IOFileObject*)fw)->fd)) ) {
       return;
@@ -128,44 +107,16 @@ StgInt flg;
 static int __pushback_buf_size__ = 2;
 
 void
-setPushbackBufSize(i)
-StgInt i;
+setPushbackBufSize(StgInt i)
 { __pushback_buf_size__ = (i > 0 ? i : 0); }
 
 StgInt
-getPushbackBufSize()
+getPushbackBufSize(void)
 { return (__pushback_buf_size__); }
 
-void
-clearNonBlockingIOFlag__ (ptr)
-StgForeignPtr ptr;
-{ ((IOFileObject*)ptr)->flags &= ~FILEOBJ_NONBLOCKING_IO; }
-
-void
-setNonBlockingIOFlag__ (ptr)
-StgForeignPtr ptr;
-{ ((IOFileObject*)ptr)->flags |= FILEOBJ_NONBLOCKING_IO; }
-
-void
-clearConnNonBlockingIOFlag__ (ptr)
-StgForeignPtr ptr;
-{ ((IOFileObject*)ptr)->connectedTo->flags &= ~FILEOBJ_NONBLOCKING_IO; }
-
-void
-setConnNonBlockingIOFlag__ (ptr)
-StgForeignPtr ptr;
-{ 
-  if ( ((IOFileObject*)ptr)->connectedTo != NULL )  {
-    ((IOFileObject*)ptr)->connectedTo->flags |= FILEOBJ_NONBLOCKING_IO;
-  }
-  return;
-}
-
-
 /* Only ever called on line-buffered file objects */
 StgInt
-fill_up_line_buffer(fo)
-IOFileObject* fo;
+fill_up_line_buffer(IOFileObject* fo)
 {
   int count,len, ipos;
   unsigned char* p;
@@ -177,13 +128,10 @@ IOFileObject* fo;
       fo->bufWPtr=0;
   }
   ipos = fo->bufWPtr;
-  len = fo->bufSize - fo->bufWPtr + 1;
+  len = fo->bufSize - fo->bufWPtr;
   p   = (unsigned char*)fo->buf + fo->bufWPtr;
 
-  if ( fo->flags & FILEOBJ_NONBLOCKING_IO && inputReady ((StgForeignPtr)fo,0) != 1 )
-     return FILEOBJ_BLOCKED_READ;
-
-  if ((count = 
+  while ((count = 
          (
 #ifdef USE_WINSOCK
           fo->flags & FILEOBJ_WINSOCK ?
@@ -207,5 +155,6 @@ IOFileObject* fo;
       }
   }
   fo->bufWPtr += count;
+/* TODO: ipos doesn't change???? what's it for??? --SDM */
   return (fo->bufWPtr - ipos);
 }