[w3m-dev 00972] better display of progress bar ?

From: Hironori Sakamoto (hsaka@mth.biglobe.ne.jp)
Date: Fri Jun 30 2000 - 09:53:43 CDT


$B:dK\$G$9!#(B

2Mb $B$N%U%!%$%k$rFI$s$G$$$k;~$K!"$:$C$H(B 0/2Mb $B$K$J$C$FHa$7$+$C$?$N$G!"(B
$B%W%m%0%l%9%P!<$NI=<($r(B %.0f (%.1f) $B$+$i(B %.3g $B$K$7$F$_$?$s$G$9$,!"(B
$B$I$s$J$b$s$G$7$g$&!#(B
# $B$$$^$$$A%(%l%,%s%H$G$O$J$$$N$G$9$,!D(B

-----------------------------------
$B:dK\(B $B9@B'(B <hsaka@mth.biglobe.ne.jp>
 http://www2u.biglobe.ne.jp/~hsaka/

diff -u file.c.orig file.c
--- file.c.orig Sun Jun 25 14:30:32 2000
+++ file.c Fri Jun 30 23:40:37 2000
@@ -4447,12 +4447,13 @@
     char **sizes = _size_unit;
 
     csize = (float) size;
- while (csize > 1024.0 && sizes[sizepos + 1]) {
+ while (csize >= 999.495 && sizes[sizepos + 1]) {
         csize = csize / 1024.0;
         sizepos++;
     }
- return Sprintf(usefloat ? "%.1f%s" : "%.0f%s",
- csize, sizes[sizepos])->ptr;
+ return Sprintf(usefloat ? "%.3g%s" : "%.0f%s",
+ floorf(csize * 100.0 + 0.5) / 100.0,
+ sizes[sizepos])->ptr;
 }
 
 char *
@@ -4462,15 +4463,15 @@
     float csize, factor = 1;
     int sizepos = 0;
 
- csize = (size1 > size2) ? size1 : size2;
-
- while (csize / factor > 1024.0 && sizes[sizepos + 1]) {
+ csize = (float)((size1 > size2) ? size1 : size2);
+ while (csize / factor >= 999.495 && sizes[sizepos + 1]) {
         factor *= 1024.0;
         sizepos++;
     }
-
- return Sprintf(usefloat ? "%.1f/%.1f%s" : "%.0f/%.0f%s",
- size1 / factor, size2 / factor, sizes[sizepos])->ptr;
+ return Sprintf(usefloat ? "%.3g/%.3g%s" : "%.0f/%.0f%s",
+ floorf(size1 / factor * 100.0 + 0.5) / 100.0,
+ floorf(size2 / factor * 100.0 + 0.5) / 100.0,
+ sizes[sizepos])->ptr;
 }
 
 void
@@ -4499,7 +4500,7 @@
         rate = duration ? *trbyte / duration : 0;
         eta = rate ? (current_content_length - *trbyte) / rate : 0;
         addstr(Sprintf("%11s %3.0f%% %7s/s eta %02d:%02d:%02d ",
- convert_size2(*trbyte, current_content_length, 0),
+ convert_size2(*trbyte, current_content_length, 1),
         100.0 * (*trbyte) / current_content_length, convert_size(rate, 1),
                        eta / (60 * 60), (eta / 60) % 60, eta % 60)->ptr);
         pos = 42;



This archive was generated by hypermail 2b29 : Wed Jul 19 2000 - 10:30:57 CDT