Provided by: libtar-dev_1.2.20-7_amd64 bug


       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

       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 appropriate value.

       The tar_extract_dir() function will return 1 if the directory already exists.


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


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