summaryrefslogtreecommitdiff
path: root/ghc/lib/std/cbits/flushFile.c
diff options
context:
space:
mode:
Diffstat (limited to 'ghc/lib/std/cbits/flushFile.c')
-rw-r--r--ghc/lib/std/cbits/flushFile.c96
1 files changed, 0 insertions, 96 deletions
diff --git a/ghc/lib/std/cbits/flushFile.c b/ghc/lib/std/cbits/flushFile.c
deleted file mode 100644
index 496e881b57..0000000000
--- a/ghc/lib/std/cbits/flushFile.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: flushFile.c,v 1.8 2000/09/25 10:51:04 simonmar Exp $
- *
- * hFlush Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-flushFile(StgForeignPtr ptr)
-{
- IOFileObject* fo = (IOFileObject*)ptr;
- int rc = 0;
-
- if ( FILEOBJ_WRITEABLE(fo) && FILEOBJ_JUST_WRITTEN(fo) &&
- FILEOBJ_NEEDS_FLUSHING(fo) ) {
- rc = writeBuffer(ptr, fo->bufWPtr - fo->bufRPtr);
- }
-
- return rc;
-}
-
-StgInt
-flushBuffer(StgForeignPtr ptr)
-{
- IOFileObject* fo = (IOFileObject*)ptr;
- int rc = 0;
-
- if ( FILEOBJ_WRITEABLE(fo) && FILEOBJ_JUST_WRITTEN(fo) &&
- FILEOBJ_NEEDS_FLUSHING(fo) ) {
- rc = writeBuffer(ptr, fo->bufWPtr - fo->bufRPtr);
- if (rc<0) return rc;
- }
-
- /* TODO: shouldn't we do the lseek stuff from flushReadBuffer
- * here???? --SDM
- */
-
- /* Reset read & write pointer for input buffers */
- if ( (fo->flags & FILEOBJ_READ) ) {
- fo->bufRPtr=0;
- fo->bufWPtr=0;
- }
- return 0;
-}
-
-/*
- For RW file objects, flushing input buffers doesn't just involve
- resetting the read & write pointers, we also have to change the
- underlying file position to point to the effective read position.
-
- (Sigh, I now understand the real reason for why stdio opted for
- the solution of leaving this to the programmer!)
-*/
-StgInt
-flushReadBuffer(StgForeignPtr ptr)
-{
- IOFileObject* fo = (IOFileObject*)ptr;
- int delta;
-
- delta = fo->bufWPtr - fo->bufRPtr;
-
- if ( delta > 0 ) {
- while ( lseek(fo->fd, -delta, SEEK_CUR) == -1) {
- if (errno != EINTR) {
- cvtErrno();
- stdErrno();
- return -1;
- }
- }
- }
-
- fo->bufRPtr=0;
- fo->bufWPtr=0;
- return 0;
-}
-
-void
-flushConnectedBuf(StgForeignPtr ptr)
-{
- StgInt rc;
- IOFileObject* fo = (IOFileObject*)ptr;
-
- /* if the stream is connected to an output stream, flush it. */
- if ( fo->connectedTo != NULL && fo->connectedTo->fd != -1 &&
- (fo->connectedTo->flags & FILEOBJ_WRITE) ) {
- rc = flushBuffer((StgForeignPtr)fo->connectedTo);
- }
- /* Willfully ignore the return code for now. */
- return;
-}
-
-