archive_entry_acl_add_entry(3) archive_entry_acl_add_entry_w

LIBRARY

Streaming Archive Library (libarchive, -larchive)

SYNOPSIS

In archive_entry.h Ft void Fo archive_entry_acl_add_entry Fa struct archive_entry *a Fa int type Fa int permset Fa int tag Fa int qualifier Fa const char *name Fc Ft void Fo archive_entry_acl_add_entry_w Fa struct archive_entry *a Fa int type Fa int permset Fa int tag Fa int qualifier Fa const wchar_t *name Fc Ft void Fn archive_entry_acl_clear struct archive_entry *a Ft int Fn archive_entry_acl_count struct archive_entry *a int type Ft int Fo archive_entry_acl_next Fa struct archive_entry *a Fa int type Fa int *ret_type Fa int *ret_permset Fa int *ret_tag Fa int *ret_qual Fa const char **ret_name Fc Ft int Fo archive_entry_acl_next_w Fa struct archive_entry *a Fa int type Fa int *ret_type Fa int *ret_permset Fa int *ret_tag Fa int *ret_qual Fa const wchar_t **ret_name Fc Ft int Fn archive_entry_acl_reset struct archive_entry *a int type Ft const wchar_t * Fn archive_entry_acl_text_w struct archive_entry *a int flags

DESCRIPTION

An ``Access Control List'' is a generalisation of the classic Unix permission system. The ACL interface of libarchive is derived from the POSIX.1e draft, but restricted to simplify dealing with practical implementations in various Operating Systems and archive formats.

An ACL consists of a number of independent entries. Each entry specifies the permission set as bitmask of basic permissions. Valid permissions are:

ARCHIVE_ENTRY_ACL_EXECUTE
ARCHIVE_ENTRY_ACL_WRITE
ARCHIVE_ENTRY_ACL_READ

The permissions correspond to the normal Unix permissions.

The tag specifies the principal to which the permission applies. Valid values are:

ARCHIVE_ENTRY_ACL_USER
The user specified by the name field.
ARCHIVE_ENTRY_ACL_USER_OBJ
The owner of the file.
ARCHIVE_ENTRY_ACL_GROUP
The group specied by the name field.
ARCHIVE_ENTRY_ACL_GROUP_OBJ
The group who owns the file.
ARCHIVE_ENTRY_ACL_MASK
The maximum permissions to be obtained via group permissions.
ARCHIVE_ENTRY_ACL_OTHER
Any principal who doesn't have a user or group entry.

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.

All files 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.

Fn archive_entry_acl_add_entry and Fn archive_entry_acl_add_entry_w add a single ACL entry. For the access ACL and non-extended principals, the classic Unix permissions are updated.

Fn archive_entry_acl_clear removes all ACL entries and resets the enumeration pointer.

Fn archive_entry_acl_count counts the ACL entries that have the given type mask. Fa type can be the bitwise-or of ARCHIVE_ENTRY_ACL_TYPE_ACCESS and ARCHIVE_ENTRY_ACL_TYPE_DEFAULT If ARCHIVE_ENTRY_ACL_TYPE_ACCESS is included and at least one extended ACL entry is found, the three non-extened ACLs are added.

Fn archive_entry_acl_next and Fn archive_entry_acl_next_w return the next entry of the ACL list. This functions may only be called after Fn archive_entry_acl_reset has indicated the presence of extended ACL entries.

Fn archive_entry_acl_reset prepare reading the list of ACL entries with Fn archive_entry_acl_next or Fn archive_entry_acl_next_w . The function returns either 0, if no non-extended ACLs are found. In this case, the access permissions should be obtained by archive_entry_mode3 or set using chmod(2). Otherwise, the function returns the same value as Fn archive_entry_acl_count .

Fn archive_entry_acl_text_w converts the ACL entries for the given type mask into a wide string. In addition to the normal type flags, ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID and ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT can be specified to further customize the result. The returned long string is valid until the next call to Fn archive_entry_acl_clear , Fn archive_entry_acl_add_entry , Fn archive_entry_acl_add_entry_w or Fn archive_entry_acl_text_w .

RETURN VALUES

Fn archive_entry_acl_count and Fn archive_entry_acl_reset returns the number of ACL entries that match the given type mask. 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.

Fn archive_entry_acl_next and Fn archive_entry_acl_next_w return ARCHIVE_OK on success, ARCHIVE_EOF if no more ACL entries exist and ARCHIVE_WARN if Fn archive_entry_acl_reset has not been called first.

Fn archive_entry_text_w returns a wide string representation of the ACL entrise matching the given type mask. The returned long string is valid until the next call to Fn archive_entry_acl_clear , Fn archive_entry_acl_add_entry , Fn archive_entry_acl_add_entry_w or Fn archive_entry_acl_text_w .

BUGS

ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID and ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT are not documented.