2008-12-21 00:34:38 |
Nikodemus Siivola |
description |
Closing a stream opened with :IF-EXISTS :SUPERSEDE with :ABORT T leaves no
file on disk, even if one existed before opening.
The illegality of this is not crystal clear, as the ANSI dictionary
entry for CLOSE says that when :ABORT is T superseded files are not
superseded (ie. the original should be restored), whereas the OPEN
entry says about :IF-EXISTS :SUPERSEDE "If possible, the
implementation should not destroy the old file until the new stream
is closed." -- implying that even though undesirable, early deletion
is legal. Restoring the original would none the less be the polite
thing to do. |
Closing a stream opened with :IF-EXISTS :SUPERSEDE with :ABORT T leaves no
file on disk, even if one existed before opening.
The illegality of this is not crystal clear, as the ANSI dictionary
entry for CLOSE says that when :ABORT is T superseded files are not
superseded (ie. the original should be restored), whereas the OPEN
entry says about :IF-EXISTS :SUPERSEDE "If possible, the
implementation should not destroy the old file until the new stream
is closed." -- implying that even though undesirable, early deletion
is legal. Restoring the original would none the less be the polite
thing to do.
Note: Richard Kreuter's "transaction stream" proposal (sbcl-devel link goes here)
would be one way to address this, and other related issues.
|
|