From: Michael Tremer Date: Thu, 20 May 2021 18:57:44 +0000 (+0000) Subject: archive: Stop parsing filelist during extraction X-Git-Tag: 0.9.28~1285^2~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7de46f919ab8ac99ff1f0c9089a882b8d89cc2c1;p=pakfire.git archive: Stop parsing filelist during extraction Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index c34246baa..5d451d50c 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -852,7 +852,6 @@ static int pakfire_archive_extraction_path(PakfireArchive archive, struct pakfire_archive_extractor { struct archive* writer; const char* path; - PakfireFilelist filelist; struct pakfire_progressbar* progressbar; }; @@ -894,7 +893,6 @@ static int pakfire_archive_extract_entry(PakfireArchive archive, struct archive* a, struct archive_entry* entry, void* data) { struct pakfire_archive_extractor* extractor = (struct pakfire_archive_extractor*)data; - PakfireFile file = NULL; char buffer[PATH_MAX]; int r = 1; @@ -905,23 +903,6 @@ static int pakfire_archive_extract_entry(PakfireArchive archive, if (extractor->progressbar) pakfire_progressbar_update(extractor->progressbar, bytes_read); - // Create a new file object if there is a filelist - if (extractor->filelist) { - r = pakfire_file_create(&file, archive->pakfire); - if (r) - goto ERROR; - - // Import attributes - r = pakfire_file_copy_archive_entry(file, entry); - if (r) - goto ERROR; - - // Append it to the filelist - r = pakfire_filelist_append(extractor->filelist, file); - if (r) - goto ERROR; - } - // Fetch the paths const char* path = archive_entry_pathname(entry); @@ -929,7 +910,7 @@ static int pakfire_archive_extract_entry(PakfireArchive archive, if (extractor->path && *extractor->path) { r = pakfire_path_join(buffer, extractor->path, path); if (r < 0) - goto ERROR; + return r; archive_entry_set_pathname(entry, buffer); @@ -938,7 +919,7 @@ static int pakfire_archive_extract_entry(PakfireArchive archive, if (link) { r = pakfire_path_join(buffer, extractor->path, link); if (r < 0) - goto ERROR; + return r; archive_entry_set_hardlink(entry, buffer); } @@ -961,14 +942,10 @@ static int pakfire_archive_extract_entry(PakfireArchive archive, case ARCHIVE_FATAL: ERROR(archive->pakfire, "Could not extract file %s: %s\n", path, archive_error_string(extractor->writer)); - goto ERROR; + return 1; } -ERROR: - if (file) - pakfire_file_unref(file); - - return r; + return 0; } PAKFIRE_EXPORT int pakfire_archive_extract(PakfireArchive archive, const char* prefix) { @@ -985,13 +962,6 @@ PAKFIRE_EXPORT int pakfire_archive_extract(PakfireArchive archive, const char* p DEBUG(archive->pakfire, "Extracting %s to %s\n", archive->path, path); - // Create a filelist - if (!archive->filelist) { - r = pakfire_filelist_create(&archive->filelist, archive->pakfire); - if (r) - goto ERROR; - } - // Create a progressbar r = pakfire_archive_extract_progressbar(archive, &progressbar); if (r) @@ -1010,7 +980,6 @@ PAKFIRE_EXPORT int pakfire_archive_extract(PakfireArchive archive, const char* p struct pakfire_archive_extractor extractor = { .writer = writer, .path = path, - .filelist = archive->filelist, .progressbar = progressbar, }; @@ -1028,12 +997,6 @@ ERROR: if (progressbar) pakfire_progressbar_finish(progressbar); - // Destroy the filelist on error - if (r) { - pakfire_filelist_unref(archive->filelist); - archive->filelist = NULL; - } - if (progressbar) pakfire_progressbar_unref(progressbar); if (writer)