Index: BOOK/final-system/common/tar.xml
===================================================================
--- BOOK/final-system/common/tar.xml	(revision 46f892a2e9d5198e9b21ae9bd37c33a48ac2011c)
+++ BOOK/final-system/common/tar.xml	(revision 3dc3c3ead2ff5705f5aae2d72f1f2840ae5a0d37)
@@ -25,4 +25,14 @@
   <sect2 role="installation">
     <title>Installation of Tar</title>
+
+    <para os="p1">The following patch adds a man page for <command>tar</command>:</para>
+
+<screen os="p2"><userinput>patch -Np1 -i ../&tar-man_page-patch;</userinput></screen>
+
+    <para os="p3">The following patch contains a fix for an issue that may occur
+    when <command>tar</command> calls an outside compression utility like
+    <command>bzip2</command>:</para>
+
+<screen os="p4"><userinput>patch -Np1 -i ../&tar-revert_pipe_drain-patch;</userinput></screen>
 
     <para os="a">Prepare Tar for compilation:</para>
Index: BOOK/introduction/common/changelog.xml
===================================================================
--- BOOK/introduction/common/changelog.xml	(revision 46f892a2e9d5198e9b21ae9bd37c33a48ac2011c)
+++ BOOK/introduction/common/changelog.xml	(revision 3dc3c3ead2ff5705f5aae2d72f1f2840ae5a0d37)
@@ -41,4 +41,8 @@
       <itemizedlist>
         <listitem>
+          <para>[jciccone] - Add the Tar Revert Pipe Drain patch and the Tar
+          Man Page patch.</para>
+        </listitem>
+        <listitem>
           <para>[jciccone] - Updated MPFR to 2.4.0.</para>
         </listitem>
@@ -48,5 +52,5 @@
         <listitem>
           <para>[jciccone] - Added patch that will fix a build issue with Kbd. The patch is
-                for the linux-headers in final-system.</para>
+          for the linux-headers in final-system.</para>
         </listitem>
         <listitem>
Index: BOOK/materials/common/patches.xml
===================================================================
--- BOOK/materials/common/patches.xml	(revision 46f892a2e9d5198e9b21ae9bd37c33a48ac2011c)
+++ BOOK/materials/common/patches.xml	(revision 3dc3c3ead2ff5705f5aae2d72f1f2840ae5a0d37)
@@ -155,4 +155,22 @@
 
     <varlistentry>
+      <term>Tar Man Page Patch - <token>&tar-man_page-patch-size;</token>:</term>
+      <listitem>
+        <para>Download: <ulink
+        url="&patches-root;&tar-man_page-patch;"/></para>
+        <para>MD5 sum: <literal>&tar-man_page-patch-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>Tar Revert Pipe Drain Patch - <token>&tar-revert_pipe_drain-patch-size;</token>:</term>
+      <listitem>
+        <para>Download: <ulink
+        url="&patches-root;&tar-revert_pipe_drain-patch;"/></para>
+        <para>MD5 sum: <literal>&tar-revert_pipe_drain-patch-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Zlib fPIC Patch - <token>&zlib-fpic-patch-size;</token>:</term> <listitem>
         <para>Download: <ulink
Index: BOOK/patches.ent
===================================================================
--- BOOK/patches.ent	(revision 46f892a2e9d5198e9b21ae9bd37c33a48ac2011c)
+++ BOOK/patches.ent	(revision 3dc3c3ead2ff5705f5aae2d72f1f2840ae5a0d37)
@@ -65,4 +65,12 @@
 <!ENTITY shadow-sysroot_hacks-patch-size "36 KB">
 
+<!ENTITY tar-man_page-patch "tar-&tar-version;-man_page-1.patch">
+<!ENTITY tar-man_page-patch-md5 "5bea72fd46830db0fed3c58b236f6ecf">
+<!ENTITY tar-man_page-patch-size "20 KB">
+
+<!ENTITY tar-revert_pipe_drain-patch "tar-&tar-version;-revert_pipe_drain-1.patch">
+<!ENTITY tar-revert_pipe_drain-patch-md5 "fd0543b6c8b4c033af0b702f28ec6608">
+<!ENTITY tar-revert_pipe_drain-patch-size "4 KB">
+
 <!ENTITY zlib-fpic-patch "zlib-&zlib-version;-fPIC-1.patch">
 <!ENTITY zlib-fpic-patch-md5 "545d60b20bfde6f53023de44438cef59">
Index: patches/tar-1.21-man_page-1.patch
===================================================================
--- patches/tar-1.21-man_page-1.patch	(revision 3dc3c3ead2ff5705f5aae2d72f1f2840ae5a0d37)
+++ patches/tar-1.21-man_page-1.patch	(revision 3dc3c3ead2ff5705f5aae2d72f1f2840ae5a0d37)
@@ -0,0 +1,560 @@
+Submitted By: Jim Gifford (jim at cross-lfs dot org)
+Date: 2009-01-04
+Initial Package Version: 1.21
+Origin: Debian
+Upstream Status: N/A
+Description: This Patch adds and man-page to TAR. This has been
+	     added as per numerous requests.
+
+diff -Naur tar-1.21.orig/doc/Makefile.am tar-1.21/doc/Makefile.am
+--- tar-1.21.orig/doc/Makefile.am	2008-04-14 05:03:12.000000000 -0700
++++ tar-1.21/doc/Makefile.am	2009-01-04 21:40:09.000000000 -0800
+@@ -17,6 +17,8 @@
+ ## along with this program; if not, write to the Free Software Foundation,
+ ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ 
++man_MANS = tar.1
++
+ info_TEXINFOS = tar.texi
+ tar_TEXINFOS = \
+  dumpdir.texi\
+diff -Naur tar-1.21.orig/doc/Makefile.in tar-1.21/doc/Makefile.in
+--- tar-1.21.orig/doc/Makefile.in	2008-12-26 14:41:47.000000000 -0800
++++ tar-1.21/doc/Makefile.in	2009-01-04 21:41:05.000000000 -0800
+@@ -143,13 +143,16 @@
+ MAKEINFOHTML = $(MAKEINFO) --html
+ AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+ DVIPS = dvips
+-am__installdirs = "$(DESTDIR)$(infodir)"
++am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+     *) f=$$p;; \
+   esac;
+ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
++man1dir = $(mandir)/man1
++NROFF = nroff
++MANS = $(man_MANS)
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+@@ -592,6 +595,7 @@
+ target_alias = @target_alias@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
++man_MANS = tar.1
+ info_TEXINFOS = tar.texi
+ tar_TEXINFOS = \
+  dumpdir.texi\
+@@ -805,6 +809,51 @@
+ 	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+ 	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+ 	done
++install-man1: $(man1_MANS) $(man_MANS)
++	@$(NORMAL_INSTALL)
++	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
++	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
++	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
++	for i in $$l2; do \
++	  case "$$i" in \
++	    *.1*) list="$$list $$i" ;; \
++	  esac; \
++	done; \
++	for i in $$list; do \
++	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
++	  else file=$$i; fi; \
++	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
++	  case "$$ext" in \
++	    1*) ;; \
++	    *) ext='1' ;; \
++	  esac; \
++	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
++	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
++	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
++	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
++	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
++	done
++uninstall-man1:
++	@$(NORMAL_UNINSTALL)
++	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
++	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
++	for i in $$l2; do \
++	  case "$$i" in \
++	    *.1*) list="$$list $$i" ;; \
++	  esac; \
++	done; \
++	for i in $$list; do \
++	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
++	  case "$$ext" in \
++	    1*) ;; \
++	    *) ext='1' ;; \
++	  esac; \
++	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
++	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
++	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
++	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
++	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
++	done
+ tags: TAGS
+ TAGS:
+ 
+@@ -843,9 +892,9 @@
+ 	  dist-info
+ check-am: all-am
+ check: check-am
+-all-am: Makefile $(INFO_DEPS)
++all-am: Makefile $(INFO_DEPS) $(MANS)
+ installdirs:
+-	for dir in "$(DESTDIR)$(infodir)"; do \
++	for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"; do \
+ 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ 	done
+ install: install-am
+@@ -892,7 +941,7 @@
+ 
+ info-am: $(INFO_DEPS)
+ 
+-install-data-am: install-info-am
++install-data-am: install-info-am install-man
+ 
+ install-dvi: install-dvi-am
+ 
+@@ -957,7 +1006,7 @@
+ 	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+ 	  done; \
+ 	else : ; fi
+-install-man:
++install-man: install-man1
+ 
+ install-pdf: install-pdf-am
+ 
+@@ -1001,7 +1050,9 @@
+ ps-am: $(PSS)
+ 
+ uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+-	uninstall-pdf-am uninstall-ps-am
++	uninstall-man uninstall-pdf-am uninstall-ps-am
++
++uninstall-man: uninstall-man1
+ 
+ .MAKE: install-am install-strip
+ 
+@@ -1010,14 +1061,15 @@
+ 	html-am info info-am install install-am install-data \
+ 	install-data-am install-dvi install-dvi-am install-exec \
+ 	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip installcheck \
+-	installcheck-am installdirs maintainer-clean \
++	install-info-am install-man install-man1 install-pdf \
++	install-pdf-am install-ps install-ps-am install-strip \
++	installcheck installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-aminfo maintainer-clean-generic \
+ 	maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+ 	mostlyclean-generic mostlyclean-vti pdf pdf-am ps ps-am \
+ 	uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
+-	uninstall-info-am uninstall-pdf-am uninstall-ps-am
++	uninstall-info-am uninstall-man uninstall-man1 \
++	uninstall-pdf-am uninstall-ps-am
+ 
+ 
+ header.texi: $(top_srcdir)/src/tar.h
+diff -Naur tar-1.21.orig/doc/tar.1 tar-1.21/doc/tar.1
+--- tar-1.21.orig/doc/tar.1	1969-12-31 16:00:00.000000000 -0800
++++ tar-1.21/doc/tar.1	2009-01-04 21:30:00.000000000 -0800
+@@ -0,0 +1,394 @@
++.\" @(#)tar.1 1.11.1 93/19/22 PJV;
++.TH TAR 1 "29 Aug 2007"
++.SH NAME
++tar \- The GNU version of the tar archiving utility
++.SH SYNOPSIS
++.B tar
++[
++.B \-
++]
++.B A \-\-catenate \-\-concatenate \||\| c \-\-create \||\| d \-\-diff \-\-compare \||\| \-\-delete \||\| r \-\-append \||\| t \-\-list \||\| u \-\-update \||\| x \-\-extract \-\-get 
++.I [ options ]
++.I pathname [ pathname ... ] 
++.SH DESCRIPTION
++.LP
++This manual page documents the GNU version of
++.B tar
++, an archiving program designed to store and extract files from 
++an archive file known as a 
++.IR tarfile.
++A 
++.IR tarfile 
++may be made on a tape drive, however, it is also common
++to write a
++.IR tarfile
++to a normal file. 
++The first argument to 
++.B tar
++must be one of the options:
++.BR Acdrtux ,
++followed by any optional functions.
++The final arguments to 
++.B tar
++are the names of the files or directories which should be archived. The use
++of a directory name always implies that the subdirectories below should be
++included in the archive.
++.SH EXAMPLES
++.TP
++.B tar \-xvvf foo.tar
++extract foo.tar
++.TP
++.B tar \-xvvzf foo.tar.gz
++extract gzipped foo.tar.gz
++.TP
++.B tar \-cvvf foo.tar foo/
++tar contents of folder foo in foo.tar
++.SH "FUNCTION LETTERS"
++.TP
++.B One of the following options must be used:
++.TP
++.B \-A, \-\-catenate, \-\-concatenate
++append tar files to an archive
++.TP
++.B \-c, \-\-create	
++create a new archive
++.TP
++.B \-d, \-\-diff, \-\-compare
++find differences between archive and file system
++.TP
++.B \-\-delete		
++delete from the archive (not for use on mag tapes!)
++.TP
++.B \-r, \-\-append		
++append files to the end of an archive
++.TP
++.B \-t, \-\-list		
++list the contents of an archive
++.TP
++.B \-u, \-\-update		
++only append files that are newer than copy in archive
++.TP
++.B \-x, \-\-extract, \-\-get		
++extract files from an archive
++.SH "OTHER OPTIONS"
++.TP
++.B \-\-allow\-name\-mangling
++re-enable handling of GNUTYPE_NAMES which is now disabled by default
++.TP
++.B \-\-anchored	
++force exclusion patterns to match initial subsequences
++.TP
++.B \-\-atime\-preserve	
++don't change access times on dumped files
++.TP
++.B \-a, \-\-auto\-compress
++with \-\-create, selects compression algorithm basing on the suffix
++of the archive file name
++.TP
++.B \-b, \-\-blocking\-factor N
++use record size of Nx512 bytes (default N=20)
++.TP
++.B \-B, \-\-read\-full\-records
++reblock as we read (for reading 4.2BSD pipes)
++.TP
++.B \-\-backup[\=TYPE]
++back up files instead of overwriting (TYPE=numbered, existing, simple)
++.TP 
++.B \-C, \-\-directory DIR	
++change to directory DIR
++.TP 
++.B \-\-checkpoint		
++print periodic checkpoints
++.TP
++.B \-\-checkpoint\-action
++this action allows to specify an action to be executed upon hitting a
++checkpoint.  Recognized actions are: dot, echo (the default),
++echo\=string, ttyout\=string, exec\=cmdline, and sleep\=value.  Any number
++of `\-\-checkpoint\-action' options can be specified, the actions will be
++executed in order of their appearance in the command line.
++.TP
++.B \-\-check\-device
++enables comparing device numbers.  This is the default.
++.TP
++.B \-\-no\-check\-device
++disables comparing device numbers during preparatory stage of an 
++incremental dump.  
++This allows to avoid creating full dumps if the device numbers change 
++(e.g. when using an LVM snapshot)
++.TP
++.B \-\-exclude=PATTERN
++exclude files matching PATTERN
++.TP
++.B \-f, \-\-file [HOSTNAME:]F	
++use archive file or device F (otherwise value of TAPE environment variable; if unset, "\-", meaning stdin/stdout)
++.TP 
++.B \-F, \-\-info\-script F, \-\-new\-volume\-script F 
++run script at end of each tape (implies \-M)
++.TP
++.B \-\-force\-local		
++archive file is local even if it has a colon
++.TP
++.B \-G, \-\-incremental	
++create/list/extract old GNU-format incremental backup
++.TP
++.B \-g, \-\-listed\-incremental F 
++create/list/extract new GNU-format incremental backup
++.TP
++.B \-\-group G
++set group to G while adding files
++.TP 
++.B \-h, \-\-dereference	
++don't dump symlinks; dump the files they point to
++.TP
++.B \-\-hard\-dereference
++during archive creation, dereferences hard links and stores the files
++they refer to, instead of creating usual hard link members (type '1')
++.TP
++.B \-\-help
++print help message
++.TP
++.B \-i, \-\-ignore\-zeros	
++ignore blocks of zeros in archive (normally mean EOF)
++.TP
++.B \-\-ignore\-case
++ignore case when excluding files
++.TP
++.B \-\-ignore\-failed\-read	
++don't exit with non-zero status on unreadable files
++.TP
++.B \-j, \-\-bzip2
++filter archive through bzip2, use to decompress .bz2 files.
++WARNING: some previous versions of tar used option \-I to 
++filter through bzip2.  When writing scripts, use \-\-bzip2 
++instead of \-j so that both older and newer tar versions
++will work.
++.TP
++.B \-k, \-\-keep\-old\-files	
++keep existing files; don't overwrite them from archive
++.TP
++.B \-K, \-\-starting\-file F	
++begin at file F in the archive
++.TP
++.B \-\-lzma
++selects LZMA compression algorithm
++.TP
++.B \-l, \-\-check\-links
++print a message if not all links are dumped
++.TP
++.B \-L, \-\-tape\-length N	
++change tapes after writing N*1024 bytes
++.TP
++.B \-m, \-\-touch
++don't extract file modified time
++.TP
++.BI \-\-transform " expr"
++applies filename transformations.  
++The argument to this option can be a list of replace expressions, separated
++by semicolon (as in `sed').
++Filename transformations are applied to symbolic link targets during both
++creation and extraction.
++This option may be specified any number of
++times, the specified transofrmations will be applied in turn.
++.TP
++.B \-M, \-\-multi\-volume	
++create/list/extract multi-volume archive
++.TP
++.B \-\-mode M
++set permissions to M while adding files
++.TP
++.B \-N, \-\-after\-date DATE, \-\-newer DATE
++only store files newer than DATE
++.TP
++.B \-\-newer\-mtime DATE
++only store files whose contents have changed after DATE
++.TP
++.B \-\-no\-anchored
++allow exclusion patterns to match any substring (the default)
++.TP
++.B \-\-no\-ignore\-case
++match patterns case sensitively (the default)
++.TP
++.B \-\-no\-recursion
++do not recurse into subdirectories
++.TP
++.B \-o, \-\-no\-same\-owner
++extract files with owner set to current user (the default for non-root
++users)
++.TP
++.B \-\-no\-same\-permissions
++apply umask to extracted files (the default for non-root users)
++.TP
++.B \-\-no\-wildcards
++do not use wildcards when excluding files
++.TP
++.B \-\-no\-wildcards\-match\-slash
++don't let wildcards match "/" when excluding files
++.TP
++.B \-\-null
++for \-T, use "NUL" instead of newline as filename terminator
++.TP
++.B \-\-numeric\-owner
++always use numbers for user/group names
++.TP
++.B \-\-old\-archive, \-\-portability	
++write a V7 format archive, rather than ANSI format.  These options are
++deprecated, please use 
++.B \-\-format\=v7
++instead.
++.TP
++.B \-\-one\-file\-system	
++stay in local file system when creating an archive
++.TP
++.B \-\-owner O
++set owner to O while adding files
++.TP 
++.B \-O, \-\-to\-stdout		
++extract files to standard output
++.TP
++.B \-p, \-\-same\-permissions, \-\-preserve\-permissions 
++ignore umask when extracting files (the default for root)
++.TP
++.B \-P, \-\-absolute\-names
++don't strip leading `/'s from file names
++.TP
++.B \-\-posix
++create POSIX compliant archive.  This option is deprecated,
++please use 
++.B \-\-format\=posix
++instead.
++.TP
++.B \-\-preserve		
++like \-p \-s
++.TP
++.B \-R, \-\-block\-number	
++show block number within archive with each message
++.TP
++.B \-\-record\-size SIZE
++use SIZE bytes per record
++.TP
++.B \-\-recursion
++recurse into directories (the default)
++.TP
++.B \-\-recursive\-unlink
++remove existing directories before extracting directories of the same
++name
++.TP 
++.B \-\-remove\-files		
++remove files after adding them to the archive
++.TP
++.B \-\-rsh\-command=CMD
++Use remote COMMAND instead of `rsh'.  This option exists so that
++people who use something other than the standard `rsh' (e.g., a
++Kerberized `rsh') can access a remote device.
++.TP
++.B \-S, \-\-sparse		
++handle sparse files efficiently
++.TP
++.B \-s, \-\-same\-order, \-\-preserve\-order	
++list of names to extract is sorted to match archive
++.TP
++.B \-\-same\-owner		
++extract files with owner as specified in archive (the default for
++root)
++.TP
++.B \-\-show\-omitted\-dirs
++mention directories that are being skipped over
++.TP
++.BI \-\-strip\-components " n"
++Strip the given number of leading directory components
++.TP
++.B \-\-strip, \-\-strip\-components N
++Strips the first N components from archive members' pathnames when
++unpacking.
++.TP
++.B \-\-suffix SUFFIX
++append SUFFIX to make backup files (default ~)
++.TP 
++.B \-T, \-\-files\-from F	
++get names to extract or archive from file F
++.TP
++.B \-\-totals
++display total bytes written after creating an archive
++.TP
++.B \-U, \-\-unlink\-first
++unlink & recreate files instead of overwriting
++.TP
++.B \-\-use\-compress\-program PROG
++filter the archive through PROG (which must accept \-d)
++.TP
++.B \-v, \-\-verbose		
++verbosely list files processed
++.TP
++.B \-V, \-\-label NAME	
++create archive with volume name NAME
++.TP 
++.B \-\-version		
++print tar program version number
++.TP
++.B \-\-volno\-file F
++keep track of current volume (of a multi-volume archive) in F
++.TP
++.B \-w, \-\-interactive, \-\-confirmation	
++ask for confirmation for every action
++.TP
++.B \-W, \-\-verify		
++attempt to verify the archive after writing it
++.TP
++.B \-\-wildcards
++use wildcards when excluding files (the default)
++.TP
++.B \-\-wildcards\-match\-slash
++allow wildcards to match "/" (the default)
++.TP
++.B \-X, \-\-exclude\-from=FILE	
++exclude files matching patterns listed in FILE
++.TP
++.B \-Z, \-\-compress, \-\-uncompress      	
++filter the archive through compress
++.TP 
++.B \-z, \-\-gzip, \-\-gunzip, \-\-ungzip		
++filter the archive through gzip
++.TP
++.B \-[0\-7][lmh]		
++specify drive and density
++.SH ENVIRONMENT
++The behavior of tar is controlled by the following environment variables,
++among others:
++.TP
++.B TAPE
++Device or file to use for the archive if \fB--file\fR is not specified.
++If this environment variable is unset, use stdin or stdout instead.
++.TP
++.B TAR_OPTIONS
++Options to prepend to those specified on the command line, separated by
++whitespace.  Embedded backslashes may be used to escape whitespace or
++backslashes within an option.
++.LP
++In addition, the value of the blocking factor is made available to info
++and checkpoint scripts via environment variable 
++.B TAR_BLOCKING_FACTOR.
++.SH BUGS
++.LP
++The GNU folks, in general, abhor man pages and create info documents instead.
++The maintainer of \fBtar\fR falls into this category.  Thus, this man page may 
++not be complete nor current, and it is included in the Cross-LFS Build 
++because man is a great tool :).  This man page was taken from Debian 
++Linux and has since been lovingly updated here.
++
++If you want to read the complete documentation for GNU tar, please refer to
++the online version at 
++.PP
++.ce 1
++<http://www.gnu.org/software/tar/manual/index.html>
++.PP
++This man page was created for the Cross LFS Build.  It does not describe
++all of the functionality of tar, and it is often out of date.  Patches to 
++improve the coverage and/or accuracy of this man page are appreciated, and
++should be filed as tickets in bug reporting system for Cross-LFS and
++not submitted to the GNU tar maintainers. The URL for the Cross-LFS bug
++reporting system is at
++.PP
++.ce 1
++<http://trac.cross-lfs.org>
++.PP
++
Index: patches/tar-1.21-revert_pipe_drain-1.patch
===================================================================
--- patches/tar-1.21-revert_pipe_drain-1.patch	(revision 3dc3c3ead2ff5705f5aae2d72f1f2840ae5a0d37)
+++ patches/tar-1.21-revert_pipe_drain-1.patch	(revision 3dc3c3ead2ff5705f5aae2d72f1f2840ae5a0d37)
@@ -0,0 +1,109 @@
+Submitted By: Jim Gifford (jim at cross-lfs dot org)
+Date: 2009-01-04
+Initial Package Version: 1.21
+Origin: Tar Bug List
+Upstream Status: Applied
+Description: http://lists.gnu.org/archive/html/bug-tar/2008-12/msg00028.html
+
+diff -Naur tar-1.21.orig/src/buffer.c tar-1.21/src/buffer.c
+--- tar-1.21.orig/src/buffer.c	2008-11-30 04:30:29.000000000 -0800
++++ tar-1.21/src/buffer.c	2009-01-04 20:04:57.000000000 -0800
+@@ -848,6 +848,8 @@
+         flush_archive ();
+     }
+ 
++  sys_drain_input_pipe ();
++
+   compute_duration ();
+   if (verify_option)
+     verify_volume ();
+@@ -855,7 +857,7 @@
+   if (rmtclose (archive) != 0)
+     close_error (*archive_name_cursor);
+ 
+-  sys_wait_for_child (child_pid, hit_eof);
++  sys_wait_for_child (child_pid);
+ 
+   tar_stat_destroy (&current_stat_info);
+   if (save_name)
+diff -Naur tar-1.21.orig/src/common.h tar-1.21/src/common.h
+--- tar-1.21.orig/src/common.h	2008-11-30 04:30:29.000000000 -0800
++++ tar-1.21/src/common.h	2009-01-04 20:04:57.000000000 -0800
+@@ -699,7 +699,8 @@
+ 
+ void sys_detect_dev_null_output (void);
+ void sys_save_archive_dev_ino (void);
+-void sys_wait_for_child (pid_t, bool);
++void sys_drain_input_pipe (void);
++void sys_wait_for_child (pid_t);
+ void sys_spawn_shell (void);
+ bool sys_compare_uid (struct stat *a, struct stat *b);
+ bool sys_compare_gid (struct stat *a, struct stat *b);
+diff -Naur tar-1.21.orig/src/system.c tar-1.21/src/system.c
+--- tar-1.21.orig/src/system.c	2008-11-30 04:30:30.000000000 -0800
++++ tar-1.21/src/system.c	2009-01-04 20:04:57.000000000 -0800
+@@ -1,7 +1,6 @@
+ /* System-dependent calls for tar.
+ 
+-   Copyright (C) 2003, 2004, 2005, 2006, 2007,
+-   2008 Free Software Foundation, Inc.
++   Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+@@ -52,7 +51,12 @@
+ }
+ 
+ void
+-sys_wait_for_child (pid_t child_pid, bool eof)
++sys_drain_input_pipe (void)
++{
++}
++
++void
++sys_wait_for_child (pid_t child_pid)
+ {
+ }
+ 
+@@ -156,8 +160,26 @@
+ 			 && archive_stat.st_ino == dev_null_stat.st_ino));
+ }
+ 
++/* Manage to fully drain a pipe we might be reading, so to not break it on
++   the producer after the EOF block.  FIXME: one of these days, GNU tar
++   might become clever enough to just stop working, once there is no more
++   work to do, we might have to revise this area in such time.  */
++
++void
++sys_drain_input_pipe (void)
++{
++  size_t r;
++
++  if (access_mode == ACCESS_READ
++      && ! _isrmt (archive)
++      && (S_ISFIFO (archive_stat.st_mode) || S_ISSOCK (archive_stat.st_mode)))
++    while ((r = rmtread (archive, record_start->buffer, record_size)) != 0
++	   && r != SAFE_READ_ERROR)
++      continue;
++}
++
+ void
+-sys_wait_for_child (pid_t child_pid, bool eof)
++sys_wait_for_child (pid_t child_pid)
+ {
+   if (child_pid)
+     {
+@@ -171,11 +193,8 @@
+ 	  }
+ 
+       if (WIFSIGNALED (wait_status))
+-	{
+-	  int sig = WTERMSIG (wait_status);
+-	  if (!(!eof && sig == SIGPIPE))
+-	    ERROR ((0, 0, _("Child died with signal %d"), sig));
+-	}
++	ERROR ((0, 0, _("Child died with signal %d"),
++		WTERMSIG (wait_status)));
+       else if (WEXITSTATUS (wait_status) != 0)
+ 	ERROR ((0, 0, _("Child returned status %d"),
+ 		WEXITSTATUS (wait_status)));
