Browse Source

Update --info-scripts documentation

Sergey Poznyakoff 19 years ago
parent
commit
3f166ce0f5
1 changed files with 33 additions and 33 deletions
  1. 33 33
      doc/tar.texi

+ 33 - 33
doc/tar.texi

@@ -2826,6 +2826,12 @@ from the archive.  @xref{Recursive Unlink}.
 Directs @command{tar} to remove the source file from the file system after
 Directs @command{tar} to remove the source file from the file system after
 appending it to an archive.  @xref{remove files}.
 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}
 @item --rmt-command=@var{cmd}
 
 
 Notifies @command{tar} that it should use @var{cmd} instead of
 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
 second tape when prompted, so @command{tar} can restore both halves of the
 file.)
 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
 When prompting for a new tape, @command{tar} accepts any of the following
 responses:
 responses:
@@ -8634,7 +8639,8 @@ Request @command{tar} to exit immediately.
 @item n @var{file name}
 @item n @var{file name}
 Request @command{tar} to write the next volume on the file @var{file name}.
 Request @command{tar} to write the next volume on the file @var{file name}.
 @item !
 @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
 @item y
 Request @command{tar} to begin writing the next volume.
 Request @command{tar} to begin writing the next volume.
 @end table
 @end table
@@ -8676,9 +8682,12 @@ Format of the archive being processed. @xref{Formats}, for a complete
 list of archive format names. 
 list of archive format names. 
 @end table
 @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
 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
 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
 per @value{ref-label}, it @emph{only} affects the number used in
 the prompt.)
 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
 @smallexample
 @group
 @group
+#! /bin/sh
 echo Preparing volume $TAR_VOLUME of $TAR_ARCHIVE.
 echo Preparing volume $TAR_VOLUME of $TAR_ARCHIVE.
 
 
+name=`expr $TAR_ARCHIVE : '\(.*\)-.*'`
 case $TAR_SUBCOMMAND in
 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
 *)        exit 1
 esac
 esac
+
+echo $@{name:-$TAR_ARCHIVE@}-$TAR_VOLUME >&3
 @end group
 @end group
 @end smallexample
 @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}
 Each volume of a multi-volume archive is an independent @command{tar}
 archive, complete in itself.  For example, you can list or extract any
 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
 volume alone; just don't specify @value{op-multi-volume}.  However, if one