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.

Reply via email to