cygwin fork()

Christopher Faylor
Fri Sep 1 23:15:00 GMT 2006

On Fri, Sep 01, 2006 at 05:07:49PM -0500, Gary R. Van Sickle wrote:
>> From: Christopher Faylor
>> Sent: Friday, September 01, 2006 1:01 PM
>> Subject: Re: cygwin fork()
>> On Fri, Sep 01, 2006 at 06:57:10PM +0100, Dave Korn wrote:
>> >On 01 September 2006 18:47, clayne wrote:
>> >>I found the real culprit, which I had also ifdef'd out because it 
>> >>looked bogus and crufty:
>> >>
>> >>/* Return 1 if a seek on FD will succeed. */ #ifndef __CYGWIN__ #  
>> >>define fd_is_seekable(fd) (lseek ((fd), 0L, SEEK_CUR) >= 0) 
>> #else #  
>> >>define fd_is_seekable(fd) 0 #endif /* __CYGWIN__ */
>> >
>> >Yeeesh.  This is a terrible way of dealing with the fact 
>> that you can't 
>> >seek a stream accurately if you open it in text mode, because of the 
>> >ambiguity about whether you've advanced one or two chars through the 
>> >underlying file when you see an LF that could perhaps have actually 
>> >been a CR/LF.  What we really want is
>> AFAIK, Cygwin's lseek should handle seeking on text streams.  
>> DJ implemented that years ago.
>Last I looked, which was admittedly also years ago, it was "#if 0"'ed out,
>with a comment to the effect of "Nobody has any business seeking around in
>text files."

AFAIK, lseek is supposed to work.  There was some old pre-DJ code which
I believe was ifdef'ed out up until around 2002 when Corinna introduced
64-bit support.

However, I'm sure there are probably corner cases where it breaks down.
However, determining the position in a file using lseek and then seeking
to that position later should work ok.


Unsubscribe info:
Problem reports:

More information about the Cygwin mailing list