Browse Source

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.
Sergey Poznyakoff 13 years ago
parent
commit
fa307a6655
4 changed files with 40 additions and 4 deletions
  1. 4 4
      src/tar.c
  2. 1 0
      tests/Makefile.am
  3. 34 0
      tests/exclude07.at
  4. 1 0
      tests/testsuite.at

+ 4 - 4
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:

+ 1 - 0
tests/Makefile.am

@@ -68,6 +68,7 @@ TESTSUITE_AT = \
  exclude04.at\
  exclude05.at\
  exclude06.at\
+ exclude07.at\
  extrac01.at\
  extrac02.at\
  extrac03.at\

+ 34 - 0
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

+ 1 - 0
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])