From eca29725d15f200f3eb8b106bb7bac3fb687fa74 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 9 Nov 2004 07:04:08 +0000 Subject: (_IO_new_file_seekoff): If mode is 0 and fp->_offset == _IO_pos_BAD, just call _IO_SYSSEEK (fp, 0, dir) and if successful set fp->_offset. --- libio/fileops.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libio/fileops.c b/libio/fileops.c index 08eff0a08e..2d787d296f 100644 --- a/libio/fileops.c +++ b/libio/fileops.c @@ -989,7 +989,18 @@ _IO_new_file_seekoff (fp, offset, dir, mode) /* Adjust for read-ahead (bytes is buffer). */ offset -= fp->_IO_read_end - fp->_IO_read_ptr; if (fp->_offset == _IO_pos_BAD) - goto dumb; + { + if (mode != 0) + goto dumb; + else + { + result = _IO_SYSSEEK (fp, 0, dir); + if (result == EOF) + return result; + + fp->_offset = result; + } + } /* Make offset absolute, assuming current pointer is file_ptr(). */ offset += fp->_offset; if (offset < 0) -- cgit v1.2.3