summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-07-30 18:26:38 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2011-07-30 18:26:38 +0300
commitfa307a665545753b6729191fd2559ce872fa470a (patch)
treea7fd6a9fc0b740d154496b1de4c6bf2a59798f0a
parent49bd102a1b220a0e4ad3e0e75ac0cdd2a5964efa (diff)
downloadtar-fa307a665545753b6729191fd2559ce872fa470a.tar.gz
Fix the --exclude-backups option.
* src/tar.c (add_exclude_array): Take exclude option filags in its second argument. (parse_opt): Register backup_file_table with the EXCLUDE_WILDCARDS flag. * tests/exclude07.at: New testcase. * tests/Makefile.am (TESTSUITE_AT): Add testsuite.at. * tests/testsuite.at: Include exclude07.at.
-rw-r--r--src/tar.c8
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/exclude07.at34
-rw-r--r--tests/testsuite.at1
4 files changed, 40 insertions, 4 deletions
diff --git a/src/tar.c b/src/tar.c
index 928cfddd..95781624 100644
--- a/src/tar.c
+++ b/src/tar.c
@@ -892,12 +892,12 @@ static char const * const backup_file_table[] = {
};
static void
-add_exclude_array (char const * const * fv)
+add_exclude_array (char const * const * fv, int options)
{
int i;
for (i = 0; fv[i]; i++)
- add_exclude (excluded, fv[i], 0);
+ add_exclude (excluded, fv[i], options);
}
@@ -1769,7 +1769,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
break;
case EXCLUDE_BACKUPS_OPTION:
- add_exclude_array (backup_file_table);
+ add_exclude_array (backup_file_table, EXCLUDE_WILDCARDS);
break;
case EXCLUDE_OPTION:
@@ -1804,7 +1804,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
break;
case EXCLUDE_VCS_OPTION:
- add_exclude_array (vcs_file_table);
+ add_exclude_array (vcs_file_table, 0);
break;
case FORCE_LOCAL_OPTION:
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ab7d104d..d9c9aae5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -68,6 +68,7 @@ TESTSUITE_AT = \
exclude04.at\
exclude05.at\
exclude06.at\
+ exclude07.at\
extrac01.at\
extrac02.at\
extrac03.at\
diff --git a/tests/exclude07.at b/tests/exclude07.at
new file mode 100644
index 00000000..c9ee0cdf
--- /dev/null
+++ b/tests/exclude07.at
@@ -0,0 +1,34 @@
+# 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/>.
+
+AT_SETUP([exclude: --exclude-backups option])
+AT_KEYWORDS([exclude exclude07])
+
+AT_TAR_CHECK([
+mkdir dir
+genfile --file dir/file
+genfile --file dir/file~
+genfile --file "dir/.#file"
+genfile --file "dir/#file#"
+
+tar -v -c -f archive --exclude-backups dir
+],
+[0],
+[dir/
+dir/file
+])
+
+AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
index a62e79f6..9f262ec8 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -141,6 +141,7 @@ m4_include([exclude03.at])
m4_include([exclude04.at])
m4_include([exclude05.at])
m4_include([exclude06.at])
+m4_include([exclude07.at])
m4_include([delete01.at])
m4_include([delete02.at])