Blame doc/man/archive_read_open.3

Packit Service 1d0348
.TH ARCHIVE_READ_OPEN 3 "February 2, 2012" ""
Packit Service 1d0348
.SH NAME
Packit Service 1d0348
.ad l
Packit Service 1d0348
\fB\%archive_read_open\fP,
Packit Service 1d0348
\fB\%archive_read_open2\fP,
Packit Service 1d0348
\fB\%archive_read_open_fd\fP,
Packit Service 1d0348
\fB\%archive_read_open_FILE\fP,
Packit Service 1d0348
\fB\%archive_read_open_filename\fP,
Packit Service 1d0348
\fB\%archive_read_open_memory\fP
Packit Service 1d0348
\- functions for reading streaming archives
Packit Service 1d0348
.SH LIBRARY
Packit Service 1d0348
.ad l
Packit Service 1d0348
Streaming Archive Library (libarchive, -larchive)
Packit Service 1d0348
.SH SYNOPSIS
Packit Service 1d0348
.ad l
Packit Service 1d0348
\fB#include <archive.h>\fP
Packit Service 1d0348
.br
Packit Service 1d0348
\fIint\fP
Packit Service 1d0348
.br
Packit Service 1d0348
\fB\%archive_read_open\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%archive_open_callback\ *\fP, \fI\%archive_read_callback\ *\fP, \fI\%archive_close_callback\ *\fP);
Packit Service 1d0348
.br
Packit Service 1d0348
\fIint\fP
Packit Service 1d0348
.br
Packit Service 1d0348
\fB\%archive_read_open2\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%archive_open_callback\ *\fP, \fI\%archive_read_callback\ *\fP, \fI\%archive_skip_callback\ *\fP, \fI\%archive_close_callback\ *\fP);
Packit Service 1d0348
.br
Packit Service 1d0348
\fIint\fP
Packit Service 1d0348
.br
Packit Service 1d0348
\fB\%archive_read_open_FILE\fP(\fI\%struct\ archive\ *\fP, \fI\%FILE\ *file\fP);
Packit Service 1d0348
.br
Packit Service 1d0348
\fIint\fP
Packit Service 1d0348
.br
Packit Service 1d0348
\fB\%archive_read_open_fd\fP(\fI\%struct\ archive\ *\fP, \fI\%int\ fd\fP, \fI\%size_t\ block_size\fP);
Packit Service 1d0348
.br
Packit Service 1d0348
\fIint\fP
Packit Service 1d0348
.br
Packit Service 1d0348
\fB\%archive_read_open_filename\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ char\ *filename\fP, \fI\%size_t\ block_size\fP);
Packit Service 1d0348
.br
Packit Service 1d0348
\fIint\fP
Packit Service 1d0348
.br
Packit Service 1d0348
\fB\%archive_read_open_memory\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ void\ *buff\fP, \fI\%size_t\ size\fP);
Packit Service 1d0348
.SH DESCRIPTION
Packit Service 1d0348
.ad l
Packit Service 1d0348
.RS 5
Packit Service 1d0348
.TP
Packit Service 1d0348
\fB\%archive_read_open\fP()
Packit Service 1d0348
The same as
Packit Service 1d0348
\fB\%archive_read_open2\fP(),
Packit Service 1d0348
except that the skip callback is assumed to be
Packit Service 1d0348
.BR NULL.
Packit Service 1d0348
.TP
Packit Service 1d0348
\fB\%archive_read_open2\fP()
Packit Service 1d0348
Freeze the settings, open the archive, and prepare for reading entries.
Packit Service 1d0348
This is the most generic version of this call, which accepts
Packit Service 1d0348
four callback functions.
Packit Service 1d0348
Most clients will want to use
Packit Service 1d0348
\fB\%archive_read_open_filename\fP(),
Packit Service 1d0348
\fB\%archive_read_open_FILE\fP(),
Packit Service 1d0348
\fB\%archive_read_open_fd\fP(),
Packit Service 1d0348
or
Packit Service 1d0348
\fB\%archive_read_open_memory\fP()
Packit Service 1d0348
instead.
Packit Service 1d0348
The library invokes the client-provided functions to obtain
Packit Service 1d0348
raw bytes from the archive.
Packit Service 1d0348
.TP
Packit Service 1d0348
\fB\%archive_read_open_FILE\fP()
Packit Service 1d0348
Like
Packit Service 1d0348
\fB\%archive_read_open\fP(),
Packit Service 1d0348
except that it accepts a
Packit Service 1d0348
\fIFILE *\fP
Packit Service 1d0348
pointer.
Packit Service 1d0348
This function should not be used with tape drives or other devices
Packit Service 1d0348
that require strict I/O blocking.
Packit Service 1d0348
.TP
Packit Service 1d0348
\fB\%archive_read_open_fd\fP()
Packit Service 1d0348
Like
Packit Service 1d0348
\fB\%archive_read_open\fP(),
Packit Service 1d0348
except that it accepts a file descriptor and block size rather than
Packit Service 1d0348
a set of function pointers.
Packit Service 1d0348
Note that the file descriptor will not be automatically closed at
Packit Service 1d0348
end-of-archive.
Packit Service 1d0348
This function is safe for use with tape drives or other blocked devices.
Packit Service 1d0348
.TP
Packit Service 1d0348
\fB\%archive_read_open_file\fP()
Packit Service 1d0348
This is a deprecated synonym for
Packit Service 1d0348
\fB\%archive_read_open_filename\fP().
Packit Service 1d0348
.TP
Packit Service 1d0348
\fB\%archive_read_open_filename\fP()
Packit Service 1d0348
Like
Packit Service 1d0348
\fB\%archive_read_open\fP(),
Packit Service 1d0348
except that it accepts a simple filename and a block size.
Packit Service 1d0348
A NULL filename represents standard input.
Packit Service 1d0348
This function is safe for use with tape drives or other blocked devices.
Packit Service 1d0348
.TP
Packit Service 1d0348
\fB\%archive_read_open_memory\fP()
Packit Service 1d0348
Like
Packit Service 1d0348
\fB\%archive_read_open\fP(),
Packit Service 1d0348
except that it accepts a pointer and size of a block of
Packit Service 1d0348
memory containing the archive data.
Packit Service 1d0348
.RE
Packit Service 1d0348
.PP
Packit Service 1d0348
A complete description of the
Packit Service 1d0348
Tn struct archive
Packit Service 1d0348
and
Packit Service 1d0348
Tn struct archive_entry
Packit Service 1d0348
objects can be found in the overview manual page for
Packit Service 1d0348
\fBlibarchive\fP(3).
Packit Service 1d0348
.SH CLIENT CALLBACKS
Packit Service 1d0348
.ad l
Packit Service 1d0348
The callback functions must match the following prototypes:
Packit Service 1d0348
.RS 5
Packit Service 1d0348
.IP
Packit Service 1d0348
\fItypedef la_ssize_t\fP
Packit Service 1d0348
\fB\%archive_read_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%const\ void\ **buffer\fP)
Packit Service 1d0348
.IP
Packit Service 1d0348
\fItypedef la_int64_t\fP
Packit Service 1d0348
\fB\%archive_skip_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%off_t\ request\fP)
Packit Service 1d0348
.IP
Packit Service 1d0348
\fItypedef int\fP
Packit Service 1d0348
\fB\%archive_open_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP)
Packit Service 1d0348
.IP
Packit Service 1d0348
\fItypedef int\fP
Packit Service 1d0348
\fB\%archive_close_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP)
Packit Service 1d0348
.RE
Packit Service 1d0348
.PP
Packit Service 1d0348
The open callback is invoked by
Packit Service 1d0348
\fB\%archive_open\fP().
Packit Service 1d0348
It should return
Packit Service 1d0348
\fBARCHIVE_OK\fP
Packit Service 1d0348
if the underlying file or data source is successfully
Packit Service 1d0348
opened.
Packit Service 1d0348
If the open fails, it should call
Packit Service 1d0348
\fB\%archive_set_error\fP()
Packit Service 1d0348
to register an error code and message and return
Packit Service 1d0348
\fBARCHIVE_FATAL\fP.
Packit Service 1d0348
.PP
Packit Service 1d0348
The read callback is invoked whenever the library
Packit Service 1d0348
requires raw bytes from the archive.
Packit Service 1d0348
The read callback should read data into a buffer,
Packit Service 1d0348
set the
Packit Service 1d0348
.RS 4
Packit Service 1d0348
const void **buffer
Packit Service 1d0348
.RE
Packit Service 1d0348
argument to point to the available data, and
Packit Service 1d0348
return a count of the number of bytes available.
Packit Service 1d0348
The library will invoke the read callback again
Packit Service 1d0348
only after it has consumed this data.
Packit Service 1d0348
The library imposes no constraints on the size
Packit Service 1d0348
of the data blocks returned.
Packit Service 1d0348
On end-of-file, the read callback should
Packit Service 1d0348
return zero.
Packit Service 1d0348
On error, the read callback should invoke
Packit Service 1d0348
\fB\%archive_set_error\fP()
Packit Service 1d0348
to register an error code and message and
Packit Service 1d0348
return -1.
Packit Service 1d0348
.PP
Packit Service 1d0348
The skip callback is invoked when the
Packit Service 1d0348
library wants to ignore a block of data.
Packit Service 1d0348
The return value is the number of bytes actually
Packit Service 1d0348
skipped, which may differ from the request.
Packit Service 1d0348
If the callback cannot skip data, it should return
Packit Service 1d0348
zero.
Packit Service 1d0348
If the skip callback is not provided (the
Packit Service 1d0348
function pointer is
Packit Service 1d0348
.BR NULL ),
Packit Service 1d0348
the library will invoke the read function
Packit Service 1d0348
instead and simply discard the result.
Packit Service 1d0348
A skip callback can provide significant
Packit Service 1d0348
performance gains when reading uncompressed
Packit Service 1d0348
archives from slow disk drives or other media
Packit Service 1d0348
that can skip quickly.
Packit Service 1d0348
.PP
Packit Service 1d0348
The close callback is invoked by archive_close when
Packit Service 1d0348
the archive processing is complete.
Packit Service 1d0348
The callback should return
Packit Service 1d0348
\fBARCHIVE_OK\fP
Packit Service 1d0348
on success.
Packit Service 1d0348
On failure, the callback should invoke
Packit Service 1d0348
\fB\%archive_set_error\fP()
Packit Service 1d0348
to register an error code and message and
Packit Service 1d0348
return
Packit Service 1d0348
\fBARCHIVE_FATAL.\fP
Packit Service 1d0348
.SH RETURN VALUES
Packit Service 1d0348
.ad l
Packit Service 1d0348
These functions return
Packit Service 1d0348
\fBARCHIVE_OK\fP
Packit Service 1d0348
on success, or
Packit Service 1d0348
\fBARCHIVE_FATAL\fP.
Packit Service 1d0348
.SH ERRORS
Packit Service 1d0348
.ad l
Packit Service 1d0348
Detailed error codes and textual descriptions are available from the
Packit Service 1d0348
\fB\%archive_errno\fP()
Packit Service 1d0348
and
Packit Service 1d0348
\fB\%archive_error_string\fP()
Packit Service 1d0348
functions.
Packit Service 1d0348
.SH SEE ALSO
Packit Service 1d0348
.ad l
Packit Service 1d0348
\fBtar\fP(1),
Packit Service 1d0348
\fBlibarchive\fP(3),
Packit Service 1d0348
\fBarchive_read\fP(3),
Packit Service 1d0348
\fBarchive_read_data\fP(3),
Packit Service 1d0348
\fBarchive_read_filter\fP(3),
Packit Service 1d0348
\fBarchive_read_format\fP(3),
Packit Service 1d0348
\fBarchive_read_set_options\fP(3),
Packit Service 1d0348
\fBarchive_util\fP(3),
Packit Service 1d0348
\fBtar\fP(5)