Commit 09ad57ec by Janne Blomqvist

Return error when trying to seek a non-seekable buffered file

From-SVN: r174947
parent 5ea0705a
2011-06-11 Janne Blomqvist <jb@gcc.gnu.org> 2011-06-11 Janne Blomqvist <jb@gcc.gnu.org>
* io/unix.c (buf_seek): Return error if file is not seekable.
(buf_tell): Call buf_seek.
2011-06-11 Janne Blomqvist <jb@gcc.gnu.org>
* io/unix.c (fd_to_stream): Figure out if a fd is seekable by * io/unix.c (fd_to_stream): Figure out if a fd is seekable by
trying lseek(). trying lseek().
......
...@@ -560,6 +560,11 @@ buf_write (unix_stream * s, const void * buf, ssize_t nbyte) ...@@ -560,6 +560,11 @@ buf_write (unix_stream * s, const void * buf, ssize_t nbyte)
static gfc_offset static gfc_offset
buf_seek (unix_stream * s, gfc_offset offset, int whence) buf_seek (unix_stream * s, gfc_offset offset, int whence)
{ {
if (s->file_length == -1)
{
errno = ESPIPE;
return -1;
}
switch (whence) switch (whence)
{ {
case SEEK_SET: case SEEK_SET:
...@@ -585,7 +590,7 @@ buf_seek (unix_stream * s, gfc_offset offset, int whence) ...@@ -585,7 +590,7 @@ buf_seek (unix_stream * s, gfc_offset offset, int whence)
static gfc_offset static gfc_offset
buf_tell (unix_stream * s) buf_tell (unix_stream * s)
{ {
return s->logical_offset; return buf_seek (s, 0, SEEK_CUR);
} }
static int static int
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment