summaryrefslogtreecommitdiff
path: root/tests/listed02.at
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2009-08-07 14:52:55 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2009-08-07 14:52:55 +0300
commit1bcbbcf1ff2c537ffa970dbf82e3843d4ad110e5 (patch)
tree53203c6fe4f15b3f7f02d87ddcf69cf12144e93b /tests/listed02.at
parentac5288c1ac9b4d0721b3bc7271368c11c736248e (diff)
downloadtar-1bcbbcf1ff2c537ffa970dbf82e3843d4ad110e5.tar.gz
Improve listed incremental dumps.
The modified algorithm tries to avoid dumping the same directory twice and ensures the order of the directories in the resulting archive is the same, whatever their order on the command line. It also fixes the operation of --listed-incremental -C. * gnulib.modules: Add canonicalize * src/common.h (incremental_level): New global. (check_exclusion_tags): first argument is const. (get_directory_contents): Add third argument. (zap_slashes, normalize_filename): New prototypes. (chdir_count): New prototype. (WARN_VERBOSE_WARNINGS): New define. (WARN_ALL): Exclude WARN_VERBOSE_WARNINGS. * src/compare.c (diff_dumpdir): Update the call to get_directory_contents. * src/create.c (check_exclusion_tags): First argument is const. Use ISSLASH and DIRECTORY_SEPARATOR instead of referring to '/'. * src/incremen.c (struct directory): New member `caname'. (hash_directory_name): Rename to hash_directory_canonical_name. Operate on the canonical name. (compare_directory_names): Rename to compare_directory_canonical_names. Operate on the canonical name. (make_directory): Take two arguments. (free_directory): Free caname. (attach_directory): Create caname. (find_directory): Use caname for lookups. (PD_VERBOSE): Remove. (PD_FORCE_INIT): New define. (procdir): First argument is const. Reinitialize directory if PD_FORCE_INIT bit is set. Do not use PD_VERBOSE or verbose_option for issuing warnings. Rely on WARNOPT instead. Always set *entry. (scan_directory): Take three arguments. The third one is a boolean which is true if the directory is explicitly mentioned on the command line. (get_directory_contents): Remove. Use scan_directory instead. All callers updated. (read_directory_file): Truncate the file if --level=0 is given. * src/misc.c: Include canonicalize.h (zap_slashes, normalize_filename): New functions. (chdir_count): New function. * src/names.c (add_hierarchy_to_namelist): Take three arguments, as get_directory_contents and scan_directory. (collect_and_sort_names): Allow at most one -C, before file name arguments. Read directory file after eventual changing to another directory. Avoid adding the same directory under different pathnames to the list. * src/tar.c: New option --level. * tests/incr03.at, tests/incr04.at, tests/listed01.at, tests/listed02.at, tests/rename01.at, tests/rename02.at, tests/rename03.at: Update for new tar behavior. * tests/multiv01.at: Do not use --listed-incremental.
Diffstat (limited to 'tests/listed02.at')
-rw-r--r--tests/listed02.at11
1 files changed, 9 insertions, 2 deletions
diff --git a/tests/listed02.at b/tests/listed02.at
index 3ab19a8c..2f1f0704 100644
--- a/tests/listed02.at
+++ b/tests/listed02.at
@@ -1,7 +1,7 @@
# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
-# Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2006, 2007, 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
@@ -47,6 +47,7 @@ done
sleep 1
echo Creating main archive
+echo >&2 "Creating main archive"
tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
# The above prints two lines to stderr announcing the new directories c0 and c1.
@@ -66,6 +67,7 @@ find tart -print | sort 2>/dev/null
sleep 1
echo Creating incremental archive
+echo >&2 "Creating incremental archive"
cp -p tart.incr1 tart.incr2
tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
@@ -73,6 +75,7 @@ sleep 1
rm -rf tart/*
echo Extracting main archive
+echo >&2 "Extracting main archive"
tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
echo Extracting incremental archive
# This command should produce three messages about deletion
@@ -141,9 +144,13 @@ tart/c2/ca1
tart/c2/ca2
tart/c2/ca3
],
-[tar: tart/c0: Directory is new
+[Creating main archive
+tar: tart/c0: Directory is new
tar: tart/c1: Directory is new
+tar: tart: Directory is new
+Creating incremental archive
tar: tart/c2: Directory has been renamed from `tart/c1'
+Extracting main archive
],
[],[],[gnu, oldgnu])