-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I ran across a "nasty bug" in AMANDA when using GNU tar 1.16.1.
In previous versions GNU tar did not exit with 1 or 2 when "a 'file
changed as we read' it". This new behaviour causes AMANDA to make a
second attempt to backup a particular filesystem, thus wasting
both bandwidth and time.
In my case this is not a serious error, since this happens quite a lot
with log files held open by syslogd. I'd rather have GNU tar exit with
0 as before, though only if --ignore-failed-read has been specified on
the command line.
If this option serves a different purpose, then I suggest you invent a
new option preventing GNU tar from exiting with a non-zero exit value
when "a 'file changed as we read' it", when so is desired.
A patch using ignore_failed_read_option to prevent a non-zero exit
value has been attached. I'm not sure I got the coding style nor the
indentation right, but that's easy for you to fix.
Best regards,
Trond Endrestøl,
System Administrator,
Gjøvik Technical College,
Norway.
- --
- ----------------------------------------------------------------------
Trond Endrestøl | [EMAIL PROTECTED]
Patron of The Art of Computer Programming| FreeBSD 6.2-S & Pine 4.64
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (FreeBSD)
iD8DBQFFxiT1bYWZalUoElsRAiHZAJ9nFq1JOWOolm5u/fEGhe5uay0ZxACfTewm
qrA8uQ77gmS0Y28y4tDtCZg=
=vF5J
-----END PGP SIGNATURE-----
*** create.c.orig Thu Dec 7 14:49:48 2006
--- create.c Sun Feb 4 19:10:20 2007
***************
*** 1624,1631 ****
{
WARN ((0, 0, _("%s: file changed as we read it"),
quotearg_colon (p)));
! if (exit_status == TAREXIT_SUCCESS)
! exit_status = TAREXIT_DIFFERS;
}
else if (atime_preserve_option == replace_atime_preserve
&& set_file_atime (fd, p, restore_times) != 0)
--- 1624,1634 ----
{
WARN ((0, 0, _("%s: file changed as we read it"),
quotearg_colon (p)));
! if (!ignore_failed_read_option)
! {
! if (exit_status == TAREXIT_SUCCESS)
! exit_status = TAREXIT_DIFFERS;
! }
}
else if (atime_preserve_option == replace_atime_preserve
&& set_file_atime (fd, p, restore_times) != 0)