http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30162
--- Comment #46 from Janne Blomqvist <jb at gcc dot gnu.org> 2013-02-18 20:16:28 UTC --- (In reply to comment #44) > If unformatted sequential ever worked, it was by chance. > > Look at this piece of code: > > /* Seek to the head and overwrite the bogus length with the real > length. */ > > if (unlikely (sseek (dtp->u.p.current_unit->s, - m - 2 * record_marker, > SEEK_CUR) < 0)) > goto io_error; > > This works if it happens within a buffer, but you cannot rely on that. > > I would therefore suggest to resolve this PR by issuing a well-defined > error if we encounter a pipe on opening. > > I'll prepare a patch. As I explained in comment #23, this is already handled. When opening a file, we stat() the fd, and use the buffered I/O functions only if it's a regular file, otherwise the unbuffered raw I/O functions are used.