tar_extract_file man page

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


#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);


This man page documents version 1.2 of libtar.


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.


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().

See Also

mkdir(2), write(2), link(2), symlink(2), mknod(2), mkfifo(2), utime(2), chown(2), lchown(2), chmod(2), lstat(2)

Referenced By


tar_extract_blockdev(3), tar_extract_chardev(3), tar_extract_dir(3), tar_extract_fifo(3), tar_extract_hardlink(3), tar_extract_regfile(3), tar_extract_symlink(3), tar_set_file_perms(3) and tar_skip_regfile(3) are aliases of tar_extract_file(3).

Jan 2001 University of Illinois C Library Calls