GNU bug report logs -
#24730
rmdir/mkdir error(s) and/or not working "reciprocally" w/each other
Previous Next
Reported by: "L. A. Walsh" <coreutils <at> tlinx.org>
Date: Tue, 18 Oct 2016 20:02:02 UTC
Severity: normal
Tags: notabug
Done: Eric Blake <eblake <at> redhat.com>
Bug is archived. No further changes may be made.
Full log
Message #15 received at 24730-done <at> debbugs.gnu.org (full text, mbox):
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Am 18.10.2016 um 22:33 schrieb Eric Blake:
> tag 24730 notabug
> thanks
>
> On 10/18/2016 02:49 PM, L. A. Walsh wrote:
>>
>> It doesn't seem rmdir and mkdir are behaving "reciprocally"...
>>
>> If I type
>>
>> mkdir -p ./a/b/c # no error
>
> . already exists, so mkdir silently does nothing,
> ./a needs to be created,
> ./a/b needs to be created,
> ./a/b/c needs to be created
>
>> rmdir -p ./a/b/c # get error msg, but a,b,c removed.
>
> ./a/b/c needs to be removed,
> ./a/b needs to be removed,
> ./a needs to be removed,
> . needs to be removed, but you can't do that, hence the error
>
> The apparent asymmetry is due to the POSIX rules on how '.' is treated;
> but we can't change the behavior of either of these commands, because
> they are both following the POSIX rules.
>
> If you want symmetry, omit the leading './', as in:
>
> $ mkdir -p a/b/c
> $ rmdir -p a/b/c
>
>>
>> 1) thinking either rmdir shouldn't generate an error or mkdir should
>>
>> mkdir -p a/../b # no error
>
> a needs to be created,
> a/.. already exists, so it silently does nothing,
> a/../b needs to be created
>
>> rmdir -p a/../b # error, but a & b removed
>
> a/../b needs to be removed,
> a/.. needs to be removed, but you can't do that,
> at this point, POSIX is fuzzy whether to attempt to remove 'a', or to
> give up since 'a/..' was already an error; but obviously coreutils
> removes 'a'
What version of core-utils shows this behavior. In the latest one it's not removed AFAICS.
- -- Reuti
>
>>
>> 2) similar comment to above -- leading to:
>>
>> for rmdir, if "-p" is used, then as similar to "mkdir -p":
>> (no error if existing, make parent directories as needed)
>>
>> rmdir -p should be
>> "no error if dir not empty, but directories are followed
>> and deleted as possible".
>
> Sadly, while that might be a nicer definition for 'rmdir -p', it doesn't
> match the POSIX requirements nor the historical behavior, so we can't
> really change it now.
>
> So I'm marking this as not a bug, as there is nothing to change.
>
> --
> Eric Blake eblake redhat com +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org
iEYEARECAAYFAlgGizIACgkQo/GbGkBRnRrB9ACgpbqqSW0ZF27H5nSKF97zrDth
kLMAnRDKMmGxZ9p2SAqp/g+8AIkinqtU
=ykPn
-----END PGP SIGNATURE-----
This bug report was last modified 8 years and 212 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.