[prev in list] [next in list] [prev in thread] [next in thread] 

List:       coreutils-bug
Subject:    bug#7450: cp does not check for errno=EISDIR
From:       Eric Blake <eblake () redhat ! com>
Date:       2010-11-22 16:33:51
Message-ID: 4CEA9B6F.6000405 () redhat ! com
[Download RAW message or body]


On 11/22/2010 02:36 AM, Pádraig Brady wrote:
> On 22/11/10 02:54, Paul Eggert wrote:
>> --- a/src/copy.c
>> +++ b/src/copy.c
>> @@ -603,6 +603,12 @@ copy_reg (char const *src_name, char const *dst_name,
>>                  }
>>              }
>>          }
>> +
>> +      /* Improve quality of diagnostic when a nonexistent dst_name
>> +         ends in a slash and open fails with errno == EISDIR.  */
>> +      if (dest_desc < 0 && dest_errno == EISDIR
>> +          && *dst_name && dst_name[strlen (dst_name) - 1] == '/')
>> +        dest_errno = ENOTDIR;
> 
> I like this because it probably aligns more with other systems.
> http://git.sv.gnu.org/gitweb/?p=coreutils.git;a=commitdiff;h=a16bee4f
> 
> I wonder should the Linux kernel also change?
> I.E. should creat("nosuch/") and ftruncate("nosuch/")
> return ENOTDIR rather than EISDIR ?
> There are arguments for and against I suppose.

The strongest arguments for changing the kernel would be bringing it
into compliance with POSIX.

-- 
Eric Blake   eblake@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org


["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic