public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
* fopen() behavior: File positioning in append mode
@ 2017-02-03 10:59 Stefan Heinzmann
  2017-02-03 15:11 ` Craig Howland
  0 siblings, 1 reply; 2+ messages in thread
From: Stefan Heinzmann @ 2017-02-03 10:59 UTC (permalink / raw)
  To: 'newlib@sourceware.org'

Hi,

I am unsure what the behavior of fopen() should be when the "a+" mode is 
given. The source for this is in file newlib/libc/stdio/fopen.c

Mode a+ translates to open() flags O_RDWR|O_CREAT|O_APPEND according to 
the POSIX standard. This would set the file position to the beginning of 
the file. The file position would be relevant only to read operations, 
since the O_APPEND flag causes writes to happen at the file end in any case.

However, fopen() seems to set the file position to the end in this case, 
by calling fseek() explicitly. The consequence is that read operations 
also happen at the file end. I don't understand why this is done. 
Wouldn't it be more useful to omit the call to fseek(), or to restrict 
it to the write-only case?

The C standard doesn't seem to be clear here. Does it actually specify 
what the result of ftell() should be immediately after calling fopen()? 
I seem to be unable to find conclusive text.

Thanks
Stefan

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-02-03 15:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-03 10:59 fopen() behavior: File positioning in append mode Stefan Heinzmann
2017-02-03 15:11 ` Craig Howland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).