Hi,

Simon Marlow <[email protected]> writes:
> Yes, using FILE_SHARE_DELETE sounds like a good plan.  Be careful though:
>
> http://blogs.msdn.com/oldnewthing/archive/2004/06/07/150047.aspx
>
> if you delete the file, even though the DeleteFile succeeds, it still exists 
> in
> the directory until the last HANDLE is closed.  So an attempt to create a file
> with the same name will still fail.  If you are deleting a file in order to
> create a new one with the same name, then you better call MoveFile() before
> DeleteFile().
That'd be great news. So basically, there are two bits we need to address:

- for _darcs/index, we need to first rename it to a suitable name and then 
delete
- we need to memory-map everything with FILE_SHARE_DELETE

The catch is, that we already do the latter and it doesn't really seem to help?
The exact C code is this (from cbits/win32.c from the mmap-0.4 package):

    38     handle = CreateFileA(filepath,
    39                          dwDesiredAccess,
    40                          
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
    41                          NULL,
    42                          dwCreationDisposition,
    43                          FILE_ATTRIBUTE_NORMAL,
    44                          NULL);

Maybe I just misunderstand how this is used? Any hints would be appreciated.

Yours,
   Petr.
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to