Man Linux: Main Page and Category List

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)