Mercurial > hg > octave-lojdl > gnulib-hg
changeset 13544:e123501bb47c
copy-acl: ignore ENOTSUP on HP-UX
Fixes Coreutils bug 6053.
* lib/acl-internal.h (ACL_NOT_WELL_SUPPORTED): Move definition up,
so that it is available for HP-UX.
* lib/copy-acl.c (qcopy_acl): Use it.
Reported by Patrick M. Callahan.
Signed-off-by: Eric Blake <eblake@redhat.com>
author | Pádraig Brady <P@draigBrady.com> |
---|---|
date | Thu, 10 Jun 2010 15:12:48 +0100 |
parents | 88145cbcc224 |
children | 1531149632e8 |
files | ChangeLog lib/acl-internal.h lib/copy-acl.c |
diffstat | 3 files changed, 23 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2010-08-10 Pádraig Brady <P@draigbrady.com> + and Eric Blake <eblake@redhat.com> + + copy-acl: ignore ENOTSUP on HP-UX + * lib/acl-internal.h (ACL_NOT_WELL_SUPPORTED): Move definition up, + so that it is available for HP-UX. + * lib/copy-acl.c (qcopy_acl): Use it. + Reported by Patrick M. Callahan. + 2010-08-10 Eric Blake <eblake@redhat.com> open, chown: relax license
--- a/lib/acl-internal.h +++ b/lib/acl-internal.h @@ -51,6 +51,18 @@ # define fchmod(fd, mode) (-1) #endif +/* Recognize some common errors such as from an NFS mount that does + not support ACLs, even when local drives do. */ +#if defined __APPLE__ && defined __MACH__ /* MacOS X */ +# define ACL_NOT_WELL_SUPPORTED(Err) \ + ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY || (Err) == ENOENT) +#elif defined EOPNOTSUPP /* Tru64 NFS */ +# define ACL_NOT_WELL_SUPPORTED(Err) \ + ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY || (Err) == EOPNOTSUPP) +#else +# define ACL_NOT_WELL_SUPPORTED(Err) \ + ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY) +#endif #if USE_ACL @@ -125,17 +137,6 @@ # define MODE_INSIDE_ACL 1 # endif -# if defined __APPLE__ && defined __MACH__ /* MacOS X */ -# define ACL_NOT_WELL_SUPPORTED(Err) \ - ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY || (Err) == ENOENT) -# elif defined EOPNOTSUPP /* Tru64 NFS */ -# define ACL_NOT_WELL_SUPPORTED(Err) \ - ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY || (Err) == EOPNOTSUPP) -# else -# define ACL_NOT_WELL_SUPPORTED(Err) \ - ((Err) == ENOTSUP || (Err) == ENOSYS || (Err) == EINVAL || (Err) == EBUSY) -# endif - /* Return the number of entries in ACL. Return -1 and set errno upon failure to determine it. */ /* Define a replacement for acl_entries if needed. (Only Linux has it.) */
--- a/lib/copy-acl.c +++ b/lib/copy-acl.c @@ -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;