rebase to new upstream release

Per release notes:
https://savannah.gnu.org/forum/forum.php?forum_id=8037

Version: 1.28-1
This commit is contained in:
Pavel Raiskup 2014-07-28 08:41:17 +02:00
parent d9303a0ad2
commit 6334ff4be0
18 changed files with 242 additions and 430 deletions

14
.gitignore vendored
View File

@ -1,12 +1,2 @@
tar-1.23.tar.bz2
tar-1.23.tar.bz2.sig
/tar-1.24.tar.xz
/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
/tar-1.27.tar.xz
/tar-1.27.tar.xz.sig
/tar-1.27.1.tar.xz
/tar-1.27.1.tar.xz.sig
/tar-1.28.tar.xz
/tar-1.28.tar.xz.sig

View File

@ -1,2 +1,2 @@
e0382a4064e09a4943f3adeff1435978 tar-1.27.1.tar.xz
575d1ba7ddcec1bbecd2dd9556b3848e tar-1.27.1.tar.xz.sig
49b6306167724fe48f419a33a5beb857 tar-1.28.tar.xz
a84d018c092514a65ba1c270a68826c3 tar-1.28.tar.xz.sig

View File

@ -1,14 +0,0 @@
diff --git a/src/create.c b/src/create.c
index 43b5a4c..f98cbb5 100644
--- a/src/create.c
+++ b/src/create.c
@@ -1798,7 +1798,8 @@ dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
}
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 )
utime_error (p);
}

View File

@ -1,39 +0,0 @@
diff --git a/src/tar.c b/src/tar.c
index e244808..18277e4 100644
--- a/src/tar.c
+++ b/src/tar.c
@@ -162,6 +162,14 @@ set_archive_format (char const *name)
archive_format = p->fmt;
}
+static void
+set_xattr_option (int value)
+{
+ if (value == 1)
+ set_archive_format ("posix");
+ xattrs_option = value;
+}
+
const char *
archive_format_string (enum archive_format fmt)
{
@@ -2141,16 +2149,16 @@ parse_opt (int key, char *arg, struct argp_state *state)
break;
case XATTR_OPTION:
- set_archive_format ("posix");
- xattrs_option = 1;
+ set_xattr_option (1);
break;
case NO_XATTR_OPTION:
- xattrs_option = -1;
+ set_xattr_option (-1);
break;
case XATTR_INCLUDE:
case XATTR_EXCLUDE:
+ set_xattr_option (1);
xattrs_mask_add (arg, (key == XATTR_INCLUDE));
break;

View File

@ -1,36 +0,0 @@
diff --git a/src/xattrs.c b/src/xattrs.c
index 5a4bf72..bdf6ba0 100644
--- a/src/xattrs.c
+++ b/src/xattrs.c
@@ -693,7 +693,7 @@ xattrs_print_char (struct tar_stat_info const *st, char *output)
if (selinux_context_option > 0 && st->cntx_name)
*output = '.';
- if (acls_option && (st->acls_a_len || st->acls_d_len))
+ if (acls_option > 0 && (st->acls_a_len || st->acls_d_len))
*output = '+';
}
@@ -704,11 +704,11 @@ xattrs_print (struct tar_stat_info const *st)
return;
/* selinux */
- if (selinux_context_option && st->cntx_name)
+ if (selinux_context_option > 0 && st->cntx_name)
fprintf (stdlis, " s: %s\n", st->cntx_name);
/* acls */
- if (acls_option && (st->acls_a_len || st->acls_d_len))
+ if (acls_option > 0 && (st->acls_a_len || st->acls_d_len))
{
fprintf (stdlis, " a: ");
acls_one_line ("", ',', st->acls_a_ptr, st->acls_a_len);
@@ -717,7 +717,7 @@ xattrs_print (struct tar_stat_info const *st)
}
/* xattrs */
- if (xattrs_option && st->xattr_map_size)
+ if (xattrs_option > 0 && st->xattr_map_size)
{
int i;

View File

@ -1,13 +0,0 @@
diff --git a/src/names.c b/src/names.c
index e3bbfb6..8f238ba 100644
--- a/src/names.c
+++ b/src/names.c
@@ -439,7 +439,7 @@ handle_option (const char *str)
int i;
while (*str && isspace (*str))
- ;
+ ++str;
if (*str != '-')
return 1;

View File

@ -1,84 +0,0 @@
diff --git a/configure.ac b/configure.ac
index c9d1250..dbf991a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -79,7 +79,8 @@ AC_ARG_WITH([posix-acls],
if test "x$with_posix_acls" != "xno"; then
AC_CHECK_HEADERS(sys/acl.h,, [with_posix_acls=no])
for tar_acl_func in acl_get_file acl_get_fd acl_set_file acl_set_fd \
- acl_to_text acl_from_text; do \
+ acl_to_text acl_from_text acl_delete_def_file \
+ acl_free; do \
test "x$with_posix_acls" = xno && break
AC_SEARCH_LIBS([$tar_acl_func], [acl pacl], [], [with_posix_acls=no])
done
diff --git a/src/xattrs.c b/src/xattrs.c
index 3137e9a..6ec34ce 100644
--- a/src/xattrs.c
+++ b/src/xattrs.c
@@ -61,6 +61,7 @@ static struct
static acl_t acl_get_file_at (int, const char *, acl_type_t);
static int acl_set_file_at (int, const char *, acl_type_t, acl_t);
static int file_has_acl_at (int, char const *, struct stat const *);
+static int acl_delete_def_file_at (int, char const *);
/* acl_get_file_at */
#define AT_FUNC_NAME acl_get_file_at
@@ -88,6 +89,17 @@ static int file_has_acl_at (int, char const *, struct stat const *);
#undef AT_FUNC_POST_FILE_PARAM_DECLS
#undef AT_FUNC_POST_FILE_ARGS
+/* acl_delete_def_file_at */
+#define AT_FUNC_NAME acl_delete_def_file_at
+#define AT_FUNC_F1 acl_delete_def_file
+#define AT_FUNC_POST_FILE_PARAM_DECLS
+#define AT_FUNC_POST_FILE_ARGS
+#include "at-func.c"
+#undef AT_FUNC_NAME
+#undef AT_FUNC_F1
+#undef AT_FUNC_POST_FILE_PARAM_DECLS
+#undef AT_FUNC_POST_FILE_ARGS
+
/* gnulib file_has_acl_at */
#define AT_FUNC_NAME file_has_acl_at
#define AT_FUNC_F1 file_has_acl
@@ -187,7 +199,8 @@ fixup_extra_acl_fields (char *ptr)
return ptr;
}
-/* "system.posix_acl_access" */
+/* Set the "system.posix_acl_access/system.posix_acl_default" extended
+ attribute. Called only when acls_option > 0. */
static void
xattrs__acls_set (struct tar_stat_info const *st,
char const *file_name, int type,
@@ -199,15 +212,23 @@ xattrs__acls_set (struct tar_stat_info const *st,
{
/* assert (strlen (ptr) == len); */
ptr = fixup_extra_acl_fields (ptr);
-
acl = acl_from_text (ptr);
- acls_option = 1;
}
- else if (acls_option > 0)
+ else if (def)
+ {
+ /* No "default" IEEE 1003.1e ACL set for directory. At this moment,
+ FILE_NAME may already have inherited default acls from parent
+ directory; clean them up. */
+ if (acl_delete_def_file_at (chdir_fd, file_name))
+ WARNOPT (WARN_XATTR_WRITE,
+ (0, errno,
+ _("acl_delete_def_file_at: Cannot drop default POSIX ACLs "
+ "for file '%s'"),
+ file_name));
+ return;
+ }
+ else
acl = perms2acl (st->stat.st_mode);
- else
- return; /* don't call acl functions unless we first hit an ACL, or
- --acls was passed explicitly */
if (!acl)
{

View File

@ -1,56 +0,0 @@
diff --git a/NEWS b/NEWS
index 1a264b0..c4dd8c6 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,8 @@ version 1.27.1 - Sergey Poznyakoff, 2013-11-17
* Fix extracting sparse members from star archives.
+* Tar refuses to read input from and write output to a tty device.
+
version 1.27 - Sergey Poznyakoff, 2013-10-05
diff --git a/src/buffer.c b/src/buffer.c
index 4b44eaf..5ec8d31 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -633,6 +633,22 @@ init_buffer (void)
record_end = record_start + blocking_factor;
}
+static void
+check_tty (enum access_mode mode)
+{
+ /* Refuse to read archive from and write it to a tty. */
+ if (strcmp (archive_name_array[0], "-") == 0
+ && isatty (mode == ACCESS_READ ? STDIN_FILENO : STDOUT_FILENO))
+ {
+ FATAL_ERROR ((0, 0,
+ mode == ACCESS_READ
+ ? _("Refusing to read archive contents from terminal "
+ "(missing -f option?)")
+ : _("Refusing to write archive contents to terminal "
+ "(missing -f option?)")));
+ }
+}
+
/* Open an archive file. The argument specifies whether we are
reading or writing, or both. */
static void
@@ -653,6 +669,7 @@ _open_archive (enum access_mode wanted_access)
/* When updating the archive, we start with reading. */
access_mode = wanted_access == ACCESS_UPDATE ? ACCESS_READ : wanted_access;
+ check_tty (access_mode);
read_full_records = read_full_records_option;
@@ -696,7 +713,6 @@ _open_archive (enum access_mode wanted_access)
enum compress_type type;
archive = STDIN_FILENO;
-
type = check_compressed_archive (&shortfile);
if (type != ct_tar && type != ct_none)
FATAL_ERROR ((0, 0,

34
tar-1.28-atime-rofs.patch Normal file
View File

@ -0,0 +1,34 @@
From 71769b9ea3c12b7fbb39fee2e9f4a4c1c36c0d0b Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 28 Jul 2014 08:13:31 +0200
Subject: [PATCH 4/9] utime & read-only FS
Ignore errors from setting utime() for source file on read-only
file-system.
Resolves: #500742
Upstream bugreport (still downstream):
http://lists.gnu.org/archive/html/bug-tar/2009-06/msg00016.html
---
src/create.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/create.c b/src/create.c
index e2f4ede..f644f23 100644
--- a/src/create.c
+++ b/src/create.c
@@ -1824,7 +1824,8 @@ dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
}
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 )
utime_error (p);
}
--
1.9.3

View File

@ -1,8 +1,26 @@
From 6400976234810f4de138ee692756072f5beaa64d Mon Sep 17 00:00:00 2001
From: Pavel Raiskup <praiskup@redhat.com>
Date: Mon, 28 Jul 2014 08:18:53 +0200
Subject: [PATCH 9/9] --posix & big (effective) sparse files can not be listed
Upstram bugreports (still downstream):
http://www.mail-archive.com/bug-tar%40gnu.org/msg03909.html
http://www.mail-archive.com/bug-tar@gnu.org/msg04489.html
Related: #916995
---
src/list.c | 1 -
src/sparse.c | 4 ++--
src/tar.h | 4 ++++
src/xheader.c | 28 +++++++++++++++++++++++++++-
4 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/src/list.c b/src/list.c
index 23613f7..ef71b4f 100644
index 0c7a740..ce9ce4b 100644
--- a/src/list.c
+++ b/src/list.c
@@ -671,7 +671,6 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
@@ -700,7 +700,6 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
}
}
@ -11,7 +29,7 @@ index 23613f7..ef71b4f 100644
if (sparse_member_p (stat_info))
diff --git a/src/sparse.c b/src/sparse.c
index 250e845..8e840cf 100644
index 53c1868..c8bec6b 100644
--- a/src/sparse.c
+++ b/src/sparse.c
@@ -892,7 +892,7 @@ static struct tar_sparse_optab const star_optab = {
@ -33,7 +51,7 @@ index 250e845..8e840cf 100644
by deleting GNU.sparse.map from 0.1 format: --sparse-version 0.1
--pax-option delete=GNU.sparse.map
diff --git a/src/tar.h b/src/tar.h
index 70055af..5f52bd0 100644
index 3d69399..73cd11e 100644
--- a/src/tar.h
+++ b/src/tar.h
@@ -327,6 +327,10 @@ struct tar_stat_info
@ -48,10 +66,10 @@ index 70055af..5f52bd0 100644
struct xattr_array *xattr_map;
diff --git a/src/xheader.c b/src/xheader.c
index c8c54b6..ac7ff34 100644
index c94c6d3..0be83a4 100644
--- a/src/xheader.c
+++ b/src/xheader.c
@@ -741,6 +741,20 @@ decx (void *data, char const *keyword, char const *value, size_t size)
@@ -742,6 +742,20 @@ decx (void *data, char const *keyword, char const *value, size_t size)
keyword));
}
@ -72,7 +90,7 @@ index c8c54b6..ac7ff34 100644
void
xheader_decode (struct tar_stat_info *st)
{
@@ -754,6 +768,11 @@ xheader_decode (struct tar_stat_info *st)
@@ -755,6 +769,11 @@ xheader_decode (struct tar_stat_info *st)
continue;
}
run_override_list (keyword_override_list, st);
@ -84,7 +102,7 @@ index c8c54b6..ac7ff34 100644
}
static void
@@ -1359,7 +1378,14 @@ sparse_size_decoder (struct tar_stat_info *st,
@@ -1360,7 +1379,14 @@ sparse_size_decoder (struct tar_stat_info *st,
{
uintmax_t u;
if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), keyword))
@ -100,3 +118,6 @@ index c8c54b6..ac7ff34 100644
}
static void
--
1.9.3

View File

@ -1,8 +1,23 @@
From 914bb84cb71ebb63c40bc27f4d017cc0a0a39bf2 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 28 Jul 2014 08:15:14 +0200
Subject: [PATCH 6/9] Add documentation which was not yet pushed upstream
Upstream bugreport:
http://lists.gnu.org/archive/html/bug-tar/2012-08/msg00012.html
http://www.mail-archive.com/bug-tar@gnu.org/msg04135.html
Related: #996753
---
doc/tar.texi | 276 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 276 insertions(+)
diff --git a/doc/tar.texi b/doc/tar.texi
index d678db9..ab8a0c8 100644
index db79824..a000f3f 100644
--- a/doc/tar.texi
+++ b/doc/tar.texi
@@ -162,6 +163,7 @@ How to Create Archives
@@ -161,6 +161,7 @@ How to Create Archives
How to List Archives
* list dir::
@ -10,7 +25,7 @@ index d678db9..ab8a0c8 100644
How to Extract Members from an Archive
@@ -1492,6 +1494,7 @@ for a detailed discussion of globbing patterns and related
@@ -1491,6 +1492,7 @@ for a detailed discussion of globbing patterns and related
@menu
* list dir::
@ -18,7 +33,7 @@ index d678db9..ab8a0c8 100644
@end menu
@node list dir
@@ -1522,6 +1525,116 @@ drwxrwxrwx myself/user 0 1990-05-31 21:49 practice/
@@ -1521,6 +1523,116 @@ drwxrwxrwx myself/user 0 1990-05-31 21:49 practice/
When you use a directory name as a file name argument, @command{tar} acts on
all the files (including sub-directories) in that directory.
@ -135,7 +150,7 @@ index d678db9..ab8a0c8 100644
@node extract
@section How to Extract Members from an Archive
@cindex Extraction
@@ -2371,6 +2484,10 @@ Normally when creating an archive, @command{tar} strips an initial
@@ -2368,6 +2480,10 @@ Normally when creating an archive, @command{tar} strips an initial
treats names specially if they have initial @samp{/} or internal
@samp{..}. This option disables that behavior. @xref{absolute}.
@ -146,7 +161,7 @@ index d678db9..ab8a0c8 100644
@opsummary{after-date}
@item --after-date
@@ -2919,6 +3036,11 @@ contents have changed (as opposed to just @option{--newer}, which will
@@ -2953,6 +3069,11 @@ contents have changed (as opposed to just @option{--newer}, which will
also back up files for which any status information has
changed). @xref{after}.
@ -158,7 +173,7 @@ index d678db9..ab8a0c8 100644
@opsummary{no-anchored}
@item --no-anchored
An exclude pattern can match any subsequence of the name's components.
@@ -3002,11 +3124,20 @@ locations. Usually @command{tar} determines automatically whether
@@ -3036,11 +3157,20 @@ locations. Usually @command{tar} determines automatically whether
the archive can be seeked or not. Use this option to disable this
mechanism.
@ -179,7 +194,7 @@ index d678db9..ab8a0c8 100644
@opsummary{no-wildcards}
@item --no-wildcards
Do not use wildcards.
@@ -3239,6 +3370,11 @@ in cases when such recognition fails. It takes effect only if the
@@ -3286,6 +3416,11 @@ in cases when such recognition fails. It takes effect only if the
archive is open for reading (e.g. with @option{--list} or
@option{--extract} options).
@ -191,7 +206,7 @@ index d678db9..ab8a0c8 100644
@opsummary{show-defaults}
@item --show-defaults
@@ -3466,6 +3602,11 @@ Enable or disable warning messages identified by @var{keyword}. The
@@ -3541,6 +3676,11 @@ Enable or disable warning messages identified by @var{keyword}. The
messages are suppressed if @var{keyword} is prefixed with @samp{no-}.
@xref{warnings}.
@ -203,7 +218,7 @@ index d678db9..ab8a0c8 100644
@opsummary{wildcards}
@item --wildcards
Use wildcards when matching member names with patterns.
@@ -4218,6 +4359,11 @@ tar (child): trying gzip
@@ -4363,6 +4503,11 @@ failed, switched to @command{gzip}.
@cindex @samp{Record size = %lu blocks}, warning message
@item record-size
@samp{Record size = %lu blocks}
@ -215,7 +230,7 @@ index d678db9..ab8a0c8 100644
@end table
@subheading Keywords controlling incremental extraction:
@@ -8770,6 +8916,8 @@ implementation able to read @samp{ustar} archives will be able to read
@@ -8968,6 +9113,8 @@ implementation able to read @samp{ustar} archives will be able to read
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.
@ -224,7 +239,7 @@ index d678db9..ab8a0c8 100644
This archive format will be the default format for future versions
of @GNUTAR{}.
@@ -9412,6 +9560,135 @@ Same as both @option{--same-permissions} and @option{--same-order}.
@@ -9607,6 +9754,135 @@ Same as both @option{--same-permissions} and @option{--same-order}.
This option is deprecated, and will be removed in @GNUTAR{} version 1.23.
@ -360,3 +375,6 @@ index d678db9..ab8a0c8 100644
@end table
@node Portability
--
1.9.3

View File

@ -1,22 +1,24 @@
commit 2c7692bd81946100244f022fdfa47e91afd44632 (document_exclude_mistake)
Author: Pavel Raiskup <praiskup@redhat.com>
AuthorDate: Mon Mar 31 14:22:56 2014 +0200
Commit: Pavel Raiskup <praiskup@redhat.com>
CommitDate: Mon Mar 31 14:30:02 2014 +0200
From 18112ded916cf62b3bd3c0ffb9530e4ade3d2209 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 28 Jul 2014 08:16:33 +0200
Subject: [PATCH 7/9] Document exclude mistakes with
docs: document common mistake with --exclude
.. usually with --no-wildcards-match-slash & --anchored options.
The default settings of --exclude wildcard matching leads usually
to --no-wildcards-match-slash option but there is not obvious that
users should also turn --anchored option on.
Upstream bugreport (still downstream):
http://www.mail-archive.com/bug-tar@gnu.org/msg04488.html
* doc/tar.texi: Describe.
Related: #903666
---
doc/tar.texi | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/doc/tar.texi b/doc/tar.texi
index e3df0c9..395f24c 100644
index a000f3f..2695d22 100644
--- a/doc/tar.texi
+++ b/doc/tar.texi
@@ -7906,6 +7906,73 @@ The following table summarizes pattern-matching default values:
@@ -8051,6 +8051,73 @@ The following table summarizes pattern-matching default values:
@item Exclusion @tab @option{--wildcards --no-anchored --wildcards-match-slash}
@end multitable
@ -90,3 +92,6 @@ index e3df0c9..395f24c 100644
@node quoting styles
@section Quoting Member Names
--
1.9.3

View File

@ -1,8 +1,19 @@
From 60d08c6d82f0c33a6704c79afd416902eb8c663f Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 28 Jul 2014 08:08:50 +0200
Subject: [PATCH 1/9] Stop issuing lone zero block warnings (downstram)
Resolves: #135601
---
src/list.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/list.c b/src/list.c
index cf2de09..f4e6e0a 100644
index b4277e0..0c7a740 100644
--- a/src/list.c
+++ b/src/list.c
@@ -212,6 +212,14 @@ read_and (void (*do_something) (void))
@@ -240,6 +240,14 @@ read_and (void (*do_something) (void))
if (!ignore_zeros_option)
{
@ -17,7 +28,7 @@ index cf2de09..f4e6e0a 100644
char buf[UINTMAX_STRSIZE_BOUND];
status = read_header (&current_header, &current_stat_info,
@@ -221,6 +229,9 @@ read_and (void (*do_something) (void))
@@ -249,6 +257,9 @@ read_and (void (*do_something) (void))
WARNOPT (WARN_ALONE_ZERO_BLOCK,
(0, 0, _("A lone zero block at %s"),
STRINGIFY_BIGINT (current_block_ordinal (), buf)));
@ -27,3 +38,6 @@ index cf2de09..f4e6e0a 100644
break;
}
status = prev_status;
--
1.9.3

View File

@ -1,8 +1,23 @@
From b451bfd224da44e93cf842f23455d755e48421dd Mon Sep 17 00:00:00 2001
From: Pavel Raiskup <praiskup@redhat.com>
Date: Mon, 28 Jul 2014 08:17:55 +0200
Subject: [PATCH 8/9] Fix for infinite loops during sparse file handling
Upstream bugreport (still downstream):
http://www.mail-archive.com/bug-tar@gnu.org/msg04432.html
Resolves: #1082608
---
THANKS | 1 +
src/sparse.c | 48 ++++++++++++++++++++++++++++++++----------------
2 files changed, 33 insertions(+), 16 deletions(-)
diff --git a/THANKS b/THANKS
index a734fb6..2da6100 100644
index b4c5427..e74f71c 100644
--- a/THANKS
+++ b/THANKS
@@ -173,6 +173,7 @@ Fabio d'Alessi cars@civ.bio.unipd.it
@@ -175,6 +175,7 @@ Fabio d'Alessi cars@civ.bio.unipd.it
Frank Heckenbach frank@g-n-u.de
Frank Koenen koenfr@lidp.com
Franz-Werner Gergen gergen@edvulx.mpi-stuttgart.mpg.de
@ -11,7 +26,7 @@ index a734fb6..2da6100 100644
Fritz Elfert fritz@fsun.triltsch.de
George Chyu gschyu@ccgate.dp.beckman.com
diff --git a/src/sparse.c b/src/sparse.c
index f0268f4..250e845 100644
index 6a97676..53c1868 100644
--- a/src/sparse.c
+++ b/src/sparse.c
@@ -301,6 +301,7 @@ sparse_dump_region (struct tar_sparse_file *file, size_t i)
@ -109,3 +124,6 @@ index f0268f4..250e845 100644
{
report_difference (file->stat_info, _("Contents differ"));
return false;
--
1.9.3

View File

@ -1,24 +1,25 @@
From 207b445ca7018a95f2f96d9514b8d87c80e8e11e Mon Sep 17 00:00:00 2001
From fecf72d73021fa47956ea551f6ccc804213452ce Mon Sep 17 00:00:00 2001
From: Pavel Raiskup <praiskup@redhat.com>
Date: Wed, 4 Apr 2012 18:04:53 +0200
Subject: [PATCH] Bad cooperation of -C and -u options
Subject: [PATCH 5/9] Bad cooperation of -C and -u options
Previously, tar did not update archive with newly created files in archived
directory -- it failed instead with "file not found" error (because it looked
in bad directory in filesystem).
---
src/update.c | 2 +-
tests/Makefile.am | 1 +-
tests/testsuite.at | 1 +-
tests/update03.at | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 65 insertions(+), 4 deletions(-)
tests/Makefile.am | 1 +
tests/testsuite.at | 1 +
tests/update03.at | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 62 insertions(+), 1 deletion(-)
create mode 100644 tests/update03.at
diff --git a/src/update.c b/src/update.c
index e3228d4..4739e0d 100644
index c8fca0c..9a9c4e2 100644
--- a/src/update.c
+++ b/src/update.c
@@ -159,7 +159,7 @@ update_archive (void)
@@ -152,7 +152,7 @@ update_archive (void)
for (p = dirp; *p; p += strlen (p) + 1)
addname (namebuf_name (nbuf, p),
@ -28,10 +29,10 @@ index e3228d4..4739e0d 100644
namebuf_free (nbuf);
free (dirp);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ab7d104..119f1f3 100644
index 6684d1d..2a2e1cc 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -156,6 +156,7 @@ TESTSUITE_AT = \
@@ -208,6 +208,7 @@ TESTSUITE_AT = \
update.at\
update01.at\
update02.at\
@ -40,10 +41,10 @@ index ab7d104..119f1f3 100644
volume.at\
verbose.at\
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 8366ef0..13f7506 100644
index 7f8e4c4..f1ce58f 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -241,6 +241,7 @@ m4_include([spmvp10.at])
@@ -360,6 +360,7 @@ AT_BANNER([Updates])
m4_include([update.at])
m4_include([update01.at])
m4_include([update02.at])
@ -117,5 +118,5 @@ index 0000000..185f9eb
+
+AT_CLEANUP
--
1.7.7.6
1.9.3

View File

@ -1,8 +1,26 @@
From 90f446f9b04ab820a99b9408e68c01dc6b57056c Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 28 Jul 2014 08:10:10 +0200
Subject: [PATCH 2/9] vfat-like FS & sparse (still downstream)
Fix extracting sparse files to a file system like vfat, when
ftruncate may fail to grow the size of a file. Still downstram,
(do we need this now? ftruncate & vfat works is now OK).
Resolves: #179507
Upstream bugreport:
http://lists.gnu.org/archive/html/bug-tar/2006-02/msg00000.html
---
src/system.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/system.c b/src/system.c
index ba4ac2d..ea88cd6 100644
index 9414233..37e9a3e 100644
--- a/src/system.c
+++ b/src/system.c
@@ -231,8 +231,25 @@ sys_compare_links (struct stat *link_data, struct stat *stat_data)
@@ -243,8 +243,25 @@ sys_compare_links (struct stat *link_data, struct stat *stat_data)
int
sys_truncate (int fd)
{
@ -29,3 +47,6 @@ index ba4ac2d..ea88cd6 100644
}
/* Return nonzero if NAME is the name of a regular file, or if the file
--
1.9.3

View File

@ -1,8 +1,25 @@
From ea75b84e2408a60d75df9e68eb5683fa27209939 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 28 Jul 2014 08:12:14 +0200
Subject: [PATCH 3/9] wildcard defaults (downstram; compatibility)
Change inclusion defaults of tar to "wildcards --anchored
--wildcards-match-slash" for compatibility reasons.
Resolves: #206841
---
doc/tar.texi | 5 ++++-
src/names.c | 5 +----
src/tar.c | 9 ++++-----
tests/exclude01.at | 1 +
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/doc/tar.texi b/doc/tar.texi
index db8f986..d70d113 100644
index 82c303d..db79824 100644
--- a/doc/tar.texi
+++ b/doc/tar.texi
@@ -7597,7 +7597,7 @@ The following table summarizes pattern-matching default values:
@@ -7902,7 +7902,7 @@ The following table summarizes pattern-matching default values:
@multitable @columnfractions .3 .7
@headitem Members @tab Default settings
@ -11,7 +28,7 @@ index db8f986..d70d113 100644
@item Exclusion @tab @option{--wildcards --no-anchored --wildcards-match-slash}
@end multitable
@@ -12038,6 +12038,9 @@ version of this document is available at
@@ -12365,6 +12365,9 @@ version of this document is available at
@table @asis
@item Use of globbing patterns when listing and extracting.
@ -22,10 +39,10 @@ index db8f986..d70d113 100644
extracting from or listing an archive. For example:
diff --git a/src/names.c b/src/names.c
index ba4d509..3911f8c 100644
index 594e7fd..fe3bcad 100644
--- a/src/names.c
+++ b/src/names.c
@@ -966,10 +966,7 @@ collect_and_sort_names (void)
@@ -1200,10 +1200,7 @@ collect_and_sort_names (void)
if (name->found_count || name->directory)
continue;
@ -38,10 +55,10 @@ index ba4d509..3911f8c 100644
if (name->name[0] == 0)
diff --git a/src/tar.c b/src/tar.c
index 928cfdd..22d3db1 100644
index cd32379..79b0a10 100644
--- a/src/tar.c
+++ b/src/tar.c
@@ -722,7 +722,7 @@ static struct argp_option options[] = {
@@ -800,7 +800,7 @@ static struct argp_option options[] = {
{"no-ignore-case", NO_IGNORE_CASE_OPTION, 0, 0,
N_("case sensitive matching (default)"), GRID+1 },
{"wildcards", WILDCARDS_OPTION, 0, 0,
@ -50,7 +67,7 @@ index 928cfdd..22d3db1 100644
{"no-wildcards", NO_WILDCARDS_OPTION, 0, 0,
N_("verbatim string matching"), GRID+1 },
{"no-wildcards-match-slash", NO_WILDCARDS_MATCH_SLASH_OPTION, 0, 0,
@@ -815,8 +815,7 @@ ARGMATCH_VERIFY (atime_preserve_args, atime_preserve_types);
@@ -895,8 +895,7 @@ ARGMATCH_VERIFY (atime_preserve_args, atime_preserve_types);
/* Wildcard matching settings */
enum wildcards
{
@ -60,7 +77,7 @@ index 928cfdd..22d3db1 100644
disable_wildcards,
enable_wildcards
};
@@ -847,7 +846,7 @@ struct tar_args /* Variables used during option parsing */
@@ -927,7 +926,7 @@ struct tar_args /* Variables used during option parsing */
| recursion_option)
#define MAKE_INCL_OPTIONS(args) \
@ -69,7 +86,7 @@ index 928cfdd..22d3db1 100644
| (args)->include_anchored \
| (args)->matching_flags \
| recursion_option)
@@ -2347,7 +2346,7 @@ decode_options (int argc, char **argv)
@@ -2442,7 +2441,7 @@ decode_options (int argc, char **argv)
/* Warn about implicit use of the wildcards in command line arguments.
See TODO */
@ -79,10 +96,10 @@ index 928cfdd..22d3db1 100644
/* Derive option values and check option consistency. */
diff --git a/tests/exclude01.at b/tests/exclude01.at
index 778a7fc..bd65ae0 100644
index 27dd9fe..61e5910 100644
--- a/tests/exclude01.at
+++ b/tests/exclude01.at
@@ -59,6 +59,7 @@ testdir/dir2/file2
@@ -61,6 +61,7 @@ testdir/dir2/file2
testdir/dir3/
NEXT
testdir/dir1/*
@ -90,3 +107,6 @@ index 778a7fc..bd65ae0 100644
NEXT
testdir/dir1/*
NEXT
--
1.9.3

124
tar.spec
View File

@ -4,102 +4,25 @@
Summary: A GNU file archiving program
Name: tar
Epoch: 2
Version: 1.27.1
Release: 5%{?dist}
Version: 1.28
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.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.
# ~> https://bugzilla.redhat.com/show_bug.cgi?id=135601
# ~> downstream
Patch1: tar-1.14-loneZeroWarning.patch
# Fix extracting sparse files to a file system like vfat, when ftruncate may fail
# to grow the size of a file.
# ~> #179507,
# ~> http://lists.gnu.org/archive/html/bug-tar/2006-02/msg00000.html
# ~> still downtream (do we need this now? ftruncate & vfat works is now OK)
Patch2: tar-1.15.1-vfatTruncate.patch
# Change inclusion defaults of tar to
# "--wildcards --anchored --wildcards-match-slash" for compatibility reasons.
# ~> #206841
# ~> downstream (compatibility)
Patch3: tar-1.17-wildcards.patch
# Ignore errors from setting utime() for source file on read-only file-system.
# ~> #500742
# ~> http://lists.gnu.org/archive/html/bug-tar/2009-06/msg00016.html
# ~> still downstream
Patch4: tar-1.22-atime-rofs.patch
# Fix for bad cooperation of -C and -u options.
# ~> #688567
# ~> http://lists.gnu.org/archive/html/bug-tar/2012-02/msg00007.html
# ~> still downstream
Patch5: tar-1.26-update-with-change-directory.patch
# Do not print xattrs/selinux/acls when --no-xattrs/--no-acls/--no-selinux
# options are used during -tvv output. (TODO: merge this with xattrs patch
# once becomes upstream)
# ~> downstream (yet)
# ~> proposal: http://lists.gnu.org/archive/html/bug-tar/2013-05/msg00020.html
Patch6: tar-1.26-xattrs-printing.patch
# Add documentation which was not yet pushed upstream
# ~> downstream
# ~> #996753
Patch7: tar-1.26-docu-xattrs.patch
# The --xattrs-include or --xattrs-exclude options should imply --xattrs.
# ~> still downstream
# http://lists.gnu.org/archive/html/bug-tar/2013-05/msg00020.html
# ~> #965969
Patch8: tar-1.26-xattrs-include-implies-xattrs.patch
# Document exclude mistakes with --no-wildcards-match-slash & --anchored
# ~> downstream
# http://www.mail-archive.com/bug-tar@gnu.org/msg04488.html
# ~> related to #903666
Patch9: tar-1.27.1-document-exclude-mistakes.patch
# Extract default ACLs which are stored in archive if --acls is passed.
# ~> upstream (7fe7adcbb985)
# http://www.mail-archive.com/bug-tar@gnu.org/msg04355.html
# ~> #1082603
Patch10: tar-1.27.1-default-acls.patch
# Fix for infinite loops during sparse file handling
# ~> dostream
# http://www.mail-archive.com/bug-tar@gnu.org/msg04432.html
# ~> #1082608
Patch11: tar-1.27.1-sparse-inf-loops.patch
# --posix & big (effective) sparse files can not be listed
# ~> dowstream
# http://www.mail-archive.com/bug-tar%40gnu.org/msg03909.html
# http://www.mail-archive.com/bug-tar@gnu.org/msg04489.html
# ~> #916995
Patch12: tar-1.27.1-big-sparse-listing.patch
# Fix inf. loop in -T handling (v1.27.{0,1} only, thus fc21 only)
# ~> uptream (commit 8528958)
# http://www.mail-archive.com/bug-tar@gnu.org/msg04470.html
# ~> (#1083066)
Patch13: tar-1.27.1-T-eternal-loop.patch
# Refuse to read/write archive from/to terminal input/output (enhancement fc21+)
# ~> upstream (commits b0902369e7 & 7808b69)
# http://lists.gnu.org/archive/html/bug-tar/2014-03/msg00030.html
# ~> #1083075
Patch14: tar-1.27.1-dont-read-write-terminal.patch
# Note that all patches are documented in patch files (git format-patch format)
Patch1: tar-1.28-loneZeroWarning.patch
Patch2: tar-1.28-vfatTruncate.patch
Patch3: tar-1.28-wildcards.patch
Patch4: tar-1.28-atime-rofs.patch
Patch5: tar-1.28-update-with-change-directory.patch
Patch7: tar-1.28-docu-xattrs.patch
Patch9: tar-1.28-document-exclude-mistakes.patch
Patch11: tar-1.28-sparse-inf-loops.patch
Patch12: tar-1.28-big-sparse-listing.patch
# run "make check" by default
%bcond_without check
@ -133,22 +56,7 @@ If you want to use tar for remote backups, you also need to install
the rmt package on the remote box.
%prep
%setup -q
%patch1 -p1 -b .loneZeroWarning
%patch2 -p1 -b .vfatTruncate
%patch3 -p1 -b .wildcards
%patch4 -p1 -b .rofs
%patch5 -p1 -b .update_and_changedir
%patch6 -p1 -b .print-xattrs-fix
%patch7 -p1 -b .xattrs-documentation
%patch8 -p1 -b .xattrs-if-xattrs-include
%patch9 -p1 -b .document-exclude-mistakes
%patch10 -p1 -b .default-acls
%patch11 -p1 -b .inf-loops-in-sparse
%patch12 -p1 -b .big-sparse
%patch13 -p1 -b .T-eternal-loop
%patch14 -p1 -b .terminal-input-output
%autosetup -p1
autoreconf -v
%build
@ -168,11 +76,11 @@ make DESTDIR=$RPM_BUILD_ROOT install
ln -s tar $RPM_BUILD_ROOT%{_bindir}/gtar
rm -f $RPM_BUILD_ROOT/%{_infodir}/dir
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
install -c -p -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man1
ln -s tar.1.gz $RPM_BUILD_ROOT%{_mandir}/man1/gtar.1
# XXX Nuke unpackaged files.
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/rmt
rm -f $RPM_BUILD_ROOT%{_mandir}/man8/rmt.8*
%find_lang %name
@ -206,6 +114,10 @@ fi
%{_infodir}/tar.info*
%changelog
* Mon Jul 28 2014 Pavel Raiskup <praiskup@redhat.com> - 1.28-1
- rebase to new upstream tarball, per release notes:
https://savannah.gnu.org/forum/forum.php?forum_id=8037
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:1.27.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild