]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Add support for a parent progress indicator for extraction
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 15 Mar 2025 10:53:16 +0000 (10:53 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 15 Mar 2025 10:53:16 +0000 (10:53 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/archive.c
src/pakfire/archive.h
src/python/archive.c

index 980233cd4370878fb37db3c217a08b6e308ed6a2..40dc5ce89e464293ebd922fbcc28b55e940201d2 100644 (file)
@@ -1309,7 +1309,8 @@ ERROR:
        return r;
 }
 
-static int __pakfire_archive_extract(struct pakfire_archive* archive, const char* path, int flags) {
+static int __pakfire_archive_extract(struct pakfire_archive* archive,
+               const char* path, int flags, struct pakfire_progress* parent) {
        struct pakfire_package* pkg = NULL;
        char prefix[PATH_MAX] = "/";
        struct archive* writer = NULL;
@@ -1342,7 +1343,7 @@ static int __pakfire_archive_extract(struct pakfire_archive* archive, const char
 
        // Create the progress indicator
        r = pakfire_progress_create(&archive->progress,
-                       archive->ctx, PAKFIRE_PROGRESS_SHOW_PERCENTAGE, NULL);
+                       archive->ctx, PAKFIRE_PROGRESS_SHOW_PERCENTAGE, parent);
        if (r < 0)
                goto ERROR;
 
@@ -1405,8 +1406,8 @@ ERROR:
 }
 
 int pakfire_archive_extract(struct pakfire_archive* archive,
-               const char* path, const int flags) {
-       return __pakfire_archive_extract(archive, path, flags);
+               const char* path, const int flags, struct pakfire_progress* parent) {
+       return __pakfire_archive_extract(archive, path, flags, parent);
 }
 
 const char* pakfire_archive_get_path(struct pakfire_archive* archive) {
index 9b91d3a0227f6c52173990fd821e1adf22fffed8..ad62fe0a72b4334f76e48781f84ed881903467b6 100644 (file)
@@ -32,6 +32,7 @@ struct pakfire_archive;
 #include <pakfire/linter.h>
 #include <pakfire/package.h>
 #include <pakfire/pakfire.h>
+#include <pakfire/progress.h>
 #include <pakfire/repo.h>
 #include <pakfire/scriptlet.h>
 
@@ -45,7 +46,7 @@ enum pakfire_archive_read_flags {
 
 FILE* pakfire_archive_read(struct pakfire_archive* archive, const char* filename, int flags);
 int pakfire_archive_extract(struct pakfire_archive* archive,
-       const char* path, const int flags);
+       const char* path, const int flags, struct pakfire_progress* parent);
 
 const char* pakfire_archive_get_path(struct pakfire_archive* archive);
 
index 34bf128ab7d61d6a3e2a7a931b95bbb0dbf32bd1..1947c013251130d28edbbd6d8f8d4622f01fc9cd 100644 (file)
@@ -145,7 +145,7 @@ static PyObject* Archive_extract(ArchiveObject* self, PyObject* args, PyObject*
                return NULL;
 
        // Extract payload
-       errno = -pakfire_archive_extract(self->archive, path, flags);
+       errno = -pakfire_archive_extract(self->archive, path, flags, NULL);
        if (errno) {
                PyErr_SetFromErrno(PyExc_OSError);
                return NULL;