Display now looks like this, whereas before we would have just showed
'2M/s' for the extra repository download. The cutoff is placed at 100.0
to ensure we only use 4 character slots of width (e.g. '99.9', '100').

:: Synchronizing package databases...
 testing                   39.9 KiB   470K/s 00:00 [######################] 100%
 core                      51.4 KiB   469K/s 00:00 [######################] 100%
 extra                    768.8 KiB   2.1M/s 00:00 [######################] 100%
 community-testing       1941.0   B  54.4M/s 00:00 [######################] 100%
 multilib                  26.6 KiB   458K/s 00:00 [######################] 100%
 community                449.8 KiB  1649K/s 00:00 [######################] 100%

Signed-off-by: Dan McGee <[email protected]>
---
 src/pacman/callback.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index 793facd..7bed43c 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -688,8 +688,14 @@ void cb_dl_progress(const char *filename, off_t 
file_xfered, off_t file_total)
        xfered_human = humanize_size(xfered, '\0', &xfered_label);
 
        printf(" %ls%-*s ", wcfname, padwid, "");
-       printf("%6.1f %3s  %4.f%c/s ",
-                       xfered_human, xfered_label, rate_human, rate_label[0]);
+       /* We will show 1.6M/s, 11.6M/s, but 116K/s and 1116K/s */
+       if(rate_human < 100.0) {
+               printf("%6.1f %3s  %4.1f%c/s ",
+                               xfered_human, xfered_label, rate_human, 
rate_label[0]);
+       } else {
+               printf("%6.1f %3s  %4.f%c/s ",
+                               xfered_human, xfered_label, rate_human, 
rate_label[0]);
+       }
        if(eta_h == 0) {
                printf("%02u:%02u", eta_m, eta_s);
        } else if(eta_h < 100) {
-- 
1.7.6.1


Reply via email to