Blame doc/man/archive_entry_perms.3

Packit 08bd4c
.TH ARCHIVE_ENTRY_PERMS 3 "February 2, 2012" ""
Packit 08bd4c
.SH NAME
Packit 08bd4c
.ad l
Packit 08bd4c
\fB\%archive_entry_gid\fP,
Packit 08bd4c
\fB\%archive_entry_set_gid\fP,
Packit 08bd4c
\fB\%archive_entry_uid\fP,
Packit 08bd4c
\fB\%archive_entry_set_uid\fP,
Packit 08bd4c
\fB\%archive_entry_perm\fP,
Packit 08bd4c
\fB\%archive_entry_set_perm\fP,
Packit 08bd4c
\fB\%archive_entry_strmode\fP,
Packit 08bd4c
\fB\%archive_entry_uname\fP,
Packit 08bd4c
\fB\%archive_entry_uname_w\fP,
Packit 08bd4c
\fB\%archive_entry_set_uname\fP,
Packit 08bd4c
\fB\%archive_entry_copy_uname\fP,
Packit 08bd4c
\fB\%archive_entry_copy_uname_w\fP,
Packit 08bd4c
\fB\%archive_entry_update_uname_utf8\fP,
Packit 08bd4c
\fB\%archive_entry_gname\fP,
Packit 08bd4c
\fB\%archive_entry_gname_w\fP,
Packit 08bd4c
\fB\%archive_entry_set_gname\fP,
Packit 08bd4c
\fB\%archive_entry_copy_gname\fP,
Packit 08bd4c
\fB\%archive_entry_copy_gname_w\fP,
Packit 08bd4c
\fB\%archive_entry_update_gname_utf8\fP,
Packit 08bd4c
\fB\%archive_entry_fflags\fP,
Packit 08bd4c
\fB\%archive_entry_fflags_text\fP,
Packit 08bd4c
\fB\%archive_entry_set_fflags\fP,
Packit 08bd4c
\fB\%archive_entry_copy_fflags_text\fP,
Packit 08bd4c
\fB\%archive_entry_copy_fflags_text_w\fP
Packit 08bd4c
\- functions for manipulating ownership and permissions in archive entry descriptions
Packit 08bd4c
.SH LIBRARY
Packit 08bd4c
.ad l
Packit 08bd4c
Streaming Archive Library (libarchive, -larchive)
Packit 08bd4c
.SH SYNOPSIS
Packit 08bd4c
.ad l
Packit 08bd4c
\fB#include <archive_entry.h>\fP
Packit 08bd4c
.br
Packit 08bd4c
\fIgid_t\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_gid\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_set_gid\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%gid_t\ gid\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIuid_t\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_uid\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_set_uid\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%uid_t\ uid\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fImode_t\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_perm\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_set_perm\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%mode_t\ mode\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIconst char *\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_strmode\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIconst char *\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_gname\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIconst wchar_t *\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_gname_w\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_set_gname\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ char\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_copy_gname\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ char\ *name\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_copy_gname_w\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ wchar_t\ *name\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIint\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_update_gname_utf8\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ char\ *name\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIconst char *\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_uname\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIconst wchar_t *\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_uname_w\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_set_uname\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ char\ *name\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_copy_uname\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ char\ *name\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_copy_uname_w\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ wchar_t\ *name\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIint\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_update_uname_utf8\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ char\ *name\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_fflags\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%unsigned\ long\ *set_bits\fP, \fI\%unsigned\ long\ *clear_bits\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIconst char *\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_fflags_text\fP(\fI\%struct\ archive_entry\ *a\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIvoid\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_set_fflags\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%unsigned\ long\ set_bits\fP, \fI\%unsigned\ long\ clear_bits\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIconst char *\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_copy_fflags_text\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ char\ *text\fP);
Packit 08bd4c
.br
Packit 08bd4c
\fIconst wchar_t *\fP
Packit 08bd4c
.br
Packit 08bd4c
\fB\%archive_entry_copy_fflags_text_w\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%const\ wchar_t\ *text\fP);
Packit 08bd4c
.SH DESCRIPTION
Packit 08bd4c
.ad l
Packit 08bd4c
.SS User id, group id and mode
Packit 08bd4c
The functions
Packit 08bd4c
\fB\%archive_entry_uid\fP(),
Packit 08bd4c
\fB\%archive_entry_gid\fP(),
Packit 08bd4c
and
Packit 08bd4c
\fB\%archive_entry_perm\fP()
Packit 08bd4c
can be used to extract the user id, group id and permission from the given entry.
Packit 08bd4c
The corresponding functions
Packit 08bd4c
\fB\%archive_entry_set_uid\fP(),
Packit 08bd4c
\fB\%archive_entry_set_gid\fP(),
Packit 08bd4c
and
Packit 08bd4c
\fB\%archive_entry_set_perm\fP()
Packit 08bd4c
store the given user id, group id and permission in the entry.
Packit 08bd4c
The permission is also set as side effect of calling
Packit 08bd4c
\fB\%archive_entry_set_mode\fP().
Packit 08bd4c
.PP
Packit 08bd4c
\fB\%archive_entry_strmode\fP()
Packit 08bd4c
returns a string representation of the permission as used by the long mode of
Packit 08bd4c
\fBls\fP(1).
Packit 08bd4c
.SS User and group name
Packit 08bd4c
User and group names can be provided in one of three different ways:
Packit 08bd4c
.RS 5
Packit 08bd4c
.TP
Packit 08bd4c
char *
Packit 08bd4c
Multibyte strings in the current locale.
Packit 08bd4c
.TP
Packit 08bd4c
wchar_t *
Packit 08bd4c
Wide character strings in the current locale.
Packit 08bd4c
The accessor functions are named
Packit 08bd4c
\fB\%XXX_w\fP().
Packit 08bd4c
.TP
Packit 08bd4c
UTF-8
Packit 08bd4c
Unicode strings encoded as UTF-8.
Packit 08bd4c
This are convience functions to update both the multibyte and wide
Packit 08bd4c
character strings at the same time.
Packit 08bd4c
.RE
Packit 08bd4c
.PP
Packit 08bd4c
\fB\%archive_entry_set_XXX\fP()
Packit 08bd4c
is an alias for 
Packit 08bd4c
\fB\%archive_entry_copy_XXX\fP().
Packit 08bd4c
.SS File Flags
Packit 08bd4c
File flags are transparently converted between a bitmap
Packit 08bd4c
representation and a textual format.
Packit 08bd4c
For example, if you set the bitmap and ask for text, the library
Packit 08bd4c
will build a canonical text format.
Packit 08bd4c
However, if you set a text format and request a text format,
Packit 08bd4c
you will get back the same text, even if it is ill-formed.
Packit 08bd4c
If you need to canonicalize a textual flags string, you should first set the
Packit 08bd4c
text form, then request the bitmap form, then use that to set the bitmap form.
Packit 08bd4c
Setting the bitmap format will clear the internal text representation
Packit 08bd4c
and force it to be reconstructed when you next request the text form.
Packit 08bd4c
.PP
Packit 08bd4c
The bitmap format consists of two integers, one containing bits
Packit 08bd4c
that should be set, the other specifying bits that should be
Packit 08bd4c
cleared.
Packit 08bd4c
Bits not mentioned in either bitmap will be ignored.
Packit 08bd4c
Usually, the bitmap of bits to be cleared will be set to zero.
Packit 08bd4c
In unusual circumstances, you can force a fully-specified set
Packit 08bd4c
of file flags by setting the bitmap of flags to clear to the complement
Packit 08bd4c
of the bitmap of flags to set.
Packit 08bd4c
(This differs from
Packit 08bd4c
\fBfflagstostr\fP(3),
Packit 08bd4c
which only includes names for set bits.)
Packit 08bd4c
Converting a bitmap to a textual string is a platform-specific
Packit 08bd4c
operation; bits that are not meaningful on the current platform
Packit 08bd4c
will be ignored.
Packit 08bd4c
.PP
Packit 08bd4c
The canonical text format is a comma-separated list of flag names.
Packit 08bd4c
The
Packit 08bd4c
\fB\%archive_entry_copy_fflags_text\fP()
Packit 08bd4c
and
Packit 08bd4c
\fB\%archive_entry_copy_fflags_text_w\fP()
Packit 08bd4c
functions parse the provided text and sets the internal bitmap values.
Packit 08bd4c
This is a platform-specific operation; names that are not meaningful
Packit 08bd4c
on the current platform will be ignored.
Packit 08bd4c
The function returns a pointer to the start of the first name that was not
Packit 08bd4c
recognized, or NULL if every name was recognized.
Packit 08bd4c
Note that every name \(em including names that follow an unrecognized
Packit 08bd4c
name \(em will be evaluated, and the bitmaps will be set to reflect
Packit 08bd4c
every name that is recognized.
Packit 08bd4c
(In particular, this differs from
Packit 08bd4c
\fBstrtofflags\fP(3),
Packit 08bd4c
which stops parsing at the first unrecognized name.)
Packit 08bd4c
.SH SEE ALSO
Packit 08bd4c
.ad l
Packit 08bd4c
\fBarchive_entry\fP(3),
Packit 08bd4c
\fBarchive_entry_acl\fP(3),
Packit 08bd4c
\fBarchive_read_disk\fP(3),
Packit 08bd4c
\fBarchive_write_disk\fP(3)
Packit 08bd4c
\fBlibarchive\fP(3),
Packit 08bd4c
.SH BUGS
Packit 08bd4c
.ad l
Packit 08bd4c
The platform types
Packit 08bd4c
Vt uid_t
Packit 08bd4c
and
Packit 08bd4c
Vt gid_t
Packit 08bd4c
are often 16 or 32 bit wide.
Packit 08bd4c
In this case it is possible that the ids can not be correctly restored
Packit 08bd4c
from archives and get truncated.