Mail Archives: cygwin/2009/10/01/12:32:11
On Oct 1 16:25, Eric Blake wrote:
> I'm debating about doing one final coreutils drop for cygwin 1.5, since
> coreutils 6.10 is comparatively old compared to the upcoming 7.7. In the
> process, I'm trying to write a wrapper for coreutils to work around various
> rename(2) bugs (my patch for coreutils already deals with bugs in Solaris 9 and
> 10, and NetBSD 1.6). For the good news, the testsuite for coreutils passes all
> rename(2) tests on a self-built cygwin 1.7 without needing any wrapper (self-
> built, because cgf has not yet checked in his patch to fix a/.// detection).
>
> But I'm running into a weird case on cygwin 1.5. I've got two machines, both
> running Windows XP, but the same sequence of commands on the two machines gives
> different behavior. Can anyone explain this, other than a possibility of BLODA?
>
> $ mkdir a b
> $ touch a/f
> $ mv -T a b
> $ rm b/f
> $ rmdir b
> $ ls
>
> On one machine, this works as expected, but on the other, the rmdir action
> brings directory 'a' back into existence. The problem looks like it only
> occurs when moving a non-empty directory to overwrite an empty one.
>
> I can work around it - in the wrapper, call rmdir(dst) if destination exists
> and is a directory, prior to calling rename(src,dst). But I'd like an
> explanation of why I need to do it, if anyone knows, since it means the rename
> operation is no longer atomic.
Did you try to look what happens in sysinternal's procmon?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
- Raw text -