]> Dogcows Code - chaz/tar/commitdiff
Update --info-scripts documentation
authorSergey Poznyakoff <gray@gnu.org.ua>
Tue, 6 Dec 2005 23:13:19 +0000 (23:13 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Tue, 6 Dec 2005 23:13:19 +0000 (23:13 +0000)
doc/tar.texi

index 605c0ef93b86a91baec4d27a652093c4a7c64364..8d09671dc294ed96bea75330c880d4ead96b2105 100644 (file)
@@ -2826,6 +2826,12 @@ from the archive.  @xref{Recursive Unlink}.
 Directs @command{tar} to remove the source file from the file system after
 appending it to an archive.  @xref{remove files}.
 
+@item --restrict
+
+Disable use of some potentially harmful @command{tar} options.
+Currently this option disables shell invocaton from multi-volume menu
+(@pxref{Using Multiple Tapes}).
+
 @item --rmt-command=@var{cmd}
 
 Notifies @command{tar} that it should use @var{cmd} instead of
@@ -8619,9 +8625,8 @@ the first archive, using @value{op-multi-volume}, and then put in the
 second tape when prompted, so @command{tar} can restore both halves of the
 file.)
 
-@GNUTAR{} multi-volume archives do not use a truly
-portable format.  You need @GNUTAR{} at both end to
-process them properly.
+@GNUTAR{} multi-volume archives do not use a truly portable format.
+You need @GNUTAR{} at both ends to process them properly.
 
 When prompting for a new tape, @command{tar} accepts any of the following
 responses:
@@ -8634,7 +8639,8 @@ Request @command{tar} to exit immediately.
 @item n @var{file name}
 Request @command{tar} to write the next volume on the file @var{file name}.
 @item !
-Request @command{tar} to run a subshell.
+Request @command{tar} to run a subshell.  This option can be disabled
+by giving @option{--restrict} command line option to @command{tar}.
 @item y
 Request @command{tar} to begin writing the next volume.
 @end table
@@ -8676,9 +8682,12 @@ Format of the archive being processed. @xref{Formats}, for a complete
 list of archive format names. 
 @end table
 
-If the program fails, @command{tar} exits; otherwise, it begins
-writing the next volume.  The behavior of the @samp{n} response to the
-normal tape-change prompt is not available if you use @value{op-info-script}. 
+The info script can instruct @command{tar} to use new archive name,
+by writing in to file descriptor 3 (see below for an
+example).
+
+If the info script fails, @command{tar} exits; otherwise, it begins
+writing the next volume.  
 
 The method @command{tar} uses to detect end of tape is not perfect, and
 fails on some operating systems or on some devices.  You can use the
@@ -8701,43 +8710,34 @@ finished, it will rewrite the file with the now-current volume number.
 per @value{ref-label}, it @emph{only} affects the number used in
 the prompt.)
 
-If you want @command{tar} to cycle through a series of tape drives, then
-you can use the @samp{n} response to the tape-change prompt.  This
-method can be used with info scripts as well, although it is not as
-straight-forward as using @samp{n} response.  For example, the
-following script cycles through a series of archive files named
-@file{archive-@var{vol}}, where @var{vol} is the archive volume
-number:
+If you want @command{tar} to cycle through a series of files or tape
+drives, there are three approaches to choose from.  First of all, you
+can give @command{tar} multiple @value{op-file} options. In this case
+the specified files will be used, in sequence, as the successive
+volumes of the archive.  Only when the first one in the sequence needs
+to be used again will @command{tar} prompt for a tape change (or run
+the info script).  Secondly, you can use the @samp{n} response to the
+tape-change prompt, and, finally, you can use an info script, that
+writes new archive name to file descriptor.  The following example
+illustrates this approach:
 
 @smallexample
 @group
+#! /bin/sh
 echo Preparing volume $TAR_VOLUME of $TAR_ARCHIVE.
 
+name=`expr $TAR_ARCHIVE : '\(.*\)-.*'`
 case $TAR_SUBCOMMAND in
--c)       mv $TAR_ARCHIVE $@{TAR_ARCHIVE@}$(($TAR_VOLUME - 1));;
--d|-x|-t) test -r $@{TAR_ARCHIVE@}$(($TAR_VOLUME)) || exit 1
-         ln -sf $@{TAR_ARCHIVE@}$(($TAR_VOLUME)) $TAR_ARCHIVE;;
+-c)       ;;
+-d|-x|-t) test -r $@{name:-$TAR_ARCHIVE@}-$TAR_VOLUME || exit 1
+         ;;
 *)        exit 1
 esac
+
+echo $@{name:-$TAR_ARCHIVE@}-$TAR_VOLUME >&3
 @end group
 @end smallexample
 
-@noindent
-The same approach can be used to cycle through a series of tape drives.
-
-Another possibility is to give @command{tar} multiple @value{op-file}
-options. In this case the specified files will be used, in sequence,
-as the successive volumes of the archive.  Only when the first one in
-the sequence needs to be used again will @command{tar} prompt for a
-tape change (or run the info script).
-
-Multi-volume archives
-
-With @value{op-multi-volume}, @command{tar} will not abort when it cannot
-read or write any more data.  Instead, it will ask you to prepare a new
-volume.  If the archive is on a magnetic tape, you should change tapes
-now; if the archive is on a floppy disk, you should change disks, etc.
-
 Each volume of a multi-volume archive is an independent @command{tar}
 archive, complete in itself.  For example, you can list or extract any
 volume alone; just don't specify @value{op-multi-volume}.  However, if one
This page took 0.04351 seconds and 4 git commands to generate.