diff --git a/tar-1.29-wildcards.patch b/tar-1.29-wildcards.patch new file mode 100644 index 0000000..e239155 --- /dev/null +++ b/tar-1.29-wildcards.patch @@ -0,0 +1,107 @@ +From ae0730a98f7269a7bf7adb6047aa421939b290b7 Mon Sep 17 00:00:00 2001 +From: 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 +index a8969e0..0185157 100644 +--- a/doc/tar.texi ++++ b/doc/tar.texi +@@ -8439,7 +8439,7 @@ The following table summarizes pattern-matching default values: + + @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 + +@@ -12915,6 +12915,9 @@ version of this document is available at + @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 +index 037b869..d96ad71 100644 +--- a/src/names.c ++++ b/src/names.c +@@ -137,7 +137,7 @@ static struct argp_option names_options[] = { + {"no-ignore-case", NO_IGNORE_CASE_OPTION, 0, 0, + N_("case sensitive matching (default)"), GRID+1 }, + {"wildcards", WILDCARDS_OPTION, 0, 0, +- N_("use wildcards (default for exclusion)"), GRID+1 }, ++ N_("use wildcards (default)"), GRID+1 }, + {"no-wildcards", NO_WILDCARDS_OPTION, 0, 0, + N_("verbatim string matching"), GRID+1 }, + {"wildcards-match-slash", WILDCARDS_MATCH_SLASH_OPTION, 0, 0, +@@ -195,8 +195,7 @@ names_parse_opt (int key, char *arg, struct argp_state *state) + /* Wildcard matching settings */ + enum wildcards + { +- default_wildcards, /* For exclusion == enable_wildcards, +- for inclusion == disable_wildcards */ ++ default_wildcards, /* enable_wildcards */ + disable_wildcards, + enable_wildcards + }; +@@ -214,7 +213,7 @@ static int include_anchored = EXCLUDE_ANCHORED; + | recursion_option) + + #define INCLUDE_OPTIONS \ +- (((wildcards == enable_wildcards) ? EXCLUDE_WILDCARDS : 0) \ ++ (((wildcards != disable_wildcards) ? EXCLUDE_WILDCARDS : 0) \ + | include_anchored \ + | matching_flags \ + | recursion_option) +@@ -1234,8 +1233,7 @@ regex_usage_warning (const char *name) + + /* 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, +@@ -1618,10 +1616,7 @@ collect_and_sort_names (void) + + 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 +index c3cd10b..c590047 100644 +--- 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 +-- +2.5.5 +