configure: only print gtk status if --enable-gfio used
[fio.git] / eta.c
diff --git a/eta.c b/eta.c
index bdd537633fff90ff15f07806e632227f0ef6c132..baada7bc48ad51604978d7cffc6051115325239e 100644 (file)
--- a/eta.c
+++ b/eta.c
@@ -12,35 +12,20 @@ static char run_str[__THREAD_RUNSTR_SZ(REAL_MAX_JOBS)];
 
 static void update_condensed_str(char *run_str, char *run_str_condensed)
 {
-       int i, ci, last, nr;
-       size_t len;
-
-       len = strlen(run_str);
-       if (!len)
-               return;
-
-       last = 0;
-       nr = 0;
-       ci = 0;
-       for (i = 0; i < len; i++) {
-               if (!last) {
-new:
-                       run_str_condensed[ci] = run_str[i];
-                       last = run_str[i];
-                       nr = 1;
-                       ci++;
-               } else if (last == run_str[i]) {
-                       nr++;
-               } else {
-                       ci += sprintf(&run_str_condensed[ci], "(%u),", nr);
-                       goto new;
+       if (*run_str) {
+               while (*run_str) {
+                       int nr = 1;
+
+                       *run_str_condensed++ = *run_str++;
+                       while (*(run_str - 1) == *run_str) {
+                               run_str++;
+                               nr++;
+                       }
+                       run_str_condensed += sprintf(run_str_condensed, "(%u),", nr);
                }
+               run_str_condensed--;
        }
-
-       if (nr)
-               ci += sprintf(&run_str_condensed[ci], "(%u)", nr);
-
-       run_str_condensed[ci + 1] = '\0';
+       *run_str_condensed = '\0';
 }
 
 /*
@@ -407,10 +392,9 @@ int calc_thread_status(struct jobs_eta *je, int force)
                } else if (td->runstate == TD_RAMP) {
                        je->nr_running++;
                        je->nr_ramp++;
-               } else if (td->runstate == TD_SETTING_UP) {
-                       je->nr_running++;
+               } else if (td->runstate == TD_SETTING_UP)
                        je->nr_setting_up++;
-               else if (td->runstate < TD_RUNNING)
+               else if (td->runstate < TD_RUNNING)
                        je->nr_pending++;
 
                if (je->elapsed_sec >= 3)
@@ -596,6 +580,7 @@ struct jobs_eta *get_jobs_eta(int force, size_t *size)
                return NULL;
        }
 
+       *size = sizeof(*je) + strlen((char *) je->run_str) + 1;
        return je;
 }