From patchwork Sat Dec 15 12:44:01 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [libfortran] Fix PR 30162, write with pipes From: Thomas Koenig X-Patchwork-Id: 206615 Message-Id: <50CC7091.4020104@netcologne.de> To: Janus Weil Cc: "fortran@gcc.gnu.org" , gcc-patches Date: Sat, 15 Dec 2012 13:44:01 +0100 Hi Janus, Oops, right. Here is the correct one. Regards Thomas > wrong patch attached? It contains a hunk in frontend-passes.c, which > seems totally unrelated ... > > Cheers, > Janus > > > > 2012/12/15 Thomas Koenig : >> Hello world, >> >> the attached patch fixes the regression and regtests cleanly. >> No test case because I could not find anything portable >> to create a FIFO in the testsuite. >> >> OK for trunk and 4.7? >> >> Thomas >> >> 2012-12-15 Thomas Koenig >> >> PR libfortran/30162 >> * io/unix.c (raw_tell): If the lseek is done on a >> non-seekable file, return 0. >> > Index: io/unix.c =================================================================== --- io/unix.c (Revision 194507) +++ io/unix.c (Arbeitskopie) @@ -344,7 +344,15 @@ static gfc_offset raw_tell (unix_stream * s) { - return lseek (s->fd, 0, SEEK_CUR); + 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; } static gfc_offset