]> Dogcows Code - chaz/tar/commit
Fix handling of files removed during incremental dumps.
authorSergey Poznyakoff <gray@gnu.org.ua>
Sat, 8 Aug 2009 16:53:54 +0000 (19:53 +0300)
committerSergey Poznyakoff <gray@gnu.org.ua>
Sat, 8 Aug 2009 16:53:54 +0000 (19:53 +0300)
commit51aee274e892923a3f8fdb774e4f6b90bce47437
tree8eefe9e26ac338eea94ac0b156b416c464761b51
parent2b1bffbad66faab91c3b080b63788d910f68632d
Fix handling of files removed during incremental dumps.

Changes to src/create.c and src/incremen.c are partially
based on patch from Alexander Peslyak <solar at openwall.com>.

The new testcases require paxutils commit f653a2b or later.

* src/common.h (struct name): New member `cmdline'.
(dump_file): Change type of the 2nd argument to bool.
(file_removed_diag, dir_removed_diag): New prototypes.
(addname): New argument `cmdline'.
(name_from_list): Change return value.
* src/create.c (dump_dir0, dump_dir): top_level is bool.
(create_archive): Update calls to name_from_list.
Take advantage of the name->cmdline to set top_level argument
during incremental backups.
(dump_file0): top_level is bool.
Do not bail out if a no-top-level file disappears during incremental
backup, use file_removed_diag instead.
(dump_filed): top_level is bool.
* src/incremen.c (update_parent_directory): Silently ignore
ENOENT.  It should have already been reported elsewhere.
(scan_directory): Use dir_removed_diag to report missing directories.
* src/misc.c (file_removed_diag, dir_removed_diag): New functions.
* src/names.c (name_gather): Set ->cmdname.
(addname): Likewise. All uses updated.
(name_from_list): Return struct name const *. All uses updated.

* tests/filerem01.at: New testcase.
* tests/filerem02.at: New testcase.
* tests/Makefile.am, tests/testsuite.at: Add filerem01.at, filerem02.at
* tests/grow.at, test/truncate.at: Use new syntax for genfile --run.

* NEWS: Update.
* doc/tar.texi: Minor fix.
15 files changed:
NEWS
doc/tar.texi
src/common.h
src/create.c
src/incremen.c
src/misc.c
src/names.c
src/tar.c
src/update.c
tests/Makefile.am
tests/filerem01.at [new file with mode: 0644]
tests/filerem02.at [new file with mode: 0644]
tests/grow.at
tests/testsuite.at
tests/truncate.at
This page took 0.030012 seconds and 4 git commands to generate.