summaryrefslogtreecommitdiff
path: root/archivers/libarchive/files/doc/html/archive_entry_acl.3.html
blob: a4465f2bf940ee6a6bf91582c127d0867c4fb5ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
<!-- Creator     : groff version 1.22.4 -->
<!-- CreationDate: Wed Jun 12 21:10:14 2019 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
       h1      { text-align: center }
</style>
<title></title>
</head>
<body>

<hr>


<p>ARCHIVE_ENTRY_ACL(3) BSD Library Functions Manual
ARCHIVE_ENTRY_ACL(3)</p>

<p style="margin-top: 1em"><b>NAME</b></p>


<p style="margin-left:6%;"><b>archive_entry_acl_add_entry</b>,
<b>archive_entry_acl_add_entry_w</b>,
<b>archive_entry_acl_clear</b>,
<b>archive_entry_acl_count</b>,
<b>archive_entry_acl_from_text</b>,
<b>archive_entry_acl_from_text_w</b>,
<b>archive_entry_acl_next</b>,
<b>archive_entry_acl_next_w</b>,
<b>archive_entry_acl_reset</b>,
<b>archive_entry_acl_to_text</b>,
<b>archive_entry_acl_to_text_w</b>,
<b>archive_entry_acl_types</b> &mdash; functions for
manipulating Access Control Lists in archive entry
descriptions</p>

<p style="margin-top: 1em"><b>LIBRARY</b></p>

<p style="margin-left:6%;">Streaming Archive Library
(libarchive, -larchive)</p>

<p style="margin-top: 1em"><b>SYNOPSIS</b></p>

<p style="margin-left:6%;"><b>#include
&lt;archive_entry.h&gt;</b></p>

<p style="margin-left:6%; margin-top: 1em"><i>void</i></p>


<p><b>archive_entry_acl_add_entry</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>int&nbsp;type</i>, <i>int&nbsp;permset</i>,
<i>int&nbsp;tag</i>, <i>int&nbsp;qualifier</i>,
<i>const&nbsp;char&nbsp;*name</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>void</i></p>


<p><b>archive_entry_acl_add_entry_w</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>int&nbsp;type</i>, <i>int&nbsp;permset</i>,
<i>int&nbsp;tag</i>, <i>int&nbsp;qualifier</i>,
<i>const&nbsp;wchar_t&nbsp;*name</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>void</i></p>


<p style="margin-left:12%;"><b>archive_entry_acl_clear</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>


<p style="margin-left:12%;"><b>archive_entry_acl_count</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>int&nbsp;type</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>


<p><b>archive_entry_acl_from_text</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>const&nbsp;char&nbsp;*text</i>,
<i>int&nbsp;type</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>


<p><b>archive_entry_acl_from_text_w</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>const&nbsp;wchar_t&nbsp;*text</i>,
<i>int&nbsp;type</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>


<p><b>archive_entry_acl_next</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>int&nbsp;type</i>, <i>int&nbsp;*ret_type</i>,
<i>int&nbsp;*ret_permset</i>, <i>int&nbsp;*ret_tag</i>,
<i>int&nbsp;*ret_qual</i>,
<i>const&nbsp;char&nbsp;**ret_name</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>


<p><b>archive_entry_acl_next_w</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>int&nbsp;type</i>, <i>int&nbsp;*ret_type</i>,
<i>int&nbsp;*ret_permset</i>, <i>int&nbsp;*ret_tag</i>,
<i>int&nbsp;*ret_qual</i>,
<i>const&nbsp;wchar_t&nbsp;**ret_name</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>


<p style="margin-left:12%;"><b>archive_entry_acl_reset</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>int&nbsp;type</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>char
*</i></p>


<p><b>archive_entry_acl_to_text</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>ssize_t&nbsp;*len_p</i>, <i>int&nbsp;flags</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>wchar_t
*</i></p>


<p><b>archive_entry_acl_to_text_w</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
<i>ssize_t&nbsp;*len_p</i>, <i>int&nbsp;flags</i>);</p>

<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>


<p style="margin-left:12%;"><b>archive_entry_acl_types</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>);</p>

<p style="margin-top: 1em"><b>DESCRIPTION</b></p>

<p style="margin-left:6%;">The &ldquo;Access Control Lists
(ACLs)&rdquo; extend the standard Unix perssion model. The
ACL interface of <b>libarchive</b> supports both POSIX.1e
and NFSv4 style ACLs. Use of ACLs is restricted by various
levels of ACL support in operating systems, file systems and
archive formats.</p>

<p style="margin-left:6%; margin-top: 1em"><b>POSIX.1e
Access Control Lists</b> <br>
A POSIX.1e ACL consists of a number of independent entries.
Each entry specifies the permission set as bitmask of basic
permissions. Valid permissions in the <i>permset</i>
are:</p>

<p>ARCHIVE_ENTRY_ACL_READ (<b>r</b>) <br>
ARCHIVE_ENTRY_ACL_WRITE (<b>w</b>) <br>
ARCHIVE_ENTRY_ACL_EXECUTE (<b>x</b>)</p>

<p style="margin-left:6%;">The permissions correspond to
the normal Unix permissions.</p>

<p style="margin-left:6%; margin-top: 1em">The <i>tag</i>
specifies the principal to which the permission applies.
Valid values are:</p>

<p>ARCHIVE_ENTRY_ACL_USER</p>

<p style="margin-left:51%;">The user specified by the name
field.</p>

<p>ARCHIVE_ENTRY_ACL_USER_OBJ</p>

<p style="margin-left:51%;">The owner of the file.</p>

<p>ARCHIVE_ENTRY_ACL_GROUP</p>

<p style="margin-left:51%;">The group specied by the name
field.</p>

<p>ARCHIVE_ENTRY_ACL_GROUP_OBJ</p>

<p style="margin-left:51%;">The group who owns the
file.</p>

<p>ARCHIVE_ENTRY_ACL_MASK</p>

<p style="margin-left:51%;">The maximum permissions to be
obtained via group permissions.</p>

<p>ARCHIVE_ENTRY_ACL_OTHER</p>

<p style="margin-left:51%;">Any principal who is not file
owner or a member of the owning group.</p>

<p style="margin-left:6%; margin-top: 1em">The principals
ARCHIVE_ENTRY_ACL_USER_OBJ, ARCHIVE_ENTRY_ACL_GROUP_OBJ and
ARCHIVE_ENTRY_ACL_OTHER are equivalent to user, group and
other in the classic Unix permission model and specify
non-extended ACL entries.</p>

<p style="margin-left:6%; margin-top: 1em">All files with
have an access ACL (ARCHIVE_ENTRY_ACL_TYPE_ACCESS). This
specifies the permissions required for access to the file
itself. Directories have an additional ACL
(ARCHIVE_ENTRY_ACL_TYPE_DEFAULT), which controls the initial
access ACL for newly created directory entries.</p>

<p style="margin-left:6%; margin-top: 1em"><b>NFSv4 Access
Control Lists</b> <br>
A NFSv4 ACL consists of multiple individual entries called
Access Control Entries (ACEs).</p>

<p style="margin-left:6%; margin-top: 1em">There are four
possible types of a NFSv4 ACE:</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_ALLOW</p>

<p style="margin-left:51%;">Allow principal to perform
actions requiring given permissions.</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_DENY</p>

<p style="margin-left:51%;">Prevent principal from
performing actions requiring given permissions.</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_AUDIT</p>

<p style="margin-left:51%;">Log access attempts by
principal which require given permissions.</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_ALARM</p>

<p style="margin-left:51%;">Trigger a system alarm on
access attempts by principal which require given
permissions.</p>

<p style="margin-left:6%; margin-top: 1em">The <i>tag</i>
specifies the principal to which the permission applies.
Valid values are:</p>

<p>ARCHIVE_ENTRY_ACL_USER</p>

<p style="margin-left:51%;">The user specified by the name
field.</p>

<p>ARCHIVE_ENTRY_ACL_USER_OBJ</p>

<p style="margin-left:51%;">The owner of the file.</p>

<p>ARCHIVE_ENTRY_ACL_GROUP</p>

<p style="margin-left:51%;">The group specied by the name
field.</p>

<p>ARCHIVE_ENTRY_ACL_GROUP_OBJ</p>

<p style="margin-left:51%;">The group who owns the
file.</p>

<p>ARCHIVE_ENTRY_ACL_EVERYONE</p>

<p style="margin-left:51%;">Any principal who is not file
owner or a member of the owning group.</p>

<p style="margin-left:6%; margin-top: 1em">Entries with the
ARCHIVE_ENTRY_ACL_USER or ARCHIVE_ENTRY_ACL_GROUP tag store
the user and group name in the <i>name</i> string and
optionally the user or group ID in the <i>qualifier</i>
integer.</p>

<p style="margin-left:6%; margin-top: 1em">NFSv4 ACE
permissions and flags are stored in the same <i>permset</i>
bitfield. Some permissions share the same constant and
permission character but have different effect on
directories than on files. The following ACE permissions are
supported:</p>

<p>ARCHIVE_ENTRY_ACL_READ_DATA (<b>r</b>)</p>

<p style="margin-left:24%;">Read data (file).</p>

<p>ARCHIVE_ENTRY_ACL_LIST_DIRECTORY (<b>r</b>)</p>

<p style="margin-left:24%;">List entries (directory).</p>

<p>ARCHIVE_ENTRY_ACL_WRITE_DATA (<b>w</b>)</p>

<p style="margin-left:24%;">Write data (file).</p>

<p>ARCHIVE_ENTRY_ACL_ADD_FILE (<b>w</b>)</p>

<p style="margin-left:24%;">Create files (directory).</p>

<p>ARCHIVE_ENTRY_ACL_EXECUTE (<b>x</b>)</p>

<p style="margin-left:24%;">Execute file or change into a
directory.</p>

<p>ARCHIVE_ENTRY_ACL_APPEND_DATA (<b>p</b>)</p>

<p style="margin-left:24%;">Append data (file).</p>

<p>ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY (<b>p</b>)</p>

<p style="margin-left:24%;">Create subdirectories
(directory).</p>

<p>ARCHIVE_ENTRY_ACL_DELETE_CHILD (<b>D</b>)</p>

<p style="margin-left:24%;">Remove files and subdirectories
inside a directory.</p>

<p>ARCHIVE_ENTRY_ACL_DELETE (<b>d</b>)</p>

<p style="margin-left:24%;">Remove file or directory.</p>

<p>ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES (<b>a</b>)</p>

<p style="margin-left:24%;">Read file or directory
attributes.</p>

<p>ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES (<b>A</b>)</p>

<p style="margin-left:24%;">Write file or directory
attributes.</p>

<p>ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS (<b>R</b>)</p>

<p style="margin-left:24%;">Read named file or directory
attributes.</p>

<p>ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS (<b>W</b>)</p>

<p style="margin-left:24%;">Write named file or directory
attributes.</p>

<p>ARCHIVE_ENTRY_ACL_READ_ACL (<b>c</b>)</p>

<p style="margin-left:24%;">Read file or directory ACL.</p>

<p>ARCHIVE_ENTRY_ACL_WRITE_ACL (<b>C</b>)</p>

<p style="margin-left:24%;">Write file or directory
ACL.</p>

<p>ARCHIVE_ENTRY_ACL_WRITE_OWNER (<b>o</b>)</p>

<p style="margin-left:24%;">Change owner of a file or
directory.</p>

<p>ARCHIVE_ENTRY_ACL_SYNCHRONIZE (<b>s</b>)</p>

<p style="margin-left:24%;">Use synchronous I/O.</p>

<p style="margin-left:6%; margin-top: 1em">The following
NFSv4 ACL inheritance flags are supported:</p>

<p>ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT (<b>f</b>)</p>

<p style="margin-left:24%;">Inherit parent directory ACE to
files.</p>

<p>ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT (<b>d</b>)</p>

<p style="margin-left:24%;">Inherit parent directory ACE to
subdirectories.</p>

<p>ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY (<b>i</b>)</p>

<p style="margin-left:24%;">Only inherit, do not apply the
permission on the directory itself.</p>

<p>ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT
(<b>n</b>)</p>

<p style="margin-left:24%;">Do not propagate inherit flags.
Only first-level entries inherit ACLs.</p>

<p>ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS (<b>S</b>)</p>

<p style="margin-left:24%;">Trigger alarm or audit on
successful access.</p>

<p>ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS (<b>F</b>)</p>

<p style="margin-left:24%;">Trigger alarm or audit on
failed access.</p>

<p>ARCHIVE_ENTRY_ACL_ENTRY_INHERITED (<b>I</b>)</p>

<p style="margin-left:24%;">Mark that ACE was
inherited.</p>

<p style="margin-left:6%; margin-top: 1em"><b>Functions
<br>
archive_entry_acl_add_entry</b>() and
<b>archive_entry_acl_add_entry_w</b>() add a single ACL
entry. For the access ACL and non-extended principals, the
classic Unix permissions are updated. An archive entry
cannot contain both POSIX.1e and NFSv4 ACL entries.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_clear</b>()
removes all ACL entries and resets the enumeration
pointer.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_count</b>()
counts the ACL entries that have the given type mask.
<i>type</i> can be the bitwise-or of</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_ACCESS <br>
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT</p>

<p style="margin-left:6%; margin-top: 1em">for POSIX.1e
ACLs and</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_ALLOW <br>
ARCHIVE_ENTRY_ACL_TYPE_DENY <br>
ARCHIVE_ENTRY_ACL_TYPE_AUDIT <br>
ARCHIVE_ENTRY_ACL_TYPE_ALARM</p>

<p style="margin-left:6%; margin-top: 1em">for NFSv4 ACLs.
For POSIX.1e ACLs if ARCHIVE_ENTRY_ACL_TYPE_ACCESS is
included and at least one extended ACL entry is found, the
three non-extended ACLs are added.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_from_text</b>()
and <b>archive_entry_acl_from_text_w</b>() add new (or merge
with existing) ACL entries from (wide) text. The argument
<i>type</i> may take one of the following values:</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_ACCESS <br>
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT <br>
ARCHIVE_ENTRY_ACL_TYPE_NFS4</p>

<p style="margin-left:6%; margin-top: 1em">Supports all
formats that can be created with
<b>archive_entry_acl_to_text</b>() or respective
<b>archive_entry_acl_to_text_w</b>(). Existing ACL entries
are preserved. To get a clean new ACL from text
<b>archive_entry_acl_clear</b>() must be called first.
Entries prefixed with &ldquo;default:&rdquo; are treated as
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT unless <i>type</i> is
ARCHIVE_ENTRY_ACL_TYPE_NFS4. Invalid entries, non-parseable
ACL entries and entries beginning with the &rsquo;#&rsquo;
character (comments) are skipped.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_next</b>()
and <b>archive_entry_acl_next_w</b>() return the next entry
of the ACL list. This functions may only be called after
<b>archive_entry_acl_reset</b>() has indicated the presence
of extended ACL entries.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_reset</b>()
prepare reading the list of ACL entries with
<b>archive_entry_acl_next</b>() or
<b>archive_entry_acl_next_w</b>(). The function returns
either 0, if no non-extended ACLs are found. In this case,
the access permissions should be obtained by
archive_entry_mode(3) or set using chmod(2). Otherwise, the
function returns the same value as
<b>archive_entry_acl_count</b>().</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_to_text</b>()
and <b>archive_entry_acl_to_text_w</b>() convert the ACL
entries for the given type into a (wide) string of ACL
entries separated by newline. If the pointer <i>len_p</i> is
not NULL, then the function shall return the length of the
string (not including the NULL terminator) in the location
pointed to by <i>len_p</i>. The <i>flag</i> argument is a
bitwise-or.</p>

<p style="margin-left:6%; margin-top: 1em">The following
flags are effective only on POSIX.1e ACL:</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_ACCESS</p>

<p style="margin-left:24%;">Output access ACLs.</p>

<p>ARCHIVE_ENTRY_ACL_TYPE_DEFAULT</p>

<p style="margin-left:24%;">Output POSIX.1e default
ACLs.</p>

<p>ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT</p>

<p style="margin-left:24%;">Prefix each default ACL entry
with the word &ldquo;default:&rdquo;.</p>

<p>ARCHIVE_ENTRY_ACL_STYLE_SOLARIS</p>

<p style="margin-left:24%;">The mask and other ACLs don not
contain a double colon.</p>

<p style="margin-left:6%; margin-top: 1em">The following
flags are effecive only on NFSv4 ACL:</p>

<p>ARCHIVE_ENTRY_ACL_STYLE_COMPACT</p>

<p style="margin-left:24%;">Do not output minus characters
for unset permissions and flags in NFSv4 ACL permission and
flag fields.</p>

<p style="margin-left:6%; margin-top: 1em">The following
flags are effective on both POSIX.1e and NFSv4 ACL:</p>

<p>ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID</p>

<p style="margin-left:24%;">Add an additional
colon-separated field containing the user or group id.</p>

<p>ARCHIVE_ENTRY_ACL_STYLE_SEPARATOR_COMMA</p>

<p style="margin-left:24%;">Separate ACL entries with comma
instead of newline.</p>

<p style="margin-left:6%; margin-top: 1em">If the archive
entry contains NFSv4 ACLs, all types of NFSv4 ACLs are
returned. It the entry contains POSIX.1e ACLs and none of
the flags ARCHIVE_ENTRY_ACL_TYPE_ACCESS or
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT are specified, both access
and default entries are returned and default entries are
prefixed with &ldquo;default:&rdquo;.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_types</b>()
get ACL entry types contained in an archive entry&rsquo;s
ACL. As POSIX.1e and NFSv4 ACL entries cannot be mixed, this
function is a very efficient way to detect if an ACL already
contains POSIX.1e or NFSv4 ACL entries.</p>

<p style="margin-top: 1em"><b>RETURN VALUES</b></p>


<p style="margin-left:6%;"><b>archive_entry_acl_count</b>()
and <b>archive_entry_acl_reset</b>() returns the number of
ACL entries that match the given type mask. For POSIX.1e
ACLS if the type mask includes ARCHIVE_ENTRY_ACL_TYPE_ACCESS
and at least one extended ACL entry exists, the three
classic Unix permissions are counted.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_from_text</b>()
and <b>archive_entry_acl_from_text_w</b>() return ARCHIVE_OK
if all entries were successfully parsed and ARCHIVE_WARN if
one or more entries were invalid or non-parseable.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_next</b>()
and <b>archive_entry_acl_next_w</b>() return ARCHIVE_OK on
success, ARCHIVE_EOF if no more ACL entries exist and
ARCHIVE_WARN if <b>archive_entry_acl_reset</b>() has not
been called first.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_to_text</b>()
returns a string representing the ACL entries matching the
given type and flags on success or NULL on error.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_to_text_w</b>()
returns a wide string representing the ACL entries matching
the given type and flags on success or NULL on error.</p>


<p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_types</b>()
returns a bitmask of ACL entry types or 0 if archive entry
has no ACL entries.</p>

<p style="margin-top: 1em"><b>SEE ALSO</b></p>

<p style="margin-left:6%;">archive_entry(3),
libarchive(3)</p>

<p style="margin-left:6%; margin-top: 1em">BSD
February&nbsp;15, 2017 BSD</p>
<hr>
</body>
</html>