Latest GNU tar

This is the version used in most Linux dists
This commit is contained in:
Tom G. Christensen
2004-01-29 14:13:13 +00:00
committed by tgc
parent 6933cf9e0f
commit 87fd44a463
9 changed files with 597 additions and 0 deletions

View File

@@ -0,0 +1,339 @@
--- tar-1.13.18/tar.1.manpage Mon Oct 30 12:52:03 2000
+++ tar-1.13.18/tar.1 Mon Oct 30 12:56:15 2000
@@ -0,0 +1,336 @@
+.\" @(#)tar.1 1.13.14 2000/10/30 Bero;
+.TH TAR 1 "30 October 2000"
+.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 \||\| r --append \||\| t --list \||\| u --update \||\| x -extract --get
+[
+.B --atime-preserve
+]
+[
+.B -b, --block-size N
+]
+[
+.B -B, --read-full-blocks
+]
+[
+.B -C, --directory DIR
+]
+[
+.B --checkpoint
+]
+[
+.B -f, --file [HOSTNAME:]F
+]
+[
+.B --force-local
+]
+[
+.B -F, --info-script F --new-volume-script F
+]
+[
+.B -G, --incremental
+]
+[
+.B -g, --listed-incremental F
+]
+[
+.B -h, --dereference
+]
+[
+.B -i, --ignore-zeros
+]
+[
+.B -j, -I, --bzip
+]
+[
+.B --ignore-failed-read
+]
+[
+.B -k, --keep-old-files
+]
+[
+.B -K, --starting-file F
+]
+[
+.B -l, --one-file-system
+]
+[
+.B -L, --tape-length N
+]
+[
+.B -m, --modification-time
+]
+[
+.B -M, --multi-volume
+]
+[
+.B -N, --after-date DATE, --newer DATE
+]
+[
+.B -o, --old-archive, --portability
+]
+[
+.B -O, --to-stdout
+]
+[
+.B -p, --same-permissions, --preserve-permissions
+]
+[
+.B -P, --absolute-paths
+]
+[
+.B --preserve
+]
+[
+.B -R, --record-number
+]
+[
+.B --remove-files
+]
+[
+.B -s, --same-order, --preserve-order
+]
+[
+.B --same-owner
+]
+[
+.B -S, --sparse
+]
+[
+.B -T, --files-from=F
+]
+[
+.B --null
+]
+[
+.B --totals
+]
+[
+.B -v, --verbose
+]
+[
+.B -V, --label NAME
+]
+[
+.B --version
+]
+[
+.B -w, --interactive, --confirmation
+]
+[
+.B -W, --verify
+]
+[
+.B --exclude FILE
+]
+[
+.B -X, --exclude-from FILE
+]
+[
+.B -Z, --compress, --uncompress
+]
+[
+.B -z, --gzip, --ungzip
+]
+[
+.B --use-compress-program PROG
+]
+[
+.B --block-compress
+]
+[
+.B -[0-7][lmh]
+]
+.TP
+.I filename1 [ filename2, ... filenameN ]
+.TP
+.I directory1 [ directory2, ...directoryN ]
+.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 "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 --atime-preserve
+don't change access times on dumped files
+.TP
+.B -b, --block-size N
+block size of Nx512 bytes (default N=20)
+.TP
+.B -B, --read-full-blocks
+reblock as we read (for reading 4.2BSD pipes)
+.TP
+.B -C, --directory DIR
+change to directory DIR
+.TP
+.B --checkpoint
+print directory names while reading the archive
+.TP
+.B -f, --file [HOSTNAME:]F
+use archive file or device F (default /dev/rmt0)
+.TP
+.B --force-local
+archive file is local even if has a colon
+.TP
+.B -F, --info-script F --new-volume-script F
+run script at end of each tape (implies -M)
+.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 -h, --dereference
+don't dump symlinks; dump the files they point to
+.TP
+.B -i, --ignore-zeros
+ignore blocks of zeros in archive (normally mean EOF)
+.TP
+.B -j, -I, --bzip
+filter the archive through bzip2. Note: -I is deprecated and may get a
+different meaning in the near future.
+.TP
+.B --ignore-failed-read
+don't exit with non-zero status on unreadable files
+.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 -l, --one-file-system
+stay in local file system when creating an archive
+.TP
+.B -L, --tape-length N
+change tapes after writing N*1024 bytes
+.TP
+.B -m, --modification-time
+don't extract file modified time
+.TP
+.B -M, --multi-volume
+create/list/extract multi-volume archive
+.TP
+.B -N, --after-date DATE, --newer DATE
+only store files newer than DATE
+.TP
+.B -o, --old-archive, --portability
+write a V7 format archive, rather than ANSI format
+.TP
+.B -O, --to-stdout
+extract files to standard output
+.TP
+.B -p, --same-permissions, --preserve-permissions
+extract all protection information
+.TP
+.B -P, --absolute-paths
+don't strip leading `/'s from file names
+.TP
+.B --preserve
+like -p -s
+.TP
+.B -R, --record-number
+show record number within archive with each message
+.TP
+.B --remove-files
+remove files after adding them to the archive
+.TP
+.B -s, --same-order, --preserve-order
+list of names to extract is sorted to match archive
+.TP
+.B --same-owner
+create extracted files with the same ownership
+.TP
+.B -S, --sparse
+handle sparse files efficiently
+.TP
+.B -T, --files-from=F
+get names to extract or create from file F
+.TP
+.B --null
+-T reads null-terminated names, disable -C
+.TP
+.B --totals
+print total bytes written with --create
+.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 -w, --interactive, --confirmation
+ask for confirmation for every action
+.TP
+.B -W, --verify
+attempt to verify the archive after writing it
+.TP
+.B --exclude FILE
+exclude file FILE
+.TP
+.B -X, --exclude-from FILE
+exclude files listed in FILE
+.TP
+.B -Z, --compress, --uncompress
+filter the archive through compress
+.TP
+.B -z, --gzip, --ungzip
+filter the archive through gzip
+.TP
+.B --use-compress-program PROG
+filter the archive through PROG (which must accept -d)

View File

@@ -0,0 +1,23 @@
--- tar-1.13.19/src/extract.c~ Sat Jan 13 00:59:29 2001
+++ tar-1.13.19/src/extract.c Mon Aug 20 08:50:49 2001
@@ -932,10 +932,19 @@
{
struct stat st1, st2;
int e;
+ size_t skiplinkcrud;
+
+ if (absolute_names_option)
+ skiplinkcrud = 0;
+ else {
+ skiplinkcrud = FILESYSTEM_PREFIX_LEN (current_link_name);
+ while (ISSLASH (current_link_name[skiplinkcrud]))
+ skiplinkcrud++;
+ }
/* MSDOS does not implement links. However, djgpp's link() actually
copies the file. */
- status = link (current_link_name, CURRENT_FILE_NAME);
+ status = link (current_link_name + skiplinkcrud, CURRENT_FILE_NAME);
if (status == 0)
break;

View File

@@ -0,0 +1,15 @@
--- tar-1.13.19/src/incremen.c.sux Thu May 17 14:16:47 2001
+++ tar-1.13.19/src/incremen.c Thu May 17 14:17:00 2001
@@ -182,8 +182,11 @@
struct directory *directory; /* for checking if already already seen */
enum children children;
+ if (! dirp) {
- if (! dirp)
savedir_error (path);
+ errno = 1;
+ return NULL;
+ }
errno = 0;
name_buffer_size = strlen (path) + NAME_FIELD_SIZE;

View File

@@ -0,0 +1,19 @@
--- tar-1.13.22/configure.ac.rt Thu Sep 13 14:06:03 2001
+++ tar-1.13.22/configure.ac Thu Sep 13 14:06:50 2001
@@ -166,12 +166,13 @@
#
# Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
# Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
+# We don't want that dependency, though. Check for something weird. ;)
tar_LDADD=
tar_save_LIBS="$LIBS"
-AC_SEARCH_LIBS(clock_gettime, [rt posix4])
-AC_CHECK_FUNCS(clock_gettime)
+AC_SEARCH_LIBS(clock_gettyme, [rt posix4])
+AC_CHECK_FUNCS(clock_gettyme)
if test " $LIBS" != " $tar_save_LIBS"; then
- tar_LDADD="$ac_cv_search_clock_gettime"
+ tar_LDADD="$ac_cv_search_clock_gettyme"
LIBS="$tar_save_LIBS"
fi
AC_SUBST(tar_LDADD)

View File

@@ -0,0 +1,22 @@
--- tar-1.13.25/src/tar.c 2001-09-21 02:11:27.000000000 +0200
+++ tar-1.13.25/src/tar.c 2002-06-16 18:19:04.000000000 +0200
@@ -534,7 +534,7 @@
/* Allocate a new argument array, and copy program name in it. */
new_argc = argc - 1 + strlen (argv[1]);
- new_argv = xmalloc (new_argc * sizeof (char *));
+ new_argv = xmalloc ((new_argc + 1) * sizeof (char *));
in = argv;
out = new_argv;
*out++ = *in++;
@@ -562,6 +562,10 @@
while (in < argv + argc)
*out++ = *in++;
+ /* K&R standard requires a NULL termination */
+
+ *out = NULL;
+
/* Replace the old option list by the new one. */
argc = new_argc;

View File

@@ -0,0 +1,11 @@
--- tar-1.13.25/configure.ac.253 Tue Apr 9 19:21:01 2002
+++ tar-1.13.25/configure.ac Tue Apr 9 19:21:22 2002
@@ -234,7 +234,7 @@
jm_FUNC_MALLOC
jm_FUNC_MKTIME
jm_FUNC_REALLOC
-test "$ac_cv_func_strstr" = yes || LIBOBJS="$LIBOBJS strstr.o"
+test "$ac_cv_func_strstr" = yes || AC_LIBOBJ(strstr)
AC_CACHE_CHECK(for remote shell, tar_cv_path_RSH,
[if test -n "$RSH"; then

View File

@@ -0,0 +1,16 @@
--- tar-1.13.25/src/misc.c.orig Mon Aug 27 00:14:26 2001
+++ tar-1.13.25/src/misc.c Mon May 27 11:29:31 2002
@@ -214,6 +214,13 @@
return 0;
}
while (! ISSLASH (*p));
+
+ do
+ {
+ if (! *p++)
+ return 0;
+ }
+ while ( ISSLASH (*p));
}
}

View File

@@ -0,0 +1,36 @@
--- tar-1.13.25/src/create.c.sock Tue Oct 23 15:00:52 2001
+++ tar-1.13.25/src/create.c Tue Oct 23 15:02:33 2001
@@ -1128,6 +1128,16 @@
}
else if (is_avoided_name (p))
return;
+ else if (S_ISSOCK (current_stat.st_mode))
+ {
+ WARN ((0, 0, _("%s: socket ignored"), quotearg_colon (p)));
+ return;
+ }
+ else if (S_ISDOOR (current_stat.st_mode))
+ {
+ WARN ((0, 0, _("%s: door ignored"), quotearg_colon (p)));
+ return;
+ }
else
{
/* Check for multiple links.
@@ -1507,16 +1517,6 @@
type = BLKTYPE;
else if (S_ISFIFO (current_stat.st_mode))
type = FIFOTYPE;
- else if (S_ISSOCK (current_stat.st_mode))
- {
- WARN ((0, 0, _("%s: socket ignored"), quotearg_colon (p)));
- return;
- }
- else if (S_ISDOOR (current_stat.st_mode))
- {
- WARN ((0, 0, _("%s: door ignored"), quotearg_colon (p)));
- return;
- }
else
goto unknown;
}