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>
|
2013-02-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||||
|
|
||||||
PR target/56347
|
PR target/56347
|
||||||
|
@ -152,8 +152,12 @@ static const st_option async_opt[] =
|
|||||||
static void
|
static void
|
||||||
test_endfile (gfc_unit * u)
|
test_endfile (gfc_unit * u)
|
||||||
{
|
{
|
||||||
if (u->endfile == NO_ENDFILE && ssize (u->s) == stell (u->s))
|
if (u->endfile == NO_ENDFILE)
|
||||||
u->endfile = AT_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
|
static gfc_offset
|
||||||
raw_tell (unix_stream * s)
|
raw_tell (unix_stream * s)
|
||||||
{
|
{
|
||||||
gfc_offset x;
|
return lseek (s->fd, 0, SEEK_CUR);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gfc_offset
|
static gfc_offset
|
||||||
@ -360,7 +352,10 @@ raw_size (unix_stream * s)
|
|||||||
int ret = fstat (s->fd, &statbuf);
|
int ret = fstat (s->fd, &statbuf);
|
||||||
if (ret == -1)
|
if (ret == -1)
|
||||||
return ret;
|
return ret;
|
||||||
return statbuf.st_size;
|
if (S_ISREG (statbuf.st_mode))
|
||||||
|
return statbuf.st_size;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Loading…
Reference in New Issue
Block a user