123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- .\" Copyright (c) 2003-2007 Tim Kientzle
- .\" All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- .\" SUCH DAMAGE.
- .\"
- .\" $FreeBSD$
- .\"
- .Dd February 2, 2012
- .Dt ARCHIVE_UTIL 3
- .Os
- .Sh NAME
- .Nm archive_clear_error ,
- .Nm archive_compression ,
- .Nm archive_compression_name ,
- .Nm archive_copy_error ,
- .Nm archive_errno ,
- .Nm archive_error_string ,
- .Nm archive_file_count ,
- .Nm archive_filter_code ,
- .Nm archive_filter_count ,
- .Nm archive_filter_name ,
- .Nm archive_format ,
- .Nm archive_format_name ,
- .Nm archive_position ,
- .Nm archive_set_error
- .Nd libarchive utility functions
- .Sh LIBRARY
- Streaming Archive Library (libarchive, -larchive)
- .Sh SYNOPSIS
- .In archive.h
- .Ft void
- .Fn archive_clear_error "struct archive *"
- .Ft int
- .Fn archive_compression "struct archive *"
- .Ft const char *
- .Fn archive_compression_name "struct archive *"
- .Ft void
- .Fn archive_copy_error "struct archive *" "struct archive *"
- .Ft int
- .Fn archive_errno "struct archive *"
- .Ft const char *
- .Fn archive_error_string "struct archive *"
- .Ft int
- .Fn archive_file_count "struct archive *"
- .Ft int
- .Fn archive_filter_code "struct archive *" "int"
- .Ft int
- .Fn archive_filter_count "struct archive *" "int"
- .Ft const char *
- .Fn archive_filter_name "struct archive *" "int"
- .Ft int
- .Fn archive_format "struct archive *"
- .Ft const char *
- .Fn archive_format_name "struct archive *"
- .Ft int64_t
- .Fn archive_position "struct archive *" "int"
- .Ft void
- .Fo archive_set_error
- .Fa "struct archive *"
- .Fa "int error_code"
- .Fa "const char *fmt"
- .Fa "..."
- .Fc
- .Sh DESCRIPTION
- These functions provide access to various information about the
- .Tn struct archive
- object used in the
- .Xr libarchive 3
- library.
- .Bl -tag -compact -width indent
- .It Fn archive_clear_error
- Clears any error information left over from a previous call.
- Not generally used in client code.
- .It Fn archive_compression
- Synonym for
- .Fn archive_filter_code(a, 0) .
- .It Fn archive_compression_name
- Synonym for
- .Fn archive_filter_name(a, 0) .
- .It Fn archive_copy_error
- Copies error information from one archive to another.
- .It Fn archive_errno
- Returns a numeric error code (see
- .Xr errno 2 )
- indicating the reason for the most recent error return.
- Note that this can not be reliably used to detect whether an
- error has occurred.
- It should be used only after another libarchive function
- has returned an error status.
- .It Fn archive_error_string
- Returns a textual error message suitable for display.
- The error message here is usually more specific than that
- obtained from passing the result of
- .Fn archive_errno
- to
- .Xr strerror 3 .
- .It Fn archive_file_count
- Returns a count of the number of files processed by this archive object.
- The count is incremented by calls to
- .Xr archive_write_header 3
- or
- .Xr archive_read_next_header 3 .
- .It Fn archive_filter_code
- Returns a numeric code identifying the indicated filter.
- See
- .Fn archive_filter_count
- for details of the numbering.
- .It Fn archive_filter_count
- Returns the number of filters in the current pipeline.
- For read archive handles, these filters are added automatically
- by the automatic format detection.
- For write archive handles, these filters are added by calls to the various
- .Fn archive_write_add_filter_XXX
- functions.
- Filters in the resulting pipeline are numbered so that filter 0
- is the filter closest to the format handler.
- As a convenience, functions that expect a filter number will
- accept -1 as a synonym for the highest-numbered filter.
- .Pp
- For example, when reading a uuencoded gzipped tar archive, there
- are three filters:
- filter 0 is the gunzip filter,
- filter 1 is the uudecode filter,
- and filter 2 is the pseudo-filter that wraps the archive read functions.
- In this case, requesting
- .Fn archive_position(a, -1)
- would be a synonym for
- .Fn archive_position(a, 2)
- which would return the number of bytes currently read from the archive, while
- .Fn archive_position(a, 1)
- would return the number of bytes after uudecoding, and
- .Fn archive_position(a, 0)
- would return the number of bytes after decompression.
- .It Fn archive_filter_name
- Returns a textual name identifying the indicated filter.
- See
- .Fn archive_filter_count
- for details of the numbering.
- .It Fn archive_format
- Returns a numeric code indicating the format of the current
- archive entry.
- This value is set by a successful call to
- .Fn archive_read_next_header .
- Note that it is common for this value to change from
- entry to entry.
- For example, a tar archive might have several entries that
- utilize GNU tar extensions and several entries that do not.
- These entries will have different format codes.
- .It Fn archive_format_name
- A textual description of the format of the current entry.
- .It Fn archive_position
- Returns the number of bytes read from or written to the indicated filter.
- In particular,
- .Fn archive_position(a, 0)
- returns the number of bytes read or written by the format handler, while
- .Fn archive_position(a, -1)
- returns the number of bytes read or written to the archive.
- See
- .Fn archive_filter_count
- for details of the numbering here.
- .It Fn archive_set_error
- Sets the numeric error code and error description that will be returned
- by
- .Fn archive_errno
- and
- .Fn archive_error_string .
- This function should be used within I/O callbacks to set system-specific
- error codes and error descriptions.
- This function accepts a printf-like format string and arguments.
- However, you should be careful to use only the following printf
- format specifiers:
- .Dq %c ,
- .Dq %d ,
- .Dq %jd ,
- .Dq %jo ,
- .Dq %ju ,
- .Dq %jx ,
- .Dq %ld ,
- .Dq %lo ,
- .Dq %lu ,
- .Dq %lx ,
- .Dq %o ,
- .Dq %u ,
- .Dq %s ,
- .Dq %x ,
- .Dq %% .
- Field-width specifiers and other printf features are
- not uniformly supported and should not be used.
- .El
- .Sh SEE ALSO
- .Xr archive_read 3 ,
- .Xr archive_write 3 ,
- .Xr libarchive 3 ,
- .Xr printf 3
- .Sh HISTORY
- The
- .Nm libarchive
- library first appeared in
- .Fx 5.3 .
- .Sh AUTHORS
- .An -nosplit
- The
- .Nm libarchive
- library was written by
- .An Tim Kientzle Aq kientzle@acm.org .
|