diff options
Diffstat (limited to 'zfs/ZfsCompressedArcMeter.c')
-rw-r--r-- | zfs/ZfsCompressedArcMeter.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/zfs/ZfsCompressedArcMeter.c b/zfs/ZfsCompressedArcMeter.c index 92d82e9..29ac3c4 100644 --- a/zfs/ZfsCompressedArcMeter.c +++ b/zfs/ZfsCompressedArcMeter.c @@ -5,7 +5,9 @@ Released under the GNU GPLv2, see the COPYING file in the source distribution for its full text. */ -#include "ZfsCompressedArcMeter.h" +#include "zfs/ZfsCompressedArcMeter.h" + +#include <stddef.h> #include "CRT.h" #include "Meter.h" @@ -13,7 +15,6 @@ in the source distribution for its full text. #include "Platform.h" #include "RichString.h" #include "XUtils.h" - #include "zfs/ZfsArcStats.h" @@ -32,14 +33,18 @@ void ZfsCompressedArcMeter_readStats(Meter* this, const ZfsArcStats* stats) { } } -static void ZfsCompressedArcMeter_printRatioString(const Meter* this, char* buffer, size_t size) { - xSnprintf(buffer, size, "%.2f:1", this->total / this->values[0]); +static int ZfsCompressedArcMeter_printRatioString(const Meter* this, char* buffer, size_t size) { + if (this->values[0] > 0) { + return xSnprintf(buffer, size, "%.2f:1", this->total / this->values[0]); + } + + return xSnprintf(buffer, size, "N/A"); } -static void ZfsCompressedArcMeter_updateValues(Meter* this, char* buffer, size_t size) { +static void ZfsCompressedArcMeter_updateValues(Meter* this) { Platform_setZfsCompressedArcValues(this); - ZfsCompressedArcMeter_printRatioString(this, buffer, size); + ZfsCompressedArcMeter_printRatioString(this, this->txtBuffer, sizeof(this->txtBuffer)); } static void ZfsCompressedArcMeter_display(const Object* cast, RichString* out) { @@ -47,18 +52,20 @@ static void ZfsCompressedArcMeter_display(const Object* cast, RichString* out) { if (this->values[0] > 0) { char buffer[50]; + int len; + Meter_humanUnit(buffer, this->total, sizeof(buffer)); RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer); RichString_appendAscii(out, CRT_colors[METER_TEXT], " Uncompressed, "); Meter_humanUnit(buffer, this->values[0], sizeof(buffer)); RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer); RichString_appendAscii(out, CRT_colors[METER_TEXT], " Compressed, "); - ZfsCompressedArcMeter_printRatioString(this, buffer, sizeof(buffer)); - RichString_appendAscii(out, CRT_colors[METER_VALUE], buffer); + len = ZfsCompressedArcMeter_printRatioString(this, buffer, sizeof(buffer)); + RichString_appendnAscii(out, CRT_colors[ZFS_RATIO], buffer, len); RichString_appendAscii(out, CRT_colors[METER_TEXT], " Ratio"); } else { RichString_writeAscii(out, CRT_colors[METER_TEXT], " "); - RichString_appendAscii(out, CRT_colors[FAILED_SEARCH], "Compression Unavailable"); + RichString_appendAscii(out, CRT_colors[FAILED_READ], "Compression Unavailable"); } } |