diff options
author | Eugene V. Lyubimkin <jackyf@debian.org> | 2011-11-26 15:58:33 +0200 |
---|---|---|
committer | Daniel Lange <DLange@git.local> | 2016-04-11 13:00:30 +0200 |
commit | c65eb8be811f59b55d64d9e7654c33708de79ad9 (patch) | |
tree | ee6e542b988263c49f0e1200d6aa5aa635667fe8 /SwapMeter.c | |
parent | 38174fffd79f54a8be7642bf170a2320b29e8063 (diff) | |
parent | eaf11cc12a1aa4b050a8a1e7ea3770d3d9c81e95 (diff) | |
download | debian_htop-c65eb8be811f59b55d64d9e7654c33708de79ad9.tar.gz debian_htop-c65eb8be811f59b55d64d9e7654c33708de79ad9.tar.bz2 debian_htop-c65eb8be811f59b55d64d9e7654c33708de79ad9.zip |
Imported Debian patch 1.0-1debian/1.0-1
Diffstat (limited to 'SwapMeter.c')
-rw-r--r-- | SwapMeter.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/SwapMeter.c b/SwapMeter.c index ecbd129..403b057 100644 --- a/SwapMeter.c +++ b/SwapMeter.c @@ -1,6 +1,6 @@ /* htop -(C) 2004-2010 Hisham H. Muhammad +(C) 2004-2011 Hisham H. Muhammad Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -19,25 +19,40 @@ in the source distribution for its full text. #include "debug.h" #include <assert.h> +#define KILOBYTE 1 +#define MEGABYTE 1024 +#define GIGABYTE 1048576 + int SwapMeter_attributes[] = { SWAP }; +/* NOTE: Value is in kilobytes */ +static void SwapMeter_humanNumber(char* buffer, const long int* value) { + if (*value >= 10*GIGABYTE) + sprintf(buffer, "%ldG ", *value / GIGABYTE); + else if (*value >= 10*MEGABYTE) + sprintf(buffer, "%ldM ", *value / MEGABYTE); + else + sprintf(buffer, "%ldK ", *value); +} + static void SwapMeter_setValues(Meter* this, char* buffer, int len) { long int usedSwap = this->pl->usedSwap; this->total = this->pl->totalSwap; this->values[0] = usedSwap; - snprintf(buffer, len, "%ld/%ldMB", (long int) usedSwap / 1024, (long int) this->total / 1024); + snprintf(buffer, len, "%ld/%ldMB", (long int) usedSwap / MEGABYTE, (long int) this->total / MEGABYTE); } static void SwapMeter_display(Object* cast, RichString* out) { char buffer[50]; Meter* this = (Meter*)cast; long int swap = (long int) this->values[0]; + long int total = (long int) this->total; RichString_write(out, CRT_colors[METER_TEXT], ":"); - sprintf(buffer, "%ldM ", (long int) this->total / 1024); + SwapMeter_humanNumber(buffer, &total); RichString_append(out, CRT_colors[METER_VALUE], buffer); - sprintf(buffer, "%ldk", swap); + SwapMeter_humanNumber(buffer, &swap); RichString_append(out, CRT_colors[METER_TEXT], "used:"); RichString_append(out, CRT_colors[METER_VALUE], buffer); } |