I'll adjust the docs to clarify that the permission change followed by delete is a non-atomic sequence, with no attempt to revert a permission change if the delete fails.
Ending up with just the permission change is one possible outcome, and I hope the clarification will also make other outcomes more apparent. For example, it could happen that X's permission is changed, then X is concurrently replaced by a new file again without write permission, and the still-in-progress delete fails due to a permission failure after all. At Wed, 14 Jan 2015 09:31:37 -0600, Robby Findler wrote: > Is it perhaps worth being more explicit about this possibility in the > docs? I'm thinking of a sentence that says "when <the parameter> is > set, delete-file may have only the effect of changing the permissions > on the file" or similar. > > Robby > > On Wed, Jan 14, 2015 at 8:29 AM, Matthew Flatt <mfl...@cs.utah.edu> wrote: > > At Wed, 14 Jan 2015 09:07:08 -0500, Neil Toronto wrote: > >> On 01/13/2015 02:00 PM, mfl...@racket-lang.org wrote: > >> > 9f3c82c Matthew Flatt <mfl...@racket-lang.org> 2015-01-13 08:47 > >> > : > >> > | Windows: change `delete-{file,directory}` to attempt permission > correction > >> > | > >> > | If a file or directory delete fails, try adjusting the file or > >> > directory > >> > | permissions to allow writes, then try deleting again. This process > should > >> > | provide a more Unix-like experience and make programs behave more > >> > | consistently. > >> > | > >> > | A new `current-force-delete-permissions` parameter provides access to > >> > | the raw native behavior. > >> > >> If I'm understand the new behavior correctly, it's possible for a > >> failing `delete-file` to raise an exception, having changed the file to > >> be writable. Do I have that right, and is that OK? > > > > That is correct. I'm not too happy about it, but I think it's a good > > trade-off relative to the old behavior (as a default). > > > > _________________________ > > Racket Developers list: > > http://lists.racket-lang.org/dev _________________________ Racket Developers list: http://lists.racket-lang.org/dev