1archive_entry(3)         BSD Library Functions Manual         archive_entry(3)
2

NAME

4     archive_entry_acl_add_entry, archive_entry_acl_add_entry_w,
5     archive_entry_acl_clear, archive_entry_acl_count, archive_entry_acl_next,
6     archive_entry_acl_next_w, archive_entry_acl_reset,
7     archive_entry_acl_text_w, archive_entry_atime, archive_entry_atime_nsec,
8     archive_entry_clear, archive_entry_clone, archive_entry_copy_fflags_text,
9     archive_entry_copy_fflags_text_w, archive_entry_copy_gname,
10     archive_entry_copy_gname_w, archive_entry_copy_hardlink,
11     archive_entry_copy_hardlink_w, archive_entry_copy_link,
12     archive_entry_copy_link_w, archive_entry_copy_pathname_w,
13     archive_entry_copy_sourcepath, archive_entry_copy_stat,
14     archive_entry_copy_symlink, archive_entry_copy_symlink_w,
15     archive_entry_copy_uname, archive_entry_copy_uname_w, archive_entry_dev,
16     archive_entry_devmajor, archive_entry_devminor, archive_entry_filetype,
17     archive_entry_fflags, archive_entry_fflags_text, archive_entry_free,
18     archive_entry_gid, archive_entry_gname, archive_entry_hardlink,
19     archive_entry_ino, archive_entry_mode, archive_entry_mtime,
20     archive_entry_mtime_nsec, archive_entry_nlink, archive_entry_new,
21     archive_entry_pathname, archive_entry_pathname_w, archive_entry_rdev,
22     archive_entry_rdevmajor, archive_entry_rdevminor,
23     archive_entry_set_atime, archive_entry_set_ctime, archive_entry_set_dev,
24     archive_entry_set_devmajor, archive_entry_set_devminor,
25     archive_entry_set_filetype, archive_entry_set_fflags,
26     archive_entry_set_gid, archive_entry_set_gname,
27     archive_entry_set_hardlink, archive_entry_set_link,
28     archive_entry_set_mode, archive_entry_set_mtime,
29     archive_entry_set_pathname, archive_entry_set_rdevmajor,
30     archive_entry_set_rdevminor, archive_entry_set_size,
31     archive_entry_set_symlink, archive_entry_set_uid,
32     archive_entry_set_uname, archive_entry_size, archive_entry_sourcepath,
33     archive_entry_stat, archive_entry_symlink, archive_entry_uid,
34     archive_entry_uname — functions for manipulating archive entry descrip‐
35     tions
36

SYNOPSIS

38     #include <archive_entry.h>
39
40     void
41     archive_entry_acl_add_entry(struct archive_entry *, int type,
42         int permset, int tag, int qual, const char *name);
43
44     void
45     archive_entry_acl_add_entry_w(struct archive_entry *, int type,
46         int permset, int tag, int qual, const wchar_t *name);
47
48     void
49     archive_entry_acl_clear(struct archive_entry *);
50
51     int
52     archive_entry_acl_count(struct archive_entry *, int type);
53
54     int
55     archive_entry_acl_next(struct archive_entry *, int want_type, int *type,
56         int *permset, int *tag, int *qual, const char **name);
57
58     int
59     archive_entry_acl_next_w(struct archive_entry *, int want_type,
60         int *type, int *permset, int *tag, int *qual, const wchar_t **name);
61
62     int
63     archive_entry_acl_reset(struct archive_entry *, int want_type);
64
65     const wchar_t *
66     archive_entry_acl_text_w(struct archive_entry *, int flags);
67
68     time_t
69     archive_entry_atime(struct archive_entry *);
70
71     long
72     archive_entry_atime_nsec(struct archive_entry *);
73
74     struct archive_entry *
75     archive_entry_clear(struct archive_entry *);
76
77     struct archive_entry *
78     archive_entry_clone(struct archive_entry *);
79
80     const char * *
81     archive_entry_copy_fflags_text_w(struct archive_entry *, const char *);
82
83     const wchar_t *
84     archive_entry_copy_fflags_text_w(struct archive_entry *,
85         const wchar_t *);
86
87     void
88     archive_entry_copy_gname(struct archive_entry *, const char *);
89
90     void
91     archive_entry_copy_gname_w(struct archive_entry *, const wchar_t *);
92
93     void
94     archive_entry_copy_hardlink(struct archive_entry *, const char *);
95
96     void
97     archive_entry_copy_hardlink_w(struct archive_entry *, const wchar_t *);
98
99     void
100     archive_entry_copy_sourcepath(struct archive_entry *, const char *);
101
102     void
103     archive_entry_copy_pathname_w(struct archive_entry *, const wchar_t *);
104
105     void
106     archive_entry_copy_stat(struct archive_entry *, const struct stat *);
107
108     void
109     archive_entry_copy_symlink(struct archive_entry *, const char *);
110
111     void
112     archive_entry_copy_symlink_w(struct archive_entry *, const wchar_t *);
113
114     void
115     archive_entry_copy_uname(struct archive_entry *, const char *);
116
117     void
118     archive_entry_copy_uname_w(struct archive_entry *, const wchar_t *);
119
120     dev_t
121     archive_entry_dev(struct archive_entry *);
122
123     dev_t
124     archive_entry_devmajor(struct archive_entry *);
125
126     dev_t
127     archive_entry_devminor(struct archive_entry *);
128
129     mode_t
130     archive_entry_filetype(struct archive_entry *);
131
132     void
133     archive_entry_fflags(struct archive_entry *, unsigned long *set,
134         unsigned long *clear);
135
136     const char *
137     archive_entry_fflags_text(struct archive_entry *);
138
139     void
140     archive_entry_free(struct archive_entry *);
141
142     const char *
143     archive_entry_gname(struct archive_entry *);
144
145     const char *
146     archive_entry_hardlink(struct archive_entry *);
147
148     ino_t
149     archive_entry_ino(struct archive_entry *);
150
151     mode_t
152     archive_entry_mode(struct archive_entry *);
153
154     time_t
155     archive_entry_mtime(struct archive_entry *);
156
157     long
158     archive_entry_mtime_nsec(struct archive_entry *);
159
160     unsigned int
161     archive_entry_nlink(struct archive_entry *);
162
163     struct archive_entry *
164     archive_entry_new(void);
165
166     const char *
167     archive_entry_pathname(struct archive_entry *);
168
169     const wchar_t *
170     archive_entry_pathname_w(struct archive_entry *);
171
172     dev_t
173     archive_entry_rdev(struct archive_entry *);
174
175     dev_t
176     archive_entry_rdevmajor(struct archive_entry *);
177
178     dev_t
179     archive_entry_rdevminor(struct archive_entry *);
180
181     void
182     archive_entry_set_dev(struct archive_entry *, dev_t);
183
184     void
185     archive_entry_set_devmajor(struct archive_entry *, dev_t);
186
187     void
188     archive_entry_set_devminor(struct archive_entry *, dev_t);
189
190     void
191     archive_entry_set_filetype(struct archive_entry *, unsigned int);
192
193     void
194     archive_entry_set_fflags(struct archive_entry *, unsigned long set,
195         unsigned long clear);
196
197     void
198     archive_entry_set_gid(struct archive_entry *, gid_t);
199
200     void
201     archive_entry_set_gname(struct archive_entry *, const char *);
202
203     void
204     archive_entry_set_hardlink(struct archive_entry *, const char *);
205
206     void
207     archive_entry_set_ino(struct archive_entry *, unsigned long);
208
209     void
210     archive_entry_set_link(struct archive_entry *, const char *);
211
212     void
213     archive_entry_set_mode(struct archive_entry *, mode_t);
214
215     void
216     archive_entry_set_mtime(struct archive_entry *, time_t, long nanos);
217
218     void
219     archive_entry_set_nlink(struct archive_entry *, unsigned int);
220
221     void
222     archive_entry_set_pathname(struct archive_entry *, const char *);
223
224     void
225     archive_entry_set_rdev(struct archive_entry *, dev_t);
226
227     void
228     archive_entry_set_rdevmajor(struct archive_entry *, dev_t);
229
230     void
231     archive_entry_set_rdevminor(struct archive_entry *, dev_t);
232
233     void
234     archive_entry_set_size(struct archive_entry *, int64_t);
235
236     void
237     archive_entry_set_symlink(struct archive_entry *, const char *);
238
239     void
240     archive_entry_set_uid(struct archive_entry *, uid_t);
241
242     void
243     archive_entry_set_uname(struct archive_entry *, const char *);
244
245     int64_t
246     archive_entry_size(struct archive_entry *);
247
248     const char *
249     archive_entry_sourcepath(struct archive_entry *);
250
251     const struct stat *
252     archive_entry_stat(struct archive_entry *);
253
254     const char *
255     archive_entry_symlink(struct archive_entry *);
256
257     const char *
258     archive_entry_uname(struct archive_entry *);
259

DESCRIPTION

261     These functions create and manipulate data objects that represent entries
262     within an archive.  You can think of a struct archive_entry as a heavy-
263     duty version of struct stat: it includes everything from struct stat plus
264     associated pathname, textual group and user names, etc.  These objects
265     are used by libarchive(3) to represent the metadata associated with a
266     particular entry in an archive.
267
268   Create and Destroy
269     There are functions to allocate, destroy, clear, and copy archive_entry
270     objects:
271     archive_entry_clear()
272             Erases the object, resetting all internal fields to the same
273             state as a newly-created object.  This is provided to allow you
274             to quickly recycle objects without thrashing the heap.
275     archive_entry_clone()
276             A deep copy operation; all text fields are duplicated.
277     archive_entry_free()
278             Releases the struct archive_entry object.
279     archive_entry_new()
280             Allocate and return a blank struct archive_entry object.
281
282   Set and Get Functions
283     Most of the functions here set or read entries in an object.  Such func‐
284     tions have one of the following forms:
285     archive_entry_set_XXXX()
286             Stores the provided data in the object.  In particular, for
287             strings, the pointer is stored, not the referenced string.
288     archive_entry_copy_XXXX()
289             As above, except that the referenced data is copied into the
290             object.
291     archive_entry_XXXX()
292             Returns the specified data.  In the case of strings, a const-
293             qualified pointer to the string is returned.
294     String data can be set or accessed as wide character strings or normal
295     char strings.  The functions that use wide character strings are suffixed
296     with _w.  Note that these are different representations of the same data:
297     For example, if you store a narrow string and read the corresponding wide
298     string, the object will transparently convert formats using the current
299     locale.  Similarly, if you store a wide string and then store a narrow
300     string for the same data, the previously-set wide string will be dis‐
301     carded in favor of the new data.
302
303     There are a few set/get functions that merit additional description:
304     archive_entry_set_link()
305             This function sets the symlink field if it is already set.  Oth‐
306             erwise, it sets the hardlink field.
307
308   File Flags
309     File flags are transparently converted between a bitmap representation
310     and a textual format.  For example, if you set the bitmap and ask for
311     text, the library will build a canonical text format.  However, if you
312     set a text format and request a text format, you will get back the same
313     text, even if it is ill-formed.  If you need to canonicalize a textual
314     flags string, you should first set the text form, then request the bitmap
315     form, then use that to set the bitmap form.  Setting the bitmap format
316     will clear the internal text representation and force it to be recon‐
317     structed when you next request the text form.
318
319     The bitmap format consists of two integers, one containing bits that
320     should be set, the other specifying bits that should be cleared.  Bits
321     not mentioned in either bitmap will be ignored.  Usually, the bitmap of
322     bits to be cleared will be set to zero.  In unusual circumstances, you
323     can force a fully-specified set of file flags by setting the bitmap of
324     flags to clear to the complement of the bitmap of flags to set.  (This
325     differs from fflagstostr(3), which only includes names for set bits.)
326     Converting a bitmap to a textual string is a platform-specific operation;
327     bits that are not meaningful on the current platform will be ignored.
328
329     The canonical text format is a comma-separated list of flag names.  The
330     archive_entry_copy_fflags_text() and archive_entry_copy_fflags_text_w()
331     functions parse the provided text and sets the internal bitmap values.
332     This is a platform-specific operation; names that are not meaningful on
333     the current platform will be ignored.  The function returns a pointer to
334     the start of the first name that was not recognized, or NULL if every
335     name was recognized.  Note that every name--including names that follow
336     an unrecognized name--will be evaluated, and the bitmaps will be set to
337     reflect every name that is recognized.  (In particular, this differs from
338     strtofflags(3), which stops parsing at the first unrecognized name.)
339
340   ACL Handling
341     XXX This needs serious help.  XXX
342
343     An “Access Control List” (ACL) is a list of permissions that grant access
344     to particular users or groups beyond what would normally be provided by
345     standard POSIX mode bits.  The ACL handling here addresses some deficien‐
346     cies in the POSIX.1e draft 17 ACL specification.  In particular, POSIX.1e
347     draft 17 specifies several different formats, but none of those formats
348     include both textual user/group names and numeric UIDs/GIDs.
349
350     XXX explain ACL stuff XXX
351

SEE ALSO

353     archive(3)
354

HISTORY

356     The libarchive library first appeared in FreeBSD 5.3.
357

AUTHORS

359     The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
360
361BSD                              May 12, 2008                              BSD
Impressum