Fix regression when writing formatted sequential to a pipe.
2013-02-21 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/30162 * io/open.c (test_endfile): Call stell only if size != 0. * io/unix.c (raw_tell): Revert r194679. (raw_size): Return size field only for regular files, otherwise 0. From-SVN: r196210
This commit is contained in:
parent
a4a66330d5
commit
68aab0e225
@ -1,3 +1,10 @@
|
||||
2013-02-21 Janne Blomqvist <jb@gcc.gnu.org>
|
||||
|
||||
PR libfortran/30162
|
||||
* io/open.c (test_endfile): Call stell only if size != 0.
|
||||
* io/unix.c (raw_tell): Revert r194679.
|
||||
(raw_size): Return size field only for regular files, otherwise 0.
|
||||
|
||||
2013-02-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR target/56347
|
||||
|
@ -152,8 +152,12 @@ static const st_option async_opt[] =
|
||||
static void
|
||||
test_endfile (gfc_unit * u)
|
||||
{
|
||||
if (u->endfile == NO_ENDFILE && ssize (u->s) == stell (u->s))
|
||||
u->endfile = AT_ENDFILE;
|
||||
if (u->endfile == NO_ENDFILE)
|
||||
{
|
||||
gfc_offset sz = ssize (u->s);
|
||||
if (sz == 0 || sz == stell (u->s))
|
||||
u->endfile = AT_ENDFILE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -342,15 +342,7 @@ raw_seek (unix_stream * s, gfc_offset offset, int whence)
|
||||
static gfc_offset
|
||||
raw_tell (unix_stream * s)
|
||||
{
|
||||
gfc_offset x;
|
||||
x = lseek (s->fd, 0, SEEK_CUR);
|
||||
|
||||
/* Non-seekable files should always be assumed to be at
|
||||
current position. */
|
||||
if (x == -1 && errno == ESPIPE)
|
||||
x = 0;
|
||||
|
||||
return x;
|
||||
return lseek (s->fd, 0, SEEK_CUR);
|
||||
}
|
||||
|
||||
static gfc_offset
|
||||
@ -360,7 +352,10 @@ raw_size (unix_stream * s)
|
||||
int ret = fstat (s->fd, &statbuf);
|
||||
if (ret == -1)
|
||||
return ret;
|
||||
return statbuf.st_size;
|
||||
if (S_ISREG (statbuf.st_mode))
|
||||
return statbuf.st_size;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
|
Loading…
Reference in New Issue
Block a user