From: Michael Tremer Date: Sat, 15 Mar 2025 10:53:16 +0000 (+0000) Subject: archive: Add support for a parent progress indicator for extraction X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=75a830c1abbac741873bcc824b3a52f66c3d81f5;p=pakfire.git archive: Add support for a parent progress indicator for extraction Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/archive.c b/src/pakfire/archive.c index 980233cd..40dc5ce8 100644 --- a/src/pakfire/archive.c +++ b/src/pakfire/archive.c @@ -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) { diff --git a/src/pakfire/archive.h b/src/pakfire/archive.h index 9b91d3a0..ad62fe0a 100644 --- a/src/pakfire/archive.h +++ b/src/pakfire/archive.h @@ -32,6 +32,7 @@ struct pakfire_archive; #include #include #include +#include #include #include @@ -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); diff --git a/src/python/archive.c b/src/python/archive.c index 34bf128a..1947c013 100644 --- a/src/python/archive.c +++ b/src/python/archive.c @@ -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;