new upstream release 1.24, use .xz archive (still needs some improvement in xattrs patch)

This commit is contained in:
Ondřej Vašík 2010-10-26 15:19:12 +02:00
parent 463fa8a6e3
commit 9934f5707a
12 changed files with 278 additions and 328 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
tar-1.23.tar.bz2
tar-1.23.tar.bz2.sig
/tar-1.24.tar.xz
/tar-1.24.tar.xz.sig

View File

@ -1,2 +1,2 @@
41e2ca4b924ec7860e51b43ad06cdb7e tar-1.23.tar.bz2
d7a3e49d66c50a046c536b987f25e891 tar-1.23.tar.bz2.sig
debae443de7e1c61cd24c2d53bca50c6 tar-1.24.tar.xz
c4beee21bbab83cd022093825371eed5 tar-1.24.tar.xz.sig

View File

@ -15,7 +15,7 @@ diff -ruNp tar-1.22.orig/src/list.c tar-1.22/src/list.c
+
char buf[UINTMAX_STRSIZE_BOUND];
status = read_header (&current_header, &current_stat_info,
status = read_header (&current_header, &current_stat_info,
@@ -147,6 +155,9 @@ read_and (void (*do_something) (void))
WARNOPT (WARN_ALONE_ZERO_BLOCK,
(0, 0, _("A lone zero block at %s"),

View File

@ -61,7 +61,7 @@
--- tar-1.17/src/names.c.wildcards 2007-04-03 14:17:13.000000000 +0200
+++ tar-1.17/src/names.c 2007-06-28 13:30:48.000000000 +0200
@@ -812,10 +812,7 @@ collect_and_sort_names (void)
{
if (name->found_count || name->directory)
continue;
- if (name->matching_flags & EXCLUDE_WILDCARDS)

View File

@ -5,8 +5,8 @@ diff -urNp tar-1.22-orig/src/create.c tar-1.22/src/create.c
set_exit_status (TAREXIT_DIFFERS);
}
else if (atime_preserve_option == replace_atime_preserve
- && set_file_atime (fd, p, restore_times) != 0)
+ && set_file_atime (fd, p, restore_times) != 0
- && set_file_atime (fd, parentfd, name, st->atime) != 0)
+ && set_file_atime (fd, parentfd, name, st->atime) != 0
+ && errno != EROFS )
utime_error (p);
}

View File

@ -1,18 +0,0 @@
diff --git a/src/incremen.c b/src/incremen.c
index dc880cd..3da1349 100644
--- a/src/incremen.c
+++ b/src/incremen.c
@@ -894,8 +894,11 @@ append_incremental_renames (struct directory *dir)
if (obstack_object_size (&stk) != size)
{
obstack_1grow (&stk, 0);
- dumpdir_free (dir->dump);
- dir->dump = dumpdir_create (obstack_finish (&stk));
+ if (dir)
+ {
+ dumpdir_free (dir->dump);
+ dir->dump = dumpdir_create (obstack_finish (&stk));
+ }
}
obstack_free (&stk, NULL);
}

View File

@ -1,142 +0,0 @@
src/compare.c | 1 -
src/extract.c | 2 +-
src/list.c | 7 ++-----
tests/Makefile.am | 1 +
tests/exclude06.at | 47 +++++++++++++++++++++++++++++++++++++++++++++++
tests/testsuite.at | 1 +
6 files changed, 52 insertions(+), 7 deletions(-)
diff --git a/src/compare.c b/src/compare.c
index f4e92da..437ffb3 100644
--- a/src/compare.c
+++ b/src/compare.c
@@ -452,7 +452,6 @@ diff_archive (void)
{
set_next_block_after (current_header);
- decode_header (current_header, &current_stat_info, &current_format, 1);
/* Print the block from current_header and current_stat_info. */
diff --git a/src/extract.c b/src/extract.c
index 947e3ed..71f4e4f 100644
--- a/src/extract.c
+++ b/src/extract.c
@@ -1349,7 +1349,7 @@ extract_archive (void)
priv_set_remove_linkdir ();
set_next_block_after (current_header);
- decode_header (current_header, &current_stat_info, &current_format, 1);
+
if (!current_stat_info.file_name[0]
|| (interactive_option
&& !confirm ("extract", current_stat_info.file_name)))
diff --git a/src/list.c b/src/list.c
index 6e1971f..1edd504 100644
--- a/src/list.c
+++ b/src/list.c
@@ -90,7 +90,8 @@ read_and (void (*do_something) (void))
/* Valid header. We should decode next field (mode) first.
Ensure incoming names are null terminated. */
-
+ decode_header (current_header, &current_stat_info,
+ &current_format, 1);
if (! name_match (current_stat_info.file_name)
|| (NEWER_OPTION_INITIALIZED (newer_mtime_option)
/* FIXME: We get mtime now, and again later; this causes
@@ -116,8 +117,6 @@ read_and (void (*do_something) (void))
quotearg_colon (current_stat_info.file_name)));
/* Fall through. */
default:
- decode_header (current_header,
- &current_stat_info, &current_format, 0);
skip_member ();
continue;
}
@@ -221,8 +220,6 @@ list_archive (void)
off_t block_ordinal = current_block_ordinal ();
/* Print the header block. */
-
- decode_header (current_header, &current_stat_info, &current_format, 0);
if (verbose_option)
print_header (&current_stat_info, current_header, block_ordinal);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index e9b753c..fe2535a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -66,6 +66,7 @@ TESTSUITE_AT = \
exclude03.at\
exclude04.at\
exclude05.at\
+ exclude06.at\
extrac01.at\
extrac02.at\
extrac03.at\
diff --git a/tests/exclude06.at b/tests/exclude06.at
new file mode 100644
index 0000000..f7ab141
--- /dev/null
+++ b/tests/exclude06.at
@@ -0,0 +1,47 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+# 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/>.
+
+# Tar 1.23 would fail to exclude names longer that 100 characters from
+# pax format archives.
+#
+# Reported-by: Matthew Peterson <mrpeterson2@gmail.com>
+# References: <AANLkTin0teb1dcl0HCNquHxvN4HQnJmP6aK7CJCqy0sd@mail.gmail.com>
+# http://lists.gnu.org/archive/html/help-tar/2010-06/msg00000.html
+
+AT_SETUP([exclude: long files in pax archives])
+AT_KEYWORDS([exclude exclude06])
+
+m4_define([test_base_dir],[one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen])
+
+AT_TAR_CHECK([
+AT_TAR_MKHIER(test_base_dir)
+genfile --length 20 -f test_base_dir[/1.txt]
+genfile --length 20 -f test_base_dir[/1.c]
+
+tar cf archive.tar test_base_dir
+mkdir out
+tar -C out -xf archive.tar --exclude='*.txt'
+find out -type f
+],
+[0],
+[[out/]test_base_dir[/1.c]
+],
+[],
+[],
+[],
+[pax])
+
+AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
index f581071..ef70b99 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -130,6 +130,7 @@ m4_include([exclude02.at])
m4_include([exclude03.at])
m4_include([exclude04.at])
m4_include([exclude05.at])
+m4_include([exclude06.at])
m4_include([delete01.at])
m4_include([delete02.at])

View File

@ -9,15 +9,6 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
+ case OLD_ARCHIVE_OPTION:
+ set_archive_format ("v7");
+ break;
case OVERWRITE_DIR_OPTION:
old_files_option = DEFAULT_OLD_FILES;
@@ -1955,7 +1959,7 @@ parse_opt (int key, char *arg, struct ar
case POSIX_OPTION:
set_archive_format ("posix");
break;
-
+
case PRESERVE_OPTION:
/* FIXME: What it is good for? */
same_permissions_option = true;

View File

@ -31,7 +31,7 @@ index 4cadab9..3a36b9b 100644
+void transform_name_from_header(union block *header, struct tar_stat_info *);
char const *tartime (struct timespec t, bool full_time);
#define GID_FROM_HEADER(where) gid_from_header (where, sizeof (where))
#define OFF_FROM_HEADER(where) off_from_header (where, sizeof (where))
diff --git a/src/list.c b/src/list.c
index 1edd504..4e0e1a0 100644
--- a/src/list.c
@ -66,11 +66,11 @@ index 1edd504..4e0e1a0 100644
switch (current_header->header.typeflag)
{
@@ -659,7 +663,11 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
|| stat_info->dumpdir)
stat_info->is_dumpdir = true;
}
if (header->header.typeflag == GNUTYPE_VOLHDR)
/* Name transformations don't apply to volume headers. */
return;
+}
+void
+transform_name_from_header(union block *header, struct tar_stat_info *stat_info)
+{
@ -86,7 +86,7 @@ index 1edd504..4e0e1a0 100644
simple_print_header (&vstat, &vblk, 0);
tar_stat_destroy (&vstat);
@@ -1431,6 +1440,7 @@ test_archive_label ()
{
decode_header (current_header,
&current_stat_info, &current_format, 0);
+ transform_name_from_header (current_header, &current_stat_info);
@ -177,3 +177,15 @@ index ef70b99..8b533ed 100644
m4_include([delete01.at])
m4_include([delete02.at])
diff -urNp tar-1.24-orig/tests/xform01.at tar-1.24/tests/xform01.at
--- tar-1.24-orig/tests/xform01.at 2010-10-24 20:07:47.000000000 +0200
+++ tar-1.24/tests/xform01.at 2010-10-25 15:49:42.866904079 +0200
@@ -29,7 +29,7 @@ AT_KEYWORDS([transform xform xform01 vol
AT_TAR_CHECK([
genfile --file file
tar -cf archive.tar -V /label/ file
-tar tf archive.tar
+tar Ptf archive.tar
],
[0],
[/label/

View File

@ -0,0 +1,98 @@
tar: fix bug with -C and extracting directories
Problem reported by Denis Excoffier in
<http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00034.html>.
* src/extract.c (extract_dir): Use mkdirat, not mkdir.
* tests/extrac16.at: New file, to test for this bug.
* tests/Makefile.am (TESTSUITE_AT): Add it.
* tests/testsuite.at: Include it.
---
src/extract.c | 2 +-
tests/Makefile.am | 1 +
tests/extrac16.at | 36 ++++++++++++++++++++++++++++++++++++
tests/testsuite.at | 1 +
4 files changed, 39 insertions(+), 1 deletions(-)
create mode 100644 tests/extrac16.at
diff --git a/src/extract.c b/src/extract.c
index 0d23d4a..98236ac 100644
--- a/src/extract.c
+++ b/src/extract.c
@@ -777,7 +777,7 @@ extract_dir (char *file_name, int typeflag)
for (;;)
{
- status = mkdir (file_name, mode);
+ status = mkdirat (chdir_fd, file_name, mode);
if (status == 0)
{
current_mode = mode & ~ current_umask;
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d29563a..b71e83c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -82,6 +82,7 @@ TESTSUITE_AT = \
extrac13.at\
extrac14.at\
extrac15.at\
+ extrac16.at\
filerem01.at\
filerem02.at\
gzip.at\
diff --git a/tests/extrac16.at b/tests/extrac16.at
new file mode 100644
index 0000000..625e579
--- /dev/null
+++ b/tests/extrac16.at
@@ -0,0 +1,36 @@
+# 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/>.
+
+# written by Paul Eggert from a bug report by Denis Excoffier
+# <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00034.html>
+
+# Check extraction of empty directory with -C.
+
+AT_SETUP([extract empty directory with -C])
+AT_KEYWORDS([extract extrac16])
+
+AT_TAR_CHECK([
+mkdir src src/a src/a/b dest
+touch src/a/c
+
+tar -cf archive.tar -C src a &&
+tar -xf archive.tar -C dest
+],
+[0],[],[],[],[],[gnu])
+
+AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
index c386892..40f0e41 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -154,6 +154,7 @@ m4_include([extrac12.at])
m4_include([extrac13.at])
m4_include([extrac14.at])
m4_include([extrac15.at])
+m4_include([extrac16.at])
m4_include([label01.at])
m4_include([label02.at])
--
1.7.2

View File

@ -1,8 +1,8 @@
diff -urNp tar-1.23-orig/configure.ac tar-1.23/configure.ac
--- tar-1.23-orig/configure.ac 2010-03-10 11:47:54.000000000 +0100
+++ tar-1.23/configure.ac 2010-08-16 14:32:11.448178888 +0200
diff -urNp tar-1.24-orig/configure.ac tar-1.24/configure.ac
--- tar-1.24-orig/configure.ac 2010-10-24 23:35:35.000000000 +0200
+++ tar-1.24/configure.ac 2010-10-25 10:24:52.548214037 +0200
@@ -44,7 +44,7 @@ AC_CHECK_HEADERS_ONCE(fcntl.h linux/fd.h
sys/param.h sys/device.h sys/filio.h sys/gentape.h \
sys/param.h sys/device.h sys/gentape.h \
sys/inet.h sys/io/trioctl.h \
sys/mtio.h sys/time.h sys/tprintf.h sys/tape.h \
- unistd.h locale.h)
@ -13,7 +13,7 @@ diff -urNp tar-1.23-orig/configure.ac tar-1.23/configure.ac
@@ -91,6 +91,12 @@ gl_INIT
tar_PAXUTILS
AC_CHECK_FUNCS(fsync getdtablesize lstat mkfifo readlink symlink setlocale utimes)
AC_CHECK_FUNCS_ONCE([fchmod fchown fsync lstat mkfifo readlink symlink])
+AC_CHECK_FUNCS(getxattr fgetxattr lgetxattr \
+ setxattr fsetxattr lsetxattr \
+ listxattr flistxattr llistxattr,
@ -49,10 +49,10 @@ diff -urNp tar-1.23-orig/configure.ac tar-1.23/configure.ac
# Gettext.
AM_GNU_GETTEXT([external], [need-formatstring-macros])
AM_GNU_GETTEXT_VERSION([0.16])
diff -urNp tar-1.23-orig/doc/tar.texi tar-1.23/doc/tar.texi
--- tar-1.23-orig/doc/tar.texi 2010-08-16 14:29:00.421912230 +0200
+++ tar-1.23/doc/tar.texi 2010-08-16 14:32:11.459923196 +0200
@@ -2364,6 +2364,10 @@ Normally when creating an archive, @comm
diff -urNp tar-1.24-orig/doc/tar.texi tar-1.24/doc/tar.texi
--- tar-1.24-orig/doc/tar.texi 2010-10-24 20:07:54.000000000 +0200
+++ tar-1.24/doc/tar.texi 2010-10-25 10:24:52.554213688 +0200
@@ -2370,6 +2370,10 @@ Normally when creating an archive, @comm
@samp{/} from member names. This option disables that behavior.
@xref{absolute}.
@ -63,7 +63,7 @@ diff -urNp tar-1.23-orig/doc/tar.texi tar-1.23/doc/tar.texi
@opsummary{after-date}
@item --after-date
@@ -2885,6 +2889,10 @@ contents have changed (as opposed to jus
@@ -2915,6 +2919,10 @@ contents have changed (as opposed to jus
also back up files for which any status information has
changed). @xref{after}.
@ -74,7 +74,7 @@ diff -urNp tar-1.23-orig/doc/tar.texi tar-1.23/doc/tar.texi
@opsummary{no-anchored}
@item --no-anchored
An exclude pattern can match any subsequence of the name's components.
@@ -2968,11 +2976,21 @@ locations. Usually @command{tar} determ
@@ -2998,11 +3006,21 @@ locations. Usually @command{tar} determ
the archive can be seeked or not. Use this option to disable this
mechanism.
@ -96,7 +96,7 @@ diff -urNp tar-1.23-orig/doc/tar.texi tar-1.23/doc/tar.texi
@opsummary{no-wildcards}
@item --no-wildcards
Do not use wildcards.
@@ -3202,6 +3220,11 @@ in cases when such recognition fails. I
@@ -3235,6 +3253,11 @@ in cases when such recognition fails. I
archive is open for reading (e.g. with @option{--list} or
@option{--extract} options).
@ -108,7 +108,7 @@ diff -urNp tar-1.23-orig/doc/tar.texi tar-1.23/doc/tar.texi
@opsummary{show-defaults}
@item --show-defaults
@@ -3411,6 +3434,11 @@ Enable or disable warning messages ident
@@ -3448,6 +3471,11 @@ Enable or disable warning messages ident
messages are suppressed if @var{keyword} is prefixed with @samp{no-}.
@xref{warnings}.
@ -120,7 +120,7 @@ diff -urNp tar-1.23-orig/doc/tar.texi tar-1.23/doc/tar.texi
@opsummary{wildcards}
@item --wildcards
Use wildcards when matching member names with patterns.
@@ -8599,6 +8627,8 @@ implementation able to read @samp{ustar}
@@ -8643,6 +8671,8 @@ implementation able to read @samp{ustar}
most @samp{posix} archives as well, with the only exception that any
additional information (such as long file names etc.) will in such
case be extracted as plain text files along with the files it refers to.
@ -129,7 +129,7 @@ diff -urNp tar-1.23-orig/doc/tar.texi tar-1.23/doc/tar.texi
This archive format will be the default format for future versions
of @GNUTAR{}.
@@ -9160,6 +9190,51 @@ Same as both @option{--same-permissions}
@@ -9259,6 +9289,51 @@ Same as both @option{--same-permissions}
This option is deprecated, and will be removed in @GNUTAR{} version 1.23.
@ -181,10 +181,10 @@ diff -urNp tar-1.23-orig/doc/tar.texi tar-1.23/doc/tar.texi
@end table
@node Portability
diff -urNp tar-1.23-orig/src/common.h tar-1.23/src/common.h
--- tar-1.23-orig/src/common.h 2010-01-26 13:21:18.000000000 +0100
+++ tar-1.23/src/common.h 2010-08-16 14:32:11.464922567 +0200
@@ -251,6 +251,15 @@ GLOBAL int same_owner_option;
diff -urNp tar-1.24-orig/src/common.h tar-1.24/src/common.h
--- tar-1.24-orig/src/common.h 2010-10-24 20:07:54.000000000 +0200
+++ tar-1.24/src/common.h 2010-10-25 10:24:52.558475456 +0200
@@ -253,6 +253,15 @@ GLOBAL int same_owner_option;
/* If positive, preserve permissions when extracting. */
GLOBAL int same_permissions_option;
@ -200,7 +200,7 @@ diff -urNp tar-1.23-orig/src/common.h tar-1.23/src/common.h
/* When set, strip the given number of file name components from the file name
before extracting */
GLOBAL size_t strip_name_components;
@@ -732,6 +741,9 @@ extern char *output_start;
@@ -706,6 +715,9 @@ extern char *output_start;
void update_archive (void);
@ -209,8 +209,8 @@ diff -urNp tar-1.23-orig/src/common.h tar-1.23/src/common.h
+
/* Module xheader.c. */
void xheader_init (struct xheader *xhdr);
@@ -753,6 +765,12 @@ bool xheader_string_end (struct xheader
void xheader_decode (struct tar_stat_info *stat);
@@ -726,6 +738,12 @@ bool xheader_string_end (struct xheader
bool xheader_keyword_deleted_p (const char *kw);
char *xheader_format_name (struct tar_stat_info *st, const char *fmt,
size_t n);
@ -223,9 +223,9 @@ diff -urNp tar-1.23-orig/src/common.h tar-1.23/src/common.h
/* Module system.c */
diff -urNp tar-1.23-orig/src/create.c tar-1.23/src/create.c
--- tar-1.23-orig/src/create.c 2010-08-16 14:29:00.431912370 +0200
+++ tar-1.23/src/create.c 2010-08-16 14:32:11.465912091 +0200
diff -urNp tar-1.24-orig/src/create.c tar-1.24/src/create.c
--- tar-1.24-orig/src/create.c 2010-10-24 20:07:54.000000000 +0200
+++ tar-1.24/src/create.c 2010-10-25 10:24:52.560213618 +0200
@@ -24,6 +24,7 @@
#include <quotearg.h>
@ -233,8 +233,8 @@ diff -urNp tar-1.23-orig/src/create.c tar-1.23/src/create.c
+
#include <hash.h>
struct link
@@ -954,6 +955,30 @@ start_header (struct tar_stat_info *st)
/* Error number to use when an impostor is discovered.
@@ -934,6 +935,30 @@ start_header (struct tar_stat_info *st)
GNAME_TO_CHARS (st->gname, header->header.gname);
}
@ -265,9 +265,9 @@ diff -urNp tar-1.23-orig/src/create.c tar-1.23/src/create.c
return header;
}
@@ -1587,6 +1612,10 @@ dump_file0 (struct tar_stat_info *st, co
}
}
@@ -1709,6 +1734,10 @@ dump_file0 (struct tar_stat_info *st, ch
bool ok;
struct stat final_stat;
+ xattrs_acls_get(st, p, fd, !is_dir);
+ xattrs_selinux_get(st, p, fd);
@ -276,7 +276,7 @@ diff -urNp tar-1.23-orig/src/create.c tar-1.23/src/create.c
if (is_dir)
{
const char *tag_file_name;
@@ -1710,6 +1739,9 @@ dump_file0 (struct tar_stat_info *st, co
@@ -1826,6 +1855,9 @@ dump_file0 (struct tar_stat_info *st, ch
if (NAME_FIELD_SIZE - (archive_format == OLDGNU_FORMAT) < size)
write_long_link (st);
@ -286,7 +286,7 @@ diff -urNp tar-1.23-orig/src/create.c tar-1.23/src/create.c
block_ordinal = current_block_ordinal ();
st->stat.st_size = 0; /* force 0 size on symlink */
header = start_header (st);
@@ -1728,11 +1760,23 @@ dump_file0 (struct tar_stat_info *st, co
@@ -1844,11 +1876,23 @@ dump_file0 (struct tar_stat_info *st, ch
}
#endif
else if (S_ISCHR (st->stat.st_mode))
@ -313,13 +313,14 @@ diff -urNp tar-1.23-orig/src/create.c tar-1.23/src/create.c
else if (S_ISSOCK (st->stat.st_mode))
{
WARNOPT (WARN_FILE_IGNORED,
diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
--- tar-1.23-orig/src/extract.c 2010-01-26 12:28:09.000000000 +0100
+++ tar-1.23/src/extract.c 2010-08-16 14:32:11.467922288 +0200
@@ -70,6 +70,13 @@ struct delayed_set_stat
mode_t invert_permissions;
enum permstatus permstatus;
bool after_links;
diff -urNp tar-1.24-orig/src/extract.c tar-1.24/src/extract.c
--- tar-1.24-orig/src/extract.c 2010-10-24 20:07:54.000000000 +0200
+++ tar-1.24/src/extract.c 2010-10-25 10:35:10.903214037 +0200
@@ -97,6 +97,14 @@ struct delayed_set_stat
/* Directory that the name is relative to. */
int change_dir;
+ /* extended attributes*/
+ char *cntx_name;
+ char *acls_a_ptr;
+ size_t acls_a_len;
@ -327,10 +328,10 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
+ size_t acls_d_len;
+ size_t xattr_map_size; /* Size of the xattr map */
+ struct xattr_array *xattr_map;
/* Length and contents of name. */
size_t file_name_len;
char file_name[1];
};
@@ -97,6 +104,18 @@ struct delayed_link
@@ -134,6 +142,18 @@ struct delayed_link
hard-linked together. */
struct string_list *sources;
@ -349,21 +350,21 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
/* The desired target of the desired link. */
char target[1];
};
@@ -290,6 +309,10 @@ set_stat (char const *file_name,
give files away. */
@@ -335,6 +355,10 @@ set_stat (char const *file_name,
utime_error (file_name);
}
+ xattrs_acls_set(st, file_name, typeflag);
+ xattrs_selinux_set(st, file_name, typeflag);
+ xattrs_xattrs_set(st, file_name, typeflag);
+
if (0 < same_owner_option && permstatus != INTERDIR_PERMSTATUS)
if (0 < same_owner_option && ! interdir)
{
/* When lchown exists, it should be used to change the attributes of
@@ -366,6 +389,29 @@ delay_set_stat (char const *file_name, s
data->invert_permissions = invert_permissions;
data->permstatus = permstatus;
/* Some systems allow non-root users to give files away. Once this
@@ -431,6 +455,29 @@ delay_set_stat (char const *file_name, s
data->atflag = atflag;
data->after_links = 0;
data->change_dir = chdir_current;
+ data->cntx_name = NULL;
+ assign_string (&data->cntx_name, st->cntx_name);
+ if (st->acls_a_ptr)
@ -389,9 +390,9 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
+ xheader_xattr_copy (st, &data->xattr_map, &data->xattr_map_size);
strcpy (data->file_name, file_name);
delayed_set_stat_head = data;
}
@@ -571,6 +617,31 @@ maybe_recoverable (char *file_name, int
}
if (must_be_dot_or_slash (file_name))
@@ -661,6 +708,31 @@ maybe_recoverable (char *file_name, bool
return RECOVER_NO;
}
+/* Restore stat extended attributes (xattr) for FILE_NAME, using information
@ -412,7 +413,7 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
+
+ do
+ status = mknod (file_name, mode ^ invert_permissions, 0);
+ while (status && maybe_recoverable ((char *)file_name, &interdir_made));
+ while (status && maybe_recoverable ((char *)file_name, false, &interdir_made));
+ xattrs_xattrs_set(st, file_name, typeflag);
+ *file_created = 1;
+ }
@ -422,19 +423,20 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
/* Fix the statuses of all directories whose statuses need fixing, and
which are not ancestors of FILE_NAME. If AFTER_LINKS is
nonzero, do this for all such directories; otherwise, stop at the
@@ -624,11 +695,22 @@ apply_nonancestor_delayed_set_stat (char
@@ -721,12 +793,23 @@ apply_nonancestor_delayed_set_stat (char
sb.stat.st_gid = data->gid;
sb.atime = data->atime;
sb.mtime = data->mtime;
+ sb.cntx_name = data->cntx_name;
+ sb.acls_a_ptr = data->acls_a_ptr;
+ sb.acls_a_len = data->acls_a_len;
+ sb.acls_d_ptr = data->acls_d_ptr;
+ sb.acls_d_len = data->acls_d_len;
+ sb.xattr_map = data->xattr_map;
+ sb.xattr_map_size = data->xattr_map_size;
set_stat (data->file_name, &sb, cur_info,
data->invert_permissions, data->permstatus, DIRTYPE);
+ sb.cntx_name = data->cntx_name;
+ sb.acls_a_ptr = data->acls_a_ptr;
+ sb.acls_a_len = data->acls_a_len;
+ sb.acls_d_ptr = data->acls_d_ptr;
+ sb.acls_d_len = data->acls_d_len;
+ sb.xattr_map = data->xattr_map;
+ sb.xattr_map_size = data->xattr_map_size;
set_stat (data->file_name, &sb,
-1, current_mode, current_mode_mask,
DIRTYPE, data->interdir, data->atflag);
}
delayed_set_stat_head = data->next;
@ -445,30 +447,37 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
free (data);
}
}
@@ -730,7 +812,7 @@ extract_dir (char *file_name, int typefl
@@ -842,6 +925,7 @@ extract_dir (char *file_name, int typefl
static int
-open_output_file (char *file_name, int typeflag, mode_t mode)
+open_output_file (char *file_name, int typeflag, mode_t mode, int file_created)
open_output_file (char const *file_name, int typeflag, mode_t mode,
+ int file_created,
mode_t *current_mode, mode_t *current_mode_mask)
{
int fd;
int openflag = (O_WRONLY | O_BINARY | O_CREAT
@@ -738,6 +820,10 @@ open_output_file (char *file_name, int t
? O_TRUNC
@@ -852,6 +936,10 @@ open_output_file (char const *file_name,
? O_TRUNC | (dereference_option ? 0 : O_NOFOLLOW)
: O_EXCL));
+ /* File might be created in set_xattr. So clear O_EXCL to avoid open() failure */
+ if (file_created)
+ openflag = openflag & ~O_EXCL;
+
#if O_CTG
/* Contiguous files (on the Masscomp) have to specify the size in
the open call that creates them. */
@@ -796,8 +882,18 @@ extract_file (char *file_name, int typef
if (typeflag == CONTTYPE)
{
static int conttype_diagnosed;
@@ -908,6 +996,7 @@ extract_file (char *file_name, int typef
bool interdir_made = false;
mode_t mode = (current_stat_info.stat.st_mode & MODE_RWX
& ~ (0 < same_owner_option ? S_IRWXG | S_IRWXO : 0));
+ mode_t invert_permissions = 0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
mode_t current_mode = 0;
mode_t current_mode_mask = 0;
@@ -924,7 +1013,17 @@ extract_file (char *file_name, int typef
}
else
{
int recover = RECOVER_NO;
+ int file_created = 0;
+ if (set_xattr (file_name, &current_stat_info, invert_permissions,
+ typeflag, &file_created))
@ -478,14 +487,12 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
+ return 1;
+ }
+
do
- fd = open_output_file (file_name, typeflag, mode ^ invert_permissions);
+ fd = open_output_file (file_name, typeflag, mode ^ invert_permissions,
+ file_created);
while (fd < 0
&& (recover = maybe_recoverable (file_name, &interdir_made))
== RECOVER_OK);
@@ -922,6 +1018,13 @@ create_placeholder_file (char *file_name
while ((fd = open_output_file (file_name, typeflag, mode,
+ file_created,
&current_mode, &current_mode_mask))
< 0)
{
@@ -1065,6 +1164,13 @@ create_placeholder_file (char *file_name
+ strlen (file_name) + 1);
p->sources->next = 0;
strcpy (p->sources->string, file_name);
@ -499,10 +506,10 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
strcpy (p->target, current_stat_info.link_name);
h = delayed_set_stat_head;
@@ -1335,6 +1438,13 @@ apply_delayed_links (void)
struct tar_stat_info st1;
st1.stat.st_uid = ds->uid;
@@ -1499,6 +1605,13 @@ apply_delayed_links (void)
st1.stat.st_gid = ds->gid;
st1.atime = ds->atime;
st1.mtime = ds->mtime;
+ st1.cntx_name = ds->cntx_name;
+ st1.acls_a_ptr = ds->acls_a_ptr;
+ st1.acls_a_len = ds->acls_a_len;
@ -510,10 +517,10 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
+ st1.acls_d_len = ds->acls_d_len;
+ st1.xattr_map = ds->xattr_map;
+ st1.xattr_map_size = ds->xattr_map_size;
set_stat (source, &st1, NULL, 0, 0, SYMTYPE);
set_stat (source, &st1, -1, 0, 0, SYMTYPE,
false, AT_SYMLINK_NOFOLLOW);
valid_source = source;
}
@@ -1348,6 +1458,9 @@ apply_delayed_links (void)
@@ -1513,6 +1626,9 @@ apply_delayed_links (void)
sources = next;
}
@ -523,10 +530,10 @@ diff -urNp tar-1.23-orig/src/extract.c tar-1.23/src/extract.c
{
struct delayed_link *next = ds->next;
free (ds);
diff -urNp tar-1.23-orig/src/list.c tar-1.23/src/list.c
--- tar-1.23-orig/src/list.c 2010-08-16 14:29:00.411912161 +0200
+++ tar-1.23/src/list.c 2010-08-16 14:32:11.468912021 +0200
@@ -586,6 +586,13 @@ decode_header (union block *header, stru
diff -urNp tar-1.24-orig/src/list.c tar-1.24/src/list.c
--- tar-1.24-orig/src/list.c 2010-10-25 09:15:14.216463863 +0200
+++ tar-1.24/src/list.c 2010-10-25 10:24:52.563213968 +0200
@@ -597,6 +597,13 @@ decode_header (union block *header, stru
assign_string (&stat_info->gname,
header->header.gname[0] ? header->header.gname : NULL);
@ -540,9 +547,9 @@ diff -urNp tar-1.23-orig/src/list.c tar-1.23/src/list.c
if (format == OLDGNU_FORMAT && incremental_option)
{
stat_info->atime.tv_sec = TIME_FROM_HEADER (header->oldgnu_header.atime);
diff -urNp tar-1.23-orig/src/Makefile.am tar-1.23/src/Makefile.am
--- tar-1.23-orig/src/Makefile.am 2010-01-26 12:30:20.000000000 +0100
+++ tar-1.23/src/Makefile.am 2010-08-16 14:32:11.469911951 +0200
diff -urNp tar-1.24-orig/src/Makefile.am tar-1.24/src/Makefile.am
--- tar-1.24-orig/src/Makefile.am 2010-10-24 20:07:54.000000000 +0200
+++ tar-1.24/src/Makefile.am 2010-10-25 10:24:52.564214456 +0200
@@ -20,7 +20,7 @@
bin_PROGRAMS = tar
@ -564,11 +571,11 @@ diff -urNp tar-1.23-orig/src/Makefile.am tar-1.23/src/Makefile.am
LDADD = ../lib/libtar.a ../gnu/libgnu.a $(LIBINTL) $(LIBICONV)
-tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+tar_LDADD = $(LIBS) $(LDADD) $(LIB_CLOCK_GETTIME)
diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
--- tar-1.23-orig/src/tar.c 2010-08-16 14:29:00.433923894 +0200
+++ tar-1.23/src/tar.c 2010-08-16 14:32:11.472912580 +0200
-tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS)
+tar_LDADD = $(LIBS) $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS)
diff -urNp tar-1.24-orig/src/tar.c tar-1.24/src/tar.c
--- tar-1.24-orig/src/tar.c 2010-10-24 20:07:55.000000000 +0200
+++ tar-1.24/src/tar.c 2010-10-25 10:24:52.565223676 +0200
@@ -255,7 +255,8 @@ tar_set_quoting_style (char *arg)
enum
@ -579,7 +586,7 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
ATIME_PRESERVE_OPTION,
BACKUP_OPTION,
CHECK_DEVICE_OPTION,
@@ -287,6 +288,7 @@ enum
@@ -288,6 +289,7 @@ enum
MODE_OPTION,
MTIME_OPTION,
NEWER_MTIME_OPTION,
@ -587,7 +594,7 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
NO_ANCHORED_OPTION,
NO_AUTO_COMPRESS_OPTION,
NO_CHECK_DEVICE_OPTION,
@@ -300,9 +302,11 @@ enum
@@ -301,9 +303,11 @@ enum
NO_SAME_OWNER_OPTION,
NO_SAME_PERMISSIONS_OPTION,
NO_SEEK_OPTION,
@ -599,7 +606,7 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
NULL_OPTION,
NUMERIC_OWNER_OPTION,
OCCURRENCE_OPTION,
@@ -324,6 +328,7 @@ enum
@@ -325,6 +329,7 @@ enum
RMT_COMMAND_OPTION,
RSH_COMMAND_OPTION,
SAME_OWNER_OPTION,
@ -607,9 +614,9 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
SHOW_DEFAULTS_OPTION,
SHOW_OMITTED_DIRS_OPTION,
SHOW_TRANSFORMED_NAMES_OPTION,
@@ -339,7 +344,8 @@ enum
@@ -340,7 +345,8 @@ enum
VOLNO_FILE_OPTION,
WARNING_OPTION,
WARNING_OPTION,
WILDCARDS_MATCH_SLASH_OPTION,
- WILDCARDS_OPTION
+ WILDCARDS_OPTION,
@ -617,7 +624,7 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
};
const char *argp_program_version = "tar (" PACKAGE_NAME ") " VERSION;
@@ -485,6 +491,10 @@ static struct argp_option options[] = {
@@ -486,6 +492,10 @@ static struct argp_option options[] = {
{NULL, 0, NULL, 0,
N_("Handling of file attributes:"), GRID },
@ -628,7 +635,7 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
{"owner", OWNER_OPTION, N_("NAME"), 0,
N_("force NAME as owner for added files"), GRID+1 },
{"group", GROUP_OPTION, N_("NAME"), 0,
@@ -515,6 +525,14 @@ static struct argp_option options[] = {
@@ -516,6 +526,14 @@ static struct argp_option options[] = {
{"preserve-order", 's', 0, 0,
N_("sort names to extract to match archive"), GRID+1 },
{"same-order", 0, 0, OPTION_ALIAS, NULL, GRID+1 },
@ -643,7 +650,7 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
{"preserve", PRESERVE_OPTION, 0, 0,
N_("same as both -p and -s"), GRID+1 },
{"delay-directory-restore", DELAY_DIRECTORY_RESTORE_OPTION, 0, 0,
@@ -2063,6 +2081,37 @@ parse_opt (int key, char *arg, struct ar
@@ -2079,6 +2097,37 @@ parse_opt (int key, char *arg, struct ar
same_permissions_option = -1;
break;
@ -681,7 +688,7 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
case RECURSION_OPTION:
recursion_option = FNM_LEADING_DIR;
break;
@@ -2445,6 +2494,29 @@ decode_options (int argc, char **argv)
@@ -2461,6 +2510,29 @@ decode_options (int argc, char **argv)
|| subcommand_option != LIST_SUBCOMMAND))
USAGE_ERROR ((0, 0, _("--pax-option can be used only on POSIX archives")));
@ -711,10 +718,10 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
/* If ready to unlink hierarchies, so we are for simpler files. */
if (recursive_unlink_option)
old_files_option = UNLINK_FIRST_OLD_FILES;
@@ -2665,11 +2737,15 @@ tar_stat_init (struct tar_stat_info *st)
void
@@ -2713,11 +2785,15 @@ void
tar_stat_destroy (struct tar_stat_info *st)
{
tar_stat_close (st);
+ xheader_xattr_free (st->xattr_map, st->xattr_map_size);
free (st->orig_file_name);
free (st->file_name);
@ -727,9 +734,9 @@ diff -urNp tar-1.23-orig/src/tar.c tar-1.23/src/tar.c
free (st->sparse_map);
free (st->dumpdir);
xheader_destroy (&st->xhdr);
diff -urNp tar-1.23-orig/src/tar.h tar-1.23/src/tar.h
--- tar-1.23-orig/src/tar.h 2010-01-26 12:30:20.000000000 +0100
+++ tar-1.23/src/tar.h 2010-08-16 14:32:11.473924383 +0200
diff -urNp tar-1.24-orig/src/tar.h tar-1.24/src/tar.h
--- tar-1.24-orig/src/tar.h 2010-10-24 20:07:46.000000000 +0200
+++ tar-1.24/src/tar.h 2010-10-25 10:24:52.567223606 +0200
@@ -276,6 +276,14 @@ struct xheader
uintmax_t string_length;
};
@ -770,10 +777,10 @@ diff -urNp tar-1.23-orig/src/tar.h tar-1.23/src/tar.h
+
/* Extended headers */
struct xheader xhdr;
diff -urNp tar-1.23-orig/src/xattrs.c tar-1.23/src/xattrs.c
--- tar-1.23-orig/src/xattrs.c 1970-01-01 01:00:00.000000000 +0100
+++ tar-1.23/src/xattrs.c 2010-08-16 14:34:12.554509938 +0200
diff -urNp tar-1.24-orig/src/xattrs.c tar-1.24/src/xattrs.c
--- tar-1.24-orig/src/xattrs.c 1970-01-01 01:00:00.000000000 +0100
+++ tar-1.24/src/xattrs.c 2010-10-25 10:24:52.568214736 +0200
@@ -0,0 +1,489 @@
+/* Create a tar archive.
+
@ -1264,9 +1271,9 @@ diff -urNp tar-1.23-orig/src/xattrs.c tar-1.23/src/xattrs.c
+#endif
+ }
+}
diff -urNp tar-1.23-orig/src/xattrs.h tar-1.23/src/xattrs.h
--- tar-1.23-orig/src/xattrs.h 1970-01-01 01:00:00.000000000 +0100
+++ tar-1.23/src/xattrs.h 2010-08-16 14:32:11.475920821 +0200
diff -urNp tar-1.24-orig/src/xattrs.h tar-1.24/src/xattrs.h
--- tar-1.24-orig/src/xattrs.h 1970-01-01 01:00:00.000000000 +0100
+++ tar-1.24/src/xattrs.h 2010-10-25 10:24:52.569214526 +0200
@@ -0,0 +1,14 @@
+
+extern void xattrs_acls_get(struct tar_stat_info *st,
@ -1282,10 +1289,10 @@ diff -urNp tar-1.23-orig/src/xattrs.h tar-1.23/src/xattrs.h
+ char const *file_name, char typeflag);
+extern void xattrs_xattrs_set(struct tar_stat_info const *st,
+ char const *file_name, char typeflag);
diff -urNp tar-1.23-orig/src/xheader.c tar-1.23/src/xheader.c
--- tar-1.23-orig/src/xheader.c 2010-02-12 11:03:09.000000000 +0100
+++ tar-1.23/src/xheader.c 2010-08-16 14:38:39.480912020 +0200
@@ -459,6 +459,74 @@ xheader_write_global (struct xheader *xh
diff -urNp tar-1.24-orig/src/xheader.c tar-1.24/src/xheader.c
--- tar-1.24-orig/src/xheader.c 2010-10-24 20:07:46.000000000 +0200
+++ tar-1.24/src/xheader.c 2010-10-25 10:24:52.570223396 +0200
@@ -460,6 +460,74 @@ xheader_write_global (struct xheader *xh
}
}
@ -1360,7 +1367,7 @@ diff -urNp tar-1.23-orig/src/xheader.c tar-1.23/src/xheader.c
/* General Interface */
@@ -472,6 +540,7 @@ struct xhdr_tab
@@ -473,6 +541,7 @@ struct xhdr_tab
struct xheader *, void const *data);
void (*decoder) (struct tar_stat_info *, char const *, char const *, size_t);
int flags;
@ -1368,7 +1375,7 @@ diff -urNp tar-1.23-orig/src/xheader.c tar-1.23/src/xheader.c
};
/* This declaration must be extern, because ISO C99 section 6.9.2
@@ -488,8 +557,17 @@ locate_handler (char const *keyword)
@@ -489,8 +558,17 @@ locate_handler (char const *keyword)
struct xhdr_tab const *p;
for (p = xhdr_tab; p->keyword; p++)
@ -1388,7 +1395,7 @@ diff -urNp tar-1.23-orig/src/xheader.c tar-1.23/src/xheader.c
return NULL;
}
@@ -499,7 +577,7 @@ xheader_protected_pattern_p (const char
@@ -500,7 +578,7 @@ xheader_protected_pattern_p (const char
struct xhdr_tab const *p;
for (p = xhdr_tab; p->keyword; p++)
@ -1397,7 +1404,7 @@ diff -urNp tar-1.23-orig/src/xheader.c tar-1.23/src/xheader.c
return true;
return false;
}
@@ -510,7 +588,7 @@ xheader_protected_keyword_p (const char
@@ -511,7 +589,7 @@ xheader_protected_keyword_p (const char
struct xhdr_tab const *p;
for (p = xhdr_tab; p->keyword; p++)
@ -1406,7 +1413,7 @@ diff -urNp tar-1.23-orig/src/xheader.c tar-1.23/src/xheader.c
return true;
return false;
}
@@ -1469,6 +1547,71 @@ volume_filename_decoder (struct tar_stat
@@ -1470,6 +1548,71 @@ volume_filename_decoder (struct tar_stat
}
static void
@ -1478,7 +1485,7 @@ diff -urNp tar-1.23-orig/src/xheader.c tar-1.23/src/xheader.c
sparse_major_coder (struct tar_stat_info const *st, char const *keyword,
struct xheader *xhdr, void const *data)
{
@@ -1505,53 +1648,53 @@ sparse_minor_decoder (struct tar_stat_in
@@ -1506,53 +1649,53 @@ sparse_minor_decoder (struct tar_stat_in
}
struct xhdr_tab const xhdr_tab[] = {
@ -1555,7 +1562,7 @@ diff -urNp tar-1.23-orig/src/xheader.c tar-1.23/src/xheader.c
/* These may be present in a first global header of the archive.
They provide the same functionality as GNUTYPE_MULTIVOL header.
@@ -1560,11 +1703,41 @@ struct xhdr_tab const xhdr_tab[] = {
@@ -1561,11 +1704,41 @@ struct xhdr_tab const xhdr_tab[] = {
GNU.volume.offset keeps the offset of the start of this volume,
otherwise kept in oldgnu_header.offset. */
{ "GNU.volume.filename", volume_label_coder, volume_filename_decoder,

View File

@ -4,13 +4,13 @@
Summary: A GNU file archiving program
Name: tar
Epoch: 2
Version: 1.23
Release: 8%{?dist}
Version: 1.24
Release: 1%{?dist}
License: GPLv3+
Group: Applications/Archiving
URL: http://www.gnu.org/software/tar/
Source0: ftp://ftp.gnu.org/pub/gnu/tar/tar-%{version}.tar.bz2
Source1: ftp://ftp.gnu.org/pub/gnu/tar/tar-%{version}.tar.bz2.sig
Source0: ftp://ftp.gnu.org/pub/gnu/tar/tar-%{version}.tar.xz
Source1: ftp://ftp.gnu.org/pub/gnu/tar/tar-%{version}.tar.xz.sig
#Manpage for tar and gtar, a bit modified help2man generated manpage
Source2: tar.1
#Stop issuing lone zero block warnings
@ -19,7 +19,7 @@ Patch1: tar-1.14-loneZeroWarning.patch
#when ftruncate may fail to grow the size of a file.(#179507)
Patch2: tar-1.15.1-vfatTruncate.patch
#Add support for selinux, acl and extended attributes
Patch3: tar-1.23-xattrs.patch
Patch3: tar-1.24-xattrs.patch
#change inclusion defaults of tar to "--wildcards --anchored
#--wildcards-match-slash" for compatibility reasons (#206841)
Patch4: tar-1.17-wildcards.patch
@ -31,12 +31,10 @@ Patch5: tar-1.22-atime-rofs.patch
Patch6: tar-1.22-fortifysourcessigabrt.patch
#oldarchive option was not working(#594044)
Patch7: tar-1.23-oldarchive.patch
#fix exclusion of long file names with --xattrs (#634866)
Patch8: tar-1.23-longnames.patch
#do not crash with --listed-incremental (#635318)
Patch9: tar-1.23-listedincremental.patch
#match non-stripped file names (#637085)
Patch10: tar-1.23-stripcomponents.patch
Patch8: tar-1.23-stripcomponents.patch
#fix bug with -C and extracting directories
Patch9: tar-1.24-extractingdirs.patch
Requires: info
BuildRequires: autoconf automake gzip texinfo gettext libacl-devel gawk rsh
%if %{WITH_SELINUX}
@ -67,9 +65,8 @@ the rmt package.
%patch5 -p1 -b .rofs
%patch6 -p1 -b .fortify
%patch7 -p1 -b .oldarchive
%patch8 -p1 -b .longnames
%patch9 -p1 -b .listedincremental
%patch10 -p1 -b .stripcomponents
%patch8 -p1 -b .stripcomponents
%patch9 -p1 -b .extractC
autoreconf
@ -131,6 +128,9 @@ fi
%{_infodir}/tar.info*
%changelog
* Mon Oct 25 2010 Ondrej Vasik <ovasik@redhat.com> 2:1.24-1
- new upstream release 1.24, use .xz archive
* Wed Sep 29 2010 jkeating - 2:1.23-8
- Rebuilt for gcc bug 634757