archive_acl.c (313570) | archive_acl.c (313926) |
---|---|
1/*- 2 * Copyright (c) 2003-2010 Tim Kientzle 3 * Copyright (c) 2016 Martin Matuska 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 69 unchanged lines hidden (view full) --- 78static int is_nfs4_perms(const char *start, const char *end, 79 int *result); 80static void next_field(const char **p, const char **start, 81 const char **end, char *sep); 82static void append_entry(char **p, const char *prefix, int type, 83 int tag, int flags, const char *name, int perm, int id); 84static void append_id(char **p, int id); 85 | 1/*- 2 * Copyright (c) 2003-2010 Tim Kientzle 3 * Copyright (c) 2016 Martin Matuska 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 69 unchanged lines hidden (view full) --- 78static int is_nfs4_perms(const char *start, const char *end, 79 int *result); 80static void next_field(const char **p, const char **start, 81 const char **end, char *sep); 82static void append_entry(char **p, const char *prefix, int type, 83 int tag, int flags, const char *name, int perm, int id); 84static void append_id(char **p, int id); 85 |
86static const struct { 87 const int perm; 88 const char c; 89 const wchar_t wc; 90} nfsv4_acl_perm_map[] = { 91 { ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, 'r', 92 L'r' }, 93 { ARCHIVE_ENTRY_ACL_WRITE_DATA | ARCHIVE_ENTRY_ACL_ADD_FILE, 'w', 94 L'w' }, 95 { ARCHIVE_ENTRY_ACL_EXECUTE, 'x', L'x' }, 96 { ARCHIVE_ENTRY_ACL_APPEND_DATA | ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY, 97 'p', L'p' }, 98 { ARCHIVE_ENTRY_ACL_DELETE, 'd', L'd' }, 99 { ARCHIVE_ENTRY_ACL_DELETE_CHILD, 'D', L'D' }, 100 { ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES, 'a', L'a' }, 101 { ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES, 'A', L'A' }, 102 { ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS, 'R', L'R' }, 103 { ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS, 'W', L'W' }, 104 { ARCHIVE_ENTRY_ACL_READ_ACL, 'c', L'c' }, 105 { ARCHIVE_ENTRY_ACL_WRITE_ACL, 'C', L'C' }, 106 { ARCHIVE_ENTRY_ACL_WRITE_OWNER, 'o', L'o' }, 107 { ARCHIVE_ENTRY_ACL_SYNCHRONIZE, 's', L's' } 108}; 109 110static const int nfsv4_acl_perm_map_size = (int)(sizeof(nfsv4_acl_perm_map) / 111 sizeof(nfsv4_acl_perm_map[0])); 112 113static const struct { 114 const int perm; 115 const char c; 116 const wchar_t wc; 117} nfsv4_acl_flag_map[] = { 118 { ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT, 'f', L'f' }, 119 { ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT, 'd', L'd' }, 120 { ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, 'i', L'i' }, 121 { ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, 'n', L'n' }, 122 { ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS, 'S', L'S' }, 123 { ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS, 'F', L'F' }, 124 { ARCHIVE_ENTRY_ACL_ENTRY_INHERITED, 'I', L'I' } 125}; 126 127static const int nfsv4_acl_flag_map_size = (int)(sizeof(nfsv4_acl_flag_map) / 128 sizeof(nfsv4_acl_flag_map[0])); 129 |
|
86void 87archive_acl_clear(struct archive_acl *acl) 88{ 89 struct archive_acl_entry *ap; 90 91 while (acl->acl_head != NULL) { 92 ap = acl->acl_head->next; 93 archive_mstring_clean(&acl->acl_head->name); --- 642 unchanged lines hidden (view full) --- 736 append_id_w(wp, id / 10); 737 *(*wp)++ = L"0123456789"[id % 10]; 738} 739 740static void 741append_entry_w(wchar_t **wp, const wchar_t *prefix, int type, 742 int tag, int flags, const wchar_t *wname, int perm, int id) 743{ | 130void 131archive_acl_clear(struct archive_acl *acl) 132{ 133 struct archive_acl_entry *ap; 134 135 while (acl->acl_head != NULL) { 136 ap = acl->acl_head->next; 137 archive_mstring_clean(&acl->acl_head->name); --- 642 unchanged lines hidden (view full) --- 780 append_id_w(wp, id / 10); 781 *(*wp)++ = L"0123456789"[id % 10]; 782} 783 784static void 785append_entry_w(wchar_t **wp, const wchar_t *prefix, int type, 786 int tag, int flags, const wchar_t *wname, int perm, int id) 787{ |
788 int i; 789 |
|
744 if (prefix != NULL) { 745 wcscpy(*wp, prefix); 746 *wp += wcslen(*wp); 747 } 748 switch (tag) { 749 case ARCHIVE_ENTRY_ACL_USER_OBJ: 750 wname = NULL; 751 id = -1; --- 53 unchanged lines hidden (view full) --- 805 *(*wp)++ = L':'; 806 } 807 if ((type & ARCHIVE_ENTRY_ACL_TYPE_POSIX1E) != 0) { 808 /* POSIX.1e ACL perms */ 809 *(*wp)++ = (perm & 0444) ? L'r' : L'-'; 810 *(*wp)++ = (perm & 0222) ? L'w' : L'-'; 811 *(*wp)++ = (perm & 0111) ? L'x' : L'-'; 812 } else { | 790 if (prefix != NULL) { 791 wcscpy(*wp, prefix); 792 *wp += wcslen(*wp); 793 } 794 switch (tag) { 795 case ARCHIVE_ENTRY_ACL_USER_OBJ: 796 wname = NULL; 797 id = -1; --- 53 unchanged lines hidden (view full) --- 851 *(*wp)++ = L':'; 852 } 853 if ((type & ARCHIVE_ENTRY_ACL_TYPE_POSIX1E) != 0) { 854 /* POSIX.1e ACL perms */ 855 *(*wp)++ = (perm & 0444) ? L'r' : L'-'; 856 *(*wp)++ = (perm & 0222) ? L'w' : L'-'; 857 *(*wp)++ = (perm & 0111) ? L'x' : L'-'; 858 } else { |
813 /* NFS4 ACL perms */ 814 *(*wp)++ = (perm & (ARCHIVE_ENTRY_ACL_READ_DATA | 815 ARCHIVE_ENTRY_ACL_LIST_DIRECTORY)) ? L'r' : L'-'; 816 *(*wp)++ = (perm & (ARCHIVE_ENTRY_ACL_WRITE_DATA | 817 ARCHIVE_ENTRY_ACL_ADD_FILE)) ? L'w' : L'-'; 818 *(*wp)++ = (perm & ARCHIVE_ENTRY_ACL_EXECUTE) ? L'x' : L'-'; 819 *(*wp)++ = (perm & (ARCHIVE_ENTRY_ACL_APPEND_DATA | 820 ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY)) ? L'p' : L'-'; 821 *(*wp)++ = (perm & ARCHIVE_ENTRY_ACL_DELETE) ? L'd' : L'-'; 822 *(*wp)++ = (perm & 823 ARCHIVE_ENTRY_ACL_DELETE_CHILD) ? L'D' : L'-'; 824 *(*wp)++ = (perm & 825 ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES) ? L'a' : L'-'; 826 *(*wp)++ = (perm & 827 ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES) ? L'A' : L'-'; 828 *(*wp)++ = (perm & 829 ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS) ? L'R' : L'-'; 830 *(*wp)++ = (perm & 831 ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS) ? L'W' : L'-'; 832 *(*wp)++ = (perm & ARCHIVE_ENTRY_ACL_READ_ACL) ? L'c' : L'-'; 833 *(*wp)++ = (perm & ARCHIVE_ENTRY_ACL_WRITE_ACL) ? L'C' : L'-'; 834 *(*wp)++ = (perm & 835 ARCHIVE_ENTRY_ACL_WRITE_OWNER) ? L'o' : L'-'; 836 *(*wp)++ = (perm & 837 ARCHIVE_ENTRY_ACL_SYNCHRONIZE) ? L's' : L'-'; | 859 /* NFSv4 ACL perms */ 860 for (i = 0; i < nfsv4_acl_perm_map_size; i++) { 861 if (perm & nfsv4_acl_perm_map[i].perm) 862 *(*wp)++ = nfsv4_acl_perm_map[i].wc; 863 else if ((flags & ARCHIVE_ENTRY_ACL_STYLE_COMPACT) == 0) 864 *(*wp)++ = L'-'; 865 } |
838 *(*wp)++ = L':'; | 866 *(*wp)++ = L':'; |
839 *(*wp)++ = (perm & 840 ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT) ? L'f' : L'-'; 841 *(*wp)++ = (perm & 842 ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT) ? L'd' : L'-'; 843 *(*wp)++ = (perm & 844 ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY) ? L'i' : L'-'; 845 *(*wp)++ = (perm & 846 ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT) ? L'n' : L'-'; 847 *(*wp)++ = (perm & 848 ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS) ? L'S' : L'-'; 849 *(*wp)++ = (perm & 850 ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS) ? L'F' : L'-'; 851 *(*wp)++ = (perm & 852 ARCHIVE_ENTRY_ACL_ENTRY_INHERITED) ? L'I' : L'-'; | 867 for (i = 0; i < nfsv4_acl_flag_map_size; i++) { 868 if (perm & nfsv4_acl_flag_map[i].perm) 869 *(*wp)++ = nfsv4_acl_flag_map[i].wc; 870 else if ((flags & ARCHIVE_ENTRY_ACL_STYLE_COMPACT) == 0) 871 *(*wp)++ = L'-'; 872 } |
853 *(*wp)++ = L':'; 854 switch (type) { 855 case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: 856 wcscpy(*wp, L"allow"); 857 break; 858 case ARCHIVE_ENTRY_ACL_TYPE_DENY: 859 wcscpy(*wp, L"deny"); 860 break; --- 132 unchanged lines hidden (view full) --- 993 append_id(p, id / 10); 994 *(*p)++ = "0123456789"[id % 10]; 995} 996 997static void 998append_entry(char **p, const char *prefix, int type, 999 int tag, int flags, const char *name, int perm, int id) 1000{ | 873 *(*wp)++ = L':'; 874 switch (type) { 875 case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: 876 wcscpy(*wp, L"allow"); 877 break; 878 case ARCHIVE_ENTRY_ACL_TYPE_DENY: 879 wcscpy(*wp, L"deny"); 880 break; --- 132 unchanged lines hidden (view full) --- 1013 append_id(p, id / 10); 1014 *(*p)++ = "0123456789"[id % 10]; 1015} 1016 1017static void 1018append_entry(char **p, const char *prefix, int type, 1019 int tag, int flags, const char *name, int perm, int id) 1020{ |
1021 int i; 1022 |
|
1001 if (prefix != NULL) { 1002 strcpy(*p, prefix); 1003 *p += strlen(*p); 1004 } 1005 switch (tag) { 1006 case ARCHIVE_ENTRY_ACL_USER_OBJ: 1007 name = NULL; 1008 id = -1; --- 53 unchanged lines hidden (view full) --- 1062 *(*p)++ = ':'; 1063 } 1064 if ((type & ARCHIVE_ENTRY_ACL_TYPE_POSIX1E) != 0) { 1065 /* POSIX.1e ACL perms */ 1066 *(*p)++ = (perm & 0444) ? 'r' : '-'; 1067 *(*p)++ = (perm & 0222) ? 'w' : '-'; 1068 *(*p)++ = (perm & 0111) ? 'x' : '-'; 1069 } else { | 1023 if (prefix != NULL) { 1024 strcpy(*p, prefix); 1025 *p += strlen(*p); 1026 } 1027 switch (tag) { 1028 case ARCHIVE_ENTRY_ACL_USER_OBJ: 1029 name = NULL; 1030 id = -1; --- 53 unchanged lines hidden (view full) --- 1084 *(*p)++ = ':'; 1085 } 1086 if ((type & ARCHIVE_ENTRY_ACL_TYPE_POSIX1E) != 0) { 1087 /* POSIX.1e ACL perms */ 1088 *(*p)++ = (perm & 0444) ? 'r' : '-'; 1089 *(*p)++ = (perm & 0222) ? 'w' : '-'; 1090 *(*p)++ = (perm & 0111) ? 'x' : '-'; 1091 } else { |
1070 /* NFS4 ACL perms */ 1071 *(*p)++ = (perm & (ARCHIVE_ENTRY_ACL_READ_DATA | 1072 ARCHIVE_ENTRY_ACL_LIST_DIRECTORY)) ? 'r' : '-'; 1073 *(*p)++ = (perm & (ARCHIVE_ENTRY_ACL_WRITE_DATA | 1074 ARCHIVE_ENTRY_ACL_ADD_FILE)) ? 'w' : '-'; 1075 *(*p)++ = (perm & (ARCHIVE_ENTRY_ACL_EXECUTE)) ? 'x' : '-'; 1076 *(*p)++ = (perm & (ARCHIVE_ENTRY_ACL_APPEND_DATA | 1077 ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY)) ? 'p' : '-'; 1078 *(*p)++ = (perm & ARCHIVE_ENTRY_ACL_DELETE) ? 'd' : '-'; 1079 *(*p)++ = (perm & ARCHIVE_ENTRY_ACL_DELETE_CHILD) ? 'D' : '-'; 1080 *(*p)++ = (perm & 1081 ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES) ? 'a' : '-'; 1082 *(*p)++ = (perm & 1083 ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES) ? 'A' : '-'; 1084 *(*p)++ = (perm & 1085 ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS) ? 'R' : '-'; 1086 *(*p)++ = (perm & 1087 ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS) ? 'W' : '-'; 1088 *(*p)++ = (perm & 1089 ARCHIVE_ENTRY_ACL_READ_ACL) ? 'c' : '-'; 1090 *(*p)++ = (perm & 1091 ARCHIVE_ENTRY_ACL_WRITE_ACL) ? 'C' : '-'; 1092 *(*p)++ = (perm & 1093 ARCHIVE_ENTRY_ACL_WRITE_OWNER) ? 'o' : '-'; 1094 *(*p)++ = (perm & 1095 ARCHIVE_ENTRY_ACL_SYNCHRONIZE) ? 's' : '-'; | 1092 /* NFSv4 ACL perms */ 1093 for (i = 0; i < nfsv4_acl_perm_map_size; i++) { 1094 if (perm & nfsv4_acl_perm_map[i].perm) 1095 *(*p)++ = nfsv4_acl_perm_map[i].c; 1096 else if ((flags & ARCHIVE_ENTRY_ACL_STYLE_COMPACT) == 0) 1097 *(*p)++ = '-'; 1098 } |
1096 *(*p)++ = ':'; | 1099 *(*p)++ = ':'; |
1097 *(*p)++ = (perm & 1098 ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT) ? 'f' : '-'; 1099 *(*p)++ = (perm & 1100 ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT) ? 'd' : '-'; 1101 *(*p)++ = (perm & 1102 ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY) ? 'i' : '-'; 1103 *(*p)++ = (perm & 1104 ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT) ? 'n' : '-'; 1105 *(*p)++ = (perm & 1106 ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS) ? 'S' : '-'; 1107 *(*p)++ = (perm & 1108 ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS) ? 'F' : '-'; 1109 *(*p)++ = (perm & 1110 ARCHIVE_ENTRY_ACL_ENTRY_INHERITED) ? 'I' : '-'; | 1100 for (i = 0; i < nfsv4_acl_flag_map_size; i++) { 1101 if (perm & nfsv4_acl_flag_map[i].perm) 1102 *(*p)++ = nfsv4_acl_flag_map[i].c; 1103 else if ((flags & ARCHIVE_ENTRY_ACL_STYLE_COMPACT) == 0) 1104 *(*p)++ = '-'; 1105 } |
1111 *(*p)++ = ':'; 1112 switch (type) { 1113 case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: 1114 strcpy(*p, "allow"); 1115 break; 1116 case ARCHIVE_ENTRY_ACL_TYPE_DENY: 1117 strcpy(*p, "deny"); 1118 break; --- 343 unchanged lines hidden (view full) --- 1462/* 1463 * Parse a string as a NFS4 ACL permission field. 1464 * Returns true if the string is non-empty and consists only of NFS4 ACL 1465 * permission characters, false otherwise 1466 */ 1467static int 1468is_nfs4_perms_w(const wchar_t *start, const wchar_t *end, int *permset) 1469{ | 1106 *(*p)++ = ':'; 1107 switch (type) { 1108 case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: 1109 strcpy(*p, "allow"); 1110 break; 1111 case ARCHIVE_ENTRY_ACL_TYPE_DENY: 1112 strcpy(*p, "deny"); 1113 break; --- 343 unchanged lines hidden (view full) --- 1457/* 1458 * Parse a string as a NFS4 ACL permission field. 1459 * Returns true if the string is non-empty and consists only of NFS4 ACL 1460 * permission characters, false otherwise 1461 */ 1462static int 1463is_nfs4_perms_w(const wchar_t *start, const wchar_t *end, int *permset) 1464{ |
1470 const wchar_t *p; | 1465 const wchar_t *p = start; |
1471 | 1466 |
1472 if (start >= end) 1473 return (0); 1474 p = start; | |
1475 while (p < end) { 1476 switch (*p++) { 1477 case L'r': 1478 *permset |= ARCHIVE_ENTRY_ACL_READ_DATA; 1479 break; 1480 case L'w': 1481 *permset |= ARCHIVE_ENTRY_ACL_WRITE_DATA; 1482 break; --- 45 unchanged lines hidden (view full) --- 1528/* 1529 * Parse a string as a NFS4 ACL flags field. 1530 * Returns true if the string is non-empty and consists only of NFS4 ACL 1531 * flag characters, false otherwise 1532 */ 1533static int 1534is_nfs4_flags_w(const wchar_t *start, const wchar_t *end, int *permset) 1535{ | 1467 while (p < end) { 1468 switch (*p++) { 1469 case L'r': 1470 *permset |= ARCHIVE_ENTRY_ACL_READ_DATA; 1471 break; 1472 case L'w': 1473 *permset |= ARCHIVE_ENTRY_ACL_WRITE_DATA; 1474 break; --- 45 unchanged lines hidden (view full) --- 1520/* 1521 * Parse a string as a NFS4 ACL flags field. 1522 * Returns true if the string is non-empty and consists only of NFS4 ACL 1523 * flag characters, false otherwise 1524 */ 1525static int 1526is_nfs4_flags_w(const wchar_t *start, const wchar_t *end, int *permset) 1527{ |
1536 const wchar_t *p; | 1528 const wchar_t *p = start; |
1537 | 1529 |
1538 if (start >= end) 1539 return (0); 1540 p = start; | |
1541 while (p < end) { 1542 switch(*p++) { 1543 case L'f': 1544 *permset |= ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT; 1545 break; 1546 case L'd': 1547 *permset |= ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT; 1548 break; --- 391 unchanged lines hidden (view full) --- 1940/* 1941 * Parse a string as a NFS4 ACL permission field. 1942 * Returns true if the string is non-empty and consists only of NFS4 ACL 1943 * permission characters, false otherwise 1944 */ 1945static int 1946is_nfs4_perms(const char *start, const char *end, int *permset) 1947{ | 1530 while (p < end) { 1531 switch(*p++) { 1532 case L'f': 1533 *permset |= ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT; 1534 break; 1535 case L'd': 1536 *permset |= ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT; 1537 break; --- 391 unchanged lines hidden (view full) --- 1929/* 1930 * Parse a string as a NFS4 ACL permission field. 1931 * Returns true if the string is non-empty and consists only of NFS4 ACL 1932 * permission characters, false otherwise 1933 */ 1934static int 1935is_nfs4_perms(const char *start, const char *end, int *permset) 1936{ |
1948 const char *p; | 1937 const char *p = start; |
1949 | 1938 |
1950 if (start >= end) 1951 return (0); 1952 p = start; | |
1953 while (p < end) { 1954 switch (*p++) { 1955 case 'r': 1956 *permset |= ARCHIVE_ENTRY_ACL_READ_DATA; 1957 break; 1958 case 'w': 1959 *permset |= ARCHIVE_ENTRY_ACL_WRITE_DATA; 1960 break; --- 45 unchanged lines hidden (view full) --- 2006/* 2007 * Parse a string as a NFS4 ACL flags field. 2008 * Returns true if the string is non-empty and consists only of NFS4 ACL 2009 * flag characters, false otherwise 2010 */ 2011static int 2012is_nfs4_flags(const char *start, const char *end, int *permset) 2013{ | 1939 while (p < end) { 1940 switch (*p++) { 1941 case 'r': 1942 *permset |= ARCHIVE_ENTRY_ACL_READ_DATA; 1943 break; 1944 case 'w': 1945 *permset |= ARCHIVE_ENTRY_ACL_WRITE_DATA; 1946 break; --- 45 unchanged lines hidden (view full) --- 1992/* 1993 * Parse a string as a NFS4 ACL flags field. 1994 * Returns true if the string is non-empty and consists only of NFS4 ACL 1995 * flag characters, false otherwise 1996 */ 1997static int 1998is_nfs4_flags(const char *start, const char *end, int *permset) 1999{ |
2014 const char *p; | 2000 const char *p = start; |
2015 | 2001 |
2016 if (start >= end) 2017 return (0); 2018 p = start; | |
2019 while (p < end) { 2020 switch(*p++) { 2021 case 'f': 2022 *permset |= ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT; 2023 break; 2024 case 'd': 2025 *permset |= ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT; 2026 break; --- 60 unchanged lines hidden --- | 2002 while (p < end) { 2003 switch(*p++) { 2004 case 'f': 2005 *permset |= ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT; 2006 break; 2007 case 'd': 2008 *permset |= ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT; 2009 break; --- 60 unchanged lines hidden --- |