Mail Archives: cygwin/2006/09/01/19:15:43
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.
cgf
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -