]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
tar: Update to 1.26.
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 18 Mar 2011 12:45:51 +0000 (13:45 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 18 Mar 2011 12:45:51 +0000 (13:45 +0100)
pkgs/tar/patches/tar-1.22-atime-rofs.patch
pkgs/tar/patches/tar-1.25-listedincremental.patch [deleted file]
pkgs/tar/patches/tar-1.25-sparse-names.patch [deleted file]
pkgs/tar/tar.nm

index c9f3b088de6d9bcdbad38296cb86b4373ebcd6b9..12f022b98ca19cd7964122785967f41bd709a9b3 100644 (file)
@@ -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 )
diff --git a/pkgs/tar/patches/tar-1.25-listedincremental.patch b/pkgs/tar/patches/tar-1.25-listedincremental.patch
deleted file mode 100644 (file)
index 940d0ba..0000000
+++ /dev/null
@@ -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));
- }
\f
--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);
--}
--
--\f
- /* 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])
diff --git a/pkgs/tar/patches/tar-1.25-sparse-names.patch b/pkgs/tar/patches/tar-1.25-sparse-names.patch
deleted file mode 100644 (file)
index 890726d..0000000
+++ /dev/null
@@ -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
-
index 8e764e398176e08264a21a7059e6e2c17b2c3730..3552a46128e0fd6f264a3a6355388189d13207a6 100644 (file)
@@ -25,7 +25,7 @@
 include $(PKGROOT)/Include
 
 PKG_NAME       = tar
-PKG_VER        = 1.25
+PKG_VER        = 1.26
 PKG_REL        = 1
 
 PKG_MAINTAINER =