| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433 |
- .\" Copyright (c) 2003-2007 Tim Kientzle
- .\" All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- .\" SUCH DAMAGE.
- .\"
- .\" $FreeBSD: src/lib/libarchive/archive_entry.3,v 1.18 2008/05/26 17:00:22 kientzle Exp $
- .\"
- .Dd May 12, 2008
- .Dt archive_entry 3
- .Os
- .Sh NAME
- .Nm archive_entry_acl_add_entry ,
- .Nm archive_entry_acl_add_entry_w ,
- .Nm archive_entry_acl_clear ,
- .Nm archive_entry_acl_count ,
- .Nm archive_entry_acl_next ,
- .Nm archive_entry_acl_next_w ,
- .Nm archive_entry_acl_reset ,
- .Nm archive_entry_acl_text_w ,
- .Nm archive_entry_atime ,
- .Nm archive_entry_atime_nsec ,
- .Nm archive_entry_clear ,
- .Nm archive_entry_clone ,
- .Nm archive_entry_copy_fflags_text ,
- .Nm archive_entry_copy_fflags_text_w ,
- .Nm archive_entry_copy_gname ,
- .Nm archive_entry_copy_gname_w ,
- .Nm archive_entry_copy_hardlink ,
- .Nm archive_entry_copy_hardlink_w ,
- .Nm archive_entry_copy_link ,
- .Nm archive_entry_copy_link_w ,
- .Nm archive_entry_copy_pathname_w ,
- .Nm archive_entry_copy_sourcepath ,
- .Nm archive_entry_copy_stat ,
- .Nm archive_entry_copy_symlink ,
- .Nm archive_entry_copy_symlink_w ,
- .Nm archive_entry_copy_uname ,
- .Nm archive_entry_copy_uname_w ,
- .Nm archive_entry_dev ,
- .Nm archive_entry_devmajor ,
- .Nm archive_entry_devminor ,
- .Nm archive_entry_filetype ,
- .Nm archive_entry_fflags ,
- .Nm archive_entry_fflags_text ,
- .Nm archive_entry_free ,
- .Nm archive_entry_gid ,
- .Nm archive_entry_gname ,
- .Nm archive_entry_hardlink ,
- .Nm archive_entry_ino ,
- .Nm archive_entry_mode ,
- .Nm archive_entry_mtime ,
- .Nm archive_entry_mtime_nsec ,
- .Nm archive_entry_nlink ,
- .Nm archive_entry_new ,
- .Nm archive_entry_pathname ,
- .Nm archive_entry_pathname_w ,
- .Nm archive_entry_rdev ,
- .Nm archive_entry_rdevmajor ,
- .Nm archive_entry_rdevminor ,
- .Nm archive_entry_set_atime ,
- .Nm archive_entry_set_ctime ,
- .Nm archive_entry_set_dev ,
- .Nm archive_entry_set_devmajor ,
- .Nm archive_entry_set_devminor ,
- .Nm archive_entry_set_filetype ,
- .Nm archive_entry_set_fflags ,
- .Nm archive_entry_set_gid ,
- .Nm archive_entry_set_gname ,
- .Nm archive_entry_set_hardlink ,
- .Nm archive_entry_set_link ,
- .Nm archive_entry_set_mode ,
- .Nm archive_entry_set_mtime ,
- .Nm archive_entry_set_pathname ,
- .Nm archive_entry_set_rdevmajor ,
- .Nm archive_entry_set_rdevminor ,
- .Nm archive_entry_set_size ,
- .Nm archive_entry_set_symlink ,
- .Nm archive_entry_set_uid ,
- .Nm archive_entry_set_uname ,
- .Nm archive_entry_size ,
- .Nm archive_entry_sourcepath ,
- .Nm archive_entry_stat ,
- .Nm archive_entry_symlink ,
- .Nm archive_entry_uid ,
- .Nm archive_entry_uname
- .Nd functions for manipulating archive entry descriptions
- .Sh SYNOPSIS
- .In archive_entry.h
- .Ft void
- .Fo archive_entry_acl_add_entry
- .Fa "struct archive_entry *"
- .Fa "int type"
- .Fa "int permset"
- .Fa "int tag"
- .Fa "int qual"
- .Fa "const char *name"
- .Fc
- .Ft void
- .Fo archive_entry_acl_add_entry_w
- .Fa "struct archive_entry *"
- .Fa "int type"
- .Fa "int permset"
- .Fa "int tag"
- .Fa "int qual"
- .Fa "const wchar_t *name"
- .Fc
- .Ft void
- .Fn archive_entry_acl_clear "struct archive_entry *"
- .Ft int
- .Fn archive_entry_acl_count "struct archive_entry *" "int type"
- .Ft int
- .Fo archive_entry_acl_next
- .Fa "struct archive_entry *"
- .Fa "int want_type"
- .Fa "int *type"
- .Fa "int *permset"
- .Fa "int *tag"
- .Fa "int *qual"
- .Fa "const char **name"
- .Fc
- .Ft int
- .Fo archive_entry_acl_next_w
- .Fa "struct archive_entry *"
- .Fa "int want_type"
- .Fa "int *type"
- .Fa "int *permset"
- .Fa "int *tag"
- .Fa "int *qual"
- .Fa "const wchar_t **name"
- .Fc
- .Ft int
- .Fn archive_entry_acl_reset "struct archive_entry *" "int want_type"
- .Ft const wchar_t *
- .Fn archive_entry_acl_text_w "struct archive_entry *" "int flags"
- .Ft time_t
- .Fn archive_entry_atime "struct archive_entry *"
- .Ft long
- .Fn archive_entry_atime_nsec "struct archive_entry *"
- .Ft "struct archive_entry *"
- .Fn archive_entry_clear "struct archive_entry *"
- .Ft struct archive_entry *
- .Fn archive_entry_clone "struct archive_entry *"
- .Ft const char * *
- .Fn archive_entry_copy_fflags_text_w "struct archive_entry *" "const char *"
- .Ft const wchar_t *
- .Fn archive_entry_copy_fflags_text_w "struct archive_entry *" "const wchar_t *"
- .Ft void
- .Fn archive_entry_copy_gname "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_copy_gname_w "struct archive_entry *" "const wchar_t *"
- .Ft void
- .Fn archive_entry_copy_hardlink "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_copy_hardlink_w "struct archive_entry *" "const wchar_t *"
- .Ft void
- .Fn archive_entry_copy_sourcepath "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_copy_pathname_w "struct archive_entry *" "const wchar_t *"
- .Ft void
- .Fn archive_entry_copy_stat "struct archive_entry *" "const struct stat *"
- .Ft void
- .Fn archive_entry_copy_symlink "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_copy_symlink_w "struct archive_entry *" "const wchar_t *"
- .Ft void
- .Fn archive_entry_copy_uname "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_copy_uname_w "struct archive_entry *" "const wchar_t *"
- .Ft dev_t
- .Fn archive_entry_dev "struct archive_entry *"
- .Ft dev_t
- .Fn archive_entry_devmajor "struct archive_entry *"
- .Ft dev_t
- .Fn archive_entry_devminor "struct archive_entry *"
- .Ft mode_t
- .Fn archive_entry_filetype "struct archive_entry *"
- .Ft void
- .Fo archive_entry_fflags
- .Fa "struct archive_entry *"
- .Fa "unsigned long *set"
- .Fa "unsigned long *clear"
- .Fc
- .Ft const char *
- .Fn archive_entry_fflags_text "struct archive_entry *"
- .Ft void
- .Fn archive_entry_free "struct archive_entry *"
- .Ft const char *
- .Fn archive_entry_gname "struct archive_entry *"
- .Ft const char *
- .Fn archive_entry_hardlink "struct archive_entry *"
- .Ft ino_t
- .Fn archive_entry_ino "struct archive_entry *"
- .Ft mode_t
- .Fn archive_entry_mode "struct archive_entry *"
- .Ft time_t
- .Fn archive_entry_mtime "struct archive_entry *"
- .Ft long
- .Fn archive_entry_mtime_nsec "struct archive_entry *"
- .Ft unsigned int
- .Fn archive_entry_nlink "struct archive_entry *"
- .Ft struct archive_entry *
- .Fn archive_entry_new "void"
- .Ft const char *
- .Fn archive_entry_pathname "struct archive_entry *"
- .Ft const wchar_t *
- .Fn archive_entry_pathname_w "struct archive_entry *"
- .Ft dev_t
- .Fn archive_entry_rdev "struct archive_entry *"
- .Ft dev_t
- .Fn archive_entry_rdevmajor "struct archive_entry *"
- .Ft dev_t
- .Fn archive_entry_rdevminor "struct archive_entry *"
- .Ft void
- .Fn archive_entry_set_dev "struct archive_entry *" "dev_t"
- .Ft void
- .Fn archive_entry_set_devmajor "struct archive_entry *" "dev_t"
- .Ft void
- .Fn archive_entry_set_devminor "struct archive_entry *" "dev_t"
- .Ft void
- .Fn archive_entry_set_filetype "struct archive_entry *" "unsigned int"
- .Ft void
- .Fo archive_entry_set_fflags
- .Fa "struct archive_entry *"
- .Fa "unsigned long set"
- .Fa "unsigned long clear"
- .Fc
- .Ft void
- .Fn archive_entry_set_gid "struct archive_entry *" "gid_t"
- .Ft void
- .Fn archive_entry_set_gname "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_set_hardlink "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_set_ino "struct archive_entry *" "unsigned long"
- .Ft void
- .Fn archive_entry_set_link "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_set_mode "struct archive_entry *" "mode_t"
- .Ft void
- .Fn archive_entry_set_mtime "struct archive_entry *" "time_t" "long nanos"
- .Ft void
- .Fn archive_entry_set_nlink "struct archive_entry *" "unsigned int"
- .Ft void
- .Fn archive_entry_set_pathname "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_set_rdev "struct archive_entry *" "dev_t"
- .Ft void
- .Fn archive_entry_set_rdevmajor "struct archive_entry *" "dev_t"
- .Ft void
- .Fn archive_entry_set_rdevminor "struct archive_entry *" "dev_t"
- .Ft void
- .Fn archive_entry_set_size "struct archive_entry *" "int64_t"
- .Ft void
- .Fn archive_entry_set_symlink "struct archive_entry *" "const char *"
- .Ft void
- .Fn archive_entry_set_uid "struct archive_entry *" "uid_t"
- .Ft void
- .Fn archive_entry_set_uname "struct archive_entry *" "const char *"
- .Ft int64_t
- .Fn archive_entry_size "struct archive_entry *"
- .Ft const char *
- .Fn archive_entry_sourcepath "struct archive_entry *"
- .Ft const struct stat *
- .Fn archive_entry_stat "struct archive_entry *"
- .Ft const char *
- .Fn archive_entry_symlink "struct archive_entry *"
- .Ft const char *
- .Fn archive_entry_uname "struct archive_entry *"
- .Sh DESCRIPTION
- These functions create and manipulate data objects that
- represent entries within an archive.
- You can think of a
- .Tn struct archive_entry
- as a heavy-duty version of
- .Tn struct stat :
- it includes everything from
- .Tn struct stat
- plus associated pathname, textual group and user names, etc.
- These objects are used by
- .Xr libarchive 3
- to represent the metadata associated with a particular
- entry in an archive.
- .Ss Create and Destroy
- There are functions to allocate, destroy, clear, and copy
- .Va archive_entry
- objects:
- .Bl -tag -compact -width indent
- .It Fn archive_entry_clear
- Erases the object, resetting all internal fields to the
- same state as a newly-created object.
- This is provided to allow you to quickly recycle objects
- without thrashing the heap.
- .It Fn archive_entry_clone
- A deep copy operation; all text fields are duplicated.
- .It Fn archive_entry_free
- Releases the
- .Tn struct archive_entry
- object.
- .It Fn archive_entry_new
- Allocate and return a blank
- .Tn struct archive_entry
- object.
- .El
- .Ss Set and Get Functions
- Most of the functions here set or read entries in an object.
- Such functions have one of the following forms:
- .Bl -tag -compact -width indent
- .It Fn archive_entry_set_XXXX
- Stores the provided data in the object.
- In particular, for strings, the pointer is stored,
- not the referenced string.
- .It Fn archive_entry_copy_XXXX
- As above, except that the referenced data is copied
- into the object.
- .It Fn archive_entry_XXXX
- Returns the specified data.
- In the case of strings, a const-qualified pointer to
- the string is returned.
- .El
- String data can be set or accessed as wide character strings
- or normal
- .Va char
- strings.
- The functions that use wide character strings are suffixed with
- .Cm _w .
- Note that these are different representations of the same data:
- For example, if you store a narrow string and read the corresponding
- wide string, the object will transparently convert formats
- using the current locale.
- Similarly, if you store a wide string and then store a
- narrow string for the same data, the previously-set wide string will
- be discarded in favor of the new data.
- .Pp
- There are a few set/get functions that merit additional description:
- .Bl -tag -compact -width indent
- .It Fn archive_entry_set_link
- This function sets the symlink field if it is already set.
- Otherwise, it sets the hardlink field.
- .El
- .Ss File Flags
- File flags are transparently converted between a bitmap
- representation and a textual format.
- For example, if you set the bitmap and ask for text, the library
- will build a canonical text format.
- However, if you set a text format and request a text format,
- you will get back the same text, even if it is ill-formed.
- If you need to canonicalize a textual flags string, you should first set the
- text form, then request the bitmap form, then use that to set the bitmap form.
- Setting the bitmap format will clear the internal text representation
- and force it to be reconstructed when you next request the text form.
- .Pp
- The bitmap format consists of two integers, one containing bits
- that should be set, the other specifying bits that should be
- cleared.
- Bits not mentioned in either bitmap will be ignored.
- Usually, the bitmap of bits to be cleared will be set to zero.
- In unusual circumstances, you can force a fully-specified set
- of file flags by setting the bitmap of flags to clear to the complement
- of the bitmap of flags to set.
- (This differs from
- .Xr fflagstostr 3 ,
- which only includes names for set bits.)
- Converting a bitmap to a textual string is a platform-specific
- operation; bits that are not meaningful on the current platform
- will be ignored.
- .Pp
- The canonical text format is a comma-separated list of flag names.
- The
- .Fn archive_entry_copy_fflags_text
- and
- .Fn archive_entry_copy_fflags_text_w
- functions parse the provided text and sets the internal bitmap values.
- This is a platform-specific operation; names that are not meaningful
- on the current platform will be ignored.
- The function returns a pointer to the start of the first name that was not
- recognized, or NULL if every name was recognized.
- Note that every name--including names that follow an unrecognized name--will
- be evaluated, and the bitmaps will be set to reflect every name that is
- recognized.
- (In particular, this differs from
- .Xr strtofflags 3 ,
- which stops parsing at the first unrecognized name.)
- .Ss ACL Handling
- XXX This needs serious help.
- XXX
- .Pp
- An
- .Dq Access Control List
- (ACL) is a list of permissions that grant access to particular users or
- groups beyond what would normally be provided by standard POSIX mode bits.
- The ACL handling here addresses some deficiencies in the POSIX.1e draft 17 ACL
- specification.
- In particular, POSIX.1e draft 17 specifies several different formats, but
- none of those formats include both textual user/group names and numeric
- UIDs/GIDs.
- .Pp
- XXX explain ACL stuff XXX
- .\" .Sh EXAMPLE
- .\" .Sh RETURN VALUES
- .\" .Sh ERRORS
- .Sh SEE ALSO
- .Xr archive 3
- .Sh HISTORY
- The
- .Nm libarchive
- library first appeared in
- .Fx 5.3 .
- .Sh AUTHORS
- .An -nosplit
- The
- .Nm libarchive
- library was written by
- .An Tim Kientzle Aq [email protected] .
- .\" .Sh BUGS
|