Blame libarchive/archive_read_format.3

Packit 08bd4c
.\" Copyright (c) 2003-2011 Tim Kientzle
Packit 08bd4c
.\" All rights reserved.
Packit 08bd4c
.\"
Packit 08bd4c
.\" Redistribution and use in source and binary forms, with or without
Packit 08bd4c
.\" modification, are permitted provided that the following conditions
Packit 08bd4c
.\" are met:
Packit 08bd4c
.\" 1. Redistributions of source code must retain the above copyright
Packit 08bd4c
.\"    notice, this list of conditions and the following disclaimer.
Packit 08bd4c
.\" 2. Redistributions in binary form must reproduce the above copyright
Packit 08bd4c
.\"    notice, this list of conditions and the following disclaimer in the
Packit 08bd4c
.\"    documentation and/or other materials provided with the distribution.
Packit 08bd4c
.\"
Packit 08bd4c
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
Packit 08bd4c
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Packit 08bd4c
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
Packit 08bd4c
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
Packit 08bd4c
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Packit 08bd4c
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
Packit 08bd4c
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
Packit 08bd4c
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
Packit 08bd4c
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
Packit 08bd4c
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
Packit 08bd4c
.\" SUCH DAMAGE.
Packit 08bd4c
.\"
Packit 08bd4c
.\" $FreeBSD$
Packit 08bd4c
.\"
Packit 08bd4c
.Dd February 2, 2012
Packit 08bd4c
.Dt ARCHIVE_READ_FORMAT 3
Packit 08bd4c
.Os
Packit 08bd4c
.Sh NAME
Packit 08bd4c
.Nm archive_read_support_format_7zip ,
Packit 08bd4c
.Nm archive_read_support_format_all ,
Packit 08bd4c
.Nm archive_read_support_format_ar ,
Packit 08bd4c
.Nm archive_read_support_format_by_code ,
Packit 08bd4c
.Nm archive_read_support_format_cab ,
Packit 08bd4c
.Nm archive_read_support_format_cpio ,
Packit 08bd4c
.Nm archive_read_support_format_empty ,
Packit 08bd4c
.Nm archive_read_support_format_iso9660 ,
Packit 08bd4c
.Nm archive_read_support_format_lha ,
Packit 08bd4c
.Nm archive_read_support_format_mtree ,
Packit 08bd4c
.Nm archive_read_support_format_rar ,
Packit 08bd4c
.Nm archive_read_support_format_raw ,
Packit 08bd4c
.Nm archive_read_support_format_tar ,
Packit 08bd4c
.Nm archive_read_support_format_xar ,
Packit 08bd4c
.Nm archive_read_support_format_zip
Packit 08bd4c
.Nd functions for reading streaming archives
Packit 08bd4c
.\"
Packit 08bd4c
.Sh LIBRARY
Packit 08bd4c
Streaming Archive Library (libarchive, -larchive)
Packit 08bd4c
.Sh SYNOPSIS
Packit 08bd4c
.In archive.h
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_7zip "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_all "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_ar "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_by_code "struct archive *" "int"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_cab "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_cpio "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_empty "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_iso9660 "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_lha "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_mtree "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_rar "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_raw "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_tar "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_xar "struct archive *"
Packit 08bd4c
.Ft int
Packit 08bd4c
.Fn archive_read_support_format_zip "struct archive *"
Packit 08bd4c
.\"
Packit 08bd4c
.Sh DESCRIPTION
Packit 08bd4c
.Bl -tag -compact -width indent
Packit 08bd4c
.It Xo
Packit 08bd4c
.Fn archive_read_support_format_7zip ,
Packit 08bd4c
.Fn archive_read_support_format_ar ,
Packit 08bd4c
.Fn archive_read_support_format_cab ,
Packit 08bd4c
.Fn archive_read_support_format_cpio ,
Packit 08bd4c
.Fn archive_read_support_format_iso9660 ,
Packit 08bd4c
.Fn archive_read_support_format_lha ,
Packit 08bd4c
.Fn archive_read_support_format_mtree ,
Packit 08bd4c
.Fn archive_read_support_format_rar ,
Packit 08bd4c
.Fn archive_read_support_format_raw ,
Packit 08bd4c
.Fn archive_read_support_format_tar ,
Packit 08bd4c
.Fn archive_read_support_format_xar ,
Packit 08bd4c
.Fn archive_read_support_format_zip
Packit 08bd4c
.Xc
Packit 08bd4c
Enables support---including auto-detection code---for the
Packit 08bd4c
specified archive format.
Packit 08bd4c
For example,
Packit 08bd4c
.Fn archive_read_support_format_tar
Packit 08bd4c
enables support for a variety of standard tar formats, old-style tar,
Packit 08bd4c
ustar, pax interchange format, and many common variants.
Packit 08bd4c
.It Fn archive_read_support_format_all 
Packit 08bd4c
Enables support for all available formats except the
Packit 08bd4c
.Dq raw
Packit 08bd4c
format (see below).
Packit 08bd4c
.It Fn archive_read_support_format_by_code
Packit 08bd4c
Enables a single format specified by the format code.
Packit 08bd4c
This can be useful when reading a single archive twice;
Packit 08bd4c
use
Packit 08bd4c
.Fn archive_format
Packit 08bd4c
after reading the first time and pass the resulting code
Packit 08bd4c
to this function to selectively enable only the necessary
Packit 08bd4c
format support.
Packit 08bd4c
Note:  In statically-linked executables, this will cause
Packit 08bd4c
your program to include support for every format.
Packit 08bd4c
If executable size is a concern, you may wish to avoid
Packit 08bd4c
using this function.
Packit 08bd4c
.It Fn archive_read_support_format_empty
Packit 08bd4c
Enables support for treating empty files as empty archives.
Packit 08bd4c
Because empty files are valid for several different formats,
Packit 08bd4c
it is not possible to accurately determine a format for
Packit 08bd4c
an empty file based purely on contents.
Packit 08bd4c
So empty files are treated by libarchive as a distinct
Packit 08bd4c
format.
Packit 08bd4c
.It Fn archive_read_support_format_raw 
Packit 08bd4c
The
Packit 08bd4c
.Dq raw
Packit 08bd4c
format handler allows libarchive to be used to read arbitrary data.
Packit 08bd4c
It treats any data stream as an archive with a single entry.
Packit 08bd4c
The pathname of this entry is
Packit 08bd4c
.Dq data ;
Packit 08bd4c
all other entry fields are unset.
Packit 08bd4c
This is not enabled by
Packit 08bd4c
.Fn archive_read_support_format_all
Packit 08bd4c
in order to avoid erroneous handling of damaged archives.
Packit 08bd4c
.El
Packit 08bd4c
.\" .Sh EXAMPLE
Packit 08bd4c
.Sh RETURN VALUES
Packit 08bd4c
These functions return
Packit 08bd4c
.Cm ARCHIVE_OK
Packit 08bd4c
on success, or
Packit 08bd4c
.Cm ARCHIVE_FATAL .
Packit 08bd4c
.\"
Packit 08bd4c
.Sh ERRORS
Packit 08bd4c
Detailed error codes and textual descriptions are available from the
Packit 08bd4c
.Fn archive_errno
Packit 08bd4c
and
Packit 08bd4c
.Fn archive_error_string
Packit 08bd4c
functions.
Packit 08bd4c
.\"
Packit 08bd4c
.Sh SEE ALSO
Packit 08bd4c
.Xr tar 1 ,
Packit 08bd4c
.Xr libarchive 3 ,
Packit 08bd4c
.Xr archive_read_data 3 ,
Packit 08bd4c
.Xr archive_read_filter 3 ,
Packit 08bd4c
.Xr archive_read_set_options 3 ,
Packit 08bd4c
.Xr archive_util 3 ,
Packit 08bd4c
.Xr tar 5
Packit 08bd4c
.Sh BUGS
Packit 08bd4c
Many traditional archiver programs treat
Packit 08bd4c
empty files as valid empty archives.
Packit 08bd4c
For example, many implementations of
Packit 08bd4c
.Xr tar 1
Packit 08bd4c
allow you to append entries to an empty file.
Packit 08bd4c
Of course, it is impossible to determine the format of an empty file
Packit 08bd4c
by inspecting the contents, so this library treats empty files as
Packit 08bd4c
having a special
Packit 08bd4c
.Dq empty
Packit 08bd4c
format.
Packit 08bd4c
.Pp
Packit 08bd4c
Using the
Packit 08bd4c
.Dq raw
Packit 08bd4c
handler together with any other handler will often work
Packit 08bd4c
but can produce surprising results.