7 #if defined(HAVE_SYS_ACL_H)
14 #if defined(HAVE_SYS_ACL_H)
15 static inline int __acl_entries(acl_t a)
18 #if defined(__FreeBSD__)
19 struct acl * aclp = &a->ats_acl;
20 count = aclp->acl_cnt;
22 int id = ACL_FIRST_ENTRY;
25 while (acl_get_entry(a,
id, &ace) > 0) {
37 #if defined(HAVE_SYS_ACL_H)
43 if (ifdno < 0 || ofdno < 0)
46 #if defined(_PC_ACL_EXTENDED)
47 if (fpathconf(ifdno, _PC_ACL_EXTENDED) != 1
48 || fpathconf(ofdno, _PC_ACL_EXTENDED) != 1)
52 a = acl_get_fd(ifdno);
55 count = __acl_entries(a);
56 if (count > 0 && count != 3 && acl_set_fd(ofdno, a) < 0) {
71 #if defined(HAVE_SYS_ACL_H)
72 acl_t (*aclgetf)(
const char *, acl_type_t);
73 int (*aclsetf)(
const char *, acl_type_t, acl_t);
77 if (!(sdn && *sdn && tdn && *tdn))
80 #if defined(_PC_ACL_EXTENDED)
81 if (pathconf(sdn, _PC_ACL_EXTENDED) != 1
82 || pathconf(tdn, _PC_ACL_EXTENDED) != 1)
86 #if defined(__FreeBSD__)
89 aclgetf = acl_get_link_np;
90 aclsetf = acl_set_link_np;
94 aclgetf = acl_get_file;
95 aclsetf = acl_set_file;
103 #if defined(__APPLE__)
104 a = aclgetf(sdn, ACL_TYPE_EXTENDED);
108 count = __acl_entries(a);
109 if (count > 0 && aclsetf(tdn, ACL_TYPE_DEFAULT, a) < 0) {
114 a = aclgetf(sdn, ACL_TYPE_DEFAULT);
118 count = __acl_entries(a);
119 if (count > 0 && aclsetf(tdn, ACL_TYPE_DEFAULT, a) < 0) {
125 a = aclgetf(sdn, ACL_TYPE_ACCESS);
128 if (aclsetf(tdn, ACL_TYPE_ACCESS, a) < 0) {
rpmRC rpmaclCopyDir(const char *sdn, const char *tdn, mode_t mode)
rpmRC rpmaclCopyFd(FD_t ifd, FD_t ofd)
The FD_t File Handle data structure.
enum rpmRC_e rpmRC
RPM return codes.
int Fileno(FD_t fd)
fileno(3) clone.