Subject: Re: bug#6053: cp, ls, and mv bug: unknown error (252)

From: Pádraig Brady <[email-masked]>
Date: Thu, 10 Jun 2010 15:12:48 +0100

On 10/06/10 14:32, Eric Blake wrote:
> On 06/10/2010 07:22 AM, Callahan, Patrick M. wrote:
>>     if ((errno == ENOSYS || errno == EOPNOTSUPP)
>>     ...
>> You could get in a debugger and determine where
>> to add "|| errno == 252" to solve what appears to be
>> an HP-UX-and/or-cvfs-specific problem.
>>
>> However, such a change is not appropriate for others,
>> and I doubt it will be worthwhile to attempt an
>> upstream workaround.
>>
>> [>> Agree. Appreciate the response. Restores my faith in humanity when
>> [>> I have to spend a lot of times with vendors whose only interest
>> [>> seems to be to separate me from as much as my budget as they can
>> [>> get.
> 
> Can you confirm Pádraig's google analysis that 252 is ENOTSUP on your
> platform?  If we have a symbolic name, then we can patch the code quite
> easily.  We can also patch the gnulib strerror and perror to detect the
> failure to handle ENOTSUP gracefully.

Perhaps just changing to the more general ACL_NOT_WELL_SUPPORTED()
for HPUX is appropriate? I.E. could you test the following coreutils
patch Patrick?

I left the solaris and cygwin code doing the explicit errno checks,
but suggest they also change to the more general check too.

 diff ../gnulib/lib/copy-acl.c gnulib/lib/copy-acl.c
--- ../gnulib/lib/copy-acl.c    2010-03-03 11:23:22.000000000 +0000
+++ gnulib/lib/copy-acl.c       2010-06-10 14:10:19.000000000 +0000
@@ -420,7 +420,7 @@

       if (count < 0)
         {
-          if (errno == ENOSYS || errno == EOPNOTSUPP)
+          if (ACL_NOT_WELL_SUPPORTED (errno))
             {
               count = 0;
               break;
@@ -455,7 +455,7 @@
     {
       int saved_errno = errno;

-      if (errno == ENOSYS || errno == EOPNOTSUPP)
+      if (ACL_NOT_WELL_SUPPORTED (errno))
         {
           struct stat source_statbuf;