Tar(1) cannot be positioned. +Fix:
Gary Winiger
gww at beatnix.UUCP
Sun Mar 13 06:30:46 AEST 1988
Subject: Tar(1) cannot be positioned. +Fix:
Index: bin/tar.c, man1/tar.1 4.3BSD
Description:
When a tar(1) aborts for some reason, there is no way to
restart it from when it left off.
Repeat-By:
Abort a tar x and try to restart it.
Fix:
Elxsi has added a new flag to tar(1), -K. K will skip an archive
until the named file is found and then extract or list the remainder
of the archive. We found this to be quite useful when an extract from
a large archive aborted. We didn't have to reextract all the files
that had already been extracted.
Enjoy.
Gary..
{ucbvax!sun,lll-lcc!lll-tis,amdahl!altos86,bridge2}!elxsi!gww
# This is a shell archive.
# Remove everything above and including the cut line.
# Then run the rest of the file through sh.
-----cut here-----cut here-----cut here-----cut here-----
#!/bin/sh
# shar: Shell Archiver
# Run the following text with /bin/sh to create:
# tar.c.diff
# tar.1.diff
# This archive created: Thu Dec 18 18:01:33 1986
echo shar: extracting tar.c.diff '(1794 characters)'
sed 's/^XX//' << \SHAR_EOF > tar.c.diff
XX*** /tmp/,RCSt1002165 Thu Dec 18 17:47:28 1986
XX--- tar.c Thu Dec 18 17:17:38 1986
XX***************
XX*** 1,5 ****
XX--- 1,8 ----
XX /*
XX * $Log: tar.c,v $
XX+ * Revision 1.2 86/12/18 17:16:26 gww
XX+ * Add -K flag to start extracting (-x) or listing (-t) at the named file.
XX+ *
XX * Revision 1.1 86/12/17 18:14:47 gww
XX * Initial revision
XX *
XX***************
XX*** 17,23 ****
XX #endif not lint
XX
XX #ifndef lint
XX! static char *ERcsId = "$Header: tar.c,v 1.1 86/12/17 18:14:47 gww Exp $ ENIX BSD";
XX static char sccsid[] = "@(#)tar.c 5.7 (Berkeley) 4/26/86";
XX #endif not lint
XX
XX--- 20,26 ----
XX #endif not lint
XX
XX #ifndef lint
XX! static char *ERcsId = "$Header: tar.c,v 1.2 86/12/18 17:16:26 gww Exp $ ENIX BSD";
XX static char sccsid[] = "@(#)tar.c 5.7 (Berkeley) 4/26/86";
XX #endif not lint
XX
XX***************
XX*** 85,90 ****
XX--- 88,95 ----
XX int hflag;
XX int Bflag;
XX int Fflag;
XX+ int Kflag; /* Start at the Named file. Ie, skip all files up to, but */
XX+ /* not including the named file. Get all files thereafter.*/
XX
XX int mt;
XX int term;
XX***************
XX*** 244,249 ****
XX--- 249,258 ----
XX Fflag++;
XX break;
XX
XX+ case 'K':
XX+ Kflag++;
XX+ break;
XX+
XX default:
XX fprintf(stderr, "tar: %c: unknown option\n", *cp);
XX usage();
XX***************
XX*** 1052,1059 ****
XX if (*argv == 0)
XX return (1);
XX for (cp = argv; *cp; cp++)
XX! if (prefix(*cp, dblock.dbuf.name))
XX return (1);
XX passtape();
XX return (0);
XX }
XX--- 1061,1074 ----
XX if (*argv == 0)
XX return (1);
XX for (cp = argv; *cp; cp++)
XX! if (prefix(*cp, dblock.dbuf.name)) {
XX! if (Kflag)
XX! /* Kflag means 'start' at the given */
XX! /* file. Now that we've found it */
XX! /* let 'er rip! */
XX! *argv = 0;
XX return (1);
XX+ }
XX passtape();
XX return (0);
XX }
SHAR_EOF
if test 1794 -ne "`wc -c tar.c.diff`"
then
echo shar: error transmitting tar.c.diff '(should have been 1794 characters)'
fi
echo shar: extracting tar.1.diff '(990 characters)'
sed 's/^XX//' << \SHAR_EOF > tar.1.diff
XX*** /tmp/,RCSt1002158 Thu Dec 18 17:46:51 1986
XX--- tar.1 Thu Dec 18 17:46:18 1986
XX***************
XX*** 1,6 ****
XX! .\" $Header: tar.1,v 1.1 86/12/18 17:20:18 gww Exp $ ENIX BSD
XX .\"
XX .\" $Log: tar.1,v $
XX .\" Revision 1.1 86/12/18 17:20:18 gww
XX .\" Initial revision
XX .\"
XX--- 1,9 ----
XX! .\" $Header: tar.1,v 1.2 86/12/18 17:45:53 gww Exp $ ENIX BSD
XX .\"
XX .\" $Log: tar.1,v $
XX+ .\" Revision 1.2 86/12/18 17:45:53 gww
XX+ .\" Add description of -K flag.
XX+ .\"
XX .\" Revision 1.1 86/12/18 17:20:18 gww
XX .\" Initial revision
XX .\"
XX***************
XX*** 163,168 ****
XX--- 166,179 ----
XX and from /etc, one might use
XX .ti +0.5i
XX tar c -C /usr include -C / etc
XX+ .TP 10
XX+ .B K
XX+ Forces
XX+ .I tar
XX+ to skip all files up to the first file named.
XX+ This file and all the files that follow on the archive are extracted
XX+ (key letter `x') or listed (key letter `t').
XX+ This option is useful for beginning in the middle of an archive.
XX .PP
XX Previous restrictions dealing with
XX .IR tar 's
SHAR_EOF
if test 990 -ne "`wc -c tar.1.diff`"
then
echo shar: error transmitting tar.1.diff '(should have been 990 characters)'
fi
# End of shell archive
exit 0
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list