tar: make typical extraction less memory-hungry
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
52827e3ebc
commit
b768aeb164
@ -436,9 +436,11 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
|
|||||||
/* (like GNU tar 1.15.1: verbose mode outputs "dir/dir/") */
|
/* (like GNU tar 1.15.1: verbose mode outputs "dir/dir/") */
|
||||||
if (cp)
|
if (cp)
|
||||||
*cp = '\0';
|
*cp = '\0';
|
||||||
//archive_handle->ah_flags |= ARCHIVE_EXTRACT_QUIET; // why??
|
|
||||||
archive_handle->action_data(archive_handle);
|
archive_handle->action_data(archive_handle);
|
||||||
llist_add_to(&(archive_handle->passed), file_header->name);
|
if (archive_handle->accept || archive_handle->reject)
|
||||||
|
llist_add_to(&archive_handle->passed, file_header->name);
|
||||||
|
else /* Caller isn't interested in list of unpacked files */
|
||||||
|
free(file_header->name);
|
||||||
} else {
|
} else {
|
||||||
data_skip(archive_handle);
|
data_skip(archive_handle);
|
||||||
free(file_header->name);
|
free(file_header->name);
|
||||||
@ -446,7 +448,8 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
|
|||||||
archive_handle->offset += file_header->size;
|
archive_handle->offset += file_header->size;
|
||||||
|
|
||||||
free(file_header->link_target);
|
free(file_header->link_target);
|
||||||
/* Do not free(file_header->name)! (why?) */
|
/* Do not free(file_header->name)!
|
||||||
|
* It might be inserted in archive_handle->passed - see above */
|
||||||
#if ENABLE_FEATURE_TAR_UNAME_GNAME
|
#if ENABLE_FEATURE_TAR_UNAME_GNAME
|
||||||
free(file_header->tar__uname);
|
free(file_header->tar__uname);
|
||||||
free(file_header->tar__gname);
|
free(file_header->tar__gname);
|
||||||
|
Loading…
Reference in New Issue
Block a user