archive_entry(3)

NAME

archive_entry_acl_add_entry, archive_entry_acl_add_entry_w, archive_entry_acl_clear, archive_entry_acl_count,
archive_entry_acl_next,
archive_entry_acl_next_w, archive_entry_acl_reset, archive_entry_acl_text_w, archive_entry_atime,
archive_entry_atime_nsec,
archive_entry_clear, archive_entry_clone, archive_entry_copy_fflags_text_w,
archive_entry_copy_gname_w, archive_entry_copy_hardlink, archive_entry_copy_hardlink_w, archive_entry_copy_pathname_w, archive_entry_copy_stat, archive_entry_copy_symlink_w, archive_entry_copy_uname_w, archive_entry_dev, archive_entry_fflags,
archive_entry_fflags_text,
archive_entry_free, archive_entry_gid, archive_entry_gname, archive_entry_hardlink, archive_entry_ino,
archive_entry_mode,
archive_entry_mtime, archive_entry_mtime_nsec,
archive_entry_new,
archive_entry_pathname, archive_entry_pathname_w,
archive_entry_rdev,
archive_entry_rdevmajor, archive_entry_rdevminor, archive_entry_set_fflags, archive_entry_set_gid,
archive_entry_set_gname,
archive_entry_set_hardlink, archive_entry_set_link, archive_entry_set_mode, archive_entry_set_mtime, archive_entry_set_pathname, archive_entry_set_rdevmajor, archive_entry_set_rdevminor, archive_entry_set_size, archive_entry_set_symlink, archive_entry_set_uid, archive_entry_set_uname, archive_entry_size,
archive_entry_stat,
archive_entry_symlink, archive_entry_uid,
archive_entry_uname - functions
for manipulating archive entry descriptions

SYNOPSIS

#include <archive_entry.h>
void
archive_entry_acl_add_entry(struct archivee_ntry *, int type,
        int permset, int tag, int qual, const char *name);
void
archive_entry_acl_add_entry_w(struct  archivee_ntry   *,   int
type,
        int permset, int tag, int qual, const wchart_*name);
void
archive_entry_acl_clear(struct archivee_ntry *);
int
archive_entry_acl_count(struct archivee_ntry *, int type);
int
archive_entry_acl_next(struct  archivee_ntry  *,  int wantt_ype,
int *type,
        int  *permset,  int  *tag,  int  *qual,  const  char
**name);
int
archive_entry_acl_next_w(struct archivee_ntry *, int wantt_ype,
        int *type, int *permset, int *tag, int *qual,
        const wchart_**name);
void
archive_entry_acl_reset(struct archivee_ntry *);
const wchart_*
archive_entry_acl_text_w(struct archivee_ntry *, int flags);
timet_
archive_entry_atime(struct archivee_ntry *);
long
archive_entry_atime_nsec(struct archivee_ntry *);
void
archive_entry_clear(struct archivee_ntry *);
struct archivee_ntry *
archive_entry_clone(struct archivee_ntry *);
const wchart_*
archive_entry_copy_fflags_text_w(struct archivee_ntry *,
        const wchart_*);
void
archive_entry_copy_gname_w(struct   archivee_ntry   *,   const
wchart_ *);
void
archive_entry_copy_hardlink(struct archivee_ntry *, const char
*);
void
archive_entry_copy_hardlink_w(struct  archivee_ntry  *,  const
wchart_*);
void
archive_entry_copy_pathname_w(struct  archivee_ntry  *,  const
wchart_*);
void
archive_entry_copy_stat(struct  archivee_ntry  *,  struct stat
*);
void
archive_entry_copy_symlink_w(struct  archivee_ntry  *,   const
wchart_*);
void
archive_entry_copy_uname_w(struct   archivee_ntry   *,   const
wchart_ *);
devt_
archive_entry_dev(struct archivee_ntry *);
void
archive_entry_fflags(struct  archivee_ntry  *,  unsigned  long
*set,
        unsigned long *clear);
const char *
archive_entry_fflags_text(struct archivee_ntry *);
void
archive_entry_free(struct archivee_ntry *);
const char *
archive_entry_gname(struct archivee_ntry *);
const char *
archive_entry_hardlink(struct archivee_ntry *);
inot_
archive_entry_ino(struct archivee_ntry *);
modet_
archive_entry_mode(struct archivee_ntry *);
timet_
archive_entry_mtime(struct archivee_ntry *);
long
archive_entry_mtime_nsec(struct archivee_ntry *);
struct archivee_ntry *
archive_entry_new(void);
const char *
archive_entry_pathname(struct archivee_ntry *);
const wchart_*
archive_entry_pathname_w(struct archivee_ntry *);
devt_
archive_entry_rdev(struct archivee_ntry *);
devt_
archive_entry_rdevmajor(struct archivee_ntry *);
devt_
archive_entry_rdevminor(struct archivee_ntry *);
void
archive_entry_set_fflags(struct archivee_ntry *, unsigned long
set,
        unsigned long clear);
void
archive_entry_set_gid(struct archivee_ntry *, gidt);
void
archive_entry_set_gname(struct archivee_ntry *, const char *);
void
archive_entry_set_hardlink(struct  archivee_ntry *, const char
*);
void
archive_entry_set_link(struct archivee_ntry *, const char *);
void
archive_entry_set_mode(struct archivee_ntry *, modet);
void
archive_entry_set_mtime(struct  archivee_ntry  *,  timet,  long
nanos);
void
archive_entry_set_pathname(struct  archivee_ntry *, const char
*);
void
archive_entry_set_rdevmajor(struct archivee_ntry *, devt);
void
archive_entry_set_rdevminor(struct archivee_ntry *, devt);
void
archive_entry_set_size(struct archivee_ntry *, int64t);
void
archive_entry_set_symlink(struct archivee_ntry *,  const  char
*);
void
archive_entry_set_uid(struct archivee_ntry *, uidt);
void
archive_entry_set_uname(struct archivee_ntry *, const char *);
int64t_
archive_entry_size(struct archivee_ntry *);
const struct stat *
archive_entry_stat(struct archivee_ntry *);
const char *
archive_entry_symlink(struct archivee_ntry *);
const char *
archive_entry_uname(struct archivee_ntry *);

DESCRIPTION

These functions create and manipulate data objects that rep
resent entries
within an archive. You can think of a struct archive_entry
as a heavyduty version of struct stat: it includes everything from
struct stat plus
associated pathname, textual group and user names, etc.
These objects
are used by libarchive(3) to represent the metadata associ
ated with a
particular entry in an archive.
Create and Destroy
There are functions to allocate, destroy, clear, and copy
archivee_ntry
objects:
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.
archive_entry_clone()
A deep copy operation; all text fields are duplicat
ed.
archive_entry_free()
Releases the struct archive_entry object.
archive_entry_new()
Allocate and return a blank struct archive_entry ob
ject.
Set and Get Functions
Most of the functions here set or read entries in an object.
Such functions have one of the following forms:
archive_entry_set_XXXX()
Stores the provided data in the object. In particu
lar, for
strings, the pointer is stored, not the referenced
string.
archive_entry_copy_XXXX()
As above, except that the referenced data is copied
into the
object.
archive_entry_XXXX()
Returns the specified data. In the case of strings,
a constqualified pointer to the string is returned.
String data can be set or accessed as wide character strings
or normal
char strings. The functions that use wide character strings
are suffixed
with _w. Note that these are different representations of
the same data:
For example, if you store a narrow string and read the cor
responding 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.
There are a few set/get functions that merit additional de
scription:
archive_entry_set_link()
This function sets the symlink field if it is al
ready set. Otherwise, it sets the hardlink field.
File Flags
File flags are transparently converted between a bitmap rep
resentation
and a textual format. For example, if you set the bitmap
and ask for
text, the library will build a canonical text format. How
ever, 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 re
quest 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.
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 circum
stances, 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 fflagstostr(3), which only includes names for
set bits.)
Converting a bitmap to a textual string is a platform-spe
cific operation;
bits that are not meaningful on the current platform will be
ignored.
The canonical text format is a comma-separated list of flag
names. The
archive_entry_copy_fflags_text_w() function parses the pro
vided text and
sets the internal bitmap values. This is a platform-specif
ic 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 strtofflags(3),
which stops
parsing at the first unrecognized name.)
ACL Handling
XXX This needs serious help. XXX
An ``Access Control List'' (ACL) is a list of permissions
that grant
access to particular users or groups beyond what would nor
mally 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.
XXX explain ACL stuff XXX

SEE ALSO

archive(3)

HISTORY

The libarchive library first appeared in FreeBSD 5.3.

AUTHORS

The libarchive library was written by Tim Kientzle <kient
zle@acm.org>.
BSD December 15, 2003
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout