tar/tar-1.29-wildcards.patch

108 lines
3.6 KiB
Diff
Raw Normal View History

2019-09-30 11:18:06 -04:00
From ae0730a98f7269a7bf7adb6047aa421939b290b7 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 28 Jul 2014 08:12:14 +0200
Subject: [PATCH] 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 | 15 +++++----------
tests/exclude01.at | 1 +
3 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/doc/tar.texi b/doc/tar.texi
2021-11-13 14:58:03 +08:00
index fba10ae..ff002a9 100644
2019-09-30 11:18:06 -04:00
--- a/doc/tar.texi
+++ b/doc/tar.texi
2021-11-13 14:58:03 +08:00
@@ -8437,7 +8437,7 @@ The following table summarizes pattern-matching default values:
2019-09-30 11:18:06 -04:00
@multitable @columnfractions .3 .7
@headitem Members @tab Default settings
-@item Inclusion @tab @option{--no-wildcards --anchored --no-wildcards-match-slash}
+@item Inclusion @tab @option{--wildcards --anchored --wildcards-match-slash}
@item Exclusion @tab @option{--wildcards --no-anchored --wildcards-match-slash}
@end multitable
2021-11-13 14:58:03 +08:00
@@ -12948,6 +12948,9 @@ is available at
2019-09-30 11:18:06 -04:00
@table @asis
@item Use of globbing patterns when listing and extracting.
+Note: Following is true for original unpatched GNU tar.
+For compatibility reasons, the old behavior was preserved.
+
Previous versions of GNU tar assumed shell-style globbing when
extracting from or listing an archive. For example:
diff --git a/src/names.c b/src/names.c
2021-11-13 14:58:03 +08:00
index 272653d..a592faa 100644
2019-09-30 11:18:06 -04:00
--- a/src/names.c
+++ b/src/names.c
2021-11-13 14:58:03 +08:00
@@ -142,7 +142,7 @@ static struct argp_option names_options[] = {
2019-09-30 11:18:06 -04:00
{"no-ignore-case", NO_IGNORE_CASE_OPTION, 0, 0,
2021-11-13 14:58:03 +08:00
N_("case sensitive matching (default)"), GRID_MATCH },
2019-09-30 11:18:06 -04:00
{"wildcards", WILDCARDS_OPTION, 0, 0,
2021-11-13 14:58:03 +08:00
- N_("use wildcards (default for exclusion)"), GRID_MATCH },
+ N_("use wildcards (default)"), GRID_MATCH },
2019-09-30 11:18:06 -04:00
{"no-wildcards", NO_WILDCARDS_OPTION, 0, 0,
2021-11-13 14:58:03 +08:00
N_("verbatim string matching"), GRID_MATCH },
2019-09-30 11:18:06 -04:00
{"wildcards-match-slash", WILDCARDS_MATCH_SLASH_OPTION, 0, 0,
2021-11-13 14:58:03 +08:00
@@ -225,8 +225,7 @@ names_parse_opt (int key, char *arg, struct argp_state *state)
2019-09-30 11:18:06 -04:00
/* Wildcard matching settings */
enum wildcards
{
- default_wildcards, /* For exclusion == enable_wildcards,
- for inclusion == disable_wildcards */
+ default_wildcards, /* enable_wildcards */
disable_wildcards,
enable_wildcards
};
2021-11-13 14:58:03 +08:00
@@ -244,7 +243,7 @@ static int include_anchored = EXCLUDE_ANCHORED;
2019-09-30 11:18:06 -04:00
| recursion_option)
#define INCLUDE_OPTIONS \
- (((wildcards == enable_wildcards) ? EXCLUDE_WILDCARDS : 0) \
+ (((wildcards != disable_wildcards) ? EXCLUDE_WILDCARDS : 0) \
| include_anchored \
| matching_flags \
| recursion_option)
2021-11-13 14:58:03 +08:00
@@ -1393,8 +1392,7 @@ regex_usage_warning (const char *name)
2019-09-30 11:18:06 -04:00
/* Warn about implicit use of the wildcards in command line arguments.
(Default for tar prior to 1.15.91, but changed afterwards) */
- if (wildcards == default_wildcards
- && fnmatch_pattern_has_wildcards (name, 0))
+ if (0 && fnmatch_pattern_has_wildcards (name, 0))
{
warned_once = 1;
WARN ((0, 0,
2021-11-13 14:58:03 +08:00
@@ -1768,10 +1766,7 @@ collect_and_sort_names (void)
2019-09-30 11:18:06 -04:00
if (name->found_count || name->directory)
continue;
- if (name->matching_flags & EXCLUDE_WILDCARDS)
- /* NOTE: EXCLUDE_ANCHORED is not relevant here */
- /* FIXME: just skip regexps for now */
- continue;
+
chdir_do (name->change_dir);
if (name->name[0] == 0)
diff --git a/tests/exclude01.at b/tests/exclude01.at
2021-11-13 14:58:03 +08:00
index a813c6e..3a546fc 100644
2019-09-30 11:18:06 -04:00
--- a/tests/exclude01.at
+++ b/tests/exclude01.at
@@ -61,6 +61,7 @@ testdir/dir2/file2
testdir/dir3/
NEXT
testdir/dir1/*
+testdir/dir1/file1
NEXT
testdir/dir1/*
NEXT
--
2021-11-13 14:58:03 +08:00
1.8.3.1
2019-09-30 11:18:06 -04:00