]> Dogcows Code - chaz/tar/commit
Fix bugs in handling the --remove-files option.
authorSergey Poznyakoff <gray@gnu.org.ua>
Wed, 7 Oct 2009 13:42:06 +0000 (16:42 +0300)
committerSergey Poznyakoff <gray@gnu.org.ua>
Wed, 7 Oct 2009 13:42:06 +0000 (16:42 +0300)
commit4dfcd6c054a5e9e1a371c822a3be90564dd9b690
treefcdfaec06283f29d8269811272926884d701cfd2
parent2947023d277cb0a787c73721d6190a75444cd65f
Fix bugs in handling the --remove-files option.

Make sure the files are deleted only if they were succesfully stored
to the archive.

* src/exit.c: New file.
* src/unlink.c: New file.
* src/Makefile.am (tar_SOURCES): Add exit.c and unlink.c.
* src/common.h: Include progname.h
(program_name): Remove global.
(records_written): New extern.
(queue_deferred_unlink, finish_deferred_unlinks): New prototypes.
(fatal_exit_hook): New extern.
* src/create.c (create_archive): Call finish_deferred_unlinks.
(dump_hard_link, dump_file0): Don't actually unlink the file,
queue it to deferred_unlinks instead.
* src/delete.c (records_written): Remove extern: declared in
common.h.
* src/extract.c (extract_archive): Set fatal_exit_hook.
(fatal_exit, xalloc_die): Move to exit.c
* src/system.c (sys_wait_for_child): Exit immediately
if the child dies or exits with a non-zero status.
(sys_child_open_for_compress)
(sys_child_open_for_uncompress): Use set_program_name,
instead of setting program_name directly.
* src/tar.c (main): Use set_program_name,
instead of setting program_name directly.

* tests/Makefile.am (TESTSUITE_AT): Add remfiles01.at
and remfiles02.at.
* tests/testsuite.at: Likewise.
* tests/gzip.at: Reflect the above changes.
14 files changed:
src/Makefile.am
src/common.h
src/create.c
src/delete.c
src/exit.c [new file with mode: 0644]
src/extract.c
src/system.c
src/tar.c
src/unlink.c [new file with mode: 0644]
tests/Makefile.am
tests/gzip.at
tests/remfiles01.at [new file with mode: 0644]
tests/remfiles02.at [new file with mode: 0644]
tests/testsuite.at
This page took 0.022461 seconds and 4 git commands to generate.