Skip to content
Snippets Groups Projects
Commit f5ee8899 authored by Reuben Thomas's avatar Reuben Thomas
Browse files

[project @ 2000-04-14 16:25:08 by rrt]

Increased paranoia.
parent b458760b
No related merge requests found
/*
* (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
*
* $Id: filePosn.c,v 1.6 1999/12/08 15:47:07 simonmar Exp $
* $Id: filePosn.c,v 1.7 2000/04/14 16:25:08 rrt Exp $
*
* hGetPosn and hSetPosn Runtime Support
*/
......@@ -19,7 +19,6 @@ StgForeignPtr ptr;
{
IOFileObject* fo = (IOFileObject*)ptr;
off_t posn;
while ( (posn = lseek(fo->fd, 0, SEEK_CUR)) == -1) {
if (errno != EINTR) {
cvtErrno();
......@@ -32,13 +31,14 @@ StgForeignPtr ptr;
} else if (fo->flags & FILEOBJ_READ) {
posn -= (fo->bufWPtr - fo->bufRPtr);
#if defined(_WIN32)
if (!(fo->flags & FILEOBJ_BINARY)) {
if (fo->buf && !(fo->flags & FILEOBJ_BINARY)) {
/* Sigh, to get at the Real file position for files opened
in text mode, we need to scan the read buffer looking for
'\n's, making them count as \r\n (i.e., undoing the work of
read()), since lseek() returns the raw position.
*/
int i, j;
i = fo->bufRPtr;
j = fo->bufWPtr;
while (i <= j) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment