From fa307a665545753b6729191fd2559ce872fa470a Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sat, 30 Jul 2011 18:26:38 +0300 Subject: [PATCH] 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. --- src/tar.c | 8 ++++---- tests/Makefile.am | 1 + tests/exclude07.at | 34 ++++++++++++++++++++++++++++++++++ tests/testsuite.at | 1 + 4 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 tests/exclude07.at diff --git a/src/tar.c b/src/tar.c index 928cfdd..9578162 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 ab7d104..d9c9aae 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 0000000..c9ee0cd --- /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 . + +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 a62e79f..9f262ec 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]) -- 2.45.2