1archive_entry(3) BSD Library Functions Manual archive_entry(3)
2
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
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
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
353 archive(3)
354
356 The libarchive library first appeared in FreeBSD 5.3.
357
359 The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
360
361BSD May 12, 2008 BSD