From: Michael Tremer Date: Tue, 9 Mar 2021 17:04:27 +0000 (+0000) Subject: packager: Set installsize to total size of the filelist X-Git-Tag: 0.9.28~1285^2~591 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fafe383d284276ebcfcae3711d1fa4cf7f9d54ca;p=pakfire.git packager: Set installsize to total size of the filelist Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/filelist.c b/src/libpakfire/filelist.c index dc3a9bfec..9596af053 100644 --- a/src/libpakfire/filelist.c +++ b/src/libpakfire/filelist.c @@ -142,6 +142,21 @@ PAKFIRE_EXPORT void pakfire_filelist_sort(PakfireFilelist list) { qsort(list->elements, list->size, sizeof(*list->elements), __sort); } +PAKFIRE_EXPORT size_t pakfire_filelist_total_filesize(PakfireFilelist list) { + size_t s = 0; + + for (unsigned int i = 0; i < pakfire_filelist_size(list); i++) { + PakfireFile file = pakfire_filelist_get(list, i); + + // Sum size + s += pakfire_file_get_size(file); + + pakfire_file_unref(file); + } + + return s; +} + static int pakfire_filelist_parse_line(PakfireFile* file, Pakfire pakfire, char* line, unsigned int format) { unsigned int i = 0; diff --git a/src/libpakfire/include/pakfire/filelist.h b/src/libpakfire/include/pakfire/filelist.h index 2ff9d472f..d4c2c22c6 100644 --- a/src/libpakfire/include/pakfire/filelist.h +++ b/src/libpakfire/include/pakfire/filelist.h @@ -37,6 +37,8 @@ int pakfire_filelist_append(PakfireFilelist list, PakfireFile file); void pakfire_filelist_sort(PakfireFilelist list); +size_t pakfire_filelist_total_filesize(PakfireFilelist list); + #ifdef PAKFIRE_PRIVATE int pakfire_filelist_create_from_file(PakfireFilelist* list, Pakfire pakfire, diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index 2d67e3ff6..cbac55353 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -116,6 +116,7 @@ global: pakfire_filelist_ref; pakfire_filelist_size; pakfire_filelist_sort; + pakfire_filelist_total_filesize; pakfire_filelist_unref; # key diff --git a/src/libpakfire/packager.c b/src/libpakfire/packager.c index d9687011f..f17a07e6e 100644 --- a/src/libpakfire/packager.c +++ b/src/libpakfire/packager.c @@ -387,6 +387,10 @@ ERROR: PAKFIRE_EXPORT char* pakfire_packager_finish(struct pakfire_packager* packager, FILE* f) { char* filename = NULL; + // Store total instal size + pakfire_package_set_installsize(packager->pkg, + pakfire_filelist_total_filesize(packager->filelist)); + // Open a new archive struct archive* a = archive_write_new(); if (!a) {