]> git.ipfire.org Git - pakfire.git/commitdiff
packager: Set installsize to total size of the filelist
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Mar 2021 17:04:27 +0000 (17:04 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Mar 2021 17:04:27 +0000 (17:04 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/filelist.c
src/libpakfire/include/pakfire/filelist.h
src/libpakfire/libpakfire.sym
src/libpakfire/packager.c

index dc3a9bfecbde3456bbb917bdca9c3448e4732cbc..9596af05300be16ce2d14e759ef5f111f874703d 100644 (file)
@@ -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;
index 2ff9d472f3935f2058b5ba3576b9acb18c9a493d..d4c2c22c659a54d74fe0583f8807dfa49c3439b5 100644 (file)
@@ -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,
index 2d67e3ff62a47f33af85e23dd134eb0473ade52a..cbac553538f87fc5482c6c9964131db41fa73e42 100644 (file)
@@ -116,6 +116,7 @@ global:
        pakfire_filelist_ref;
        pakfire_filelist_size;
        pakfire_filelist_sort;
+       pakfire_filelist_total_filesize;
        pakfire_filelist_unref;
 
        # key
index d9687011f3f54a1756f4e70fb76a006c8a490299..f17a07e6eeaf591b05d06360a125a45386096a20 100644 (file)
@@ -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) {