Blame doc/html/archive_write_open.3.html

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348
"http://www.w3.org/TR/html4/loose.dtd">
Packit Service 1d0348
<html>
Packit Service 1d0348
<head>
Packit Service 1d0348
<meta name="generator" content="groff -Thtml, see www.gnu.org">
Packit Service 1d0348
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
Packit Service 1d0348
<meta name="Content-Style" content="text/css">
Packit Service 1d0348
<style type="text/css">
Packit Service 1d0348
       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
Packit Service 1d0348
       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
Packit Service 1d0348
       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
Packit Service 1d0348
       h1      { text-align: center }
Packit Service 1d0348
</style>
Packit Service 1d0348
<title></title>
Packit Service 1d0348
</head>
Packit Service 1d0348
<body>
Packit Service 1d0348
Packit Service 1d0348

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

ARCHIVE_WRITE_OPEN(3) BSD Library Functions Manual

Packit Service 1d0348
ARCHIVE_WRITE_OPEN(3)

Packit Service 1d0348
Packit Service 1d0348

NAME

Packit Service 1d0348
Packit Service 1d0348

archive_write_open,

Packit Service 1d0348
archive_write_open_fd,
Packit Service 1d0348
archive_write_open_FILE,
Packit Service 1d0348
archive_write_open_filename,
Packit Service 1d0348
archive_write_open_memory — functions for
Packit Service 1d0348
creating archives

Packit Service 1d0348
Packit Service 1d0348

LIBRARY

Packit Service 1d0348
Packit Service 1d0348

Streaming Archive Library

Packit Service 1d0348
(libarchive, -larchive)

Packit Service 1d0348
Packit Service 1d0348

SYNOPSIS

Packit Service 1d0348
Packit Service 1d0348

#include

Packit Service 1d0348
<archive.h>

Packit Service 1d0348
Packit Service 1d0348

int

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open(struct archive *,

Packit Service 1d0348
void *client_data,
Packit Service 1d0348
archive_open_callback *,
Packit Service 1d0348
archive_write_callback *,
Packit Service 1d0348
archive_close_callback *);

Packit Service 1d0348
Packit Service 1d0348

int

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_fd(struct archive *,

Packit Service 1d0348
int fd);

Packit Service 1d0348
Packit Service 1d0348

int

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_FILE(struct archive *,

Packit Service 1d0348
FILE *file);

Packit Service 1d0348
Packit Service 1d0348

int

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_filename(struct archive *,

Packit Service 1d0348
const char *filename);

Packit Service 1d0348
Packit Service 1d0348

int

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_memory(struct archive *,

Packit Service 1d0348
void *buffer, size_t bufferSize,
Packit Service 1d0348
size_t *outUsed);

Packit Service 1d0348
Packit Service 1d0348

DESCRIPTION

Packit Service 1d0348
archive_write_open()

Packit Service 1d0348
Packit Service 1d0348

Freeze the settings, open the

Packit Service 1d0348
archive, and prepare for writing entries. This is the most
Packit Service 1d0348
generic form of this function, which accepts pointers to
Packit Service 1d0348
three callback functions which will be invoked by the
Packit Service 1d0348
compression layer to write the constructed archive. This
Packit Service 1d0348
does not alter the default archive padding.

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_fd()

Packit Service 1d0348
Packit Service 1d0348

A convenience form of

Packit Service 1d0348
archive_write_open() that accepts a file descriptor.
Packit Service 1d0348
The archive_write_open_fd() function is safe for use
Packit Service 1d0348
with tape drives or other block-oriented devices.

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_FILE()

Packit Service 1d0348
Packit Service 1d0348

A convenience form of

Packit Service 1d0348
archive_write_open() that accepts a FILE *
Packit Service 1d0348
pointer. Note that archive_write_open_FILE() is not
Packit Service 1d0348
safe for writing to tape drives or other devices that
Packit Service 1d0348
require correct blocking.

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_file()

Packit Service 1d0348
Packit Service 1d0348

A deprecated synonym for

Packit Service 1d0348
archive_write_open_filename().

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_filename()

Packit Service 1d0348
Packit Service 1d0348

A convenience form of

Packit Service 1d0348
archive_write_open() that accepts a filename. A NULL
Packit Service 1d0348
argument indicates that the output should be written to
Packit Service 1d0348
standard output; an argument of
Packit Service 1d0348
’’-’’ will open a file with that
Packit Service 1d0348
name. If you have not invoked
Packit Service 1d0348
archive_write_set_bytes_in_last_block(), then
Packit Service 1d0348
archive_write_open_filename() will adjust the
Packit Service 1d0348
last-block padding depending on the file: it will enable
Packit Service 1d0348
padding when writing to standard output or to a character or
Packit Service 1d0348
block device node, it will disable padding otherwise. You
Packit Service 1d0348
can override this by manually invoking
Packit Service 1d0348
archive_write_set_bytes_in_last_block() before
Packit Service 1d0348
calling archive_write_open(). The
Packit Service 1d0348
archive_write_open_filename() function is safe for
Packit Service 1d0348
use with tape drives or other block-oriented devices.

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_open_memory()

Packit Service 1d0348
Packit Service 1d0348

A convenience form of

Packit Service 1d0348
archive_write_open() that accepts a pointer to a
Packit Service 1d0348
block of memory that will receive the archive. The final
Packit Service 1d0348
size_t * argument points to a variable that will be
Packit Service 1d0348
updated after each write to reflect how much of the buffer
Packit Service 1d0348
is currently in use. You should be careful to ensure that
Packit Service 1d0348
this variable remains allocated until after the archive is
Packit Service 1d0348
closed. This function will disable padding unless you have
Packit Service 1d0348
specifically set the block size.

Packit Service 1d0348
Packit Service 1d0348

More information about the

Packit Service 1d0348
struct archive object and the overall design of the
Packit Service 1d0348
library can be found in the libarchive(3) overview.

Packit Service 1d0348
Packit Service 1d0348

Note that the

Packit Service 1d0348
convenience forms above vary in how they block the output.
Packit Service 1d0348
See archive_write_blocksize(3) if you need to control the
Packit Service 1d0348
block size used for writes or the end-of-file padding
Packit Service 1d0348
behavior.

Packit Service 1d0348
Packit Service 1d0348

CLIENT CALLBACKS

Packit Service 1d0348
Packit Service 1d0348

To use this library, you will

Packit Service 1d0348
need to define and register callback functions that will be
Packit Service 1d0348
invoked to write data to the resulting archive. These
Packit Service 1d0348
functions are registered by calling
Packit Service 1d0348
archive_write_open():

Packit Service 1d0348
Packit Service 1d0348

typedef

Packit Service 1d0348
int archive_open_callback(struct archive
Packit Service 1d0348
*, void *client_data)

Packit Service 1d0348
Packit Service 1d0348

The open

Packit Service 1d0348
callback is invoked by archive_write_open(). It
Packit Service 1d0348
should return ARCHIVE_OK if the underlying file or
Packit Service 1d0348
data source is successfully opened. If the open fails, it
Packit Service 1d0348
should call archive_set_error() to register an error
Packit Service 1d0348
code and message and return ARCHIVE_FATAL.

Packit Service 1d0348
Packit Service 1d0348

typedef

Packit Service 1d0348
la_ssize_t

Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348

archive_write_callback(struct archive *,

Packit Service 1d0348
void *client_data,
Packit Service 1d0348
const void *buffer,
Packit Service 1d0348
size_t length)

Packit Service 1d0348
Packit Service 1d0348

The write

Packit Service 1d0348
callback is invoked whenever the library needs to write raw
Packit Service 1d0348
bytes to the archive. For correct blocking, each call to the
Packit Service 1d0348
write callback function should translate into a single
Packit Service 1d0348
write(2) system call. This is especially critical when
Packit Service 1d0348
writing archives to tape drives. On success, the write
Packit Service 1d0348
callback should return the number of bytes actually written.
Packit Service 1d0348
On error, the callback should invoke
Packit Service 1d0348
archive_set_error() to register an error code and
Packit Service 1d0348
message and return -1.

Packit Service 1d0348
Packit Service 1d0348

typedef

Packit Service 1d0348
int archive_close_callback(struct archive
Packit Service 1d0348
*, void *client_data)

Packit Service 1d0348
Packit Service 1d0348

The close

Packit Service 1d0348
callback is invoked by archive_close when the archive
Packit Service 1d0348
processing is complete. The callback should return
Packit Service 1d0348
ARCHIVE_OK on success. On failure, the callback
Packit Service 1d0348
should invoke archive_set_error() to register an
Packit Service 1d0348
error code and message and return ARCHIVE_FATAL.

Packit Service 1d0348
Packit Service 1d0348

Note that if the

Packit Service 1d0348
client-provided write callback function returns a non-zero
Packit Service 1d0348
value, that error will be propagated back to the caller
Packit Service 1d0348
through whatever API function resulted in that call, which
Packit Service 1d0348
may include archive_write_header(),
Packit Service 1d0348
archive_write_data(), archive_write_close(),
Packit Service 1d0348
archive_write_finish(), or
Packit Service 1d0348
archive_write_free(). The client callback can call
Packit Service 1d0348
archive_set_error() to provide values that can then
Packit Service 1d0348
be retrieved by archive_errno() and
Packit Service 1d0348
archive_error_string().

Packit Service 1d0348
Packit Service 1d0348

RETURN VALUES

Packit Service 1d0348
Packit Service 1d0348

These functions return

Packit Service 1d0348
ARCHIVE_OK on success, or ARCHIVE_FATAL.

Packit Service 1d0348
Packit Service 1d0348

ERRORS

Packit Service 1d0348
Packit Service 1d0348

Detailed error codes and textual

Packit Service 1d0348
descriptions are available from the archive_errno()
Packit Service 1d0348
and archive_error_string() functions.

Packit Service 1d0348
Packit Service 1d0348

SEE ALSO

Packit Service 1d0348
Packit Service 1d0348

tar(1), libarchive(3),

Packit Service 1d0348
archive_write(3), archive_write_blocksize(3),
Packit Service 1d0348
archive_write_filter(3), archive_write_format(3),
Packit Service 1d0348
archive_write_new(3), archive_write_set_options(3), cpio(5),
Packit Service 1d0348
mtree(5), tar(5)

Packit Service 1d0348
Packit Service 1d0348

BSD

Packit Service 1d0348
February 2, 2012 BSD

Packit Service 1d0348

Packit Service 1d0348
</body>
Packit Service 1d0348
</html>