.\" Copyright (c) 2003-2011 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_READ_FORMAT 3 .Os .Sh NAME .Nm archive_read_support_format_7zip , .Nm archive_read_support_format_all , .Nm archive_read_support_format_ar , .Nm archive_read_support_format_by_code , .Nm archive_read_support_format_cab , .Nm archive_read_support_format_cpio , .Nm archive_read_support_format_empty , .Nm archive_read_support_format_iso9660 , .Nm archive_read_support_format_lha , .Nm archive_read_support_format_mtree , .Nm archive_read_support_format_rar , .Nm archive_read_support_format_raw , .Nm archive_read_support_format_tar , .Nm archive_read_support_format_xar , .Nm archive_read_support_format_zip .Nd functions for reading streaming archives .\" .Sh LIBRARY Streaming Archive Library (libarchive, -larchive) .Sh SYNOPSIS .In archive.h .Ft int .Fn archive_read_support_format_7zip "struct archive *" .Ft int .Fn archive_read_support_format_all "struct archive *" .Ft int .Fn archive_read_support_format_ar "struct archive *" .Ft int .Fn archive_read_support_format_by_code "struct archive *" "int" .Ft int .Fn archive_read_support_format_cab "struct archive *" .Ft int .Fn archive_read_support_format_cpio "struct archive *" .Ft int .Fn archive_read_support_format_empty "struct archive *" .Ft int .Fn archive_read_support_format_iso9660 "struct archive *" .Ft int .Fn archive_read_support_format_lha "struct archive *" .Ft int .Fn archive_read_support_format_mtree "struct archive *" .Ft int .Fn archive_read_support_format_rar "struct archive *" .Ft int .Fn archive_read_support_format_raw "struct archive *" .Ft int .Fn archive_read_support_format_tar "struct archive *" .Ft int .Fn archive_read_support_format_xar "struct archive *" .Ft int .Fn archive_read_support_format_zip "struct archive *" .\" .Sh DESCRIPTION .Bl -tag -compact -width indent .It Xo .Fn archive_read_support_format_7zip , .Fn archive_read_support_format_ar , .Fn archive_read_support_format_cab , .Fn archive_read_support_format_cpio , .Fn archive_read_support_format_iso9660 , .Fn archive_read_support_format_lha , .Fn archive_read_support_format_mtree , .Fn archive_read_support_format_rar , .Fn archive_read_support_format_raw , .Fn archive_read_support_format_tar , .Fn archive_read_support_format_xar , .Fn archive_read_support_format_zip .Xc Enables support---including auto-detection code---for the specified archive format. For example, .Fn archive_read_support_format_tar enables support for a variety of standard tar formats, old-style tar, ustar, pax interchange format, and many common variants. .It Fn archive_read_support_format_all Enables support for all available formats except the .Dq raw format (see below). .It Fn archive_read_support_format_by_code Enables a single format specified by the format code. This can be useful when reading a single archive twice; use .Fn archive_format after reading the first time and pass the resulting code to this function to selectively enable only the necessary format support. Note: In statically-linked executables, this will cause your program to include support for every format. If executable size is a concern, you may wish to avoid using this function. .It Fn archive_read_support_format_empty Enables support for treating empty files as empty archives. Because empty files are valid for several different formats, it is not possible to accurately determine a format for an empty file based purely on contents. So empty files are treated by libarchive as a distinct format. .It Fn archive_read_support_format_raw The .Dq raw format handler allows libarchive to be used to read arbitrary data. It treats any data stream as an archive with a single entry. The pathname of this entry is .Dq data ; all other entry fields are unset. This is not enabled by .Fn archive_read_support_format_all in order to avoid erroneous handling of damaged archives. .El .\" .Sh EXAMPLE .Sh RETURN VALUES These functions return .Cm ARCHIVE_OK on success, or .Cm ARCHIVE_FATAL . .\" .Sh ERRORS Detailed error codes and textual descriptions are available from the .Fn archive_errno and .Fn archive_error_string functions. .\" .Sh SEE ALSO .Xr tar 1 , .Xr libarchive 3 , .Xr archive_read_data 3 , .Xr archive_read_filter 3 , .Xr archive_read_set_options 3 , .Xr archive_util 3 , .Xr tar 5 .Sh BUGS Many traditional archiver programs treat empty files as valid empty archives. For example, many implementations of .Xr tar 1 allow you to append entries to an empty file. Of course, it is impossible to determine the format of an empty file by inspecting the contents, so this library treats empty files as having a special .Dq empty format. .Pp Using the .Dq raw handler together with any other handler will often work but can produce surprising results.