]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: Import package size
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 8 Jun 2019 12:46:55 +0000 (13:46 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 8 Jun 2019 12:46:55 +0000 (13:46 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c
src/libpakfire/include/pakfire/archive.h
src/libpakfire/libpakfire.sym

index 257dd2915015cf493ebdcdd8a796a2ce9fb09f5e..d33d1149c8d54260e815629ada0d46a9588c1843 100644 (file)
@@ -58,6 +58,7 @@ typedef struct archive_checksum {
 struct _PakfireArchive {
        Pakfire pakfire;
        char* path;
+       struct stat stat;
 
        // metadata
        int format;
@@ -639,9 +640,15 @@ PAKFIRE_EXPORT PakfireArchive pakfire_archive_open(Pakfire pakfire, const char*
        PakfireArchive archive = pakfire_archive_create(pakfire);
        archive->path = pakfire_strdup(path);
 
+       // Stat the file and store the result
+       int r = stat(archive->path, &archive->stat);
+       if (r) {
+               goto error;
+       }
+
        // Open the archive file for reading.
        struct archive* a;
-       int r = archive_open(archive, &a);
+       r = archive_open(archive, &a);
        if (r) {
                pakfire_errno = r;
                goto error;
@@ -1082,6 +1089,10 @@ PAKFIRE_EXPORT const char* pakfire_archive_verify_strerror(pakfire_archive_verif
        return NULL;
 }
 
+PAKFIRE_EXPORT size_t pakfire_archive_get_size(PakfireArchive archive) {
+       return archive->stat.st_size;
+}
+
 /*
        Copy all metadata from this archive to the package object
 */
@@ -1161,7 +1172,8 @@ PAKFIRE_EXPORT PakfirePackage pakfire_archive_make_package(PakfireArchive archiv
                pakfire_free(description);
        }
 
-       // XXX Get package size
+       // Get package size
+       pakfire_package_set_downloadsize(pkg, pakfire_archive_get_size(archive));
 
        // Get install size
        char* size = pakfire_archive_get(archive, "package.size");
index 600ce2f13032b3f0269ceb38abe9706ca67152e9..1614bbb2f64fd149dc476f798e2aa1a5ef1ad7ed 100644 (file)
@@ -67,6 +67,7 @@ PakfireArchiveSignature pakfire_archive_signature_ref(PakfireArchiveSignature si
 void pakfire_archive_signature_unref(PakfireArchiveSignature signature);
 const char* pakfire_archive_signature_get_data(PakfireArchiveSignature signature);
 
+size_t pakfire_archive_get_size(PakfireArchive archive);
 PakfirePackage pakfire_archive_make_package(PakfireArchive archive, PakfireRepo repo);
 
 #define PAKFIRE_ARCHIVE_FN_CHECKSUMS           "chksums"
index 4ede202a1e3e71f0ea61172b604c9170e56812f6..d2d0aa655c2c5bd33feb4d512efde6999a53b76d 100644 (file)
@@ -50,6 +50,7 @@ global:
        pakfire_archive_get_format;
        pakfire_archive_get_path;
        pakfire_archive_get_signatures;
+       pakfire_archive_get_size;
        pakfire_archive_open;
        pakfire_archive_read;
        pakfire_archive_ref;