mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-09-06 08:16:54 +00:00
Fix exclusion of long file names when extracting from pax format archives.
* src/list.c (read_and): Call decode_header before attempting name_match. (list_archive): Remove call to decode_header. * src/compare.c (diff_archive): Remove call to decode_header. * src/extract.c (extract_archive): Likewise. * test/exclude06.at: New test case. * tests/testsuite.at: Include exclude06.at. * tests/Makefile.am (TESTSUITE_AT): Add exclude06.at.
This commit is contained in:
@@ -452,7 +452,6 @@ diff_archive (void)
|
||||
{
|
||||
|
||||
set_next_block_after (current_header);
|
||||
decode_header (current_header, ¤t_stat_info, ¤t_format, 1);
|
||||
|
||||
/* Print the block from current_header and current_stat_info. */
|
||||
|
||||
|
||||
+1
-1
@@ -1278,7 +1278,7 @@ extract_archive (void)
|
||||
priv_set_remove_linkdir ();
|
||||
|
||||
set_next_block_after (current_header);
|
||||
decode_header (current_header, ¤t_stat_info, ¤t_format, 1);
|
||||
|
||||
if (!current_stat_info.file_name[0]
|
||||
|| (interactive_option
|
||||
&& !confirm ("extract", current_stat_info.file_name)))
|
||||
|
||||
+2
-5
@@ -90,7 +90,8 @@ read_and (void (*do_something) (void))
|
||||
|
||||
/* Valid header. We should decode next field (mode) first.
|
||||
Ensure incoming names are null terminated. */
|
||||
|
||||
decode_header (current_header, ¤t_stat_info,
|
||||
¤t_format, 1);
|
||||
if (! name_match (current_stat_info.file_name)
|
||||
|| (NEWER_OPTION_INITIALIZED (newer_mtime_option)
|
||||
/* FIXME: We get mtime now, and again later; this causes
|
||||
@@ -116,8 +117,6 @@ read_and (void (*do_something) (void))
|
||||
quotearg_colon (current_stat_info.file_name)));
|
||||
/* Fall through. */
|
||||
default:
|
||||
decode_header (current_header,
|
||||
¤t_stat_info, ¤t_format, 0);
|
||||
skip_member ();
|
||||
continue;
|
||||
}
|
||||
@@ -210,8 +209,6 @@ list_archive (void)
|
||||
off_t block_ordinal = current_block_ordinal ();
|
||||
|
||||
/* Print the header block. */
|
||||
|
||||
decode_header (current_header, ¤t_stat_info, ¤t_format, 0);
|
||||
if (verbose_option)
|
||||
print_header (¤t_stat_info, current_header, block_ordinal);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user