From: Michael Tremer Date: Sun, 1 Oct 2023 11:29:23 +0000 (+0000) Subject: compress: Migrate to the new progress indicator X-Git-Tag: 0.9.30~1581 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fcaa90acc6ed40d6ebffe3088aad35dca04777ca;p=pakfire.git compress: Migrate to the new progress indicator Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/compress.c b/src/libpakfire/compress.c index dad2a8ee3..da197aab3 100644 --- a/src/libpakfire/compress.c +++ b/src/libpakfire/compress.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include @@ -817,7 +817,7 @@ int pakfire_extract(struct pakfire* pakfire, struct archive* archive, if (flags & PAKFIRE_EXTRACT_SHOW_THROUGHPUT) progress_flags |= PAKFIRE_PROGRESS_SHOW_TRANSFER_SPEED; - // Create the progressbar indicator + // Create the progress indicator r = pakfire_progress_create(&data.progress, pakfire, progress_flags); if (r) goto ERROR; @@ -841,7 +841,7 @@ int pakfire_extract(struct pakfire* pakfire, struct archive* archive, if (r) goto ERROR; - // Finish the progressbar + // Finish the progress r = pakfire_progress_finish(data.progress); if (r) goto ERROR; @@ -873,55 +873,13 @@ struct pakfire_compress { // The filelist of all files to write struct pakfire_filelist* filelist; - // The progressbar - struct pakfire_progressbar* progressbar; + // The progress indicator + struct pakfire_progress* progress; // Digests to write to the archive int digests; }; -static int pakfire_compress_progressbar_create(struct pakfire_progressbar** progressbar, - const char* message, int flags) { - int r; - - // Create the progressbar - r = pakfire_progressbar_create(progressbar, NULL); - if (r) - return r; - - // Add message - if (message) { - r = pakfire_progressbar_add_string(*progressbar, "%s", message); - if (r) - return r; - } - - // Add bar - r = pakfire_progressbar_add_bar(*progressbar); - if (r) - return r; - - // Add throughput - if (flags & PAKFIRE_COMPRESS_SHOW_THROUGHPUT) { - r = pakfire_progressbar_add_transfer_speed(*progressbar); - if (r) - return r; - } - - // Show how many bytes have been written - r = pakfire_progressbar_add_bytes_transferred(*progressbar); - if (r) - return r; - - // Add percentage - r = pakfire_progressbar_add_percentage(*progressbar); - if (r) - return r; - - // Success - return 0; -} - static int __pakfire_compress_entry(struct pakfire* pakfire, struct pakfire_file* file, struct pakfire_compress* data, struct archive_entry* entry) { FILE* f = NULL; @@ -1029,9 +987,8 @@ static int __pakfire_compress(struct pakfire* pakfire, struct pakfire_file* file goto ERROR; } - // Update the progressbar - if (data->progressbar) - pakfire_progressbar_increment(data->progressbar, size); + // Update the progress + pakfire_progress_increment(data->progress, size); ERROR: if (entry) @@ -1044,6 +1001,9 @@ ERROR: int pakfire_compress(struct pakfire* pakfire, struct archive* archive, struct pakfire_filelist* filelist, const char* message, int flags, int digests) { + int progress_flags = + PAKFIRE_PROGRESS_SHOW_PERCENTAGE | + PAKFIRE_PROGRESS_SHOW_BYTES_TRANSFERRED; int r = 1; struct pakfire_compress data = { @@ -1055,20 +1015,30 @@ int pakfire_compress(struct pakfire* pakfire, struct archive* archive, }; // Should we show a progress bar? - const int no_progress = flags & PAKFIRE_COMPRESS_NO_PROGRESS; + if (flags & PAKFIRE_COMPRESS_NO_PROGRESS) + progress_flags |= PAKFIRE_PROGRESS_NO_PROGRESS; + + // Should we show throughput? + if (flags & PAKFIRE_COMPRESS_SHOW_THROUGHPUT) + progress_flags |= PAKFIRE_PROGRESS_SHOW_TRANSFER_SPEED; // Fetch the length of the filelist const size_t size = pakfire_filelist_total_size(filelist); - // Create the progressbar - if (!no_progress) { - r = pakfire_compress_progressbar_create(&data.progressbar, message, flags); - if (r) - goto ERROR; + // Create the progress indicator + r = pakfire_progress_create(&data.progress, pakfire, progress_flags); + if (r) + goto ERROR; - // Start progressbar - pakfire_progressbar_start(data.progressbar, size); - } + // Set progress title + r = pakfire_progress_set_title(data.progress, "%s", message); + if (r) + goto ERROR; + + // Start progress + r = pakfire_progress_start(data.progress, size); + if (r) + goto ERROR; // Setup the link resolver data.linkresolver = archive_entry_linkresolver_new(); @@ -1085,13 +1055,13 @@ int pakfire_compress(struct pakfire* pakfire, struct archive* archive, if (r) goto ERROR; - // Finish the progressbar - if (data.progressbar) - pakfire_progressbar_finish(data.progressbar); + // Finish the progress + if (data.progress) + pakfire_progress_finish(data.progress); ERROR: - if (data.progressbar) - pakfire_progressbar_unref(data.progressbar); + if (data.progress) + pakfire_progress_unref(data.progress); if (data.linkresolver) archive_entry_linkresolver_free(data.linkresolver);