bionic (3) tar.3tcl.gz

Provided by: tcllib_1.19-dfsg-2_all bug

NAME

       tar - Tar file creation, extraction & manipulation

SYNOPSIS

       package require Tcl  8.4

       package require tar  ?0.11?

       ::tar::contents tarball ?-chan?

       ::tar::stat tarball ?file? ?-chan?

       ::tar::untar tarball args

       ::tar::get tarball fileName ?-chan?

       ::tar::create tarball files args

       ::tar::add tarball files args

       ::tar::remove tarball files

________________________________________________________________________________________________________________

DESCRIPTION

       Note:  Starting  with  version  0.8 the tar reader commands (contents, stats, get, untar) support the GNU
       LongName extension (header type 'L') for large paths.

       ::tar::contents tarball ?-chan?
              Returns a list of the files contained in tarball. The order is not sorted and depends on the order
              files were stored in the archive.

              If  the option -chan is present tarball is interpreted as an open channel.  It is assumed that the
              channel was opened for reading, and configured for binary input.  The command will not  close  the
              channel.

       ::tar::stat tarball ?file? ?-chan?
              Returns  a nested dict containing information on the named ?file? in tarball, or all files if none
              is specified. The top level are pairs of filename and info. The info is a dict with the keys "mode
              uid gid size mtime type linkname uname gname devmajor devminor"

              % ::tar::stat tarball.tar
              foo.jpg {mode 0644 uid 1000 gid 0 size 7580 mtime 811903867 type file linkname {} uname user gname wheel devmajor 0 devminor 0}

       If the option -chan is present tarball is interpreted as an open channel.  It is assumed that the channel
       was opened for reading, and configured for binary input.  The command will not close the channel.

       ::tar::untar tarball args
              Extracts tarball. -file and -glob limit the extraction to files which  exactly  match  or  pattern
              match  the  given  argument.  No  error  is  thrown if no files match. Returns a list of filenames
              extracted and the file size. The size will be null for non regular files. Leading path  seperators
              are stripped so paths will always be relative.

              -dir dirName
                     Directory to extract to. Uses pwd if none is specified

              -file fileName
                     Only  extract the file with this name. The name is matched against the complete path stored
                     in the archive including directories.

              -glob pattern
                     Only extract files patching this glob style pattern. The pattern  is  matched  against  the
                     complete path stored in the archive.

              -nooverwrite
                     Dont overwrite files that already exist

              -nomtime
                     Leave  the file modification time as the current time instead of setting it to the value in
                     the archive.

              -noperms
                     In Unix, leave the file permissions as the current umask instead of  setting  them  to  the
                     values in the archive.

              -chan  If  this  option  is present tarball is interpreted as an open channel.  It is assumed that
                     the channel was opened for reading, and configured for binary input.  The command will  not
                     close the channel.

              % foreach {file size} [::tar::untar tarball.tar -glob *.jpg] {
              puts "Extracted $file ($size bytes)"
              }

       ::tar::get tarball fileName ?-chan?
              Returns the contents of fileName from the tarball.

              % set readme [::tar::get tarball.tar doc/README] {
              % puts $readme
              }

       If the option -chan is present tarball is interpreted as an open channel.  It is assumed that the channel
       was opened for reading, and configured for binary input.  The command will not close the channel.

       An error is thrown when fileName is not found in the tar archive.

       ::tar::create tarball files args
              Creates a new tar file containing the files. files must be specified as a single argument which is
              a proper list of filenames.

              -dereference
                     Normally  create  will store links as an actual link pointing at a file that may or may not
                     exist in the archive. Specifying this option will cause the actual file  point  to  by  the
                     link to be stored instead.

              -chan  If  this  option  is present tarball is interpreted as an open channel.  It is assumed that
                     the channel was opened for writing, and configured for binary output.  The command will not
                     close the channel.

              % ::tar::create new.tar [glob -nocomplain file*]
              % ::tar::contents new.tar
              file1 file2 file3

       ::tar::add tarball files args
              Appends  files  to  the  end of the existing tarball. files must be specified as a single argument
              which is a proper list of filenames.

              -dereference
                     Normally add will store links as an actual link pointing at a file  that  may  or  may  not
                     exist  in  the  archive.  Specifying this option will cause the actual file point to by the
                     link to be stored instead.

              -prefix string
                     Normally add will store files under exactly the name specified as  argument.  Specifying  a
                     ?-prefix? causes the string to be prepended to every name.

              -quick The  only  sure  way to find the position in the tarball where new files can be added is to
                     read it from start, but if tarball was written with a "blocksize" of  1  (as  this  package
                     does)  then  one can alternatively find this position by seeking from the end. The ?-quick?
                     option tells add to do the latter.

       ::tar::remove tarball files
              Removes files from the tarball. No error will result if the file does not exist  in  the  tarball.
              Directory write permission and free disk space equivalent to at least the size of the tarball will
              be needed.

              % ::tar::remove new.tar {file2 file3}
              % ::tar::contents new.tar
              file3

BUGS, IDEAS, FEEDBACK

       This document, and the package it describes, will undoubtedly contain bugs and  other  problems.   Please
       report  such  in  the category tar of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist].  Please
       also report any ideas for enhancements you may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments  can  be  made  by
       going  to the Edit form of the ticket immediately after its creation, and then using the left-most button
       in the secondary navigation bar.

KEYWORDS

       archive, tape archive, tar

CATEGORY

       File formats