]> git.ipfire.org Git - people/ms/pakfire.git/commitdiff
progress: Allow restart by keeping the state up to date
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 25 Jun 2025 08:49:33 +0000 (08:49 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 25 Jun 2025 08:49:33 +0000 (08:49 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/progress.c

index eaedf6496c3c9522e8c90dfb665729c9dda507e6..ff9c6e5af06f4da119136c2c0e5dd7d1807fe9c4 100644 (file)
@@ -209,8 +209,14 @@ int pakfire_progress_start(struct pakfire_progress* p, unsigned long int value)
        int r;
 
        // This can only be called once
-       if (p->state == PAKFIRE_PROGRESS_RUNNING)
-               return -EINVAL;
+       switch (p->state) {
+               case PAKFIRE_PROGRESS_INIT:
+               case PAKFIRE_PROGRESS_FINISHED:
+                       break;
+
+               default:
+                       return -EINVAL;
+       }
 
        // We are now running...
        p->state = PAKFIRE_PROGRESS_RUNNING;
@@ -245,6 +251,9 @@ int pakfire_progress_finish(struct pakfire_progress* p) {
        if (p->state == PAKFIRE_PROGRESS_FINISHED)
                return 0;
 
+       // Update state
+       p->state = PAKFIRE_PROGRESS_FINISHED;
+
        // No-op
        if (pakfire_progress_has_flag(p, PAKFIRE_PROGRESS_NO_PROGRESS))
                return 0;