(read_header0): Use read_header_primitive to avoid clubbering current_tar_info. All callers updated.
This commit is contained in:
20
src/buffer.c
20
src/buffer.c
@@ -1057,10 +1057,12 @@ new_volume (enum access_mode mode)
|
||||
}
|
||||
|
||||
static bool
|
||||
read_header0 ()
|
||||
read_header0 (struct tar_stat_info *info)
|
||||
{
|
||||
enum read_header rc = read_header (false);
|
||||
enum read_header rc;
|
||||
|
||||
tar_stat_init (info);
|
||||
rc = read_header_primitive (false, info);
|
||||
if (rc == HEADER_SUCCESS)
|
||||
{
|
||||
set_next_block_after (current_header);
|
||||
@@ -1075,7 +1077,8 @@ try_new_volume ()
|
||||
{
|
||||
size_t status;
|
||||
union block *header;
|
||||
|
||||
struct tar_stat_info dummy;
|
||||
|
||||
switch (subcommand_option)
|
||||
{
|
||||
case APPEND_SUBCOMMAND:
|
||||
@@ -1101,14 +1104,13 @@ try_new_volume ()
|
||||
header = find_next_block ();
|
||||
if (!header)
|
||||
return false;
|
||||
|
||||
switch (header->header.typeflag)
|
||||
{
|
||||
case XGLTYPE:
|
||||
{
|
||||
struct tar_stat_info dummy;
|
||||
if (!read_header0 ())
|
||||
if (!read_header0 (&dummy))
|
||||
return false;
|
||||
tar_stat_init (&dummy);
|
||||
xheader_decode (&dummy); /* decodes values from the global header */
|
||||
tar_stat_destroy (&dummy);
|
||||
if (!real_s_name)
|
||||
@@ -1122,8 +1124,9 @@ try_new_volume ()
|
||||
}
|
||||
|
||||
case GNUTYPE_VOLHDR:
|
||||
if (!read_header0 ())
|
||||
if (!read_header0 (&dummy))
|
||||
return false;
|
||||
tar_stat_destroy (&dummy);
|
||||
assign_string (&volume_label, current_header->header.name);
|
||||
set_next_block_after (header);
|
||||
header = find_next_block ();
|
||||
@@ -1132,8 +1135,9 @@ try_new_volume ()
|
||||
/* FALL THROUGH */
|
||||
|
||||
case GNUTYPE_MULTIVOL:
|
||||
if (!read_header0 ())
|
||||
if (!read_header0 (&dummy))
|
||||
return false;
|
||||
tar_stat_destroy (&dummy);
|
||||
assign_string (&continued_file_name, current_header->header.name);
|
||||
continued_file_size =
|
||||
UINTMAX_FROM_HEADER (current_header->header.size);
|
||||
|
||||
Reference in New Issue
Block a user