From: Richard M K. <kr...@pr...> - 2008-02-20 14:31:29
|
Rudi Schlatte writes: > On 20.02.2008, at 21:01, Nikodemus Siivola wrote: > > > On 2/20/08, Alexander Kjeldaas <ale...@gm...> wrote: > > > >> I don't think the arguments against O_APPEND in the writeup are > >> convincing: > > > > I think the core issue is that CLHS wording for :APPEND does _not_ > > describe O_APPEND semantics: > > > > "Output operations on the stream destructively modify the existing > > file. The file pointer is initially positioned at the end of the file. > > > > If direction is :io, the file is opened in a bidirectional mode that > > allows both reading and writing." > > For further amusement, consider the fact that there is no :if-does-not- > exist :append, so to obtain a stream for a fresh file with O_APPEND > semantics, the user would have to call open - close - open in > sequence... Actually, SBCL always supplies O_APPEND to open(2) when IF-EXISTS is :APPEND. As I mention in my writeup, OPEN is not supposed to process IF-EXISTS actions if the file does not exist and is created by IF-DOES-NOT-EXIST :CREATE. So I guess using O_APPEND here is case where SBCL "deviate[s] slightly from the semantics specified". So that's another way that doing O_APPEND is at variance with the words of the CLHS in a manner that's only conforming by fiat. Regards, Richard |