Sun Mar 12 06:51:23 2017 UTC ()
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.


(joerg)
diff -r1.16 -r1.17 pkgsrc/archivers/libarchive/files/configure
diff -r1.16 -r1.17 pkgsrc/archivers/libarchive/files/configure.ac
diff -r1.6 -r1.7 pkgsrc/archivers/libarchive/files/libarchive/archive_write_disk_acl.c
diff -r1.3 -r1.4 pkgsrc/archivers/libarchive/files/test_utils/test_common.h

cvs diff -r1.16 -r1.17 pkgsrc/archivers/libarchive/files/configure (expand / switch to unified diff)

--- pkgsrc/archivers/libarchive/files/configure 2017/03/12 06:45:16 1.16
+++ pkgsrc/archivers/libarchive/files/configure 2017/03/12 06:51:23 1.17
@@ -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"
18180if test "x$ac_cv_have_decl_ACL_USER" = xyes; then : 18180if test "x$ac_cv_have_decl_ACL_USER" = xyes; then :
18181 ac_have_decl=1 18181 ac_have_decl=1
18182else 18182else
18183 ac_have_decl=0 18183 ac_have_decl=0
18184fi 18184fi
18185 18185
18186cat >>confdefs.h <<_ACEOF 18186cat >>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"
18195if test "x$ac_cv_have_decl_ACL_TYPE_EXTENDED" = xyes; then : 18195if test "x$ac_cv_have_decl_ACL_TYPE_EXTENDED" = xyes; then :
18196 ac_have_decl=1 18196 ac_have_decl=1
18197else 18197else
18198 ac_have_decl=0 18198 ac_have_decl=0
18199fi 18199fi
18200 18200
18201cat >>confdefs.h <<_ACEOF 18201cat >>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
18204ac_fn_c_check_decl "$LINENO" "ACL_SYNCHRONIZE" "ac_cv_have_decl_ACL_SYNCHRONIZE" "#include <sys/types.h> 18204ac_fn_c_check_decl "$LINENO" "ACL_SYNCHRONIZE" "ac_cv_have_decl_ACL_SYNCHRONIZE" "#include <sys/types.h>

cvs diff -r1.16 -r1.17 pkgsrc/archivers/libarchive/files/configure.ac (expand / switch to unified diff)

--- pkgsrc/archivers/libarchive/files/configure.ac 2017/03/12 06:45:16 1.16
+++ pkgsrc/archivers/libarchive/files/configure.ac 2017/03/12 06:51:23 1.17
@@ -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>])
757fi 757fi
758 758
759# Additional requirements 759# Additional requirements
760AC_SYS_LARGEFILE 760AC_SYS_LARGEFILE

cvs diff -r1.6 -r1.7 pkgsrc/archivers/libarchive/files/libarchive/Attic/archive_write_disk_acl.c (expand / switch to unified diff)

--- pkgsrc/archivers/libarchive/files/libarchive/Attic/archive_write_disk_acl.c 2017/03/12 06:45:16 1.6
+++ pkgsrc/archivers/libarchive/files/libarchive/Attic/archive_write_disk_acl.c 2017/03/12 06:51:23 1.7
@@ -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:

cvs diff -r1.3 -r1.4 pkgsrc/archivers/libarchive/files/test_utils/test_common.h (expand / switch to unified diff)

--- pkgsrc/archivers/libarchive/files/test_utils/test_common.h 2017/03/12 06:45:16 1.3
+++ pkgsrc/archivers/libarchive/files/test_utils/test_common.h 2017/03/12 06:51:23 1.4
@@ -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