]> Dogcows Code - chaz/tar/blobdiff - doc/tar.texi
Update
[chaz/tar] / doc / tar.texi
index 2e3b9a4fd0f41c60c34456b774da282beb91b659..332269a76d00bdde148665ada63dfbf07a511622 100644 (file)
@@ -28,16 +28,15 @@ This manual is for @acronym{GNU} @command{tar} (version
 from archives.
 
 Copyright @copyright{} 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-2003, 2004 Free Software Foundation, Inc.
+2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being "GNU General Public License", with the
-Front-Cover Texts being ``A GNU Manual,'' and with the Back-Cover Texts
-as in (a) below.  A copy of the license is included in the section
-entitled "GNU Free Documentation License".
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below.  A copy of the license
+is included in the section entitled "GNU Free Documentation License".
 
 (a) The FSF's Back-Cover Text is: ``You are free to copy and modify
 this GNU Manual.  Buying copies from GNU Press supports the FSF in
@@ -196,6 +195,7 @@ Advanced @GNUTAR{} Operations
 * concatenate::
 * delete::
 * compare::
+* quoting styles::
 
 How to Add Files to Existing Archives: @option{--append}
 
@@ -261,7 +261,7 @@ Choosing Files and Names for @command{tar}
 * Selecting Archive Members::
 * files::                       Reading Names from a File
 * exclude::                     Excluding Some Files
-* Wildcards::
+* Wildcards::                   Wildcards Patterns and Matching
 * after::                       Operating Only on New Files
 * recurse::                     Descending into Directories
 * one::                         Crossing File System Boundaries
@@ -272,7 +272,6 @@ Reading Names from a File
 
 Excluding Some Files
 
-* controlling pattern-matching with exclude::
 * problems with exclude::
 
 Crossing File System Boundaries
@@ -476,11 +475,10 @@ magnetic tape.  The name @command{tar} comes from this use; it stands for
 direct its output to available devices, files, or other programs (using
 pipes).  @command{tar} may even access remote devices or files (as archives).
 
-@FIXME{the following table entries need a bit of work..}
-
 You can use @command{tar} archives in many ways.  We want to stress a few
 of them: storage, backup, and transportation.
 
+@FIXME{the following table entries need a bit of work..}
 @table @asis
 @item Storage
 Often, @command{tar} archives are used to store related files for
@@ -819,7 +817,7 @@ standard output or some physical tape drive attached to your machine
 --show-defaults}, @pxref{defaults}).  If there is no tape drive
 attached, or the default is not meaningful, then @command{tar} will
 print an error message.  The error message might look roughly like one
-of the following: 
+of the following:
 
 @smallexample
 tar: can't open /dev/rmt8 : No such device or address
@@ -1217,13 +1215,11 @@ directory @file{.} to the archive, it notices that the file
 it.  (It makes no sense to put an archive into itself.)  @GNUTAR{}
 will continue in this case, and create the archive
 normally, except for the exclusion of that one file.  (@emph{Please
-note:} Other versions of @command{tar} are not so clever; they will
-enter an infinite loop when this happens, so you should not depend on
-this behavior unless you are certain you are running @GNUTAR{}.)
-  @FIXME{bob doesn't like this sentence, since he does
-it all the time, and we've been doing it in the editing passes for
-this manual: In general, make sure that the archive is not inside a
-directory being dumped.}
+note:} Other implementations of @command{tar} may not be so clever;
+they will enter an infinite loop when this happens, so you should not
+depend on this behavior unless you are certain you are running
+@GNUTAR{}.  In general, it is wise to always place the archive outside
+of the directory being dumped.
 
 @node list
 @section How to List Archives
@@ -1249,9 +1245,6 @@ folk
 jazz
 @end smallexample
 
-@FIXME{we hope this will change.  if it doesn't, need to show the
-creation of bfiles somewhere above!!! : }
-
 @noindent
 The archive @file{bfiles.tar} would list as follows:
 
@@ -1262,17 +1255,18 @@ baboon
 @end smallexample
 
 @noindent
-Be sure to use a @option{--file=@var{archive-name}} (@option{-f @var{archive-name}}) option just as with @option{--create} (@option{-c})
-to specify the name of the archive.
+Be sure to use a @option{--file=@var{archive-name}} (@option{-f
+@var{archive-name}}) option just as with @option{--create}
+(@option{-c}) to specify the name of the archive.
 
 @opindex list, using with @option{--verbose}
 @opindex verbose, using with @option{--list}
-If you use the @option{--verbose} (@option{-v}) option with @option{--list}, then
-@command{tar} will print out a listing reminiscent of @w{@samp{ls -l}},
-showing owner, file size, and so forth.
+If you use the @option{--verbose} (@option{-v}) option with
+@option{--list}, then @command{tar} will print out a listing
+reminiscent of @w{@samp{ls -l}}, showing owner, file size, and so forth.
 
-If you had used @option{--verbose} (@option{-v}) mode, the example above would look
-like:
+If you had used @option{--verbose} (@option{-v}) mode, the example
+above would look like:
 
 @smallexample
 $ @kbd{tar --list --verbose --file=collection.tar folk}
@@ -1322,25 +1316,29 @@ using @samp{list}.  In this case, @command{tar} will only list the
 names of members you identify.  For example, @w{@kbd{tar --list
 --file=afiles.tar apple}} would only print @file{apple}.
 
-@FIXME{we hope the relevant aspects of this will change:}Because
-@command{tar} preserves paths, file names must be specified as they appear
-in the archive (ie., relative to the directory from which the archive
-was created).  Therefore, it is essential when specifying member names
-to @command{tar} that you give the exact member names.  For example,
-@w{@kbd{tar --list --file=bfiles birds}} would produce an error message
-something like @samp{tar: birds: Not found in archive}, because there is
-no member named @file{birds}, only one named @file{./birds}.  While the
-names @file{birds} and @file{./birds} name the same file, @emph{member}
-names are compared using a simplistic name comparison, in which an exact
-match is necessary.  @xref{absolute}.
-
-However, @w{@kbd{tar --list --file=collection.tar folk}} would respond
-with @file{folk}, because @file{folk} is in the archive file
-@file{collection.tar}.  If you are not sure of the exact file name, try
-listing all the files in the archive and searching for the one you
-expect to find; remember that if you use @option{--list} with no file
-names as arguments, @command{tar} will print the names of all the members
-stored in the specified archive.
+Because @command{tar} preserves paths, file names must be specified as
+they appear in the archive (ie., relative to the directory from which
+the archive was created).  Therefore, it is essential when specifying
+member names to @command{tar} that you give the exact member names.
+For example, @w{@kbd{tar --list --file=bfiles.tar birds}} would produce an
+error message something like @samp{tar: birds: Not found in archive},
+because there is no member named @file{birds}, only one named
+@file{./birds}.  While the names @file{birds} and @file{./birds} name
+the same file, @emph{member} names by default are compared verbatim.
+
+However, @w{@kbd{tar --list --file=bfiles.tar baboon}} would respond
+with @file{baboon}, because this exact member name is in the archive file
+@file{bfiles.tar}.  If you are not sure of the exact file name,
+use @dfn{globbing patterns}, for example:
+
+@smallexample
+$ @kbd{tar --list --file=bfiles.tar --wildcards '*b*'}
+@end smallexample
+
+@noindent
+will list all members whose name contains @samp{b}.  @xref{Wildcards},
+for a detailed discussion of globbing patterns and related
+@command{tar} command line options.
 
 @menu
 * list dir::
@@ -1390,7 +1388,7 @@ from an archive, use the @option{--extract} (@option{--get} or
 @option{-x}) operation.  As with @option{--create}, specify the name
 of the archive with @option{--file} (@option{-f}) option. Extracting
 an archive does not modify the archive in any way; you can extract it
-multiple times if you want or need to. 
+multiple times if you want or need to.
 
 Using @option{--extract}, you can extract an entire archive, or specific
 files.  The files can be directories containing other files, or not.  As
@@ -1428,11 +1426,12 @@ produces this:
 @subsection Extracting Specific Files
 
 To extract specific archive members, give their exact member names as
-arguments, as printed by @option{--list} (@option{-t}).  If you had mistakenly deleted
-one of the files you had placed in the archive @file{collection.tar}
-earlier (say, @file{blues}), you can extract it from the archive without
-changing the archive's structure.  Its contents will be identical to the
-original file @file{blues} that you deleted.
+arguments, as printed by @option{--list} (@option{-t}).  If you had
+mistakenly deleted one of the files you had placed in the archive
+@file{collection.tar} earlier (say, @file{blues}), you can extract it
+from the archive without changing the archive's structure.  Its
+contents will be identical to the original file @file{blues} that you
+deleted. 
 
 First, make sure you are in the @file{practice} directory, and list the
 files in the directory.  Now, delete the file, @samp{blues}, and list
@@ -1447,13 +1446,14 @@ $ @kbd{tar --extract --file=collection.tar blues}
 
 @noindent
 If you list the files in the directory again, you will see that the file
-@file{blues} has been restored, with its original permissions, data modification
-times, and owner.@FIXME{This is only accidentally true, but not in
-general.  In most cases, one has to be root for restoring the owner, and
-use a special option for restoring permissions.  Here, it just happens
-that the restoring user is also the owner of the archived members, and
-that the current @code{umask} is compatible with original permissions.}
-(These parameters will be identical to those which
+@file{blues} has been restored, with its original permissions, data
+modification times, and owner.@footnote{This is only accidentally
+true, but not in general.  Whereas modification times are always
+restored, in most cases, one has to be root for restoring the owner,
+and use a special option for restoring permissions.  Here, it just
+happens that the restoring user is also the owner of the archived
+members, and that the current @code{umask} is compatible with original
+permissions.}  (These parameters will be identical to those which
 the file had when you originally placed it in the archive; any changes
 you may have made before deleting the file from the file system,
 however, will @emph{not} have been made to the archive member.)  The
@@ -1461,20 +1461,34 @@ archive file, @samp{collection.tar}, is the same as it was before you
 extracted @samp{blues}.  You can confirm this by running @command{tar} with
 @option{--list} (@option{-t}).
 
-@FIXME{we hope this will change:}Remember that as with other operations,
-specifying the exact member name is important.  @w{@kbd{tar --extract
---file=bfiles.tar birds}} will fail, because there is no member named
-@file{birds}.  To extract the member named @file{./birds}, you must
-specify @w{@kbd{tar --extract --file=bfiles.tar ./birds}}.  To find the
-exact member names of the members of an archive, use @option{--list} (@option{-t})
-(@pxref{list}).
+Remember that as with other operations, specifying the exact member
+name is important.  @w{@kbd{tar --extract --file=bfiles.tar birds}}
+will fail, because there is no member named @file{birds}.  To extract
+the member named @file{./birds}, you must specify @w{@kbd{tar
+--extract --file=bfiles.tar ./birds}}.  If you don't remember the
+exact member names, use @option{--list} (@option{-t}) option
+(@pxref{list}).  You can also extract those members that match a
+specific @dfn{globbing pattern}.  For example, to extract from
+@file{bfiles.tar} all files that begin with @samp{b}, no matter their
+directory prefix, you could type:
+
+@smallexample
+$ @kbd{tar -x -f bfiles.tar --wildcards --no-anchored 'b*'}
+@end smallexample
+
+@noindent
+Here, @option{--wildcards} instructs @command{tar} to treat
+command line arguments as globbing patterns and @option{--no-anchored}
+informs it that the patterns apply to member names after any @samp{/}
+delimiter.  The use of globbing patterns is discussed in detail in
+@xref{Wildcards}. 
 
 You can extract a file to standard output by combining the above options
 with the @option{--to-stdout} (@option{-O}) option (@pxref{Writing to Standard
 Output}).
 
 If you give the @option{--verbose} option, then @option{--extract}
-will print the names of the archive members as it extracts them. 
+will print the names of the archive members as it extracts them.
 
 @node extract dir
 @subsection Extracting Files that are Directories
@@ -1529,9 +1543,6 @@ file names of each of the files by archiving the @file{practice}
 directory as @file{practice}, you must give @file{practice} as part
 of the file names when you extract those files from the archive.
 
-@FIXME{IMPORTANT!  show the final structure, here.  figure out what it
-will be.}
-
 @node extracting untrusted archives
 @subsection Extracting Archives from Untrusted Sources
 
@@ -1598,8 +1609,8 @@ $ @kbd{tar -tvf music.tar folk jazz}
 
 @noindent
 you would get a similar response.  Members with those names are not in the
-archive.  You must use the correct member names in order to extract the
-files from the archive.
+archive.  You must use the correct member names, or wildcards, in order
+to extract the files from the archive.
 
 If you have forgotten the correct names of the files in the archive,
 use @w{@kbd{tar --list --verbose}} to list them correctly.
@@ -1690,7 +1701,7 @@ prior to the execution of the @command{tar} command.
 working directory.  @command{tar} will make all file names relative
 (by removing leading slashes when archiving or restoring files),
 unless you specify otherwise (using the @option{--absolute-names}
-option).  @xref{absolute}, for more information about 
+option).  @xref{absolute}, for more information about
 @option{--absolute-names}.
 
 If you give the name of a directory as either a file name or a member
@@ -1740,7 +1751,7 @@ aiming simplicity in that area, for now.  If you are not using the
 that everything went well, besides maybe innocuous warnings.  Nonzero
 means that something went wrong. Right now, as of today, ``nonzero''
 is almost always 2, except for remote operations, where it may be
-128. 
+128.
 
 @node using tar options
 @section Using @command{tar} Options
@@ -1939,8 +1950,6 @@ the same as the short option @option{-t}, and consequently, the same as the
 mnemonic option @option{--list}.  So for example, the command @w{@samp{tar
 cv}} specifies the option @option{-v} in addition to the operation @option{-c}.
 
-@FIXME{bob suggests having an uglier example. :-) }
-
 When options that need arguments are given together with the command,
 all the associated arguments follow, in the same order as the options.
 Thus, the example given previously could also be written in the old
@@ -1991,8 +2000,6 @@ following are equivalent:
 @kbd{tar cf archive.tar.gz -z file}
 @end smallexample
 
-@FIXME{still could explain this better; it's redundant:}
-
 @cindex option syntax, traditional
 As far as we know, all @command{tar} programs, @acronym{GNU} and
 non-@acronym{GNU}, support old options.  @GNUTAR{}
@@ -2159,13 +2166,9 @@ Lists the members in an archive.  @xref{list}.
 @item --update
 @itemx -u
 
-@FIXME{It was: A combination of the @option{--compare} and
-@option{--append} operations.  This is not true and rather misleading,
-as @option{--compare} (@option{--diff}, @option{-d}) does a lot more than @option{--update} (@option{-u}) for
-ensuring files are identical.}  Adds files to the end of the archive,
-but only if they are newer than their counterparts already in the
-archive, or if they do not already exist in the archive.
-@xref{update}.
+Adds files to the end of the archive, but only if they are newer than
+their counterparts already in the archive, or if they do not already
+exist in the archive. @xref{update}.
 
 @end table
 
@@ -2189,8 +2192,8 @@ Normally when creating an archive, @command{tar} strips an initial
 
 @opindex anchored, summary
 @item --anchored
-An exclude pattern must match an initial subsequence of the name's components.
-@xref{controlling pattern-matching with exclude}.
+A pattern must match an initial subsequence of the name's components.
+@xref{controlling pattern-matching}.
 
 @opindex atime-preserve, summary
 @item --atime-preserve
@@ -2271,7 +2274,7 @@ This option tells @command{tar} to read or write archives through
 @item --checkpoint
 
 This option directs @command{tar} to print periodic checkpoint messages as it
-reads through the archive.  Its intended for when you want a visual
+reads through the archive.  It is intended for when you want a visual
 indication that @command{tar} is still running, but don't want to see
 @option{--verbose} output.  @FIXME-xref{}
 
@@ -2281,13 +2284,10 @@ indication that @command{tar} is still running, but don't want to see
 If this option was given, @command{tar} will check the number of links
 dumped for each processed file.  If this number does not match the
 total number of hard links for the file, a warning message will be
-output.
-
-Future versions will take @option{-l} as a short version of
-@option{--check-links}.  However, current release still retains the old
-semantics for @option{-l}.
-
-@xref{Changes}, for more information.
+output @footnote{Earlier versions of @GNUTAR{} understood @option{-l} as a
+synonym for @option{--one-file-system}.  The current semantics, wich
+complies to UNIX98, was introduced with version
+1.15.91. @xref{Changes}, for more information.}. 
 
 @opindex compress, summary
 @opindex uncompress, summary
@@ -2427,8 +2427,8 @@ options to @command{tar} and exit. @xref{help}.
 
 @opindex ignore-case, summary
 @item --ignore-case
-Ignore case when excluding files. @xref{controlling pattern-matching
-with exclude}.
+Ignore case when matching member or file names with
+patterns. @xref{controlling pattern-matching}. 
 
 @opindex ignore-command-error, summary
 @item --ignore-command-error
@@ -2453,8 +2453,8 @@ archive, which normally signals EOF.  @xref{Reading}.
 
 Used to inform @command{tar} that it is working with an old
 @acronym{GNU}-format incremental backup archive.  It is intended
-primarily for backwards compatibility only.  @FIXME{incremental and
-listed-incremental}.
+primarily for backwards compatibility only.  @xref{Incremental Dumps},
+for a detailed discussion of incremental archives.
 
 @opindex index-file, summary
 @item --index-file=@var{file}
@@ -2511,7 +2511,7 @@ During a @option{--create} operation, specifies that the archive that
 @command{tar} creates is a new @acronym{GNU}-format incremental
 backup, using @var{snapshot-file} to determine which files to backup.
 With other operations, informs @command{tar} that the archive is in
-incremental format.  @FIXME{incremental and listed-incremental}.
+incremental format.  @xref{Incremental Dumps}.
 
 @opindex mode, summary
 @item --mode=@var{permissions}
@@ -2572,7 +2572,7 @@ also back up files for which any status information has changed).
 @opindex no-anchored, summary
 @item --no-anchored
 An exclude pattern can match any subsequence of the name's components.
-@xref{controlling pattern-matching with exclude}.
+@xref{controlling pattern-matching}.
 
 @opindex no-delay-directory-restore, summary
 @item --no-delay-directory-restore
@@ -2583,13 +2583,18 @@ extracted. This is the default. @xref{Directory Modification Times and Permissio
 
 @opindex no-ignore-case, summary
 @item --no-ignore-case
-Use case-sensitive matching when excluding files.
-@xref{controlling pattern-matching with exclude}.
+Use case-sensitive matching.
+@xref{controlling pattern-matching}.
 
 @opindex no-ignore-command-error, summary
 @item --no-ignore-command-error
 Print warnings about subprocesses terminated with a non-zero exit
-code. @xref{Writing to an External Program}. 
+code. @xref{Writing to an External Program}.
+
+@opindex no-quote-chars, summary
+@item --no-quote-chars=@var{string}
+Do not quote characters from @var{string}, even if the selected
+quoting style implies they should be quoted (@pxref{quoting styles}).
 
 @opindex no-recursion, summary
 @item --no-recursion
@@ -2614,13 +2619,13 @@ for ordinary users.
 
 @opindex no-wildcards, summary
 @item --no-wildcards
-Do not use wildcards when excluding files.
-@xref{controlling pattern-matching with exclude}.
+Do not use wildcards.
+@xref{controlling pattern-matching}.
 
 @opindex no-wildcards-match-slash, summary
 @item --no-wildcards-match-slash
-Wildcards do not match @samp{/} when excluding files.
-@xref{controlling pattern-matching with exclude}.
+Wildcards do not match @samp{/}.
+@xref{controlling pattern-matching}.
 
 @opindex null, summary
 @item --null
@@ -2674,18 +2679,11 @@ Synonym for @option{--format=v7}.
 
 @opindex one-file-system, summary
 @item --one-file-system
-@itemx -l
 Used when creating an archive.  Prevents @command{tar} from recursing into
 directories that are on different file systems from the current
-directory.
-
-Earlier versions of @GNUTAR{} understood @option{-l} as a
-synonym for @option{--one-file-system}.  Although such usage is still
-allowed in the present version, it is @emph{strongly discouraged}.
-The future versions of @GNUTAR{} will use @option{-l} as
-a synonym for @option{--check-links}.
-
-@xref{Changes}, for more information.
+directory @footnote{Earlier versions of @GNUTAR{} understood @option{-l} as a
+synonym for @option{--one-file-system}.  This has changed in version
+1.15.91. @xref{Changes}, for more information.}.
 
 @opindex overwrite, summary
 @item --overwrite
@@ -2715,6 +2713,20 @@ anonymous anyway, so that might as well be the owner of anonymous archives.
 
 This option does not affect extraction from archives.
 
+@opindex quote-chars, summary
+@item --quote-chars=@var{string}
+Always quote characters from @var{string}, even if the selected
+quoting style would not quote them (@pxref{quoting styles}).
+
+@opindex quoting-style, summary
+@item --quoting-style=@var{style}
+Set quoting style to use when printing member and file names
+(@pxref{quoting styles}). Valid @var{style} values are:
+@code{literal}, @code{shell}, @code{shell-always}, @code{c},
+@code{escape}, @code{locale}, and @code{clocale}. Default quoting
+style is @code{escape}, unless overridden while configuring the
+package.
+
 @opindex pax-option, summary
 @item --pax-option=@var{keyword-list}
 @FIXME{Such a detailed description does not belong there, move it elsewhere.}
@@ -2746,7 +2758,7 @@ would suppress security-related information.
 
 This keyword allows user control over the name that is written into the
 ustar header blocks for the extended headers.  The name is obtained
-from @var{string} after substituting the following meta-characters:
+from @var{string} after making the following substitutions:
 
 @multitable @columnfractions .30 .70
 @headitem Meta-character @tab Replaced By
@@ -2771,8 +2783,8 @@ will use the following default value:
 @item globexthdr.name=@var{string}
 This keyword allows user control over the name that is written into
 the ustar header blocks for global extended header records.  The name
-shall will be obtained from the contents of @var{string}, after the
-following character substitutions have been made:
+is obtained from the contents of @var{string}, after making
+the following substitutions:
 
 @multitable @columnfractions .30 .70
 @headitem Meta-character @tab Replaced By
@@ -2783,7 +2795,7 @@ starting at 1.
 @item %% @tab A @samp{%} character.
 @end multitable
 
-Any other @samp{%} characters in string produce undefined results.
+Any other @samp{%} characters in @var{string} produce undefined results.
 
 If no option @samp{globexthdr.name=string} is specified, @command{tar}
 will use the following default value:
@@ -2941,7 +2953,8 @@ Here is an example of what you can see using this option:
 
 @smallexample
 $ tar --show-defaults
---format=gnu -f- -b20
+--format=gnu -f- -b20 --quoting-style=escape \
+--rmt-command=/usr/libexec/rmt --rsh-command=/usr/bin/rsh
 @end smallexample
 
 @opindex show-omitted-dirs, summary
@@ -3081,8 +3094,8 @@ archive.  @xref{verify}.
 @opindex version, summary
 @item --version
 
-@command{tar} will print an informational message about what version
-it is and a copyright message, some credits, and then exit.
+Print information about the program's name, version, origin and legal
+status, all on standard output, and then exit successfully.
 @xref{help}.
 
 @opindex volno-file, summary
@@ -3094,13 +3107,13 @@ of which volume of a multi-volume archive its working in @var{file}.
 
 @opindex wildcards, summary
 @item --wildcards
-Use wildcards when excluding files.
-@xref{controlling pattern-matching with exclude}.
+Use wildcards when matching member names with patterns.
+@xref{controlling pattern-matching}.
 
 @opindex wildcards-match-slash, summary
 @item --wildcards-match-slash
-Wildcards match @samp{/} when excluding files.
-@xref{controlling pattern-matching with exclude}.
+Wildcards match @samp{/}.
+@xref{controlling pattern-matching}.
 @end table
 
 @node Short Option Summary
@@ -3290,15 +3303,18 @@ the earlier versions of @GNUTAR{}.  In the future releases
 @cindex Version of the @command{tar} program
 Being careful, the first thing is really checking that you are using
 @GNUTAR{}, indeed.  The @option{--version} option
-will generate a message giving confirmation that you are using
-@GNUTAR{}, with the precise version of @GNUTAR{}
-you are using.  @command{tar} identifies itself and
-prints the version number to the standard output, then immediately
-exits successfully, without doing anything else, ignoring all other
-options.  For example, @w{@samp{tar --version}} might return:
+causes @command{tar} to print information about its name, version,
+origin and legal status, all on standard output, and then exit
+successfully.  For example, @w{@samp{tar --version}} might print:
 
 @smallexample
-tar (@acronym{GNU} tar) @value{VERSION}
+tar (GNU tar) 1.15.2
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by John Gilmore and Jay Fenlason.
 @end smallexample
 
 @noindent
@@ -3310,7 +3326,7 @@ named @samp{tar}, after the name of the main program it
 contains@footnote{There are plans to merge the @command{cpio} and
 @command{tar} packages into a single one which would be called
 @code{paxutils}.  So, who knows if, one of this days, the
-@option{--version} would not yield @w{@samp{tar (@acronym{GNU}
+@option{--version} would not output @w{@samp{tar (@acronym{GNU}
 paxutils) 3.2}}}.
 
 @cindex Obtaining help
@@ -3425,7 +3441,7 @@ silent. When used with most operations, the @option{--verbose}
 (@option{-v}) option causes @command{tar} to print the name of each
 file or archive member as it is processed.  This and the other options
 which make @command{tar} print status information can be useful in
-monitoring @command{tar}. 
+monitoring @command{tar}.
 
 With @option{--create} or @option{--extract}, @option{--verbose} used
 once just prints the names of the files or members as they are processed.
@@ -3463,8 +3479,8 @@ The @option{--checkpoint} option prints an occasional message
 as @command{tar} reads or writes the archive.  In fact, it prints
 a message each 10 records read or written.  It is designed for
 those who don't need the more detailed (and voluminous) output of
-@option{--block-number} (@option{-R}), but do want visual confirmation that @command{tar}
-is actually making forward progress.
+@option{--block-number} (@option{-R}), but do want visual confirmation
+that @command{tar} is actually making forward progress.
 
 @FIXME{There is some confusion here.  It seems that -R once wrote a
 message at @samp{every} record read or written.}
@@ -3558,7 +3574,7 @@ output free to receive verbose output, all separate from errors.
 
 The basic @command{tar} operations, @option{--create} (@option{-c}),
 @option{--list} (@option{-t}) and @option{--extract} (@option{--get},
-@option{-x}), are currently presented and described in the tutorial 
+@option{-x}), are currently presented and described in the tutorial
 chapter of this manual.  This section provides some complementary notes
 for these operations.
 
@@ -3603,7 +3619,7 @@ given, there are no arguments besides options, and
 around the cautiousness of @GNUTAR{} and nevertheless create an
 archive with nothing in it, one may still use, as the value for the
 @option{--files-from} option, a file with no names in it, as shown in
-the following commands: 
+the following commands:
 
 @smallexample
 @kbd{tar --create --file=empty-archive.tar --files-from=/dev/null}
@@ -3655,6 +3671,7 @@ it still introduces the info in the chapter correctly : ).}
 * concatenate::
 * delete::
 * compare::
+* quoting styles::
 @end menu
 
 @node Operations
@@ -3760,7 +3777,7 @@ tar --extract --file archive.tar --occurrence=2 myfile
 @noindent
 would extract only the second copy.  @xref{Option
 Summary,---occurrence}, for the description of @option{--occurrence}
-option. 
+option.
 
 @FIXME{ hag -- you might want to incorporate some of the above into the
 MMwtSN node; not sure.  i didn't know how to make it simpler...
@@ -3792,8 +3809,10 @@ and @ref{Media}, for more information.)
 @cindex Archives, Appending files to
 
 The simplest way to add a file to an already existing archive is the
-@option{--append} (@option{-r}) operation, which writes specified files into the
-archive whether or not they are already among the archived files.
+@option{--append} (@option{-r}) operation, which writes specified
+files into the archive whether or not they are already among the
+archived files.
+
 When you use @option{--append}, you @emph{must} specify file name
 arguments, as there is no default.  If you specify a file that already
 exists in the archive, another copy of the file will be added to the
@@ -3829,30 +3848,21 @@ $ @kbd{tar --list --file=collection.tar}
 -rw-r--r-- me user     20 1996-09-23 16:44 rock
 @end smallexample
 
-@FIXME{in theory, dan will (soon) try to turn this node into what it's
-title claims it will become...}
-
 @node multiple
 @subsubsection Multiple Files with the Same Name
 
-You can use @option{--append} (@option{-r}) to add copies of files which have been
-updated since the archive was created.  (However, we do not recommend
-doing this since there is another @command{tar} option called
-@option{--update}; @pxref{update} for more information.  We describe this
-use of @option{--append} here for the sake of completeness.)  @FIXME{is
-this really a good idea, to give this whole description for something
-which i believe is basically a Stupid way of doing something?  certain
-aspects of it show ways in which tar is more broken than i'd personally
-like to admit to, specifically the last sentence.  On the other hand, i
-don't think it's a good idea to be saying that we explicitly don't
-recommend using something, but i can't see any better way to deal with
-the situation.}When you extract the archive, the older version will be
-effectively lost.  This works because files are extracted from an
+You can use @option{--append} (@option{-r}) to add copies of files
+which have been updated since the archive was created.  (However, we
+do not recommend doing this since there is another @command{tar}
+option called @option{--update}; @xref{update}, for more information.
+We describe this use of @option{--append} here for the sake of
+completeness.)  When you extract the archive, the older version will
+be effectively lost.  This works because files are extracted from an
 archive in the order in which they were archived.  Thus, when the
 archive is extracted, a file archived later in time will replace a
-file of the same name which was archived earlier, even though the older
-version of the file will remain in the archive unless you delete all
-versions of the file.
+file of the same name which was archived earlier, even though the
+older version of the file will remain in the archive unless you delete
+all versions of the file. 
 
 Supposing you change the file @file{blues} and then append the changed
 version to @file{collection.tar}.  As you saw above, the original
@@ -3911,13 +3921,13 @@ $ @kbd{tar --extract -vv --occurrence --file=collection.tar blues}
 
 @opindex update
 In the previous section, you learned how to use @option{--append} to
-add a file to an existing archive.  A related operation is 
+add a file to an existing archive.  A related operation is
 @option{--update} (@option{-u}).  The @option{--update} operation
 updates a @command{tar} archive by comparing the date of the specified
 archive members against the date of the file with the same name.  If
 the file has been modified more recently than the archive member, then
 the newer version of the file is added to the archive (as with
-@option{--append}). 
+@option{--append}).
 
 Unfortunately, you cannot use @option{--update} with magnetic tape drives.
 The operation will fail.
@@ -3938,20 +3948,20 @@ Same Name}
 @node how to update
 @subsubsection How to Update an Archive Using @option{--update}
 
-You must use file name arguments with the @option{--update} (@option{-u}) operation.
-If you don't specify any files, @command{tar} won't act on any files and
-won't tell you that it didn't do anything (which may end up confusing
-you).
+You must use file name arguments with the @option{--update}
+(@option{-u}) operation.  If you don't specify any files,
+@command{tar} won't act on any files and won't tell you that it didn't
+do anything (which may end up confusing you).
 
-@FIXME{note: the above parenthetical added because in fact, this
-behavior just confused the author. :-) }
+@note: the above parenthetical added because in fact, this
+@c behavior just confused the author. :-)
 
 To see the @option{--update} option at work, create a new file,
 @file{classical}, in your practice directory, and some extra text to the
 file @file{blues}, using any text editor.  Then invoke @command{tar} with
-the @samp{update} operation and the @option{--verbose} (@option{-v}) option specified,
-using the names of all the files in the practice directory as file name
-arguments:
+the @samp{update} operation and the @option{--verbose} (@option{-v})
+option specified, using the names of all the files in the practice
+directory as file name arguments:
 
 @smallexample
 $ @kbd{tar --update -v -f collection.tar blues folk rock classical}
@@ -4014,7 +4024,7 @@ files from @file{practice}:
 @smallexample
 $ @kbd{tar -cvf bluesrock.tar blues rock}
 blues
-classical
+rock
 $ @kbd{tar -cvf folkjazz.tar folk jazz}
 folk
 jazz
@@ -4028,27 +4038,27 @@ contain what they are supposed to:
 $ @kbd{tar -tvf bluesrock.tar}
 -rw-r--r-- melissa user    105 1997-01-21 19:42 blues
 -rw-r--r-- melissa user     33 1997-01-20 15:34 rock
-$ @kbd{tar -tvf folkjazz.tar}
+$ @kbd{tar -tvf jazzfolk.tar}
 -rw-r--r-- melissa user     20 1996-09-23 16:44 folk
 -rw-r--r-- melissa user     65 1997-01-30 14:15 jazz
 @end smallexample
 
-We can concatenate these two archives with @command{tar}: 
+We can concatenate these two archives with @command{tar}:
 
 @smallexample
 $ @kbd{cd ..}
 $ @kbd{tar --concatenate --file=bluesrock.tar jazzfolk.tar}
 @end smallexample
 
-If you now list the contents of the @file{bluesclass.tar}, you will see
+If you now list the contents of the @file{bluesrock.tar}, you will see
 that now it also contains the archive members of @file{jazzfolk.tar}:
 
 @smallexample
 $ @kbd{tar --list --file=bluesrock.tar}
 blues
 rock
-jazz
 folk
+jazz
 @end smallexample
 
 When you use @option{--concatenate}, the source and target archives must
@@ -4117,11 +4127,6 @@ blues
 folk
 jazz
 rock
-practice/blues
-practice/folk
-practice/jazz
-practice/rock
-practice/blues
 $ @kbd{tar --delete --file=collection.tar blues}
 $ @kbd{tar --list --file=collection.tar}
 folk
@@ -4130,9 +4135,8 @@ rock
 $
 @end smallexample
 
-@FIXME{I changed the order of these nodes around and haven't had a chance
-to fix the above example's results, yet.  I have to play with this and
-follow it and see what it actually does!}
+@FIXME{Check if the above listing is actually produced after running
+all the examples on collection.tar.}
 
 The @option{--delete} option has been reported to work properly when
 @command{tar} acts as a filter from @code{stdin} to @code{stdout}.
@@ -4173,6 +4177,117 @@ The spirit behind the @option{--compare} (@option{--diff}, @option{-d}) option i
 archive represents the current state of files on disk, more than validating
 the integrity of the archive media.  For this later goal, @xref{verify}.
 
+@node quoting styles
+@subsection Quoting Member Names
+@UNREVISED{}
+
+@smallexample
+@group
+$ @kbd{ls}
+a\ttab
+a\nnewline
+a\ space
+a"double"quote
+a'single'quote
+a\\backslash
+$ @kbd{tar cf arch .}
+@end group
+@end smallexample
+
+@smallexample
+@group
+$ @kbd{tar tf arch --quoting-style=literal}
+./
+./a space
+./a'single'quote
+./a"double"quote
+./a\backslash
+./a    tab
+./a
+newline
+@end group
+@end smallexample
+
+@smallexample
+@group
+$ @kbd{tar tf arch --quoting-style=shell}
+./
+'./a space'
+'./a'\''single'\''quote'
+'./a"double"quote'
+'./a\backslash'
+'./a   tab'
+'./a
+newline'
+@end group
+@end smallexample
+
+@smallexample
+@group
+$ @kbd{tar tf arch --quoting-style=shell-always}
+'./'
+'./a space'
+'./a'\''single'\''quote'
+'./a"double"quote'
+'./a\backslash'
+'./a   tab'
+'./a
+newline'
+@end group
+@end smallexample
+
+@smallexample
+@group
+$ @kbd{tar tf arch --quoting-style=c}
+"./"
+"./a space"
+"./a'single'quote"
+"./a\"double\"quote"
+"./a\\backslash"
+"./a\ttab"
+"./a\nnewline"
+@end group
+@end smallexample
+
+@smallexample
+@group
+$ @kbd{tar tf arch --quoting-style=escape}
+./
+./a space
+./a'single'quote
+./a"double"quote
+./a\\backslash
+./a\ttab
+./a\nnewline
+@end group
+@end smallexample
+
+@smallexample
+@group
+$ @kbd{tar tf arch --quoting-style=locale}
+`./'
+`./a space'
+`./a\'single\'quote'
+`./a"double"quote'
+`./a\\backslash'
+`./a\ttab'
+`./a\nnewline'
+@end group
+@end smallexample
+
+@smallexample
+@group
+$ @kbd{tar tf arch --quoting-style=clocale}
+"./"
+"./a space"
+"./a'single'quote"
+"./a\"double\"quote"
+"./a\\backslash"
+"./a\ttab"
+"./a\nnewline"
+@end group
+@end smallexample
+
 @node create options
 @section Options Used by @option{--create}
 
@@ -4198,9 +4313,6 @@ Do not exit with nonzero on unreadable files or directories.
 @section Options Used by @option{--extract}
 @UNREVISED
 
-@FIXME{i need to get dan to go over these options with me and see if
-there's a better way of organizing them.}
-
 @opindex extract, additional options
 The previous chapter showed how to use @option{--extract} to extract
 an archive into the file system.  Various options cause @command{tar} to
@@ -4246,7 +4358,7 @@ If you're not sure of the blocking factor of an archive, you can
 read the archive by specifying @option{--read-full-records} (@option{-B}) and
 @option{--blocking-factor=@var{512-size}} (@option{-b
 @var{512-size}}), using a blocking factor larger than what the archive
-uses.  This lets you avoid having to determine the blocking factor 
+uses.  This lets you avoid having to determine the blocking factor
 of an archive.  @xref{Blocking Factor}.
 
 @menu
@@ -4467,7 +4579,7 @@ the files were extracted, use the @option{--touch} (@option{-m}) option in
 conjunction with @option{--extract} (@option{--get}, @option{-x}).
 
 @table @option
-@opindex touch 
+@opindex touch
 @item --touch
 @itemx -m
 Sets the data modification time of extracted archive members to the time
@@ -4483,7 +4595,7 @@ Use in conjunction with @option{--extract} (@option{--get}, @option{-x}).
 To set the modes (access permissions) of extracted files to those
 recorded for those files in the archive, use @option{--same-permissions}
 in conjunction with the @option{--extract} (@option{--get},
-@option{-x}) operation.  @FIXME{Should be aliased to ignore-umask.}
+@option{-x}) operation.  
 
 @table @option
 @opindex preserve-permission
@@ -4599,7 +4711,7 @@ used, instead of creating the files specified, @command{tar} writes
 the contents of the files extracted to its standard output.  This may
 be useful if you are only extracting the files in order to send them
 through a pipe.  This option is meaningless with @option{--list}
-(@option{-t}).  
+(@option{-t}).
 @end table
 
 This can be useful, for example, if you have a tar archive containing
@@ -4626,8 +4738,8 @@ You can instruct @command{tar} to send the contents of each extracted
 file to the standard input of an external program:
 
 @table @option
-@opindex to-program
-@item --to-program=@var{command}
+@opindex to-command
+@item --to-command=@var{command}
 Extract files and pipe their contents to the standard input of
 @var{command}. When this option is used, instead of creating the
 files specified, @command{tar} invokes @var{command} and pipes the
@@ -4737,9 +4849,8 @@ option. This option is useful if you have set
 @node remove files
 @unnumberedsubsubsec Removing Files
 
-@FIXME{the various macros in the front of the manual think that this
-option goes in this section.  i have no idea; i only know it's nowhere
-else in the book...}
+@FIXME{The section is too terse. Something more to add? An example,
+maybe?}
 
 @table @option
 @opindex remove-files
@@ -4794,7 +4905,7 @@ In this case, @option{--starting-file} is not necessary.
 To process large lists of file names on machines with small amounts of
 memory.  Use in conjunction with @option{--compare} (@option{--diff},
 @option{-d}), @option{--list} (@option{-t}) or @option{--extract}
-(@option{--get}, @option{-x}). 
+(@option{--get}, @option{-x}).
 @end table
 
 The @option{--same-order} (@option{--preserve-order}, @option{-s}) option tells @command{tar} that the list of file
@@ -4930,14 +5041,25 @@ link-structure of all the files therein.  In this case, the transfer
 medium is a @dfn{pipe}, which is one a Unix redirection mechanism:
 
 @smallexample
-$ @kbd{cd sourcedir; tar -cf - .  | (cd targetdir; tar -xf -)}
+$ @kbd{(cd sourcedir; tar -cf - .) | (cd targetdir; tar -xf -)}
+@end smallexample
+
+@noindent
+You can avoid subshells by using @option{-C} option:
+
+@smallexample
+$ @kbd{tar -C sourcedir -cf - . | tar -C targetdir -xf -}
 @end smallexample
 
 @noindent
 The command also works using short option forms:
 
 @smallexample
-$ @w{@kbd{cd sourcedir; tar --create --file=- .  | (cd targetdir; tar --extract --file=-)}}
+$ @kbd{(cd sourcedir; tar --create --file=- . ) \
+       | (cd targetdir; tar --extract --file=-)}
+# Or:
+$ @kbd{tar --directory sourcedir --create --file=- . ) \
+       | tar --directory targetdir --extract --file=-}
 @end smallexample
 
 @noindent
@@ -5067,7 +5189,7 @@ have to.  (Files not being modified are written with no trouble, and do
 not corrupt the entire archive.)
 
 You will want to use the @option{--label=@var{archive-label}}
-(@option{-V @var{archive-label}}) option to give the archive a 
+(@option{-V @var{archive-label}}) option to give the archive a
 volume label, so you can tell what this archive is even if the label
 falls off the tape, or anything like that.
 
@@ -5076,14 +5198,14 @@ one volume, you will need to use the @option{--multi-volume} (@option{-M}) optio
 Make sure you have enough tapes on hand to complete the backup.
 
 If you want to dump each file system separately you will need to use
-the @option{--one-file-system} (@option{-l}) option to prevent
+the @option{--one-file-system} option to prevent
 @command{tar} from crossing file system boundaries when storing
-(sub)directories. 
+(sub)directories.
 
 The @option{--incremental} (@option{-G}) (@pxref{Incremental Dumps})
 option is not needed, since this is a complete copy of everything in
 the file system, and a full restore from this backup would only be
-done onto a completely 
+done onto a completely
 empty disk.
 
 Unless you are in a hurry, and trust the @command{tar} program (and your
@@ -5102,7 +5224,7 @@ can be restored when extracting the archive.
 
 @GNUTAR{} currently offers two options for handling incremental
 backups: @option{--listed-incremental=@var{snapshot-file}} (@option{-g
-@var{snapshot-file}}) and @option{--incremental} (@option{-G}). 
+@var{snapshot-file}}) and @option{--incremental} (@option{-G}).
 
 @opindex listed-incremental
 The option @option{--listed-incremental} instructs tar to operate on
@@ -5742,13 +5864,10 @@ Wait till @var{time}, then do backup.
 @itemx --help
 Display short help message and exit.
 
-@item -L
-@itemx --license
-Display program license and exit.
-
 @item -V
 @itemx --version
-Display program version and exit.
+Display information about the program's name, version, origin and legal
+status, all on standard output, and then exit successfully.
 @end table
 
 
@@ -5813,13 +5932,10 @@ is 100, which means the highest debugging level.
 @itemx --help
 Display short help message and exit.
 
-@item -L
-@itemx --license
-Display program license and exit.
-
 @item -V
 @itemx --version
-Display program version and exit.
+Display information about the program's name, version, origin and legal
+status, all on standard output, and then exit successfully.
 @end table
 
 You should start the restore script with the media containing the
@@ -5842,20 +5958,20 @@ that determination.
 @chapter Choosing Files and Names for @command{tar}
 @UNREVISED
 
-@FIXME{Melissa (still) Doesn't Really Like This ``Intro'' Paragraph!!!}
-
 Certain options to @command{tar} enable you to specify a name for your
 archive.  Other options let you decide which files to include or exclude
 from the archive, based on when or whether files were modified, whether
 the file names do or don't match specified patterns, or whether files
 are in specified directories.
 
+This chapter discusses these options in detail.
+
 @menu
 * file::                        Choosing the Archive's Name
 * Selecting Archive Members::
 * files::                       Reading Names from a File
 * exclude::                     Excluding Some Files
-* Wildcards::
+* Wildcards::                   Wildcards Patterns and Matching
 * after::                       Operating Only on New Files
 * recurse::                     Descending into Directories
 * one::                         Crossing File System Boundaries
@@ -5865,9 +5981,6 @@ are in specified directories.
 @section Choosing and Naming Archive Files
 @UNREVISED
 
-@FIXME{should the title of this section actually be, "naming an
-archive"?}
-
 @cindex Naming an archive
 @cindex Archive Name
 @cindex Choosing an archive file
@@ -5875,9 +5988,10 @@ archive"?}
 By default, @command{tar} uses an archive file name that was compiled when
 it was built on the system; usually this name refers to some physical
 tape drive on the machine.  However, the person who installed @command{tar}
-on the system may not set the default to a meaningful value as far as
+on the system may not have set the default to a meaningful value as far as
 most users are concerned.  As a result, you will usually want to tell
-@command{tar} where to find (or create) the archive.  The @option{--file=@var{archive-name}} (@option{-f @var{archive-name}})
+@command{tar} where to find (or create) the archive.  The
+@option{--file=@var{archive-name}} (@option{-f @var{archive-name}})
 option allows you to either specify or name a file to use as the archive
 instead of the default archive file location.
 
@@ -5913,8 +6027,9 @@ If you do not name the archive, @command{tar} uses the value of the
 environment variable @env{TAPE} as the file name for the archive.  If
 that is not available, @command{tar} uses a default, compiled-in archive
 name, usually that for tape unit zero (ie.  @file{/dev/tu00}).
-@command{tar} always needs an archive name.
 
+@cindex Standard input and output
+@cindex tar to standard input and output
 If you use @file{-} as an @var{archive-name}, @command{tar} reads the
 archive from standard input (when listing or extracting files), or
 writes it to standard output (when creating an archive).  If you use
@@ -5922,29 +6037,39 @@ writes it to standard output (when creating an archive).  If you use
 @command{tar} reads the original archive from its standard input and
 writes the entire new archive to its standard output.
 
-@FIXME{might want a different example here; this is already used in
-"notable tar usages".}
+The following example is a convenient way of copying directory
+hierarchy from @file{sourcedir} to @file{targetdir}.
 
 @smallexample
-$ @kbd{cd sourcedir; tar -cf - .  | (cd targetdir; tar -xf -)}
+$ @kbd{(cd sourcedir; tar -cf - .) | (cd targetdir; tar -xpf -)}
 @end smallexample
 
-@FIXME{help!}
+The @option{-C} option allows to avoid using subshells:
 
-@cindex Standard input and output
-@cindex tar to standard input and output
+@smallexample
+$ @kbd{tar -C sourcedir -cf - . | tar -C targetdir -xpf -}
+@end smallexample
+
+In both examples above, the leftmost @command{tar} invocation archives
+the contents of @file{sourcedir} to the standard output, while the
+rightmost one reads this archive from its standard input and
+extracts it.  The @option{-p} option tells it to restore permissions
+of the extracted files.
+
+@cindex Remote devices
+@cindex tar to a remote device
 @anchor{remote-dev}
 To specify an archive file on a device attached to a remote machine,
 use the following:
 
 @smallexample
-@kbd{--file=@var{hostname}:/@var{dev}/@var{file name}}
+@kbd{--file=@var{hostname}:/@var{dev}/@var{file-name}}
 @end smallexample
 
 @noindent
 @command{tar} will complete the remote connection, if possible, and
 prompt you for a username and password.  If you use
-@option{--file=@@@var{hostname}:/@var{dev}/@var{file name}}, @command{tar}
+@option{--file=@@@var{hostname}:/@var{dev}/@var{file-name}}, @command{tar}
 will complete the remote connection, if possible, using your username
 as the username on the remote machine.
 
@@ -5965,16 +6090,10 @@ installation prefix).  If you need to use a file whose name includes a
 colon, then the remote tape drive behavior
 can be inhibited by using the @option{--force-local} option.
 
-@FIXME{i know we went over this yesterday, but bob (and now i do again,
-too) thinks it's out of the middle of nowhere.  it doesn't seem to tie
-into what came before it well enough <<i moved it now, is it better
-here?>>.  bob also comments that if Amanda isn't free software, we
-shouldn't mention it..}
-
 When the archive is being created to @file{/dev/null}, @GNUTAR{}
-tries to minimize input and output operations.  The
-Amanda backup system, when used with @GNUTAR{}, has
-an initial sizing pass which uses this feature.
+tries to minimize input and output operations.  The Amanda backup
+system, when used with @GNUTAR{}, has an initial sizing pass which
+uses this feature. 
 
 @node Selecting Archive Members
 @section Selecting Archive Members
@@ -5992,25 +6111,41 @@ the command line, as follows:
 @kbd{tar} @var{operation} [@var{option1} @var{option2} @dots{}] [@var{file name-1} @var{file name-2} @dots{}]
 @end smallexample
 
-If a file name begins with dash (@samp{-}), preceede it with
-@option{--add-file} option to preventit from being treated as an
+If a file name begins with dash (@samp{-}), precede it with
+@option{--add-file} option to prevent it from being treated as an
 option.
 
 If you specify a directory name as a file name argument, all the files
 in that directory are operated on by @command{tar}.
 
-If you do not specify files when @command{tar} is invoked with
-@option{--create} (@option{-c}), @command{tar} operates on all the non-directory files in
-the working directory.  If you specify either @option{--list} (@option{-t}) or
-@option{--extract} (@option{--get}, @option{-x}), @command{tar} operates on all the archive members in the
-archive.  If you specify any operation other than one of these three,
-@command{tar} does nothing.
+If you do not specify files, @command{tar} behavior differs depending
+on the operation mode as described below:
+
+When @command{tar} is invoked with @option{--create} (@option{-c}),
+@command{tar} will stop immediately, reporting the following:
+
+@smallexample
+@group
+$ @kbd{tar cf a.tar}
+tar: Cowardly refusing to create an empty archive
+Try `tar --help' or `tar --usage' for more information.
+@end group
+@end smallexample
+
+If you specify either @option{--list} (@option{-t}) or
+@option{--extract} (@option{--get}, @option{-x}), @command{tar}
+operates on all the archive members in the archive.
+
+If run with @option{--diff} option, tar will compare the archive with
+the contents of the current working directory.
+
+If you specify any other operation, @command{tar} does nothing.
 
 By default, @command{tar} takes file names from the command line.  However,
 there are other ways to specify file or member names, or to modify the
 manner in which @command{tar} selects the files or members upon which to
-operate.  @FIXME{add xref here}In general, these methods work both for
-specifying the names of files and archive members.
+operate.  In general, these methods work both for specifying the names
+of files and archive members. 
 
 @node files
 @section Reading Names from a File
@@ -6020,17 +6155,18 @@ specifying the names of files and archive members.
 @cindex File Name arguments, alternatives
 Instead of giving the names of files or archive members on the command
 line, you can put the names into a file, and then use the
-@option{--files-from=@var{file-of-names}} (@option{-T @var{file-of-names}}) option to @command{tar}.  Give the name of the file
-which contains the list of files to include as the argument to
+@option{--files-from=@var{file-of-names}} (@option{-T
+@var{file-of-names}}) option to @command{tar}.  Give the name of the
+file which contains the list of files to include as the argument to 
 @option{--files-from}.  In the list, the file names should be separated by
 newlines.  You will frequently use this option when you have generated
 the list of files to archive with the @command{find} utility.
 
 @table @option
 @opindex files-from
-@item --files-from=@var{file name}
-@itemx -T @var{file name}
-Get names to extract or create from file @var{file name}.
+@item --files-from=@var{file-name}
+@itemx -T @var{file-name}
+Get names to extract or create from file @var{file-name}.
 @end table
 
 If you give a single dash as a file name for @option{--files-from}, (i.e.,
@@ -6043,8 +6179,6 @@ command.
 
 Any number of @option{-T} options can be given in the command line.
 
-@FIXME{add bob's example, from his message on 2-10-97}
-
 The following example shows how to use @command{find} to generate a list of
 files smaller than 400K in length and put that list into a file
 called @file{small-files}.  You can then use the @option{-T} option to
@@ -6137,7 +6271,7 @@ dir
 @opindex add-file
 If you happen to have a file whose name starts with @samp{-},
 precede it with @option{--add-file} option to prevent it from
-being recognized as an option.  For example: @code{--add-file --my-file}.
+being recognized as an option.  For example: @code{--add-file=--my-file}.
 
 @menu
 * nul::
@@ -6148,9 +6282,11 @@ being recognized as an option.  For example: @code{--add-file --my-file}.
 
 @cindex File names, terminated by @code{NUL}
 @cindex @code{NUL} terminated file names
-The @option{--null} option causes @option{--files-from=@var{file-of-names}} (@option{-T @var{file-of-names}}) to read file
-names terminated by a @code{NUL} instead of a newline, so files whose
-names contain newlines can be archived using @option{--files-from}.
+The @option{--null} option causes
+@option{--files-from=@var{file-of-names}} (@option{-T @var{file-of-names}})
+to read file names terminated by a @code{NUL} instead of a newline, so
+files whose names contain newlines can be archived using
+@option{--files-from}. 
 
 @table @option
 @opindex null
@@ -6190,7 +6326,7 @@ $ @kbd{tar -c -v --null --files-from=long-files --file=big.tar}
 @cindex Excluding files by name and pattern
 @cindex Excluding files by file system
 To avoid operating on files whose names match a particular pattern,
-use the @option{--exclude} or @option{--exclude-from} options. 
+use the @option{--exclude} or @option{--exclude-from} options.
 
 @table @option
 @opindex exclude
@@ -6199,8 +6335,9 @@ Causes @command{tar} to ignore files that match the @var{pattern}.
 @end table
 
 @findex exclude
-The @option{--exclude=@var{pattern}} option prevents any file or member whose name
-matches the shell wildcard (@var{pattern}) from being operated on.
+The @option{--exclude=@var{pattern}} option prevents any file or
+member whose name matches the shell wildcard (@var{pattern}) from
+being operated on. 
 For example, to create an archive with all the contents of the directory
 @file{src} except for files whose names end in @file{.o}, use the
 command @samp{tar -cf src.tar --exclude='*.o' src}.
@@ -6223,9 +6360,6 @@ called as @w{@samp{tar -c -X foo .}} and the file @file{foo} contains a
 single line @file{*.o}, no files whose names end in @file{.o} will be
 added to the archive.
 
-@FIXME{do the exclude options files need to have stuff separated by
-newlines the same as the files-from option does?}
-
 @table @option
 @opindex exclude-caches
 @item --exclude-caches
@@ -6240,76 +6374,12 @@ well-known name @file{CACHEDIR.TAG} and having a standard header
 specified in @url{http://www.brynosaurus.com/cachedir/spec.html}.
 Various applications write cache directory tags into directories they
 use to hold regenerable, non-precious data, so that such data can be
-more easily excluded from backups. 
+more easily excluded from backups.
 
 @menu
-* controlling pattern-matching with exclude::
 * problems with exclude::
 @end menu
 
-@node controlling pattern-matching with exclude
-@unnumberedsubsec Controlling Pattern-Matching with the @code{exclude} Options
-
-Normally, a pattern matches a name if an initial subsequence of the
-name's components matches the pattern, where @samp{*}, @samp{?}, and
-@samp{[...]} are the usual shell wildcards, @samp{\} escapes wildcards,
-and wildcards can match @samp{/}.
-
-Other than optionally stripping leading @samp{/} from names
-(@pxref{absolute}), patterns and names are used as-is.  For
-example, trailing @samp{/} is not trimmed from a user-specified name
-before deciding whether to exclude it.
-
-However, this matching procedure can be altered by the options listed
-below.  These options accumulate.  For example:
-
-@smallexample
---ignore-case --exclude='makefile' --no-ignore-case ---exclude='readme'
-@end smallexample
-
-ignores case when excluding @samp{makefile}, but not when excluding
-@samp{readme}.
-
-@table @option
-@opindex anchored
-@opindex no-anchored
-@item --anchored
-@itemx --no-anchored
-If anchored, a pattern must match an initial subsequence
-of the name's components.  Otherwise, the pattern can match any
-subsequence.  Default is @option{--no-anchored}.
-
-@opindex ignore-case
-@opindex no-ignore-case
-@item --ignore-case
-@itemx --no-ignore-case
-When ignoring case, upper-case patterns match lower-case names and vice versa.
-When not ignoring case (the default), matching is case-sensitive.
-
-@opindex wildcards
-@opindex no-wildcards
-@item --wildcards
-@itemx --no-wildcards
-When using wildcards (the default), @samp{*}, @samp{?}, and @samp{[...]}
-are the usual shell wildcards, and @samp{\} escapes wildcards.
-Otherwise, none of these characters are special, and patterns must match
-names literally.
-
-@opindex wildcards-match-slash
-@opindex no-wildcards-match-slash
-@item --wildcards-match-slash
-@itemx --no-wildcards-match-slash
-When wildcards match slash (the default), a wildcard like @samp{*} in
-the pattern can match a @samp{/} in the name.  Otherwise, @samp{/} is
-matched only by @samp{/}.
-
-@end table
-
-The @option{--recursion} and @option{--no-recursion} options
-(@pxref{recurse}) also affect how exclude patterns are interpreted.  If
-recursion is in effect, a pattern excludes a name if it matches any of
-the name's parent directories.
-
 @node problems with exclude
 @unnumberedsubsec Problems with Using the @code{exclude} Options
 
@@ -6332,11 +6402,11 @@ You can sometimes confuse the meanings of @option{--exclude} and
 to be excluded are given as a pattern on the command line.  Use
 @option{--exclude-from} to introduce the name of a file which contains
 a list of patterns, one per line; each of these patterns can exclude
-zero, one, or many files. 
+zero, one, or many files.
 
 @item
-When you use @option{--exclude=@var{pattern}}, be sure to quote the @var{pattern}
-parameter, so @GNUTAR{} sees wildcard characters
+When you use @option{--exclude=@var{pattern}}, be sure to quote the
+@var{pattern} parameter, so @GNUTAR{} sees wildcard characters
 like @samp{*}.  If you do not do this, the shell might expand the
 @samp{*} itself using files at hand, so @command{tar} might receive a
 list of files instead of one pattern, or none at all, making the
@@ -6352,6 +6422,7 @@ $ @kbd{tar -c -f @var{archive.tar} --exclude '*.o' @var{directory}}
 rather than:
 
 @smallexample
+# @emph{Wrong!}
 $ @kbd{tar -c -f @var{archive.tar} --exclude *.o @var{directory}}
 @end smallexample
 
@@ -6362,11 +6433,14 @@ syntax, when using exclude options in @command{tar}.  If you try to use
 might fail.
 
 @item
+@FIXME{The change in semantics must have occurred before 1.11,
+so I doubt if it is worth mentioning at all. Anyway, should at
+least specify in which version the semantics changed.} 
 In earlier versions of @command{tar}, what is now the
 @option{--exclude-from} option was called @option{--exclude} instead.
 Now, @option{--exclude} applies to patterns listed on the command
 line and @option{--exclude-from} applies to patterns listed in a
-file. 
+file.
 
 @end itemize
 
@@ -6375,9 +6449,9 @@ file.
 
 @dfn{Globbing} is the operation by which @dfn{wildcard} characters,
 @samp{*} or @samp{?} for example, are replaced and expanded into all
-existing files matching the given pattern.  However, @command{tar} often
-uses wildcard patterns for matching (or globbing) archive members instead
-of actual files in the file system.  Wildcard patterns are also used for
+existing files matching the given pattern.  @GNUTAR{} can use wildcard
+patterns for matching (or globbing) archive members when extracting
+from or listing an archive.  Wildcard patterns are also used for
 verifying volume labels of @command{tar} archives.  This section has the
 purpose of explaining wildcard syntax for @command{tar}.
 
@@ -6422,7 +6496,149 @@ who don't have dan around.}
 Periods (@samp{.}) or forward slashes (@samp{/}) are not considered
 special for wildcard matches.  However, if a pattern completely matches
 a directory prefix of a matched string, then it matches the full matched
-string: excluding a directory also excludes all the files beneath it.
+string: thus, excluding a directory also excludes all the files beneath it.
+
+@menu
+* controlling pattern-matching::
+@end menu
+
+@node controlling pattern-matching
+@unnumberedsubsec Controlling Pattern-Matching
+
+For the purposes of this section, we call @dfn{exclusion members} all
+member names obtained while processing @option{--exclude} and
+@option{--exclude-from} options, and @dfn{inclusion members} those
+member names that were given in the command line or read from the file
+specified with @option{--files-from} option.
+
+These two pairs of member lists are used in the following operations:
+@option{--diff}, @option{--extract}, @option{--list},
+@option{--update}.
+
+There are no inclusion members in create mode (@option{--create} and
+@option{--append}), since in this mode the names obtained from the
+command line refer to @emph{files}, not archive members.
+
+By default, inclusion members are compared with archive members
+literally @footnote{Notice that earlier @GNUTAR{} versions used 
+globbing for inclusion members, which contradicted to UNIX98
+specification and was not documented. @xref{Changes}, for more
+information on this and other changes} and exclusion members are
+treated as globbing patterns.  For example:
+
+@smallexample
+@group
+$ @kbd{tar tf foo.tar}
+a.c
+b.c
+a.txt
+[remarks]
+# @i{Member names are used verbatim:}
+$ @kbd{tar -xf foo.tar -v '[remarks]'}
+[remarks]
+# @i{Exclude member names are globbed:}
+$ @kbd{tar -xf foo.tar -v --exclude '*.c'}
+a.txt
+[remarks]
+@end group
+@end smallexample
+
+This behavior can be altered by using the following options:
+
+@table @option
+@opindex wildcards
+@item --wildcards
+Treat all member names as wildcards. 
+
+@opindex no-wildcards
+@item --no-wildcards
+Treat all member names as literal strings.
+@end table
+
+Thus, to extract files whose names end in @samp{.c}, you can use:
+
+@smallexample
+$ @kbd{tar -xf foo.tar -v --wildcards '*.c'}
+a.c
+b.c
+@end smallexample
+
+@noindent
+Notice quoting of the pattern to prevent the shell from interpreting
+it.
+
+The effect of @option{--wildcards} option is cancelled by
+@option{--no-wildcards}.  This can be used to pass part of
+the command line arguments verbatim and other part as globbing
+patterns.  For example, the following invocation:
+
+@smallexample
+$ @kbd{tar -xf foo.tar --wildcards '*.txt' --no-wildcards '[remarks]'}
+@end smallexample
+
+@noindent
+instructs @command{tar} to extract from @file{foo.tar} all files whose
+names end in @samp{.txt} and the file named @file{[remarks]}.
+
+Normally, a pattern matches a name if an initial subsequence of the
+name's components matches the pattern, where @samp{*}, @samp{?}, and
+@samp{[...]} are the usual shell wildcards, @samp{\} escapes wildcards,
+and wildcards can match @samp{/}.
+
+Other than optionally stripping leading @samp{/} from names
+(@pxref{absolute}), patterns and names are used as-is.  For
+example, trailing @samp{/} is not trimmed from a user-specified name
+before deciding whether to exclude it.
+
+However, this matching procedure can be altered by the options listed
+below.  These options accumulate.  For example:
+
+@smallexample
+--ignore-case --exclude='makefile' --no-ignore-case ---exclude='readme'
+@end smallexample
+
+ignores case when excluding @samp{makefile}, but not when excluding
+@samp{readme}.
+
+@table @option
+@opindex anchored
+@opindex no-anchored
+@item --anchored
+@itemx --no-anchored
+If anchored, a pattern must match an initial subsequence
+of the name's components.  Otherwise, the pattern can match any
+subsequence.  Default is @option{--no-anchored} for exclusion members
+and @option{--anchored} inclusion members.
+
+@opindex ignore-case
+@opindex no-ignore-case
+@item --ignore-case
+@itemx --no-ignore-case
+When ignoring case, upper-case patterns match lower-case names and vice versa.
+When not ignoring case (the default), matching is case-sensitive.
+
+@opindex wildcards-match-slash
+@opindex no-wildcards-match-slash
+@item --wildcards-match-slash
+@itemx --no-wildcards-match-slash
+When wildcards match slash (the default for exclusion members), a
+wildcard like @samp{*} in the pattern can match a @samp{/} in the
+name.  Otherwise, @samp{/} is matched only by @samp{/}.
+
+@end table
+
+The @option{--recursion} and @option{--no-recursion} options
+(@pxref{recurse}) also affect how member patterns are interpreted.  If
+recursion is in effect, a pattern matches a name if it matches any of
+the name's parent directories.
+
+The following table summarizes pattern-matching default values:
+
+@multitable @columnfractions .3 .7
+@headitem Members @tab Default settings
+@item Inclusion @tab @option{--no-wildcards --anchored --no-wildcards-match-slash}
+@item Exclusion @tab @option{--wildcards --no-anchored --wildcards-match-slash}
+@end multitable
 
 @node after
 @section Operating Only on New Files
@@ -6492,20 +6708,19 @@ contents of the file were looked at).
 
 Date specifiers can have embedded spaces.  Because of this, you may need
 to quote date arguments to keep the shell from parsing them as separate
-arguments.
+arguments.  For example, the following command will add to the archive
+all the files modified less than two days ago:
 
-@FIXME{Need example of --newer-mtime with quoted argument.}
+@smallexample
+$ @kbd{tar -cf foo.tar --newer-mtime '2 days ago'}
+@end smallexample
 
 @quotation
 @strong{Please Note:} @option{--after-date} and @option{--newer-mtime}
-should not be used for incremental backups.  Some files (such as those
-in renamed directories) are not selected properly by these options.
-@xref{Incremental Dumps}.
+should not be used for incremental backups.  @xref{Incremental Dumps},
+for proper way of creating incremental backups.
 @end quotation
 
-@noindent
-@FIXME{which tells -- need to fill this in!}
-
 @node recurse
 @section Descending into Directories
 @UNREVISED
@@ -6516,10 +6731,8 @@ in renamed directories) are not selected properly by these options.
 
 @FIXME{arrggh!  this is still somewhat confusing to me. :-< }
 
-@FIXME{show dan bob's comments, from 2-10-97}
-
 Usually, @command{tar} will recursively explore all directories (either
-those given on the command line or through the @option{--files-from} 
+those given on the command line or through the @option{--files-from}
 option) for the various files they contain.  However, you may not always
 want @command{tar} to act this way.
 
@@ -6529,7 +6742,7 @@ into specified directories.  If you specify @option{--no-recursion}, you can
 use the @command{find} utility for hunting through levels of directories to
 construct a list of file names which you could then pass to @command{tar}.
 @command{find} allows you to be more selective when choosing which files to
-archive; see @ref{files} for more information on using @command{find} with
+archive; see @ref{files}, for more information on using @command{find} with
 @command{tar}, or look.
 
 @table @option
@@ -6546,26 +6759,34 @@ When you use @option{--no-recursion}, @GNUTAR{} grabs
 directory entries themselves, but does not descend on them
 recursively.  Many people use @command{find} for locating files they
 want to back up, and since @command{tar} @emph{usually} recursively
-descends on directories, they have to use the @samp{@w{!  -d}} option
-to @command{find} @FIXME{needs more explanation or a cite to another
-info file}as they usually do not want all the files in a directory.
-They then use the @option{--files-from} option to archive the files
-located via @command{find}.
+descends on directories, they have to use the @samp{@w{-not -type d}}
+test in their @command{find} invocation (@pxref{Type, Type, Type test,
+find, Finding Files}), as they usually do not want all the files in a
+directory. They then use the @option{--files-from} option to archive
+the files located via @command{find}.
 
 The problem when restoring files archived in this manner is that the
 directories themselves are not in the archive; so the
 @option{--same-permissions} (@option{--preserve-permissions},
 @option{-p}) option does not affect them---while users might really
 like it to.  Specifying @option{--no-recursion} is a way to tell
-@command{tar} to grab only the directory entries given to it, adding 
-no new files on its own.
+@command{tar} to grab only the directory entries given to it, adding
+no new files on its own.  To summarize, if you use @command{find} to
+create a list of files to be stored in an archive, use it as follows:
+
+@smallexample
+@group
+$ @kbd{find @var{dir} @var{tests} | \
+  tar -cf @var{archive} -T - --no-recursion}
+@end group
+@end smallexample
 
 The @option{--no-recursion} option also applies when extracting: it
 causes @command{tar} to extract only the matched directory entries, not
 the files under those directories.
 
-The @option{--no-recursion} option also affects how exclude patterns
-are interpreted (@pxref{controlling pattern-matching with exclude}).
+The @option{--no-recursion} option also affects how globbing patterns
+are interpreted (@pxref{controlling pattern-matching}).
 
 The @option{--no-recursion} and @option{--recursion} options apply to
 later options and operands, and can be overridden by later occurrences
@@ -6588,7 +6809,7 @@ other than @file{grape/concord}.
 @command{tar} will normally automatically cross file system boundaries in
 order to archive files which are part of a directory tree.  You can
 change this behavior by running @command{tar} and specifying
-@option{--one-file-system} (@option{-l}).  This option only affects files that are
+@option{--one-file-system}.  This option only affects files that are
 archived because they are in a directory that is being archived;
 @command{tar} will still archive files explicitly named on the command line
 or through @option{--files-from}, regardless of where they reside.
@@ -6596,7 +6817,6 @@ or through @option{--files-from}, regardless of where they reside.
 @table @option
 @opindex one-file-system
 @item --one-file-system
-@itemx -l
 Prevents @command{tar} from crossing file system boundaries when
 archiving.  Use in conjunction with any write operation.
 @end table
@@ -6608,13 +6828,10 @@ a directory is not on the same file system as the directory itself, then
 itself, @command{tar} will not archive anything beneath it; in other words,
 @command{tar} will not cross mount points.
 
-It is reported that using this option, the mount point is is archived,
-but nothing under it.
-
 This option is useful for making full or incremental archival backups of
 a file system.  If this option is used in conjunction with
-@option{--verbose} (@option{-v}), files that are excluded are mentioned by name on the
-standard error.
+@option{--verbose} (@option{-v}), files that are excluded are
+mentioned by name on the standard error.
 
 @menu
 * directory::                   Changing Directory
@@ -6787,7 +7004,7 @@ ignoring leading slashes when extracting.
 
 When you specify @option{--absolute-names} (@option{-P}),
 @command{tar} stores file names including all superior directory
-names, and preserves leading slashes. If you only invoked
+names, and preserves leading slashes.  If you only invoked
 @command{tar} from the root directory you would never need the
 @option{--absolute-names} option, but using this option
 may be more convenient than switching to root.
@@ -6826,6 +7043,7 @@ For example:
 
 @smallexample
 $ @kbd{(cd / && tar -c -f archive.tar home)}
+# @i{or}:
 $ @kbd{tar -c -f archive.tar -C  / home}
 @end smallexample
 
@@ -7314,39 +7532,80 @@ the opposite, i.e., read the compressed data from the standard input
 and produce uncompressed data on the standard output.
 @end table
 
-@FIXME{I have one question, or maybe it's a suggestion if there isn't a way
-to do it now.  I would like to use @option{--gzip}, but I'd also like
-the output to be fed through a program like @acronym{GNU}
-@command{ecc} (actually, right now that's @samp{exactly} what I'd like
-to use :-)), basically adding ECC protection on top of compression.
-It seems as if this should be quite easy to do, but I can't work out
-exactly how to go about it.  Of course, I can pipe the standard output
-of @command{tar} through @command{ecc}, but then I lose (though I
-haven't started using it yet, I confess) the ability to have
-@command{tar} use @command{rmt} for it's I/O (I think).
-
-I think the most straightforward thing would be to let me specify a
-general set of filters outboard of compression (preferably ordered,
-so the order can be automatically reversed on input operations, and
-with the options they require specifiable), but beggars shouldn't be
-choosers and anything you decide on would be fine with me.
-
-By the way, I like @command{ecc} but if (as the comments say) it can't
-deal with loss of block sync, I'm tempted to throw some time at adding
-that capability.  Supposing I were to actually do such a thing and
-get it (apparently) working, do you accept contributed changes to
-utilities like that?  (Leigh Clayton @file{loc@@soliton.com}, May 1995).
-
-Isn't that exactly the role of the @option{--use-compress-prog=@var{program}} option?
-I never tried it myself, but I suspect you may want to write a
-@var{prog} script or program able to filter stdin to stdout to
-way you want.  It should recognize the @option{-d} option, for when
-extraction is needed rather than creation.
-
-It has been reported that if one writes compressed data (through the
-@option{--gzip} or @option{--compress} options) to a DLT and tries to use
-the DLT compression mode, the data will actually get bigger and one will
-end up with less space on the tape.}
+@cindex gpg, using with tar
+@cindex gnupg, using with tar
+@cindex Using encrypted archives
+The @option{--use-compress-program} option, in particular, lets you
+implement your own filters, not necessarily dealing with
+compression/decomression.  For example, suppose you wish to implement
+PGP encryption on top of compression, using @command{gpg} (@pxref{Top,
+gpg, gpg ---- encryption and signing tool, gpg}).  The following
+script does that: 
+
+@smallexample
+@group
+#! /bin/sh
+case $1 in
+-d) gpg --decrypt - | gzip -d -c;;
+'') gzip -c | gpg -s ;;
+*)  echo "Unknown option $1">&2; exit 1;;
+esac
+@end group
+@end smallexample
+
+Suppose you name it @file{gpgz} and save it somewhere in your
+@env{PATH}.  Then the following command will create a commpressed
+archive signed with your private key:
+
+@smallexample
+$ @kbd{tar -cf foo.tar.gpgz --use-compress=gpgz .}
+@end smallexample
+
+@noindent
+Likewise, the following command will list its contents:
+
+@smallexample
+$ @kbd{tar -tf foo.tar.gpgz --use-compress=gpgz .}
+@end smallexample
+
+@ignore
+The above is based on the following discussion:
+
+     I have one question, or maybe it's a suggestion if there isn't a way
+     to do it now.  I would like to use @option{--gzip}, but I'd also like
+     the output to be fed through a program like @acronym{GNU}
+     @command{ecc} (actually, right now that's @samp{exactly} what I'd like
+     to use :-)), basically adding ECC protection on top of compression.
+     It seems as if this should be quite easy to do, but I can't work out
+     exactly how to go about it.  Of course, I can pipe the standard output
+     of @command{tar} through @command{ecc}, but then I lose (though I
+     haven't started using it yet, I confess) the ability to have
+     @command{tar} use @command{rmt} for it's I/O (I think).
+
+     I think the most straightforward thing would be to let me specify a
+     general set of filters outboard of compression (preferably ordered,
+     so the order can be automatically reversed on input operations, and
+     with the options they require specifiable), but beggars shouldn't be
+     choosers and anything you decide on would be fine with me.
+
+     By the way, I like @command{ecc} but if (as the comments say) it can't
+     deal with loss of block sync, I'm tempted to throw some time at adding
+     that capability.  Supposing I were to actually do such a thing and
+     get it (apparently) working, do you accept contributed changes to
+     utilities like that?  (Leigh Clayton @file{loc@@soliton.com}, May 1995).
+  Isn't that exactly the role of the
+  @option{--use-compress-prog=@var{program}} option? 
+  I never tried it myself, but I suspect you may want to write a
+  @var{prog} script or program able to filter stdin to stdout to
+  way you want.  It should recognize the @option{-d} option, for when
+  extraction is needed rather than creation.
+
+  It has been reported that if one writes compressed data (through the
+  @option{--gzip} or @option{--compress} options) to a DLT and tries to use
+  the DLT compression mode, the data will actually get bigger and one will
+  end up with less space on the tape.
+@end ignore
 
 @node sparse
 @subsection Archiving Sparse Files
@@ -7386,7 +7645,7 @@ archives the ``real contents'' of the file.  On extraction (using
 @option{--sparse} is not needed on extraction) any such
 files have holes created wherever the continuous stretches of zeros
 were found. Thus, if you use @option{--sparse}, @command{tar} archives
-won't take more space than the original. 
+won't take more space than the original.
 
 A file is sparse if it contains blocks of zeros whose existence is
 recorded, but that have no space allocated on disk.  When you specify
@@ -7410,7 +7669,7 @@ created in the future.  If you use @option{--sparse} while making file
 system backups as a matter of course, you can be assured the archive
 will never take more space on the media than the files take on disk
 (otherwise, archiving a disk filled with sparse files might take
-hundreds of tapes).  @FIXME-xref{incremental when node name is set.}
+hundreds of tapes).  @xref{Incremental Dumps}.
 @end quotation
 
 @command{tar} ignores the @option{--sparse} option when reading an archive.
@@ -7527,10 +7786,9 @@ files are easily and silently lost when files are given away.
 When writing an archive, @command{tar} writes the user id and user name
 separately.  If it can't find a user name (because the user id is not
 in @file{/etc/passwd}), then it does not write one.  When restoring,
-and doing a @code{chmod} like when you use @option{--same-permissions},
-@FIXME{same-owner?}it tries to look the name (if one was written)
-up in @file{/etc/passwd}.  If it fails, then it uses the user id
-stored in the archive instead.
+it tries to look the name (if one was written) up in
+@file{/etc/passwd}.  If it fails, then it uses the user id stored in
+the archive instead. 
 
 @opindex no-same-owner
 @item --no-same-owner
@@ -7601,7 +7859,8 @@ Same as both @option{--same-permissions} and @option{--same-order}.
 The @option{--preserve} option has no equivalent short option name.
 It is equivalent to @option{--same-permissions} plus @option{--same-order}.
 
-@FIXME{I do not see the purpose of such an option.  (Neither I.  FP.)}
+@FIXME{I do not see the purpose of such an option.  (Neither I.  FP.)
+Neither do I. --Sergey}
 
 @end table
 
@@ -8189,7 +8448,7 @@ maximum tape length, you might avoid the problem entirely.
 @itemx --new-volume-script=@var{file}
 Execute @file{file} at end of each tape.  This implies
 @option{--multi-volume} (@option{-M}).  @xref{info-script}, for a detailed
-description of this option. 
+description of this option.
 @end table
 
 @node Remote Tape Server
@@ -8255,7 +8514,7 @@ This means that the @option{--append}, @option{--concatenate}, and
 @option{--delete} commands will not work on any other kind of file.
 Some media simply cannot be backspaced, which means these commands and
 options will never be able to work on them. These non-backspacing
-media include pipes and cartridge tape drives. 
+media include pipes and cartridge tape drives.
 
 Some other media can be backspaced, and @command{tar} will work on them
 once @command{tar} is modified to do so.
@@ -8361,7 +8620,7 @@ factor, use the @option{--blocking-factor=@var{512-size}} (@option{-b
 @xref{Standard}.)  Each file written to the archive uses at least one
 full record.  As a result, using a larger record size can result in
 more wasted space for small files.  On the other hand, a larger record
-size can often be read and written much more efficiently. 
+size can often be read and written much more efficiently.
 
 Further complicating the problem is that some tape drives ignore the
 blocking entirely.  For these, a larger record size can still improve
@@ -8457,7 +8716,7 @@ The @option{--blocking-factor=@var{512-size}} (@option{-b
 The default blocking factor is typically 20 (i.e., 10240 bytes), but
 can be specified at installation.  To find out the blocking factor of
 an existing archive, use @samp{tar --list --file=@var{archive-name}}.
-This may not work on some devices. 
+This may not work on some devices.
 
 Records are separated by gaps, which waste space on the archive media.
 If you are archiving on magnetic tape, using a larger blocking factor
@@ -8637,7 +8896,7 @@ Reblock as we read (for reading 4.2BSD pipes).
 If @option{--read-full-records} is used, @command{tar}
 will not panic if an attempt to read a record from the archive does
 not return a full record. Instead, @command{tar} will keep reading
-until it has obtained a full 
+until it has obtained a full
 record.
 
 This option is turned on by default when @command{tar} is reading
@@ -8928,8 +9187,8 @@ responses:
 Request @command{tar} to explain possible responses
 @item q
 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 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.  This option can be disabled
 by giving @option{--restrict} command line option to @command{tar}.
@@ -8952,14 +9211,14 @@ If you want more elaborate behavior than this, give @command{tar} the
 be a program (or shell script) to be run instead of the normal
 prompting procedure.  It is executed without any command line
 arguments.  Additional data is passed to it via the following
-environment variables: 
+environment variables:
 
 @table @env
 @vrindex TAR_VERSION, info script environment variable
 @item TAR_VERSION
 @GNUTAR{} version number.
 
-@vrindex TAR_ARCHIVE, info script environment variable 
+@vrindex TAR_ARCHIVE, info script environment variable
 @item TAR_ARCHIVE
 The name of the archive @command{tar} is processing.
 
@@ -8969,13 +9228,13 @@ Ordinal number of the volume @command{tar} is about to start.
 
 @vrindex TAR_SUBCOMMAND, info script environment variable
 @item TAR_SUBCOMMAND
-Short option describing the operation @command{tar} is executed. 
+Short option describing the operation @command{tar} is executed.
 @xref{Operations}, for a complete list of subcommand options.
 
 @vrindex TAR_FORMAT, info script environment variable
 @item TAR_FORMAT
 Format of the archive being processed. @xref{Formats}, for a complete
-list of archive format names. 
+list of archive format names.
 @end table
 
 The info script can instruct @command{tar} to use new archive name,
@@ -8983,7 +9242,7 @@ 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.  
+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
@@ -8992,7 +9251,7 @@ fails on some operating systems or on some devices.  You can use the
 selects @option{--multi-volume} (@option{-M}) automatically. The
 @var{size} argument should then be the usable size of the tape in
 units of 1024 bytes. But for many devices, and floppy disks in
-particular, this option is never required for real, as far as we know. 
+particular, this option is never required for real, as far as we know.
 
 @cindex Volume number file
 @cindex volno file
@@ -9073,7 +9332,7 @@ the media, use the @option{--multi-volume} (@option{-M}) option in conjunction w
 the @option{--create} option (@pxref{create}).  A @dfn{multi-volume}
 archive can be manipulated like any other archive (provided the
 @option{--multi-volume} option is specified), but is stored on more
-than one tape or disk. 
+than one tape or disk.
 
 When you specify @option{--multi-volume}, @command{tar} does not report an
 error when it comes to the end of an archive volume (when reading), or
@@ -9120,7 +9379,7 @@ If a multi-volume archive was labeled using
 automatically label volumes which are added later.  To label
 subsequent volumes, specify @option{--label=@var{archive-label}} again
 in conjunction with the @option{--append}, @option{--update} or
-@option{--concatenate} operation. 
+@option{--concatenate} operation.
 
 @cindex Labeling multi-volume archives
 @FIXME{example}
@@ -9171,7 +9430,7 @@ volume label will have @samp{Volume @var{nnn}} appended to the name
 you give, where @var{nnn} is the number of the volume of the archive.
 (If you use the @option{--label=@var{volume-label}}) option when
 reading an archive, it checks to make sure the label on the tape
-matches the one you give. @xref{label}. 
+matches the one you give. @xref{label}.
 
 When @command{tar} writes an archive to tape, it creates a single
 tape file.  If multiple archives are written to the same tape, one
@@ -9227,7 +9486,7 @@ media, you can include a @dfn{label} entry---an archive member which
 contains the name of the archive---in the archive itself.  Use the
 @option{--label=@var{archive-label}} (@option{-V @var{archive-label}})
 option in conjunction with the @option{--create} operation to include
-a label entry in the archive as it is being created. 
+a label entry in the archive as it is being created.
 
 @table @option
 @item --label=@var{archive-label}
@@ -9392,13 +9651,13 @@ drives, and some other devices cannot be verified.
 One can explicitly compare an already made archive with the file
 system by using the @option{--compare} (@option{--diff}, @option{-d})
 option, instead of using the more automatic @option{--verify} option.
-@xref{compare}. 
+@xref{compare}.
 
 Note that these two options have a slightly different intent.  The
 @option{--compare} option checks how identical are the logical contents of some
 archive with what is on your disks, while the @option{--verify} option is
 really for checking if the physical contents agree and if the recording
-media itself is of dependable quality.  So, for the @option{--verify} 
+media itself is of dependable quality.  So, for the @option{--verify}
 operation, @command{tar} tries to defeat all in-memory cache pertaining to
 the archive, while it lets the speed optimization undisturbed for the
 @option{--compare} option.  If you nevertheless use @option{--compare} for
@@ -9417,7 +9676,7 @@ The @option{--verify} (@option{-W}) option will not work in
 conjunction with the @option{--multi-volume} (@option{-M}) option or
 the @option{--append} (@option{-r}), @option{--update} (@option{-u})
 and @option{--delete} operations.  @xref{Operations}, for more
-information on these operations. 
+information on these operations.
 
 Also, since @command{tar} normally strips leading @samp{/} from file
 names (@pxref{absolute}), a command like @samp{tar --verify -cf
@@ -9451,6 +9710,43 @@ version of this document is available at
 @GNUTAR{} documentation page}.
 
 @table @asis
+@item Use of globbing patterns when listing and extracting.
+
+Previous versions of GNU tar assumed shell-style globbing when
+extracting from or listing an archive.  For example:
+
+@smallexample
+$ @kbd{tar xf foo.tar '*.c'}
+@end smallexample
+
+would extract all files whose names end in @samp{.c}.  This behavior
+was not documented and was incompatible with traditional tar
+implementations.  Therefore, starting from version 1.15.91, GNU tar
+no longer uses globbing by default.  For example, the above invocation
+is now interpreted as a request to extract from the archive the file
+named @file{*.c}.
+
+To facilitate transition to the new behavior for those users who got
+used to the previous incorrect one, @command{tar} will print a warning
+if it finds out that a requested member was not found in the archive
+and its name looks like a globbing pattern.  For example:
+
+@smallexample
+$ @kbd{tar xf foo.tar  '*.c'}
+tar: Pattern matching characters used in file names. Please,
+tar: use --wildcards to enable pattern matching, or --no-wildcards to
+tar: suppress this warning.
+tar: *.c: Not found in archive
+tar: Error exit delayed from previous errors
+@end smallexample
+
+To treat member names as globbing patterns, use --wildcards option.
+If you want to tar to mimic the behavior of versions prior to 1.15.91,
+add this option to your @env{TAR_OPTIONS} variable.
+
+@xref{Wildcards}, for the detailed discussion of the use of globbing
+patterns by @GNUTAR{}.
+
 @item Use of short option @option{-o}.
 
 Earlier versions of @GNUTAR{} understood @option{-o} command line
@@ -9469,16 +9765,25 @@ up to and including 1.8.4 invoke tar with this option to produce
 distribution tarballs.  @xref{Formats,v7}, for the detailed discussion
 of this issue and its implications.
 
+@FIXME{Change the first argument to tar-formats if and when Automake
+people accept my patch to the documentation, and the new Automake is
+out --Sergey 2006-05-25}.
+@xref{Options, tar-v7, Changing Automake's Behavior,
+automake, GNU Automake}, for a description on how to use various
+archive formats with @command{automake}.
+
 Future versions of @GNUTAR{} will understand @option{-o} only as a
 synonym for @option{--no-same-owner}.
 
 @item Use of short option @option{-l}
 
 Earlier versions of @GNUTAR{} understood @option{-l} option as a
-synonym for @option{--one-file-system}.  Such usage is deprecated.
-For compatibility with other implementations future versions of
-@GNUTAR{} will understand this option as a synonym for
-@option{--check-links}.
+synonym for @option{--one-file-system}.  Since such usage contradicted
+to UNIX98 specification and harmed compatibility with other
+implementation, it was declared deprecated in version 1.14.  However,
+to facilitate transition to its new semantics, it was supported by
+versions 1.15 and 1.15.90.  The present use of @option{-l} as a short
+variant of @option{--check-links} was introduced in version 1.15.91.
 
 @item Use of options @option{--portability} and @option{--old-archive}
 
@@ -9507,7 +9812,7 @@ the option. For example, here is an excerpt from the actual @kbd{tar
   -c, --create               create a new archive
   -d, --diff, --compare      find differences between archive and
                              file system
-      --delete               delete from the archive 
+      --delete               delete from the archive
 @end verbatim
 
 @vrindex ARGP_HELP_FMT, environment variable
@@ -9683,14 +9988,14 @@ following text:
 @verbatim
  Main operation mode:
 
-  -A, --catenate, --concatenate   append tar files to 
+  -A, --catenate, --concatenate   append tar files to
                              an archive
   -c, --create               create a new archive
 @end verbatim
 @noindent
 @samp{Main operation mode:} is the group header.
 
-The default value is 1.  
+The default value is 1.
 @end deftypevr
 
 @deftypevr {Help Output} offset usage-indent
@@ -9748,4 +10053,3 @@ options. The options are listed without the preceeding double-dash.
 @c Local variables:
 @c texinfo-column-for-description: 32
 @c End:
-
This page took 0.091051 seconds and 4 git commands to generate.