bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#19051: rm symboliclink/ # "Is a directory"


From: aaron brick
Subject: bug#19051: rm symboliclink/ # "Is a directory"
Date: Fri, 14 Nov 2014 12:23:29 -0800

thanks for your time and comments folks!


On Fri, Nov 14, 2014 at 6:47 AM, Eric Blake <address@hidden> wrote:
> On 11/14/2014 06:15 AM, Eric Blake wrote:
>
>>> Confused me too when I encountered it first, but tt's required by POSIX:
>>> http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11
>>
>> No, actually, POSIX requires that it (attempt to) remove the DIRECTORY,
>> not the symlink.  Linux is intentionally in violation of POSIX on this
>> front.
>>
>> Try this on Solaris:
>>
>> $ mkdir a
>> $ ln -s a b
>> $ rm b/
>> $ ls -d ?
>> b
>
> Uggh, serves me right for typing without testing.  I'm mixing up
> rename(), unlink(), and rmdir() semantics.  Basically,
> unlink("anything/") is required by POSIX to fail because the trailing /
> means that the only thing to be removed is a directory, but directories
> can only be removed by rmdir(), not unlink().
>
> Still, my point remains when you use 'rm -r b/': on Linux, it fails
> (cannot remove 'b/': Not a directory), on Solaris it succeeds at
> removing 'a' and leaving 'b' dangling.
>
> The fact that Linux intentionally violates POSIX on some of the corner
> cases related to symlinks to directories makes it harder to definitively
> state what coreutils should do.
>
> --
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]