-----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)

Reply via email to