diff --git a/src/xz/message.c b/src/xz/message.c index 4e344ea6..be120caf 100644 --- a/src/xz/message.c +++ b/src/xz/message.c @@ -355,11 +355,8 @@ progress_speed(uint64_t uncompressed_pos, uint64_t elapsed) if (elapsed < 3000) return ""; - static const char unit[][8] = { - "KiB/s", - "MiB/s", - "GiB/s", - }; + // The first character of KiB/s, MiB/s, or GiB/s: + static const char unit[] = { 'K', 'M', 'G' }; size_t unit_index = 0; @@ -381,7 +378,7 @@ progress_speed(uint64_t uncompressed_pos, uint64_t elapsed) // - 999 KiB/s // Use big enough buffer to hold e.g. a multibyte decimal point. static char buf[16]; - snprintf(buf, sizeof(buf), "%.*f %s", + snprintf(buf, sizeof(buf), "%.*f %ciB/s", speed > 9.9 ? 0 : 1, speed, unit[unit_index]); return buf; }