NAME¶
tar_extract_file, tar_extract_regfile, tar_extract_hardlink,
tar_extract_symlink, tar_extract_chardev, tar_extract_blockdev,
tar_extract_dir, tar_extract_fifo, tar_skip_regfile, tar_set_file_perms -
extract files from a tar archive
SYNOPSIS¶
#include <libtar.h>
int tar_extract_file(TAR *t, char *realname);
int tar_extract_regfile(TAR *t, char
*realname);
int tar_skip_regfile(TAR *t);
int tar_extract_dir(TAR *t, char *realname);
int tar_extract_hardlink(TAR *t, char
*realname);
int tar_extract_symlink(TAR *t, char
*realname);
int tar_extract_blockdev(TAR *t, char
*realname);
int tar_extract_chardev(TAR *t, char
*realname);
int tar_extract_fifo(TAR *t, char *realname);
int tar_set_file_perms(TAR *t, char
*realname);
VERSION¶
This man page documents version 1.2 of
libtar.
DESCRIPTION¶
The
tar_extract_file() function acts as a front-end to the other
tar_extract_*() functions. It checks the current tar header associated
with the
TAR handle
t (which must be initialized first by
calling
th_read()) to determine what kind of file the header refers to.
It then calls the appropriate
tar_extract_*() function to extract that
kind of file.
The
tar_skip_regfile() function skips over the file content blocks and
positions the file pointer at the expected location of the next tar header
block.
The
tar_set_file_perms() function sets the attributes of the extracted
file to match the encoded values. This includes the file's modification time,
mode, owner, and group. This function is automatically called by
tar_extract_file(), but applications which call the other
tar_extract_*() functions directly will need to call
tar_set_file_perms() manually if this behavior is desired.
RETURN VALUES¶
On successful completion, the functions documented here will return 0. On
failure, they will return -1 and set
errno to an appropriate value.
The
tar_extract_dir() function will return 1 if the directory already
exists.
ERRORS¶
The
tar_extract_file() function will fail if:
- EEXIST
- If the O_NOOVERWRITE flag is set and the file
already exists.
The
tar_extract_*() functions will fail if:
- EINVAL
- An entry could not be added to the internal file hash.
- EINVAL
- Less than T_BLOCKSIZE bytes were read from the tar
archive.
- EINVAL
- The current file header associated with t refers to
a kind of file other than the one which the called function knows
about.
They may also fail if any of the following functions fail:
mkdir(),
write(),
link(),
symlink(),
mknod(),
mkfifo(),
utime(),
chown(),
lchown(),
chmod(), or
lstat().
SEE ALSO¶
mkdir(2),
write(2),
link(2),
symlink(2),
mknod(2),
mkfifo(2),
utime(2),
chown(2),
lchown(2),
chmod(2),
lstat(2)