diff --git a/top/top.c b/top/top.c index 90be5a9f..d08435a1 100644 --- a/top/top.c +++ b/top/top.c @@ -1641,7 +1641,7 @@ static inline const char *make_str_utf8 (const char *str, int width, int justr, * Do some scaling then justify stuff. * We'll interpret 'num' as a kibibytes quantity and try to * format it to reach 'target' while also fitting 'width'. */ -static const char *scale_mem (int target, unsigned long num, int width, int justr) { +static const char *scale_mem (int target, float num, int width, int justr) { // SK_Kb SK_Mb SK_Gb SK_Tb SK_Pb SK_Eb #ifdef BOOST_MEMORY static const char *fmttab[] = { "%.0f", "%#.1f%c", "%#.3f%c", "%#.3f%c", "%#.3f%c", NULL }; @@ -1649,7 +1649,6 @@ static const char *scale_mem (int target, unsigned long num, int width, int just static const char *fmttab[] = { "%.0f", "%.1f%c", "%.1f%c", "%.1f%c", "%.1f%c", NULL }; #endif static char buf[SMLBUFSIZ]; - float scaled_num; char *psfx; int i; @@ -1657,12 +1656,11 @@ static const char *scale_mem (int target, unsigned long num, int width, int just if (Rc.zero_suppress && 0 >= num) goto end_justifies; - scaled_num = num; for (i = SK_Kb, psfx = Scaled_sfxtab; i < SK_Eb; psfx++, i++) { if (i >= target - && (width >= snprintf(buf, sizeof(buf), fmttab[i], scaled_num, *psfx))) + && (width >= snprintf(buf, sizeof(buf), fmttab[i], num, *psfx))) goto end_justifies; - scaled_num /= 1024.0; + num /= 1024.0; } // well shoot, this outta' fit... @@ -1674,23 +1672,21 @@ end_justifies: /* * Do some scaling then justify stuff. */ -static const char *scale_num (unsigned long num, int width, int justr) { +static const char *scale_num (float num, int width, int justr) { static char buf[SMLBUFSIZ]; - float scaled_num; char *psfx; buf[0] = '\0'; if (Rc.zero_suppress && 0 >= num) goto end_justifies; - if (width >= snprintf(buf, sizeof(buf), "%lu", num)) + if (width >= snprintf(buf, sizeof(buf), "%.0f", num)) goto end_justifies; - scaled_num = num; for (psfx = Scaled_sfxtab; 0 < *psfx; psfx++) { - scaled_num /= 1024.0; - if (width >= snprintf(buf, sizeof(buf), "%.1f%c", scaled_num, *psfx)) + num /= 1024.0; + if (width >= snprintf(buf, sizeof(buf), "%.1f%c", num, *psfx)) goto end_justifies; - if (width >= snprintf(buf, sizeof(buf), "%.0f%c", scaled_num, *psfx)) + if (width >= snprintf(buf, sizeof(buf), "%.0f%c", num, *psfx)) goto end_justifies; } diff --git a/top/top.h b/top/top.h index a267e52d..30205026 100644 --- a/top/top.h +++ b/top/top.h @@ -736,8 +736,8 @@ typedef struct WIN_t { //atic inline const char *make_num (long num, int width, int justr, int col, int noz); //atic inline const char *make_str (const char *str, int width, int justr, int col); //atic inline const char *make_str_utf8 (const char *str, int width, int justr, int col); -//atic const char *scale_mem (int target, unsigned long num, int width, int justr); -//atic const char *scale_num (unsigned long num, int width, int justr); +//atic const char *scale_mem (int target, float num, int width, int justr); +//atic const char *scale_num (float num, int width, int justr); //atic const char *scale_pcnt (float num, int width, int justr); //atic const char *scale_tics (TIC_t tics, int width, int justr); /*------ Fields Management support -------------------------------------*/