summaryrefslogtreecommitdiff
path: root/libarchive/libarchive-2.8.0/doc/wiki/ManPageArchiveReadDisk3.wiki
diff options
context:
space:
mode:
Diffstat (limited to 'libarchive/libarchive-2.8.0/doc/wiki/ManPageArchiveReadDisk3.wiki')
-rw-r--r--libarchive/libarchive-2.8.0/doc/wiki/ManPageArchiveReadDisk3.wiki287
1 files changed, 287 insertions, 0 deletions
diff --git a/libarchive/libarchive-2.8.0/doc/wiki/ManPageArchiveReadDisk3.wiki b/libarchive/libarchive-2.8.0/doc/wiki/ManPageArchiveReadDisk3.wiki
new file mode 100644
index 0000000..4135470
--- /dev/null
+++ b/libarchive/libarchive-2.8.0/doc/wiki/ManPageArchiveReadDisk3.wiki
@@ -0,0 +1,287 @@
+#summary archive_read_disk 3 manual page
+== NAME ==
+*archive_read_disk_new*,
+*archive_read_disk_set_symlink_logical*,
+*archive_read_disk_set_symlink_physical*,
+*archive_read_disk_set_symlink_hybrid*,
+*archive_read_disk_entry_from_file*,
+*archive_read_disk_gname*,
+*archive_read_disk_uname*,
+*archive_read_disk_set_uname_lookup*,
+*archive_read_disk_set_gname_lookup*,
+*archive_read_disk_set_standard_lookup*,
+*archive_read_close*,
+*archive_read_finish*
+- functions for reading objects from disk
+== SYNOPSIS ==
+*#include <archive.h>*
+<br>
+*struct archive `*`*
+<br>
+*archive_read_disk_new*(_void_);
+<br>
+*int*
+<br>
+*archive_read_disk_set_symlink_logical*(_struct archive `*`_);
+<br>
+*int*
+<br>
+*archive_read_disk_set_symlink_physical*(_struct archive `*`_);
+<br>
+*int*
+<br>
+*archive_read_disk_set_symlink_hybrid*(_struct archive `*`_);
+<br>
+*int*
+<br>
+*archive_read_disk_gname*(_struct archive `*`_, _gid_t_);
+<br>
+*int*
+<br>
+*archive_read_disk_uname*(_struct archive `*`_, _uid_t_);
+<br>
+*int*
+<br>
+*archive_read_disk_set_gname_lookup*(_struct archive `*`_, _void `*`_, _const char `*`(`*`lookup)(void `*`, gid_t)_, _void (`*`cleanup)(void `*`)_);
+<br>
+*int*
+<br>
+*archive_read_disk_set_uname_lookup*(_struct archive `*`_, _void `*`_, _const char `*`(`*`lookup)(void `*`, uid_t)_, _void (`*`cleanup)(void `*`)_);
+<br>
+*int*
+<br>
+*archive_read_disk_set_standard_lookup*(_struct archive `*`_);
+<br>
+*int*
+<br>
+*archive_read_disk_entry_from_file*(_struct archive `*`_, _struct archive_entry `*`_, _int fd_, _const struct stat `*`_);
+<br>
+*int*
+<br>
+*archive_read_close*(_struct archive `*`_);
+<br>
+*int*
+<br>
+*archive_read_finish*(_struct archive `*`_);
+== DESCRIPTION ==
+These functions provide an API for reading information about
+objects on disk.
+In particular, they provide an interface for populating
+*struct archive_entry*
+objects.
+<dl>
+<dt>*archive_read_disk_new*()</dt><dd>
+Allocates and initializes a
+*struct archive*
+object suitable for reading object information from disk.
+</dd><dt>
+*archive_read_disk_set_symlink_logical*(),
+*archive_read_disk_set_symlink_physical*(),
+*archive_read_disk_set_symlink_hybrid*()
+</dt> <dd>
+This sets the mode used for handling symbolic links.
+The
+"logical"
+mode follows all symbolic links.
+The
+"physical"
+mode does not follow any symbolic links.
+The
+"hybrid"
+mode currently behaves identically to the
+"logical"
+mode.
+</dd><dt>
+*archive_read_disk_gname*(),
+*archive_read_disk_uname*()
+</dt> <dd>
+Returns a user or group name given a gid or uid value.
+By default, these always return a NULL string.
+</dd><dt>
+*archive_read_disk_set_gname_lookup*(),
+*archive_read_disk_set_uname_lookup*()
+</dt> <dd>
+These allow you to override the functions used for
+user and group name lookups.
+You may also provide a
+*void `*`*
+pointer to a private data structure and a cleanup function for
+that data.
+The cleanup function will be invoked when the
+*struct archive*
+object is destroyed or when new lookup functions are registered.
+</dd><dt>*archive_read_disk_set_standard_lookup*()</dt><dd>
+This convenience function installs a standard set of user
+and group name lookup functions.
+These functions use
+*getpwid*(3)
+and
+*getgrid*(3)
+to convert ids to names, defaulting to NULL if the names cannot
+be looked up.
+These functions also implement a simple memory cache to reduce
+the number of calls to
+*getpwid*(3)
+and
+*getgrid*(3).
+</dd><dt>*archive_read_disk_entry_from_file*()</dt><dd>
+Populates a
+*struct archive_entry*
+object with information about a particular file.
+The
+*archive_entry*
+object must have already been created with
+*archive_entry_new*(3)
+and at least one of the source path or path fields must already be set.
+(If both are set, the source path will be used.)
+
+Information is read from disk using the path name from the
+*struct archive_entry*
+object.
+If a file descriptor is provided, some information will be obtained using
+that file descriptor, on platforms that support the appropriate
+system calls.
+
+If a pointer to a
+*struct stat*
+is provided, information from that structure will be used instead
+of reading from the disk where appropriate.
+This can provide performance benefits in scenarios where
+*struct stat*
+information has already been read from the disk as a side effect
+of some other operation.
+(For example, directory traversal libraries often provide this information.)
+
+Where necessary, user and group ids are converted to user and group names
+using the currently registered lookup functions above.
+This affects the file ownership fields and ACL values in the
+*struct archive_entry*
+object.
+</dd><dt>*archive_read_close*()</dt><dd>
+This currently does nothing.
+</dd><dt>*archive_write_finish*()</dt><dd>
+Invokes
+*archive_write_close*()
+if it was not invoked manually, then releases all resources.
+</dd></dl>
+More information about the
+_struct_ archive
+object and the overall design of the library can be found in the
+*libarchive*(3)
+overview.
+== EXAMPLE ==
+The following illustrates basic usage of the library by
+showing how to use it to copy an item on disk into an archive.
+{{{
+void
+file_to_archive(struct archive *a, const char *name)
+{
+ char buff[8192];
+ size_t bytes_read;
+ struct archive *ard;
+ struct archive_entry *entry;
+ int fd;
+ ard = archive_read_disk_new();
+ archive_read_disk_set_standard_lookup(ard);
+ entry = archive_entry_new();
+ fd = open(name, O_RDONLY);
+ if (fd < 0)
+ return;
+ archive_entry_copy_sourcepath(entry, name);
+ archive_read_disk_entry_from_file(ard, entry, fd, NULL);
+ archive_write_header(a, entry);
+ while ((bytes_read = read(fd, buff, sizeof(buff))) > 0)
+ archive_write_data(a, buff, bytes_read);
+ archive_write_finish_entry(a);
+ archive_read_finish(ard);
+ archive_entry_free(entry);
+}
+}}}
+== RETURN VALUES ==
+Most functions return
+*ARCHIVE_OK*
+(zero) on success, or one of several negative
+error codes for errors.
+Specific error codes include:
+*ARCHIVE_RETRY*
+for operations that might succeed if retried,
+*ARCHIVE_WARN*
+for unusual conditions that do not prevent further operations, and
+*ARCHIVE_FATAL*
+for serious errors that make remaining operations impossible.
+The
+*archive_errno*(3)
+and
+*archive_error_string*(3)
+functions can be used to retrieve an appropriate error code and a
+textual error message.
+(See
+*archive_util*(3)
+for details.)
+
+*archive_read_disk_new*()
+returns a pointer to a newly-allocated
+*struct archive*
+object or NULL if the allocation failed for any reason.
+
+*archive_read_disk_gname*()
+and
+*archive_read_disk_uname*()
+return
+*const char `*`*
+pointers to the textual name or NULL if the lookup failed for any reason.
+The returned pointer points to internal storage that
+may be reused on the next call to either of these functions;
+callers should copy the string if they need to continue accessing it.
+
+== SEE ALSO ==
+*archive_read*(3),
+*archive_write*(3),
+*archive_write_disk*(3),
+*tar*(1),
+*libarchive*(3)
+== HISTORY ==
+The
+*libarchive*
+library first appeared in
+FreeBSD 5.3.
+The
+*archive_read_disk*
+interface was added to
+*libarchive* 2.6
+and first appeared in
+FreeBSD 8.0.
+== AUTHORS ==
+The
+*libarchive*
+library was written by
+Tim Kientzle <kientzle@freebsd.org.>
+== BUGS ==
+The
+"standard"
+user name and group name lookup functions are not the defaults because
+*getgrid*(3)
+and
+*getpwid*(3)
+are sometimes too large for particular applications.
+The current design allows the application author to use a more
+compact implementation when appropriate.
+
+The full list of metadata read from disk by
+*archive_read_disk_entry_from_file*()
+is necessarily system-dependent.
+
+The
+*archive_read_disk_entry_from_file*()
+function reads as much information as it can from disk.
+Some method should be provided to limit this so that clients who
+do not need ACLs, for instance, can avoid the extra work needed
+to look up such information.
+
+This API should provide a set of methods for walking a directory tree.
+That would make it a direct parallel of the
+*archive_read*(3)
+API.
+When such methods are implemented, the
+"hybrid"
+symbolic link mode will make sense.