]> git.ipfire.org Git - people/ms/pakfire.git/blobdiff - src/libpakfire/compress.c
compress: Migrate to the new progress indicator
[people/ms/pakfire.git] / src / libpakfire / compress.c
index dad2a8ee3cda527b481d4104747be2e22b286316..da197aab39288088ecd6633618b1a7a9c64c2c9e 100644 (file)
@@ -31,7 +31,7 @@
 #include <pakfire/file.h>
 #include <pakfire/filelist.h>
 #include <pakfire/logging.h>
-#include <pakfire/progressbar.h>
+#include <pakfire/progress.h>
 #include <pakfire/string.h>
 #include <pakfire/util.h>
 
@@ -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);