From ee87c394865eba1967386836cc70e0e79d626f7d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 8 Feb 2025 11:05:46 +0000 Subject: [PATCH] archive writer: Add a progress indicator Signed-off-by: Michael Tremer --- src/pakfire/archive_writer.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/pakfire/archive_writer.c b/src/pakfire/archive_writer.c index e0f1e920..a6d0110d 100644 --- a/src/pakfire/archive_writer.c +++ b/src/pakfire/archive_writer.c @@ -27,6 +27,7 @@ #include #include +#include #include struct pakfire_archive_writer { @@ -59,6 +60,9 @@ struct pakfire_archive_writer { // Resolver for hardlinks struct archive_entry_linkresolver* linkresolver; + + // Progress Status + struct pakfire_progress* progress; }; /* @@ -213,6 +217,8 @@ static int pakfire_archive_writer_setup_linkresolver(struct pakfire_archive_writ static void pakfire_archive_writer_free(struct pakfire_archive_writer* self) { if (self->linkresolver) archive_entry_linkresolver_free(self->linkresolver); + if (self->progress) + pakfire_progress_unref(self->progress); if (self->archive) archive_write_free(self->archive); if (self->pakfire) @@ -259,6 +265,16 @@ int pakfire_archive_writer_create(struct pakfire_archive_writer** writer, if (r < 0) goto ERROR; + int progress_flags = + PAKFIRE_PROGRESS_SHOW_PERCENTAGE | + PAKFIRE_PROGRESS_SHOW_BYTES_TRANSFERRED | + PAKFIRE_PROGRESS_SHOW_TRANSFER_SPEED; + + // Create the progress indicator + r = pakfire_progress_create(&self->progress, self->ctx, progress_flags, NULL); + if (r < 0) + goto ERROR; + // Return the pointer *writer = self; return 0; -- 2.39.5