Commit Graph

252 Commits

Author SHA1 Message Date
Sergey Poznyakoff 1bcbbcf1ff 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.
2009-08-07 14:52:55 +03:00
Sergey Poznyakoff 755c246588 Fix backup handling and restoring file modes of existing directories
* NEWS, THANKS: Update
* src/extract.c (extract_dir): reset status to 0 if the
directory already exists.
* src/misc.c (maybe_backup_file): Assign before_backup_name
and clear after_backup_name before checking if we really need
to backup the file.
* tests/backup01.at: New testcase.
* tests/extrac08.at: New testcase.
* tests/Makefile.am, tests/testsuite.at: Add extrac08.at and
backup01.at
2009-08-05 10:38:50 +03:00
Sergey Poznyakoff 5944f452b0 Fix hard links recognition with -c --remove-files
* src/create.c (dump_hard_link): Always look up in the link table
if remove_files_option is set. Patch suggested by Theodore Ts'o
<tytso@mit.edu>.
(check_links): Remove extra newline from the warning message.
* tests/link02.at, tests/link03.at: New testcases.
* tests/Makefile.am (TESTSUITE_AT): Add link02.at and link03.at
* tests/testsuite.at: Include link02.at and link03.at
2009-07-30 23:49:32 +03:00
Sergey Poznyakoff f74cab3a93 Fix handling of hard link targets by -c --transform
* src/create.c (file_count_links): Transform link target
before the look up.
* tests/xform-h.at: New test case.
* tests/Makefile.am (TESTSUITE_AT): Add xform-h.at.
* tests/testsuite.at: Add xform-h.at
2009-07-30 11:43:16 +03:00
Eric Blake da760e3faa Follow autoconf recommendation for TESTSUITEFLAGS.
* tests/Makefile.am (check-local, installcheck-local): Honor
TESTSUITEFLAGS.
2009-06-18 12:30:04 +03:00
Sergey Poznyakoff be34933b63 Report record size only if the archive refers to a device.
* Makefile.am (INCLUDES): Add ../lib, for rmt-command.h
* src/buffer.c (short_read): Report the actual record size
only if the archive descriptor refers to a device.
* tests/pipe.at, tests/shortrec.at,
tests/sparsemvp.at: Reflect the above change.
* NEWS, configure.ac: Version 1.22.90
2009-05-25 10:18:59 +03:00
Sergey Poznyakoff ac6caa71bc Migrate to Git 2009-03-07 16:30:44 +02:00
Sergey Poznyakoff 7b68ef3d91 Fix testsuite and bootstrap. Implement -I.
* bootstrap.conf: Include size_max.
* gnulib.modules: Remove memset, rmdir. Replace strdup with
strdup-posix. Patch by Eric Blake.
* src/tar.c: Implement -I as a shorthand for --use-compress-program.
* doc/tar.texi: Document -I.
* tests/pipe.at, tests/shortrec.at: Account for eventual 'Record
size' output.
* tests/testsuite.at (AT_TAR_CHECK_HOOK): New define
(AT_TAR_WITH_HOOK, TAR_IGNREC_HOOK): New macros.
2008-12-29 09:27:00 +00:00
Sergey Poznyakoff 5354888e40 * src/buffer.c (short_read): Remove !read_full_records condition,
which was always false on a first record and thus disabled record
size autodetection.  Thanks Ed Leaver for the patch.
(_gnu_flush_read): Handle blocking_factor == 1.
* tests/sparsemv.at: Reflect changes to buffer.c.
* tests/sparsemvp.at: Likewise.
* tests/volsize.at: Likewise.
* NEWS: Update.
* THANKS: Add Ed Leaver.
2008-10-22 20:55:35 +00:00
Sergey Poznyakoff 6901594ac4 Bugfix.
* src/checkpoint.c (checkpoint_compile_action): Add missing
`else'.
2008-10-05 09:09:16 +00:00
Sergey Poznyakoff dbbffde583 Fix incremental archiving of renamed directories.
* src/incremen.c (struct directory): New member `next'.  Change
type of `name'.
(dirhead, dirtail): New statics.
(make_directory): Reflect changes to struct directory.
(free_directory, attach_directory): New functions.
(dirlist_replace_prefix): New function.
(note_directory): Use attach_directory, instead of make_directory,
(find_directory, find_directory_meta): Use free_directory.
(procdir): Replace directory prefixes in directory list to avoid
marking subdirectories as renamed after renaming their parent
directory.
(append_incremental_renames): Iterate over directory list, not
hash table, to preserve logical ordering of renames.
* tests/rename04.at, tests/rename05.at: New test cases.
* tests/Makefile.am, tests/testsuite.at: Add rename04.at and
rename05.at.
* tests/atlocal.in (decho): New function.
* tests/multiv06.at: Use decho instead of echo2.
* tests/incremental.at: Raise wait interval to 2 seconds.
2008-07-31 07:12:50 +00:00
Sergey Poznyakoff 3af9cc0f15 Fix multivolume archive creation when volume length=record size.
* src/tar.c (decode_options): Do not allow volume length less
than record size.
* src/buffer.c (_gnu_flush_write): Compensate for the effect
of eventual flush_archive occurring in the middle of buffer
move.
Increment records_written only if _flush_write was able to write
something.
* tests/multiv06.at: New testcase.
* tests/Makefile.am, test/testsuite.at: Add tests/multiv06.at
2008-07-24 18:16:08 +00:00
Sergey Poznyakoff 985637ab5a Bugfixes.
* src/buffer.c (try_new_volume): Print more information with error
diagnostics.
(_gnu_flush_write): Improve error checking.  Adjust
real_s_sizeleft before calling new_volume to avoid creating
malformed multivolume headers.
* tests/delete05.at, tests/gzip.at, tests/ignfail.at,
tests/longv7.at, tests/lustar01.at, tests/lustar02.at,
tests/shortfile.at: Update to match new diagnostic wording
(see 2008-05-06).

* NEWS: Update.
2008-06-26 06:32:25 +00:00
Sergey Poznyakoff 1efa1f3b43 Remove a TZ dependency.Remove a TZ dependency. 2008-06-14 10:17:34 +00:00
Sergey Poznyakoff 5f1a4f9f12 Fix typos. 2008-06-14 10:17:14 +00:00
Sergey Poznyakoff b94eed6d03 Version 1.20.
* configure.ac: Raise version number to 1.20
* src/compare.c (diff_dumpdir): const.
* src/common.h (dumpdir_t,dumpdir_iter_t): New data types.
(dumpdir_create0,dumpdir_create,dumpdir_free,dumpdir_locate)
(dumpdir_first,dumpdir_next): New functions.
* src/incremen.c (dumpdir_create0,dumpdir_create,dumpdir_free)
(dumpdir_first,dumpdir_next): New functions.
(dumpdir_locate): Rewrite using binary search.
(struct directory): Change members char *contents, *icontents to
struct dumpdir *dump, *idump. All references updated.
(note_directory): Last arg is const.
* src/names.c (add_hierarchy_to_namelist): buffer is const.
* tests/incr03.at, tests/incr04.at, tests/rename02.at,
tests/rename03.at: Insert calls to sleep between creation of files
and adding them to the archive.
2008-05-05 21:30:57 +00:00
Sergey Poznyakoff e496c1b529 * bootstrap: Use rsync to get translations.
* doc/tar.texi: Minor change.
* lib/.cvsignore: Update
* po/.cvsignore: Update
* src/system.c: Remove include setenv.h.
* tests/atlocal.in (STAR_DATA_URL): Update.
* tests/star/README: Update URL.
2008-03-06 08:17:33 +00:00
Sergey Poznyakoff 7efe3850f6 * NEWS: Update.
* configure.ac: Version 1.19.90
* po/POTFILES.in: Add missing files.
* src/compare.c (verify_volume): Honor --ignore-zeros.
Proposed by Jan-Benedict Glaw.
* tests/shortfile.at (AT_KEYWORDS): Add shortfile0.
2008-02-08 14:12:22 +00:00
Sergey Poznyakoff d0694ee604 Update the description 2008-02-08 10:32:15 +00:00
Sergey Poznyakoff 336519aa4f Add shortupd.at. 2007-12-05 09:45:35 +00:00
Sergey Poznyakoff 14d39a2c14 Update 2007-10-10 11:03:42 +00:00
Sergey Poznyakoff 9b22262fc6 Use AT_DATA for sample output. 2007-10-04 07:16:39 +00:00
Sergey Poznyakoff e3e50c987b Minor rewording 2007-09-08 08:49:35 +00:00
Sergey Poznyakoff 5bb69a88d8 Add shortfile.at 2007-08-24 12:08:47 +00:00
Sergey Poznyakoff 0a848ff669 New test case for the today's change in src/buffer.c (1.111) 2007-08-24 12:08:35 +00:00
Sergey Poznyakoff a0fb51e136 Relicense under GPLv3 2007-06-27 13:30:12 +00:00
Sergey Poznyakoff ac8690fc4e Update copyright year 2007-06-21 08:52:22 +00:00
Sergey Poznyakoff 89a91c7b44 Skip test if genfile is unable to create the file 2007-06-21 08:51:03 +00:00
Sergey Poznyakoff 5635a428ab (AT_TAR_MKHIER): Skip test if genfile is unable to create the file 2007-06-21 08:50:09 +00:00
Sergey Poznyakoff 8b5f10a6c4 Resolve testsuite failures 40-42 on cygwin. 2007-06-21 07:12:09 +00:00
Sergey Poznyakoff bd13e18a63 Add back write permissions on dir 2007-06-16 12:10:14 +00:00
Sergey Poznyakoff bc00f45420 Sort the output 2007-06-09 17:07:46 +00:00
Sergey Poznyakoff 05eddc1a58 Update testsuite 2007-06-01 21:57:30 +00:00
Sergey Poznyakoff 56f6556f94 (tarball_prereq): Discard eventual md5sum output. 2007-05-19 17:03:44 +00:00
Sergey Poznyakoff 43c5343194 Minor fix 2007-05-19 17:03:35 +00:00
Sergey Poznyakoff 51118be241 Expect a warning on stderr 2007-04-03 12:30:43 +00:00
Sergey Poznyakoff bde442ba15 Add exclude.at 2007-01-23 10:26:30 +00:00
Sergey Poznyakoff c9a8f1bc33 New test case 2007-01-23 10:26:20 +00:00
Sergey Poznyakoff 8241687465 Skip the test if genfile is not able to create the filename with an embedded newline. 2006-12-13 08:22:04 +00:00
Sergey Poznyakoff e35d05b1d2 Use genfile instead of dd, because on some systems /dev/zero is not available. 2006-12-07 14:34:15 +00:00
Sergey Poznyakoff 8457e06b99 Do not depend on command timing. 2006-11-13 10:42:19 +00:00
Sergey Poznyakoff 574022ab78 Do not use 'k' modifier in dd options. 2006-11-13 10:41:34 +00:00
Sergey Poznyakoff 415d9c9e15 Update copyright year 2006-11-01 00:30:45 +00:00
Sergey Poznyakoff 023c766600 Do not assume tar's default archive is stdout 2006-11-01 00:24:19 +00:00
Sergey Poznyakoff fdb46aa2e2 Add more keywords 2006-11-01 00:24:09 +00:00
Sergey Poznyakoff 2504e7d3ae Add new test cases. 2006-11-01 00:23:52 +00:00
Sergey Poznyakoff fde336b21a (AT_KEYWORDS): Keyword `filechange'
Test tar exit status.
2006-10-14 21:12:42 +00:00
Sergey Poznyakoff 394b12d950 New test grow.at 2006-10-14 21:12:04 +00:00
Sergey Poznyakoff 876e554157 (AT_KEYWORDS): Add stdout keyword 2006-10-14 10:46:24 +00:00
Sergey Poznyakoff 1118d24fd3 New test verbose.at 2006-10-14 10:46:13 +00:00