* src/common.h (struct name): New member `directory' replaces dir_contents. Rearrange members. (rebase_directory): Change signature. (scan_directory): Change signature. (name_fill_directory) (directory_contents, safe_directory_contents): New prototypes. (append_incremental_renames): Change signature. (replace_prefix): New proto. * src/compare.c (diff_dumpdir): Use directory_contents + scan_directory. * src/create.c * src/incremen.c (replace_prefix): Move to misc.c (rebase_directory): Rewrite. (scan_directory): Return pointer to struct directory. (directory_contents, safe_directory_contents): New functions. (get_directory_contents): Remove. (name_fill_directory): New function. (append_incremental_renames): Rewrite. This also fixes a memory leak. * src/names.c (name_gather, addname): Reflect changes in struct name. (add_hierarchy_to_namelist): Rewrite using name_fill_directory and directory_contents. (rebase_child_list): Update call to rebase_directory. (collect_and_sort_names): Optimize * src/misc.c (replace_prefix): New function. * src/names.c (add_hierarchy_to_namelist): Use new get_directory_contents. * tests/incr05.at: New test case. * tests/incr06.at: New test case. * tests/Makefile.am, test/testsuite.at: Add incr05.at and incr06.at. * doc/Makefile.am (check-options): Improve rule. * doc/tar.texi, NEWS: Update.
82 lines
1.7 KiB
Plaintext
82 lines
1.7 KiB
Plaintext
# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
|
|
|
# Test suite for GNU tar.
|
|
# Copyright (C) 2009 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([incremental dumps of nested directories])
|
|
AT_KEYWORDS([incremental incr06])
|
|
|
|
AT_TAR_CHECK([
|
|
mkdir dir
|
|
mkdir dir/sub
|
|
mkdir dir/sub/a
|
|
mkdir dir/sub/b
|
|
genfile --file dir/file1
|
|
genfile --file dir/sub/file2
|
|
genfile --file dir/sub/a/file3
|
|
|
|
dbfile=`pwd`/db
|
|
|
|
echo Level 0 . sub
|
|
tar -c -f archive-0.1.tar -g $dbfile.1 -C dir -v --warning=no-new-dir . sub
|
|
echo Level 0 sub .
|
|
tar -c -f archive-0.2.tar -g $dbfile.2 -C dir -v --warning=no-new-dir sub .
|
|
|
|
mkdir dir/c
|
|
genfile --file dir/sub/b/file4
|
|
|
|
echo Level 1 . sub
|
|
tar -c -f archive-1.1.tar -g $dbfile.1 -C dir -v --warning=no-new-dir . sub
|
|
echo Level 1 sub .
|
|
tar -c -f archive-1.2.tar -g $dbfile.2 -C dir -v --warning=no-new-dir sub .
|
|
],
|
|
[0],
|
|
[Level 0 . sub
|
|
./
|
|
sub/
|
|
sub/a/
|
|
sub/b/
|
|
./file1
|
|
sub/file2
|
|
sub/a/file3
|
|
Level 0 sub .
|
|
./
|
|
sub/
|
|
sub/a/
|
|
sub/b/
|
|
./file1
|
|
sub/file2
|
|
sub/a/file3
|
|
Level 1 . sub
|
|
./
|
|
./c/
|
|
sub/
|
|
sub/a/
|
|
sub/b/
|
|
sub/b/file4
|
|
Level 1 sub .
|
|
./
|
|
./c/
|
|
sub/
|
|
sub/a/
|
|
sub/b/
|
|
sub/b/file4
|
|
],[],[],[],[gnu, oldgnu, posix])
|
|
|
|
AT_CLEANUP
|
|
|
|
|