NAME¶
tar_open, tar_close - access a tar archive via a handle
SYNOPSIS¶
#include <libtar.h>
int tar_open(TAR **t, char *pathname,
tartype_t *type, int oflags, int
mode, int options);
int tar_fdopen(TAR **t, int fd, char
*pathname, tartype_t *type, int
oflags, int mode, int
options);
int tar_fd(TAR *t");"
int tar_close(TAR *t");"
VERSION¶
This man page documents version 1.2 of
libtar.
DESCRIPTION¶
The
tar_open() function opens a tar archive file corresponding to the
filename named by the
pathname argument. The
oflags argument
must be either
O_RDONLY or
O_WRONLY.
The
type argument specifies the access methods for the given file type.
The
tartype_t structure has members named
openfunc,
closefunc,
readfunc() and
writefunc(), which are pointers
to the functions for opening, closing, reading, and writing the file,
respectively. If
type is
NULL, the file type defaults to a
normal file, and the standard
open(),
close(),
read(),
and
write() functions are used.
The
options argument is a logical-or'ed combination of zero or more of
the following:
- TAR_GNU
- Use GNU extensions.
- TAR_VERBOSE
- Send status messages to stdout.
- TAR_NOOVERWRITE
- Do not overwrite pre-existing files.
- TAR_IGNORE_EOT
- Skip all-zero blocks instead of treating them as EOT.
- TAR_IGNORE_MAGIC
- Do not validate the magic field in file headers.
- TAR_CHECK_VERSION
- Check the version field in file headers. (This field is
normally ignored.)
- TAR_IGNORE_CRC
- Do not validate the CRC of file headers.
The
tar_open() function allocates memory for a
TAR handle, and a
pointer to the allocated memory is saved in the location specified by
t. The
TAR handle may be passed to other
libtar calls to
modify the opened tar archive. The
TAR handle maintains all of the
information about the open tar archive, including the archive
type,
options, and
oflags selected when
tar_open() was called.
The
TAR handle generated by
tar_open() contains a file header
structure. When reading a tar archive, this structure contains the last file
header read from the tar archive. When writing a tar archive, this structure
is used as a staging area to construct the next file header to be written to
the archive. In addition, the
TAR handle contains a hash table which is
used to keep track of the device and inode information for each file which
gets written to the tar archive. This is used to detect hard links, so that
files do not need to be duplicated in the archive.
The
tar_fdopen() function is identical to the
tar_open() function,
except that
fd is used as the previously-opened file descriptor for the
tar file instead of calling
type->openfunc() to open the file.
The
tar_fd() function returns the file descriptor associated with the
TAR handle
t.
The
tar_close() function closes the file descriptor associated with the
TAR handle
t and frees all dynamically-allocated memory.
RETURN VALUE¶
The
tar_open(),
tar_fdopen(), and
tar_close() functions
return 0 on success. On failure, they return -1 and set
errno.
The
tar_fd() function returns the file descriptor associated with the
TAR handle
t.
ERRORS¶
tar_open() will fail if:
- EINVAL
- The oflags argument was something other than
O_RDONLY or O_WRONLY.
In addition,
tar_open() and
tar_close() may fail if it cannot
allocate memory using
calloc(), or if the open or close functions for
the specified tar archive
type fail.
SEE ALSO¶
open(2),
close(2),
calloc(3)