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.
On successful completion, the functions documented here will
return 0. On failure, they will return -1 and set errno to an
The tar_extract_dir() function will return 1 if the directory
The tar_extract_file() function will fail if:
If the O_NOOVERWRITE flag is set and the file already exists.
The tar_extract_*() functions will fail if:
An entry could not be added to the internal file hash.
Less than T_BLOCKSIZE bytes were read from the tar archive.
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().