From: Michael Tremer Date: Sun, 17 Jul 2022 10:00:05 +0000 (+0000) Subject: packager: Copy file payload into mtree for hashing X-Git-Tag: 0.9.28~703 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=010e5fc8eda0bf5b69dd08bfca85d952b3c29331;p=pakfire.git packager: Copy file payload into mtree for hashing Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/packager.c b/src/libpakfire/packager.c index 7d59575a4..cf7e0168b 100644 --- a/src/libpakfire/packager.c +++ b/src/libpakfire/packager.c @@ -886,6 +886,14 @@ int pakfire_packager_add(struct pakfire_packager* packager, archive_entry_set_gid(entry, 0); } + // Open the source file + f = fopen(sourcepath, "r"); + if (!f) { + ERROR(packager->pakfire, "Could not open %s: %m\n", sourcepath); + r = errno; + goto ERROR; + } + // Write the header r = archive_write_header(packager->payload, entry); if (r) { @@ -894,20 +902,6 @@ int pakfire_packager_add(struct pakfire_packager* packager, goto ERROR; } - // Copy the data of regular files - if (archive_entry_filetype(entry) == AE_IFREG) { - f = fopen(sourcepath, "r"); - if (!f) { - ERROR(packager->pakfire, "Could not open %s: %m\n", sourcepath); - r = errno; - goto ERROR; - } - - r = pakfire_packager_copy_data(packager, packager->payload, f); - if (r) - goto ERROR; - } - // Write to mtree r = archive_write_header(packager->mtree, entry); if (r) { @@ -916,6 +910,19 @@ int pakfire_packager_add(struct pakfire_packager* packager, goto ERROR; } + // Copy the data of regular files + if (archive_entry_filetype(entry) == AE_IFREG) { + // Copy the payload into the archive + r = pakfire_packager_copy_data(packager, packager->payload, f); + if (r) + goto ERROR; + + // Copy the payload into the mtree for hashing + r = pakfire_packager_copy_data(packager, packager->mtree, f); + if (r) + goto ERROR; + } + // Increment installsize packager->installsize += archive_entry_size(entry);