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.
This commit is contained in:
14
ChangeLog
14
ChangeLog
@@ -1,3 +1,17 @@
|
||||
2008-06-26 Sergey Poznyakoff <gray@gnu.org.ua>
|
||||
|
||||
* 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-14 Sergey Poznyakoff <gray@gnu.org.ua>
|
||||
|
||||
* doc/tar.texi (exclude): Document support for new VCS.
|
||||
|
||||
4
NEWS
4
NEWS
@@ -59,6 +59,10 @@ Names".
|
||||
The value of the blocking factor is made available to info and
|
||||
checkpoint scripts via environment variable TAR_BLOCKING_FACTOR.
|
||||
|
||||
* Incremental archives
|
||||
|
||||
Improved (sped up) extracting from incremental archives.
|
||||
|
||||
* Bugfixes.
|
||||
** Fix bug introduced in version 1.19: tar refused to update non-existing
|
||||
archives.
|
||||
|
||||
@@ -149,6 +149,8 @@ quote.c
|
||||
quote.h
|
||||
quotearg.c
|
||||
quotearg.h
|
||||
rawmemchr.c
|
||||
rawmemchr.valgrind
|
||||
readlink.c
|
||||
realloc.c
|
||||
ref-add.sed
|
||||
@@ -181,10 +183,12 @@ sleep.c
|
||||
snprintf.c
|
||||
stat-macros.h
|
||||
stat-time.h
|
||||
stdarg.in.h
|
||||
stdbool.h
|
||||
stdbool.in.h
|
||||
stdint.h
|
||||
stdint.in.h
|
||||
stdio-impl.h
|
||||
stdio.h
|
||||
stdio.in.h
|
||||
stdlib.h
|
||||
@@ -192,6 +196,7 @@ stdlib.in.h
|
||||
stpcpy.c
|
||||
strcasecmp.c
|
||||
strchrnul.c
|
||||
strchrnul.valgrind
|
||||
strdup.c
|
||||
streq.h
|
||||
strerror.c
|
||||
|
||||
18
src/buffer.c
18
src/buffer.c
@@ -1224,7 +1224,15 @@ try_new_volume ()
|
||||
|
||||
if (real_s_totsize - real_s_sizeleft != continued_file_offset)
|
||||
{
|
||||
WARN ((0, 0, _("This volume is out of sequence")));
|
||||
char totsizebuf[UINTMAX_STRSIZE_BOUND];
|
||||
char s1buf[UINTMAX_STRSIZE_BOUND];
|
||||
char s2buf[UINTMAX_STRSIZE_BOUND];
|
||||
|
||||
WARN ((0, 0, _("This volume is out of sequence (%s - %s != %s)"),
|
||||
STRINGIFY_BIGINT (real_s_totsize, totsizebuf),
|
||||
STRINGIFY_BIGINT (real_s_sizeleft, s1buf),
|
||||
STRINGIFY_BIGINT (continued_file_offset, s2buf)));
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1581,11 +1589,18 @@ _gnu_flush_write (size_t buffer_level)
|
||||
return;
|
||||
}
|
||||
|
||||
if (status % BLOCKSIZE)
|
||||
{
|
||||
ERROR ((0, 0, _("write did not end on a block boundary")));
|
||||
archive_write_error (status);
|
||||
}
|
||||
|
||||
/* In multi-volume mode. */
|
||||
/* ENXIO is for the UNIX PC. */
|
||||
if (status < 0 && errno != ENOSPC && errno != EIO && errno != ENXIO)
|
||||
archive_write_error (status);
|
||||
|
||||
real_s_sizeleft -= status;
|
||||
if (!new_volume (ACCESS_WRITE))
|
||||
return;
|
||||
|
||||
@@ -1597,6 +1612,7 @@ _gnu_flush_write (size_t buffer_level)
|
||||
|
||||
copy_ptr = record_start->buffer + status;
|
||||
copy_size = buffer_level - status;
|
||||
|
||||
/* Switch to the next buffer */
|
||||
record_index = !record_index;
|
||||
init_buffer ();
|
||||
|
||||
@@ -42,7 +42,7 @@ tar tf archive
|
||||
to
|
||||
],
|
||||
[tar: tre: Not found in archive
|
||||
tar: Error exit delayed from previous errors
|
||||
tar: Exiting with failure status due to previous errors
|
||||
])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
@@ -35,7 +35,7 @@ test $? = 2 || exit 1
|
||||
[
|
||||
gzip: stdin: unexpected end of file
|
||||
tar: Child returned status 1
|
||||
tar: Error exit delayed from previous errors
|
||||
tar: Exiting with failure status due to previous errors
|
||||
],
|
||||
[],[])
|
||||
|
||||
|
||||
@@ -64,12 +64,12 @@ test $status = 0
|
||||
[
|
||||
-----
|
||||
tar: file: Cannot open: Permission denied
|
||||
tar: Error exit delayed from previous errors
|
||||
tar: Exiting with failure status due to previous errors
|
||||
-----
|
||||
tar: file: Warning: Cannot open: Permission denied
|
||||
-----
|
||||
tar: directory: Cannot open: Permission denied
|
||||
tar: Error exit delayed from previous errors
|
||||
tar: Exiting with failure status due to previous errors
|
||||
-----
|
||||
tar: directory: Warning: Cannot open: Permission denied
|
||||
])
|
||||
|
||||
@@ -40,7 +40,7 @@ tar tf archive
|
||||
DIR/
|
||||
],
|
||||
[tar: DIR/FILE: file name is too long (max 99); not dumped
|
||||
tar: Error exit delayed from previous errors
|
||||
tar: Exiting with failure status due to previous errors
|
||||
],
|
||||
[],[],[v7])
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ tar cf archive LONGNAME
|
||||
[2],
|
||||
[],
|
||||
[tar: LONGNAME: file name is too long (cannot be split); not dumped
|
||||
tar: Error exit delayed from previous errors
|
||||
tar: Exiting with failure status due to previous errors
|
||||
],[],[],[ustar])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
@@ -36,7 +36,7 @@ tar cf archive PREFIX_155
|
||||
[2],
|
||||
[],
|
||||
[tar: PREFIX_155/: file name is too long (cannot be split); not dumped
|
||||
tar: Error exit delayed from previous errors
|
||||
tar: Exiting with failure status due to previous errors
|
||||
],[],[],[ustar])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
@@ -33,7 +33,7 @@ tar tf foo
|
||||
[2],
|
||||
[],
|
||||
[tar: This does not look like a tar archive
|
||||
tar: Error exit delayed from previous errors
|
||||
tar: Exiting with failure status due to previous errors
|
||||
],
|
||||
[],[],[gnu])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user