Merge 4c3cda21663fa3dc42147c771a3b96b85e631c53: Darwin ACL: avoid using mbr_identifier_to_uuid() Use mbr_uid_to_uuid() and mbr_gid_to_uuid() for backwards compatibility instead. These functions have been introduced together with membership.h.diff -r1.16 -r1.17 pkgsrc/archivers/libarchive/files/configure
(joerg)
@@ -18178,27 +18178,27 @@ ac_fn_c_check_decl "$LINENO" "ACL_USER" | @@ -18178,27 +18178,27 @@ ac_fn_c_check_decl "$LINENO" "ACL_USER" | |||
18178 | #include <sys/acl.h> | 18178 | #include <sys/acl.h> | |
18179 | " | 18179 | " | |
18180 | if test "x$ac_cv_have_decl_ACL_USER" = xyes; then : | 18180 | if test "x$ac_cv_have_decl_ACL_USER" = xyes; then : | |
18181 | ac_have_decl=1 | 18181 | ac_have_decl=1 | |
18182 | else | 18182 | else | |
18183 | ac_have_decl=0 | 18183 | ac_have_decl=0 | |
18184 | fi | 18184 | fi | |
18185 | 18185 | |||
18186 | cat >>confdefs.h <<_ACEOF | 18186 | cat >>confdefs.h <<_ACEOF | |
18187 | #define HAVE_DECL_ACL_USER $ac_have_decl | 18187 | #define HAVE_DECL_ACL_USER $ac_have_decl | |
18188 | _ACEOF | 18188 | _ACEOF | |
18189 | 18189 | |||
18190 | 18190 | |||
18191 | # FreeBSD and MacOS ACL support | 18191 | # MacOS ACL support | |
18192 | ac_fn_c_check_decl "$LINENO" "ACL_TYPE_EXTENDED" "ac_cv_have_decl_ACL_TYPE_EXTENDED" "#include <sys/types.h> | 18192 | ac_fn_c_check_decl "$LINENO" "ACL_TYPE_EXTENDED" "ac_cv_have_decl_ACL_TYPE_EXTENDED" "#include <sys/types.h> | |
18193 | #include <sys/acl.h> | 18193 | #include <sys/acl.h> | |
18194 | " | 18194 | " | |
18195 | if test "x$ac_cv_have_decl_ACL_TYPE_EXTENDED" = xyes; then : | 18195 | if test "x$ac_cv_have_decl_ACL_TYPE_EXTENDED" = xyes; then : | |
18196 | ac_have_decl=1 | 18196 | ac_have_decl=1 | |
18197 | else | 18197 | else | |
18198 | ac_have_decl=0 | 18198 | ac_have_decl=0 | |
18199 | fi | 18199 | fi | |
18200 | 18200 | |||
18201 | cat >>confdefs.h <<_ACEOF | 18201 | cat >>confdefs.h <<_ACEOF | |
18202 | #define HAVE_DECL_ACL_TYPE_EXTENDED $ac_have_decl | 18202 | #define HAVE_DECL_ACL_TYPE_EXTENDED $ac_have_decl | |
18203 | _ACEOF | 18203 | _ACEOF | |
18204 | ac_fn_c_check_decl "$LINENO" "ACL_SYNCHRONIZE" "ac_cv_have_decl_ACL_SYNCHRONIZE" "#include <sys/types.h> | 18204 | ac_fn_c_check_decl "$LINENO" "ACL_SYNCHRONIZE" "ac_cv_have_decl_ACL_SYNCHRONIZE" "#include <sys/types.h> |
@@ -734,27 +734,27 @@ if test "x$enable_acl" != "xno"; then | @@ -734,27 +734,27 @@ if test "x$enable_acl" != "xno"; then | |||
734 | #endif | 734 | #endif | |
735 | #if HAVE_SYS_ACL_H | 735 | #if HAVE_SYS_ACL_H | |
736 | #include <sys/acl.h> | 736 | #include <sys/acl.h> | |
737 | #endif | 737 | #endif | |
738 | ]) | 738 | ]) | |
739 | 739 | |||
740 | # FreeBSD and POSIX | 740 | # FreeBSD and POSIX | |
741 | # MacOS has no ACL_USER in acl.h | 741 | # MacOS has no ACL_USER in acl.h | |
742 | AC_CHECK_DECLS([ACL_TYPE_NFS4, ACL_USER], | 742 | AC_CHECK_DECLS([ACL_TYPE_NFS4, ACL_USER], | |
743 | [], [], | 743 | [], [], | |
744 | [#include <sys/types.h> | 744 | [#include <sys/types.h> | |
745 | #include <sys/acl.h>]) | 745 | #include <sys/acl.h>]) | |
746 | 746 | |||
747 | # FreeBSD and MacOS ACL support | 747 | # MacOS ACL support | |
748 | AC_CHECK_DECLS([ACL_TYPE_EXTENDED, ACL_SYNCHRONIZE], [], [], | 748 | AC_CHECK_DECLS([ACL_TYPE_EXTENDED, ACL_SYNCHRONIZE], [], [], | |
749 | [#include <sys/types.h> | 749 | [#include <sys/types.h> | |
750 | #include <sys/acl.h>]) | 750 | #include <sys/acl.h>]) | |
751 | 751 | |||
752 | # Solaris and derivates ACLs | 752 | # Solaris and derivates ACLs | |
753 | AC_CHECK_TYPES([aclent_t], [], [], [[#include <sys/acl.h>]]) | 753 | AC_CHECK_TYPES([aclent_t], [], [], [[#include <sys/acl.h>]]) | |
754 | AC_CHECK_TYPES([ace_t], [], [], [[#include <sys/acl.h>]]) | 754 | AC_CHECK_TYPES([ace_t], [], [], [[#include <sys/acl.h>]]) | |
755 | AC_CHECK_FUNCS(acl facl) | 755 | AC_CHECK_FUNCS(acl facl) | |
756 | AC_CHECK_DECLS([GETACL, SETACL, GETACLCNT, ACE_GETACL, ACE_SETACL, ACE_GETACLCNT], [], [], [#include <sys/acl.h>]) | 756 | AC_CHECK_DECLS([GETACL, SETACL, GETACLCNT, ACE_GETACL, ACE_SETACL, ACE_GETACLCNT], [], [], [#include <sys/acl.h>]) | |
757 | fi | 757 | fi | |
758 | 758 | |||
759 | # Additional requirements | 759 | # Additional requirements | |
760 | AC_SYS_LARGEFILE | 760 | AC_SYS_LARGEFILE |
@@ -414,41 +414,39 @@ set_acl(struct archive *a, int fd, const | @@ -414,41 +414,39 @@ set_acl(struct archive *a, int fd, const | |||
414 | #if HAVE_SUN_NFS4_ACL | 414 | #if HAVE_SUN_NFS4_ACL | |
415 | case ARCHIVE_ENTRY_ACL_EVERYONE: | 415 | case ARCHIVE_ENTRY_ACL_EVERYONE: | |
416 | if (ace != NULL) | 416 | if (ace != NULL) | |
417 | ace->a_flags |= ACE_EVERYONE; | 417 | ace->a_flags |= ACE_EVERYONE; | |
418 | break; | 418 | break; | |
419 | #endif | 419 | #endif | |
420 | #else /* !HAVE_SUN_ACL */ | 420 | #else /* !HAVE_SUN_ACL */ | |
421 | case ARCHIVE_ENTRY_ACL_USER: | 421 | case ARCHIVE_ENTRY_ACL_USER: | |
422 | ae_uid = archive_write_disk_uid(a, ae_name, ae_id); | 422 | ae_uid = archive_write_disk_uid(a, ae_name, ae_id); | |
423 | #if !HAVE_DARWIN_ACL /* FreeBSD, Linux */ | 423 | #if !HAVE_DARWIN_ACL /* FreeBSD, Linux */ | |
424 | acl_set_tag_type(acl_entry, ACL_USER); | 424 | acl_set_tag_type(acl_entry, ACL_USER); | |
425 | acl_set_qualifier(acl_entry, &ae_uid); | 425 | acl_set_qualifier(acl_entry, &ae_uid); | |
426 | #else /* MacOS */ | 426 | #else /* MacOS */ | |
427 | if (mbr_identifier_to_uuid(ID_TYPE_UID, &ae_uid, | 427 | if (mbr_uid_to_uuid(ae_uid, ae_uuid) != 0) | |
428 | sizeof(uid_t), ae_uuid) != 0) | |||
429 | continue; | 428 | continue; | |
430 | if (acl_set_qualifier(acl_entry, &ae_uuid) != 0) | 429 | if (acl_set_qualifier(acl_entry, &ae_uuid) != 0) | |
431 | continue; | 430 | continue; | |
432 | #endif /* HAVE_DARWIN_ACL */ | 431 | #endif /* HAVE_DARWIN_ACL */ | |
433 | break; | 432 | break; | |
434 | case ARCHIVE_ENTRY_ACL_GROUP: | 433 | case ARCHIVE_ENTRY_ACL_GROUP: | |
435 | ae_gid = archive_write_disk_gid(a, ae_name, ae_id); | 434 | ae_gid = archive_write_disk_gid(a, ae_name, ae_id); | |
436 | #if !HAVE_DARWIN_ACL /* FreeBSD, Linux */ | 435 | #if !HAVE_DARWIN_ACL /* FreeBSD, Linux */ | |
437 | acl_set_tag_type(acl_entry, ACL_GROUP); | 436 | acl_set_tag_type(acl_entry, ACL_GROUP); | |
438 | acl_set_qualifier(acl_entry, &ae_gid); | 437 | acl_set_qualifier(acl_entry, &ae_gid); | |
439 | #else /* MacOS */ | 438 | #else /* MacOS */ | |
440 | if (mbr_identifier_to_uuid(ID_TYPE_GID, &ae_gid, | 439 | if (mbr_gid_to_uuid(ae_gid, ae_uuid) != 0) | |
441 | sizeof(gid_t), ae_uuid) != 0) | |||
442 | continue; | 440 | continue; | |
443 | if (acl_set_qualifier(acl_entry, &ae_uuid) != 0) | 441 | if (acl_set_qualifier(acl_entry, &ae_uuid) != 0) | |
444 | continue; | 442 | continue; | |
445 | #endif /* HAVE_DARWIN_ACL */ | 443 | #endif /* HAVE_DARWIN_ACL */ | |
446 | break; | 444 | break; | |
447 | #if !HAVE_DARWIN_ACL /* FreeBSD, Linux */ | 445 | #if !HAVE_DARWIN_ACL /* FreeBSD, Linux */ | |
448 | case ARCHIVE_ENTRY_ACL_USER_OBJ: | 446 | case ARCHIVE_ENTRY_ACL_USER_OBJ: | |
449 | acl_set_tag_type(acl_entry, ACL_USER_OBJ); | 447 | acl_set_tag_type(acl_entry, ACL_USER_OBJ); | |
450 | break; | 448 | break; | |
451 | case ARCHIVE_ENTRY_ACL_GROUP_OBJ: | 449 | case ARCHIVE_ENTRY_ACL_GROUP_OBJ: | |
452 | acl_set_tag_type(acl_entry, ACL_GROUP_OBJ); | 450 | acl_set_tag_type(acl_entry, ACL_GROUP_OBJ); | |
453 | break; | 451 | break; | |
454 | case ARCHIVE_ENTRY_ACL_MASK: | 452 | case ARCHIVE_ENTRY_ACL_MASK: |
@@ -119,27 +119,27 @@ | @@ -119,27 +119,27 @@ | |||
119 | 119 | |||
120 | #ifndef O_BINARY | 120 | #ifndef O_BINARY | |
121 | #define O_BINARY 0 | 121 | #define O_BINARY 0 | |
122 | #endif | 122 | #endif | |
123 | 123 | |||
124 | /* | 124 | /* | |
125 | * If this platform has <sys/acl.h>, acl_create(), acl_init(), | 125 | * If this platform has <sys/acl.h>, acl_create(), acl_init(), | |
126 | * acl_set_file(), and ACL_USER, we assume it has the rest of the | 126 | * acl_set_file(), and ACL_USER, we assume it has the rest of the | |
127 | * POSIX.1e draft functions used in archive_read_extract.c. | 127 | * POSIX.1e draft functions used in archive_read_extract.c. | |
128 | */ | 128 | */ | |
129 | #if HAVE_SYS_ACL_H && HAVE_ACL_CREATE_ENTRY && HAVE_ACL_INIT && HAVE_ACL_SET_FILE | 129 | #if HAVE_SYS_ACL_H && HAVE_ACL_CREATE_ENTRY && HAVE_ACL_INIT && HAVE_ACL_SET_FILE | |
130 | #if HAVE_DECL_ACL_USER | 130 | #if HAVE_DECL_ACL_USER | |
131 | #define HAVE_POSIX_ACL 1 | 131 | #define HAVE_POSIX_ACL 1 | |
132 | #elif HAVE_DECL_ACL_TYPE_EXTENDED | 132 | #elif HAVE_DECL_ACL_TYPE_EXTENDED && HAVE_MEMBERSHIP_H | |
133 | #define HAVE_DARWIN_ACL 1 | 133 | #define HAVE_DARWIN_ACL 1 | |
134 | #endif | 134 | #endif | |
135 | #if HAVE_DECL_ACL_TYPE_NFS4 | 135 | #if HAVE_DECL_ACL_TYPE_NFS4 | |
136 | #define HAVE_FREEBSD_NFS4_ACL 1 | 136 | #define HAVE_FREEBSD_NFS4_ACL 1 | |
137 | #endif | 137 | #endif | |
138 | #endif | 138 | #endif | |
139 | 139 | |||
140 | /* | 140 | /* | |
141 | * If this platform has <sys/acl.h>, acl_get(), facl_get(), acl_set(), | 141 | * If this platform has <sys/acl.h>, acl_get(), facl_get(), acl_set(), | |
142 | * facl_set() and types aclent_t and ace_t it uses Solaris-style ACL functions | 142 | * facl_set() and types aclent_t and ace_t it uses Solaris-style ACL functions | |
143 | */ | 143 | */ | |
144 | #if HAVE_SYS_ACL_H && HAVE_ACL && HAVE_FACL && HAVE_ACLENT_T && \ | 144 | #if HAVE_SYS_ACL_H && HAVE_ACL && HAVE_FACL && HAVE_ACLENT_T && \ | |
145 | HAVE_DECL_GETACL && HAVE_DECL_GETACLCNT && HAVE_DECL_SETACL | 145 | HAVE_DECL_GETACL && HAVE_DECL_GETACLCNT && HAVE_DECL_SETACL |