new upstream release 1.26
This commit is contained in:
parent
6bc64ffbed
commit
fc7e71a489
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,3 +4,5 @@ tar-1.23.tar.bz2.sig
|
||||
/tar-1.24.tar.xz.sig
|
||||
/tar-1.25.tar.xz
|
||||
/tar-1.25.tar.xz.sig
|
||||
/tar-1.26.tar.xz
|
||||
/tar-1.26.tar.xz.sig
|
||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
||||
1b3b391087f4baf70ccad8bd92e4db11 tar-1.25.tar.xz
|
||||
bc574a334e6f7bb6a7feb41ff4b2b080 tar-1.25.tar.xz.sig
|
||||
0ced6f20b9fa1bea588005b5ad4b52c1 tar-1.26.tar.xz
|
||||
6618d5fe7785e138c27d7d6a24e998b2 tar-1.26.tar.xz.sig
|
||||
|
@ -1,10 +1,10 @@
|
||||
diff -urNp tar-1.22-orig/src/create.c tar-1.22/src/create.c
|
||||
--- tar-1.22-orig/src/create.c 2009-05-15 10:50:38.000000000 +0200
|
||||
+++ tar-1.22/src/create.c 2009-05-15 10:51:52.000000000 +0200
|
||||
@@ -1691,7 +1691,8 @@ dump_file0 (struct tar_stat_info *st, co
|
||||
set_exit_status (TAREXIT_DIFFERS);
|
||||
@@ -1827,7 +1827,8 @@ dump_file0 (struct tar_stat_info *st, co
|
||||
}
|
||||
else if (atime_preserve_option == replace_atime_preserve
|
||||
&& fd && (is_dir || original_size != 0)
|
||||
- && set_file_atime (fd, parentfd, name, st->atime) != 0)
|
||||
+ && set_file_atime (fd, parentfd, name, st->atime) != 0
|
||||
+ && errno != EROFS )
|
||||
|
@ -1,219 +0,0 @@
|
||||
From 065cf0958c39600f2062cbeeb5b76929d03c207b Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Mon, 22 Nov 2010 22:50:58 -0800
|
||||
Subject: [PATCH] * src/names.c: tar: fix bug with --one-file-system --listed-incremental
|
||||
|
||||
Problem (and idea for fix) reported by Martin Weigel
|
||||
<http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00071.html>.
|
||||
* src/common.h (is_individual_file): Remove decl.
|
||||
* src/create.c (dump_file0): Replace "is_individual_file (p)"
|
||||
with "top_level".
|
||||
* src/incremen.c (procdir): Replace "!is_individual_file
|
||||
(name_buffer)" with "st->parent". Fix bug with --one-file-system
|
||||
and --listed-incremental.
|
||||
* src/names.c (individual_file_table, register_individual_file):
|
||||
(is_individual_file): Remove. All uses removed.
|
||||
---
|
||||
src/common.h | 1 -
|
||||
src/create.c | 4 ++--
|
||||
src/incremen.c | 8 ++------
|
||||
src/names.c | 26 --------------------------
|
||||
4 files changed, 4 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/src/common.h b/src/common.h
|
||||
index 35e056e..9444fd7 100644
|
||||
--- a/src/common.h
|
||||
+++ b/src/common.h
|
||||
@@ -680,7 +680,6 @@ bool excluded_name (char const *name);
|
||||
|
||||
void add_avoided_name (char const *name);
|
||||
bool is_avoided_name (char const *name);
|
||||
-bool is_individual_file (char const *name);
|
||||
|
||||
bool contains_dot_dot (char const *name);
|
||||
|
||||
diff --git a/src/create.c b/src/create.c
|
||||
index a1e90a3..e8de6b9 100644
|
||||
--- a/src/create.c
|
||||
+++ b/src/create.c
|
||||
@@ -1678,9 +1678,9 @@ dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
|
||||
put in the archive.
|
||||
|
||||
This check is omitted if incremental_option is set *and* the
|
||||
- requested file is not explicitely listed in the command line. */
|
||||
+ requested file is not explicitly listed in the command line. */
|
||||
|
||||
- if (!(incremental_option && !is_individual_file (p))
|
||||
+ if (! (incremental_option && ! top_level)
|
||||
&& !S_ISDIR (st->stat.st_mode)
|
||||
&& OLDER_TAR_STAT_TIME (*st, m)
|
||||
&& (!after_date_option || OLDER_TAR_STAT_TIME (*st, c)))
|
||||
diff --git a/src/incremen.c b/src/incremen.c
|
||||
index 628ff29..2b33c5d 100644
|
||||
--- a/src/incremen.c
|
||||
+++ b/src/incremen.c
|
||||
@@ -426,7 +426,6 @@ procdir (const char *name_buffer, struct tar_stat_info *st,
|
||||
{
|
||||
struct directory *directory;
|
||||
struct stat *stat_data = &st->stat;
|
||||
- dev_t device = st->parent ? st->parent->stat.st_dev : 0;
|
||||
bool nfs = NFS_FILE_STAT (*stat_data);
|
||||
|
||||
if ((directory = find_directory (name_buffer)) != NULL)
|
||||
@@ -540,11 +539,8 @@ procdir (const char *name_buffer, struct tar_stat_info *st,
|
||||
}
|
||||
}
|
||||
|
||||
- /* If the directory is on another device and --one-file-system was given,
|
||||
- omit it... */
|
||||
- if (one_file_system_option && device != stat_data->st_dev
|
||||
- /* ... except if it was explicitely given in the command line */
|
||||
- && !is_individual_file (name_buffer))
|
||||
+ if (one_file_system_option && st->parent
|
||||
+ && stat_data->st_dev != st->parent->stat.st_dev)
|
||||
/* FIXME:
|
||||
WARNOPT (WARN_XDEV,
|
||||
(0, 0,
|
||||
diff --git a/src/names.c b/src/names.c
|
||||
index 6e214bf..ba4d509 100644
|
||||
--- a/src/names.c
|
||||
+++ b/src/names.c
|
||||
@@ -47,8 +47,6 @@ static char *cached_no_such_gname;
|
||||
static uid_t cached_no_such_uid;
|
||||
static gid_t cached_no_such_gid;
|
||||
|
||||
-static void register_individual_file (char const *name);
|
||||
-
|
||||
/* Given UID, find the corresponding UNAME. */
|
||||
void
|
||||
uid_to_uname (uid_t uid, char **uname)
|
||||
@@ -360,8 +358,6 @@ name_next_elt (int change_dirs)
|
||||
{
|
||||
if (unquote_option)
|
||||
unquote_string (name_buffer);
|
||||
- if (incremental_option)
|
||||
- register_individual_file (name_buffer);
|
||||
entry.type = ep->type;
|
||||
entry.v.name = name_buffer;
|
||||
return &entry;
|
||||
@@ -1152,28 +1148,6 @@ excluded_name (char const *name)
|
||||
return excluded_file_name (excluded, name + FILE_SYSTEM_PREFIX_LEN (name));
|
||||
}
|
||||
|
||||
-static Hash_table *individual_file_table;
|
||||
-
|
||||
-static void
|
||||
-register_individual_file (char const *name)
|
||||
-{
|
||||
- struct stat st;
|
||||
-
|
||||
- if (deref_stat (name, &st) != 0)
|
||||
- return; /* Will be complained about later */
|
||||
- if (S_ISDIR (st.st_mode))
|
||||
- return;
|
||||
-
|
||||
- hash_string_insert (&individual_file_table, name);
|
||||
-}
|
||||
-
|
||||
-bool
|
||||
-is_individual_file (char const *name)
|
||||
-{
|
||||
- return hash_string_lookup (individual_file_table, name);
|
||||
-}
|
||||
-
|
||||
-
|
||||
|
||||
/* Return the size of the prefix of FILE_NAME that is removed after
|
||||
stripping NUM leading file name components. NUM must be
|
||||
--
|
||||
1.7.1
|
||||
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Tue, 23 Nov 2010 01:58:55 +0000 (-0800)
|
||||
Subject: tests: new test listed04 for --one-file-system --listed-incremental
|
||||
X-Git-Url: http://git.savannah.gnu.org/gitweb/?p=tar.git;a=commitdiff_plain;h=2a55b4b0373eef2e879408f9df6638bb03e16170
|
||||
|
||||
tests: new test listed04 for --one-file-system --listed-incremental
|
||||
|
||||
* tests/Makefile.am (TESTSUITE_AT): Add listed04.at.
|
||||
* tests/listed04.at: New file.
|
||||
* tests/testsuite.at: Include it.
|
||||
---
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index f289067..7b1e226 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -110,6 +110,7 @@ TESTSUITE_AT = \
|
||||
listed01.at\
|
||||
listed02.at\
|
||||
listed03.at\
|
||||
+ listed04.at\
|
||||
long01.at\
|
||||
longv7.at\
|
||||
lustar01.at\
|
||||
diff --git a/tests/listed04.at b/tests/listed04.at
|
||||
new file mode 100644
|
||||
index 0000000..239998d
|
||||
--- /dev/null
|
||||
+++ b/tests/listed04.at
|
||||
@@ -0,0 +1,47 @@
|
||||
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
+
|
||||
+# Test suite for GNU tar.
|
||||
+# Copyright (C) 2010 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 Free Software Foundation; either version 3, or (at your option)
|
||||
+# any later version.
|
||||
+
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+# This checks for the bug reported by Martin Weigel
|
||||
+# <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00071.html>.
|
||||
+# The test is derived from the ideas in Jean-Louis Martineau's followup email
|
||||
+# <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00087.html>.
|
||||
+
|
||||
+AT_SETUP([--listed-incremental and --one-file-system])
|
||||
+AT_KEYWORDS([listed incremental listed04])
|
||||
+
|
||||
+AT_TAR_CHECK([
|
||||
+
|
||||
+mkdir dir
|
||||
+echo a >dir/a
|
||||
+echo b >dir/b
|
||||
+
|
||||
+tar --one-file-system -cvf archive.tar -g archive.incr dir || exit
|
||||
+tar -tf archive.tar || exit
|
||||
+],
|
||||
+[0],
|
||||
+[dir/
|
||||
+dir/a
|
||||
+dir/b
|
||||
+dir/
|
||||
+dir/a
|
||||
+dir/b
|
||||
+],
|
||||
+[tar: dir: Directory is new
|
||||
+],[],[],[gnu])
|
||||
+
|
||||
+AT_CLEANUP
|
||||
diff --git a/tests/testsuite.at b/tests/testsuite.at
|
||||
index db0db3a..e8df868 100644
|
||||
--- a/tests/testsuite.at
|
||||
+++ b/tests/testsuite.at
|
||||
@@ -174,6 +174,7 @@ m4_include([incr02.at])
|
||||
m4_include([listed01.at])
|
||||
m4_include([listed02.at])
|
||||
m4_include([listed03.at])
|
||||
+m4_include([listed04.at])
|
||||
m4_include([incr03.at])
|
||||
m4_include([incr04.at])
|
||||
m4_include([incr05.at])
|
@ -1,126 +0,0 @@
|
||||
From 3f7aebf6e15d2ee39f55528cc9f423b330e68272 Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Poznyakoff <gray@gnu.org.ua>
|
||||
Date: Sat, 27 Nov 2010 14:35:08 +0200
|
||||
Subject: [PATCH] Correctly store long sparse file names in PAX archives.
|
||||
|
||||
* src/sparse.c (pax_dump_header_1): Make sure the created header name is
|
||||
shorter than NAME_FIELD_SIZE bytes.
|
||||
* tests/sparse04.at: New testcase.
|
||||
* tests/Makefile.am (TESTSUITE_AT): Add sparse04.at.
|
||||
* tests/testsuite.at: Include sparse04.at.
|
||||
* NEWS: Update.
|
||||
---
|
||||
src/sparse.c | 9 ++++++---
|
||||
tests/Makefile.am | 1 +
|
||||
tests/sparse04.at | 47 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
tests/testsuite.at | 1 +
|
||||
4 files changed, 55 insertions(+), 3 deletions(-)
|
||||
create mode 100644 tests/sparse04.at
|
||||
|
||||
diff --git a/src/sparse.c b/src/sparse.c
|
||||
index 9680b60..696773f 100644
|
||||
--- a/src/sparse.c
|
||||
+++ b/src/sparse.c
|
||||
@@ -991,7 +991,7 @@ pax_dump_header_1 (struct tar_sparse_file *file)
|
||||
off_t size = 0;
|
||||
struct sp_array *map = file->stat_info->sparse_map;
|
||||
char *save_file_name = file->stat_info->file_name;
|
||||
-
|
||||
+
|
||||
#define COPY_STRING(b,dst,src) do \
|
||||
{ \
|
||||
char *endp = b->buffer + BLOCKSIZE; \
|
||||
@@ -1029,8 +1029,11 @@ pax_dump_header_1 (struct tar_sparse_file *file)
|
||||
xheader_store ("GNU.sparse.name", file->stat_info, NULL);
|
||||
xheader_store ("GNU.sparse.realsize", file->stat_info, NULL);
|
||||
|
||||
- file->stat_info->file_name = xheader_format_name (file->stat_info,
|
||||
- "%d/GNUSparseFile.%p/%f", 0);
|
||||
+ file->stat_info->file_name =
|
||||
+ xheader_format_name (file->stat_info, "GNUSparseFile.%p/%f", 0);
|
||||
+ /* Make sure the created header name is shorter than NAME_FIELD_SIZE: */
|
||||
+ if (strlen (file->stat_info->file_name) > NAME_FIELD_SIZE)
|
||||
+ file->stat_info->file_name[NAME_FIELD_SIZE] = 0;
|
||||
|
||||
blk = start_header (file->stat_info);
|
||||
/* Store the effective (shrunken) file size */
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 12e8c1b..b14b40a 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -145,6 +145,7 @@ TESTSUITE_AT = \
|
||||
sparse01.at\
|
||||
sparse02.at\
|
||||
sparse03.at\
|
||||
+ sparse04.at\
|
||||
sparsemv.at\
|
||||
sparsemvp.at\
|
||||
spmvp00.at\
|
||||
diff --git a/tests/sparse04.at b/tests/sparse04.at
|
||||
new file mode 100644
|
||||
index 0000000..4d41be7
|
||||
--- /dev/null
|
||||
+++ b/tests/sparse04.at
|
||||
@@ -0,0 +1,47 @@
|
||||
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
+#
|
||||
+# Test suite for GNU tar.
|
||||
+# Copyright (C) 2010 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 Free Software Foundation; either version 3, or (at your option)
|
||||
+# any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, write to the Free Software
|
||||
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
+# 02110-1301, USA.
|
||||
+
|
||||
+AT_SETUP([storing long sparse file names])
|
||||
+AT_KEYWORDS([sparse sparse04])
|
||||
+
|
||||
+# Description: Tar versions from 1.15.92 to 1.25 would incorrectly
|
||||
+# store sparse file names longer than 100 characters in pax mode.
|
||||
+# Namely, the `path' keyword of the produced PAX header would contain the
|
||||
+# crafted name of the header itself, instead of that of the file.
|
||||
+# Reported by: Kamil Dudka <kdudka@redhat.com>
|
||||
+# References: <201011250026.44908.kdudka@redhat.com>,
|
||||
+# http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00099.html
|
||||
+
|
||||
+m4_define([NAME_111],
|
||||
+ [123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960])
|
||||
+
|
||||
+AT_TAR_CHECK([
|
||||
+genfile --sparse --file NAME_111 --block-size 512 8M A || AT_SKIP_TEST
|
||||
+tar -c --sparse --posix NAME_111 | tar t
|
||||
+],
|
||||
+[0],
|
||||
+[NAME_111
|
||||
+],
|
||||
+[],
|
||||
+[],
|
||||
+[],
|
||||
+[pax])
|
||||
+
|
||||
+AT_CLEANUP
|
||||
diff --git a/tests/testsuite.at b/tests/testsuite.at
|
||||
index d18b16e..6f06417 100644
|
||||
--- a/tests/testsuite.at
|
||||
+++ b/tests/testsuite.at
|
||||
@@ -223,6 +223,7 @@ m4_include([shortrec.at])
|
||||
m4_include([sparse01.at])
|
||||
m4_include([sparse02.at])
|
||||
m4_include([sparse03.at])
|
||||
+m4_include([sparse04.at])
|
||||
m4_include([sparsemv.at])
|
||||
m4_include([spmvp00.at])
|
||||
m4_include([spmvp01.at])
|
||||
--
|
||||
1.7.3.2
|
||||
|
12
tar.spec
12
tar.spec
@ -4,8 +4,8 @@
|
||||
Summary: A GNU file archiving program
|
||||
Name: tar
|
||||
Epoch: 2
|
||||
Version: 1.25
|
||||
Release: 6%{?dist}
|
||||
Version: 1.26
|
||||
Release: 1%{?dist}
|
||||
License: GPLv3+
|
||||
Group: Applications/Archiving
|
||||
URL: http://www.gnu.org/software/tar/
|
||||
@ -30,10 +30,6 @@ Patch5: tar-1.22-atime-rofs.patch
|
||||
Patch6: tar-1.23-oldarchive.patch
|
||||
#temporarily disable sigpipe.at patch (fails at build in koji, passes manually)
|
||||
Patch7: tar-sigpipe.patch
|
||||
#fix failure with --one-file-system and --listed-incremental when archiving / (#654718)
|
||||
Patch8: tar-1.25-listedincremental.patch
|
||||
#Correctly store long sparse file names in PAX archives (#656834)
|
||||
Patch9: tar-1.25-sparse-names.patch
|
||||
BuildRequires: autoconf automake gzip texinfo gettext libacl-devel gawk rsh
|
||||
%if %{WITH_SELINUX}
|
||||
BuildRequires: libselinux-devel
|
||||
@ -63,8 +59,6 @@ the rmt package.
|
||||
%patch5 -p1 -b .rofs
|
||||
%patch6 -p1 -b .oldarchive
|
||||
%patch7 -p1 -b .fail
|
||||
%patch8 -p1 -b .listed
|
||||
%patch9 -p1 -b .sparse
|
||||
|
||||
autoreconf
|
||||
|
||||
@ -126,6 +120,8 @@ fi
|
||||
%{_infodir}/tar.info*
|
||||
|
||||
%changelog
|
||||
* Sat Mar 12 2011 Ondrej Vasik <ovasik@redhat.com> 2:1.26-1
|
||||
- new upstream release 1.26
|
||||
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:1.25-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user