commit:     a7269e48f4961afcc8bc5f0b2d426f645612e973
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 27 21:13:59 2019 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Fri Dec 27 21:13:59 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=a7269e48

qlop: report running over estimated time

basically try saying something useful, instead of unknown

Bug: https://bugs.gentoo.org/701386
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 qlop.c | 36 +++++++++++++++++++++++-------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/qlop.c b/qlop.c
index 634431a..3120d85 100644
--- a/qlop.c
+++ b/qlop.c
@@ -903,7 +903,9 @@ static int do_emerge_log(
                        if (pkg != NULL) {
                                maxtime = pkg->time / pkg->cnt;
                                if (elapsed >= maxtime) {
-                                       maxtime = elapsed >= pkg->tbegin ? 0 : 
pkg->tbegin;
+                                       maxtime = pkg->tbegin;
+                                       if (elapsed >= maxtime)
+                                               maxtime -= elapsed;
                                        isMax = true;
                                }
                        }
@@ -928,12 +930,15 @@ static int do_emerge_log(
                                                fmt_date(flags, pkgw->tbegin, 
0),
                                                atom_format(flags->fmt, 
pkgw->atom));
                        }
-                       printf("...%s ETA: %s%s\n",
-                                       p == NULL ? "" : p,
-                                       maxtime == 0 ? "unknown" :
-                                               fmt_elapsedtime(flags, maxtime 
- elapsed),
-                                       maxtime > 0 && verbose ?
-                                               isMax ? " (longest run)" : " 
(average run)" : "");
+                       if (maxtime < 0)
+                               printf("... +%s\n", fmt_elapsedtime(flags, 
-maxtime));
+                       else
+                               printf("...%s ETA: %s%s\n",
+                                               p == NULL ? "" : p,
+                                               maxtime == 0 ? "unknown" :
+                                                       fmt_elapsedtime(flags, 
maxtime - elapsed),
+                                               maxtime > 0 && verbose ?
+                                                       isMax ? " (longest 
run)" : " (average run)" : "");
                }
                clear_set(pkgs_seen);
                array_for_each(unmerge_matches, i, pkgw) {
@@ -957,7 +962,9 @@ static int do_emerge_log(
                        if (pkg != NULL) {
                                maxtime = pkg->time / pkg->cnt;
                                if (elapsed >= maxtime) {
-                                       maxtime = elapsed >= pkg->tbegin ? 0 : 
pkg->tbegin;
+                                       maxtime = pkg->tbegin;
+                                       if (elapsed >= maxtime)
+                                               maxtime -= elapsed;
                                        isMax = true;
                                }
                        }
@@ -972,11 +979,14 @@ static int do_emerge_log(
                                                fmt_date(flags, pkgw->tbegin, 
0),
                                                atom_format(flags->fmt, 
pkgw->atom));
                        }
-                       printf("... ETA: %s%s\n",
-                                       maxtime == 0 ? "unknown" :
-                                       fmt_elapsedtime(flags, maxtime - 
elapsed),
-                                       maxtime > 0 && verbose ?
-                                               isMax ? " (longest run)" : " 
(average run)" : "");
+                       if (maxtime < 0)
+                               printf("... +%s\n", fmt_elapsedtime(flags, 
-maxtime));
+                       else
+                               printf("... ETA: %s%s\n",
+                                               maxtime == 0 ? "unknown" :
+                                                       fmt_elapsedtime(flags, 
maxtime - elapsed),
+                                               maxtime > 0 && verbose ?
+                                                       isMax ? " (longest 
run)" : " (average run)" : "");
                }
                free_set(pkgs_seen);
        } else if (flags->do_average) {

Reply via email to