[BUG] open(): Opening with flags O_RDONLY | O_APPEND positions the file pointer at the end of the file

Christopher Faylor cgf@redhat.com
Wed Jul 10 10:51:00 GMT 2002


On Wed, Jul 10, 2002 at 06:48:30PM +0200, Corinna Vinschen wrote:
>On Wed, Jul 10, 2002 at 12:36:13PM -0400, Chris Faylor wrote:
>> On Wed, Jul 10, 2002 at 03:39:43PM +0200, Pavel Tsekov wrote:
>> >Hello, there :)
>> >
>> >Attached is a testcase which displays the problem. On Linux it will
>> >properly return 13, while on cygwin it returns 0.
>> >
>> >I found this while trying to understand why MC doesn't extract
>> >properly files from say .zip files.
>> >
>> >I don't know exactly why they call O_RDONLY combined with O_APPEND but
>> >I will mail the mc-devel list ASAP.
>> >
>> >Still according to the Linux man page and SUSv2, O_APPEND should be
>> >taken into account only when writing to the file.
>> >
>> >Having in mind that fhandler_base::write() calls SetFilePointer
>> >before each write, I wonder why fhandler_disk_base::open calls
>> >SetFilePointer when it detects O_APPEND ?
>> 
>> Good question.
>
>What if
>
> 	fd = open(O_APPEND);
>	pos = lseek(fd, 0, SEEK_CUR);
>
>?  If open() doesn't move the pointer, `pos' is incorrectly set to 0.

Actually, I'd argue that, in that case, lseek should have some O_APPEND
logic of its own.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list