archive_entry.3.html   [plain text]


<!-- Creator     : groff version 1.19.2 -->
<!-- CreationDate: Sun Mar 14 19:50:13 2010 -->
<!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; }
       pre   { margin-top: 0; margin-bottom: 0; }
       table { margin-top: 0; margin-bottom: 0; }
</style>
<title></title>
</head>
<body>

<hr>


<p valign="top">archive_entry(3) FreeBSD Library Functions
Manual archive_entry(3)</p>

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


<p style="margin-left:8%;"><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_next</b>,
<b>archive_entry_acl_next_w</b>,
<b>archive_entry_acl_reset</b>,
<b>archive_entry_acl_text_w</b>, <b>archive_entry_atime</b>,
<b>archive_entry_atime_nsec</b>, <b>archive_entry_clear</b>,
<b>archive_entry_clone</b>,
<b>archive_entry_copy_fflags_text</b>,
<b>archive_entry_copy_fflags_text_w</b>,
<b>archive_entry_copy_gname</b>,
<b>archive_entry_copy_gname_w</b>,
<b>archive_entry_copy_hardlink</b>,
<b>archive_entry_copy_hardlink_w</b>,
<b>archive_entry_copy_link</b>,
<b>archive_entry_copy_link_w</b>,
<b>archive_entry_copy_pathname_w</b>,
<b>archive_entry_copy_sourcepath</b>,
<b>archive_entry_copy_stat</b>,
<b>archive_entry_copy_symlink</b>,
<b>archive_entry_copy_symlink_w</b>,
<b>archive_entry_copy_uname</b>,
<b>archive_entry_copy_uname_w</b>, <b>archive_entry_dev</b>,
<b>archive_entry_devmajor</b>,
<b>archive_entry_devminor</b>,
<b>archive_entry_filetype</b>, <b>archive_entry_fflags</b>,
<b>archive_entry_fflags_text</b>, <b>archive_entry_free</b>,
<b>archive_entry_gid</b>, <b>archive_entry_gname</b>,
<b>archive_entry_hardlink</b>, <b>archive_entry_ino</b>,
<b>archive_entry_mode</b>, <b>archive_entry_mtime</b>,
<b>archive_entry_mtime_nsec</b>, <b>archive_entry_nlink</b>,
<b>archive_entry_new</b>, <b>archive_entry_pathname</b>,
<b>archive_entry_pathname_w</b>, <b>archive_entry_rdev</b>,
<b>archive_entry_rdevmajor</b>,
<b>archive_entry_rdevminor</b>,
<b>archive_entry_set_atime</b>,
<b>archive_entry_set_ctime</b>,
<b>archive_entry_set_dev</b>,
<b>archive_entry_set_devmajor</b>,
<b>archive_entry_set_devminor</b>,
<b>archive_entry_set_filetype</b>,
<b>archive_entry_set_fflags</b>,
<b>archive_entry_set_gid</b>,
<b>archive_entry_set_gname</b>,
<b>archive_entry_set_hardlink</b>,
<b>archive_entry_set_link</b>,
<b>archive_entry_set_mode</b>,
<b>archive_entry_set_mtime</b>,
<b>archive_entry_set_pathname</b>,
<b>archive_entry_set_rdevmajor</b>,
<b>archive_entry_set_rdevminor</b>,
<b>archive_entry_set_size</b>,
<b>archive_entry_set_symlink</b>,
<b>archive_entry_set_uid</b>,
<b>archive_entry_set_uname</b>, <b>archive_entry_size</b>,
<b>archive_entry_sourcepath</b>, <b>archive_entry_stat</b>,
<b>archive_entry_symlink</b>, <b>archive_entry_uid</b>,
<b>archive_entry_uname</b> &mdash; functions for
manipulating archive entry descriptions</p>


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

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

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


<p valign="top"><b>archive_entry_acl_add_entry</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>int&nbsp;type</i>, <i>int&nbsp;permset</i>,
<i>int&nbsp;tag</i>, <i>int&nbsp;qual</i>,
<i>const&nbsp;char&nbsp;*name</i>);</p>

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


<p valign="top"><b>archive_entry_acl_add_entry_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>int&nbsp;type</i>, <i>int&nbsp;permset</i>,
<i>int&nbsp;tag</i>, <i>int&nbsp;qual</i>,
<i>const&nbsp;wchar_t&nbsp;*name</i>);</p>

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


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

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


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

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


<p valign="top"><b>archive_entry_acl_next</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>int&nbsp;want_type</i>, <i>int&nbsp;*type</i>,
<i>int&nbsp;*permset</i>, <i>int&nbsp;*tag</i>,
<i>int&nbsp;*qual</i>,
<i>const&nbsp;char&nbsp;**name</i>);</p>

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


<p valign="top"><b>archive_entry_acl_next_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>int&nbsp;want_type</i>, <i>int&nbsp;*type</i>,
<i>int&nbsp;*permset</i>, <i>int&nbsp;*tag</i>,
<i>int&nbsp;*qual</i>,
<i>const&nbsp;wchar_t&nbsp;**name</i>);</p>

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


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

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


<p style="margin-left:14%;"><b>archive_entry_acl_text_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>int&nbsp;flags</i>);</p>


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


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

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


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

<p style="margin-left:8%; margin-top: 1em"><i>struct
archive_entry *</i></p>


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

<p style="margin-left:8%; margin-top: 1em"><i>struct
archive_entry *</i></p>


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

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


<p style="margin-left:14%;"><b>archive_entry_copy_fflags_text_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_fflags_text_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;wchar_t&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_gname</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_gname_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;wchar_t&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_hardlink</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_hardlink_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;wchar_t&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_sourcepath</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_pathname_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;wchar_t&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_stat</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;struct&nbsp;stat&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_symlink</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_symlink_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;wchar_t&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_uname</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_copy_uname_w</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;wchar_t&nbsp;*</i>);</p>


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


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


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


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


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


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


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


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

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


<p valign="top"><b>archive_entry_fflags</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>unsigned&nbsp;long&nbsp;*set</i>,
<i>unsigned&nbsp;long&nbsp;*clear</i>);</p>

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


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

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


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

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


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

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


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


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


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


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


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


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


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

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


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

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


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

<p style="margin-left:8%; margin-top: 1em"><i>struct
archive_entry *</i></p>


<p style="margin-left:14%;"><b>archive_entry_new</b>(<i>void</i>);</p>

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


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

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


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


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


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


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


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


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


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

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


<p style="margin-left:14%;"><b>archive_entry_set_dev</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>dev_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_devmajor</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>dev_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_devminor</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>dev_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_filetype</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>unsigned&nbsp;int</i>);</p>

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


<p valign="top"><b>archive_entry_set_fflags</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>unsigned&nbsp;long&nbsp;set</i>,
<i>unsigned&nbsp;long&nbsp;clear</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_gid</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>gid_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_gname</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_hardlink</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_ino</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>unsigned&nbsp;long</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_link</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_mode</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>mode_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_mtime</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>time_t</i>, <i>long&nbsp;nanos</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_nlink</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>unsigned&nbsp;int</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_pathname</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_rdev</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>dev_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_rdevmajor</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>dev_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_rdevminor</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>dev_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_size</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>int64_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_symlink</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_uid</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>uid_t</i>);</p>

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


<p style="margin-left:14%;"><b>archive_entry_set_uname</b>(<i>struct&nbsp;archive_entry&nbsp;*</i>,
<i>const&nbsp;char&nbsp;*</i>);</p>


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


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

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


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

<p style="margin-left:8%; margin-top: 1em"><i>const struct
stat *</i></p>


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

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


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

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


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


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

<p style="margin-left:8%;">These functions create and
manipulate data objects that represent entries within an
archive. You can think of a struct archive_entry as a
heavy-duty 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 associated with a particular entry in
an archive.</p>

<p style="margin-left:8%; margin-top: 1em"><b>Create and
Destroy</b> <br>
There are functions to allocate, destroy, clear, and copy
<i>archive_entry</i> objects:</p>

<p valign="top"><b>archive_entry_clear</b>()</p>

<p style="margin-left:20%;">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.</p>

<p valign="top"><b>archive_entry_clone</b>()</p>

<p style="margin-left:20%;">A deep copy operation; all text
fields are duplicated.</p>

<p valign="top"><b>archive_entry_free</b>()</p>

<p style="margin-left:20%;">Releases the struct
archive_entry object.</p>

<p valign="top"><b>archive_entry_new</b>()</p>

<p style="margin-left:20%;">Allocate and return a blank
struct archive_entry object.</p>

<p style="margin-left:8%; margin-top: 1em"><b>Set and Get
Functions</b> <br>
Most of the functions here set or read entries in an object.
Such functions have one of the following forms:</p>

<p valign="top"><b>archive_entry_set_XXXX</b>()</p>

<p style="margin-left:20%;">Stores the provided data in the
object. In particular, for strings, the pointer is stored,
not the referenced string.</p>

<p valign="top"><b>archive_entry_copy_XXXX</b>()</p>

<p style="margin-left:20%;">As above, except that the
referenced data is copied into the object.</p>

<p valign="top"><b>archive_entry_XXXX</b>()</p>

<p style="margin-left:20%;">Returns the specified data. In
the case of strings, a const-qualified pointer to the string
is returned.</p>

<p style="margin-left:8%;">String data can be set or
accessed as wide character strings or normal <i>char</i>
strings. The functions that use wide character strings are
suffixed with <b>_w</b>. 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.</p>

<p style="margin-left:8%; margin-top: 1em">There are a few
set/get functions that merit additional description:</p>

<p valign="top"><b>archive_entry_set_link</b>()</p>

<p style="margin-left:20%;">This function sets the symlink
field if it is already set. Otherwise, it sets the hardlink
field.</p>

<p style="margin-left:8%; margin-top: 1em"><b>File
Flags</b> <br>
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.</p>

<p style="margin-left:8%; margin-top: 1em">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 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.</p>

<p style="margin-left:8%; margin-top: 1em">The canonical
text format is a comma-separated list of flag names. The
<b>archive_entry_copy_fflags_text</b>() and
<b>archive_entry_copy_fflags_text_w</b>() 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
strtofflags(3), which stops parsing at the first
unrecognized name.)</p>

<p style="margin-left:8%; margin-top: 1em"><b>ACL
Handling</b> <br>
XXX This needs serious help. XXX</p>

<p style="margin-left:8%; margin-top: 1em">An
&lsquo;&lsquo;Access Control List&rsquo;&rsquo; (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.</p>

<p style="margin-left:8%; margin-top: 1em">XXX explain ACL
stuff XXX</p>

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

<p style="margin-left:8%;">archive(3)</p>

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

<p style="margin-left:8%;">The <b>libarchive</b> library
first appeared in FreeBSD&nbsp;5.3.</p>

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

<p style="margin-left:8%;">The <b>libarchive</b> library
was written by Tim Kientzle
&lang;kientzle@acm.org&rang;.</p>


<p style="margin-left:8%; margin-top: 1em">FreeBSD&nbsp;9.0
May&nbsp;12, 2008 FreeBSD&nbsp;9.0</p>
<hr>
</body>
</html>