[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: "mv a b/" when b does not exist
From: |
Jim Meyering |
Subject: |
Re: "mv a b/" when b does not exist |
Date: |
Tue, 29 Nov 2005 18:59:04 +0100 |
Tim Waugh <address@hidden> wrote:
> On Tue, Nov 29, 2005 at 05:24:32PM +0100, Jim Meyering wrote:
>
>> Note that the underlying rename would fail on Linux 2.6.x and *BSD
>> (but it'd succeed on Solaris 9 and 10):
>
> No, you're looking at a different case:
>
>> $ touch a; rm -rf b; perl -e 'rename "a", "b/" or die "$!"'
>> Not a directory at -e line 1.
>> [Exit 20]
>
> Certainly if "a" is a regular file I wouldn't expect this to work, and
> in fact it does not work on Linux with coreutils-5.2.1 either.
>
> The particular case I wanted to raise awareness of is when "a" is a
> directory.
I see, now. Thanks.
*That* is a bug. Ouch. And it needs to be fixed in coreutils-5.94.
If someone feels like preparing a patch along with ChangeLog entries,
NEWS, and test cases, I won't complain.
The problem is the strip_trailing_slashes (dest) call in mv.c. It
may need to be removed altogether, and the new behavior documented.
Otherwise, rm -rf a; touch a; mv a b/ will mistakenly succeed on
Linux-based systems. Testing how the underlying rename function
handles this case will be tricky, since you'll get different results
on e.g., Solaris 7 and earlier.
Note that the --strip-trailing-slashes option affects only source
file names.
- "mv a b/" when b does not exist, Tim Waugh, 2005/11/28
- Re: "mv a b/" when b does not exist, Paul Eggert, 2005/11/28
- Re: "mv a b/" when b does not exist, Paul Eggert, 2005/11/30
- Re: "mv a b/" when b does not exist, Eric Blake, 2005/11/30
- Re: "mv a b/" when b does not exist, Paul Eggert, 2005/11/30
- Re: "mv a b/" when b does not exist, Jim Meyering, 2005/11/30
- Re: "mv a b/" when b does not exist, Bob Proulx, 2005/11/30