diff options
author | John Levon <john.levon@joyent.com> | 2020-04-01 14:58:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-01 14:58:25 +0100 |
commit | a4a43b983024104a82e95c2647b94f767d62a8eb (patch) | |
tree | 57ccba9faa7b25da0ab082799ac1d41fe9447caa /usr/src/lib/libcmdutils/common/nicenum.c | |
parent | 280f87530631a519eb45e763050d2e0b3e55d499 (diff) | |
parent | f559d4b8282f7f6a9c3e1546000352c62e12481a (diff) | |
download | illumos-joyent-OS-8148.tar.gz |
Merge branch 'master' into OS-8148OS-8148
Diffstat (limited to 'usr/src/lib/libcmdutils/common/nicenum.c')
-rw-r--r-- | usr/src/lib/libcmdutils/common/nicenum.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/usr/src/lib/libcmdutils/common/nicenum.c b/usr/src/lib/libcmdutils/common/nicenum.c index 9b9a8fcd5e..a9161c422c 100644 --- a/usr/src/lib/libcmdutils/common/nicenum.c +++ b/usr/src/lib/libcmdutils/common/nicenum.c @@ -45,13 +45,11 @@ nicenum_scale(uint64_t n, size_t units, char *buf, size_t buflen, uint64_t divisor = 1; int index = 0; int rc = 0; - int spclen = 0; - char *spc = ""; + const char *spc = ""; char u; if (flags & NN_UNIT_SPACE) { spc = " "; - spclen = 1; } if (units == 0) @@ -92,7 +90,7 @@ nicenum_scale(uint64_t n, size_t units, char *buf, size_t buflen, u = " KMGTPE"[index]; if (index == 0) { - rc = snprintf(buf, buflen, "%llu", n); + rc = snprintf(buf, buflen, "%llu%s", n, spc); } else if (n % divisor == 0) { /* * If this is an even multiple of the base, always display @@ -102,7 +100,7 @@ nicenum_scale(uint64_t n, size_t units, char *buf, size_t buflen, } else { /* * We want to choose a precision that reflects the best choice - * for fitting in 5 characters. This can get rather tricky + * for fitting in the buffer. This can get rather tricky * when we have numbers that are very close to an order of * magnitude. For example, when displaying 10239 (which is * really 9.999K), we want only a single place of precision @@ -113,7 +111,7 @@ nicenum_scale(uint64_t n, size_t units, char *buf, size_t buflen, int i; for (i = 2; i >= 0; i--) { if ((rc = snprintf(buf, buflen, "%.*f%s%c", i, - (double)n / divisor, spc, u)) <= 5 + spclen) + (double)n / divisor, spc, u)) <= (buflen - 1)) break; } } |