From c42a4efa7de9d23956cedd2850a7b1f987de537e Mon Sep 17 00:00:00 2001 From: otto <> Date: Sat, 27 Dec 2003 19:49:51 +0000 Subject: [PATCH] o Do not drop unit when printing -100 o Round negative numbers correctly o Do not print fractional valus for byte values ok ian@ henning@ --- src/lib/libutil/fmt_scaled.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/lib/libutil/fmt_scaled.c b/src/lib/libutil/fmt_scaled.c index 2785f9e6..9f75b102 100644 --- a/src/lib/libutil/fmt_scaled.c +++ b/src/lib/libutil/fmt_scaled.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fmt_scaled.c,v 1.1 2003/05/15 01:26:26 ian Exp $ */ +/* $OpenBSD: fmt_scaled.c,v 1.2 2003/12/27 19:49:51 otto Exp $ */ /* * Copyright (c) 2001, 2002, 2003 Ian F. Darwin. All rights reserved. @@ -37,7 +37,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static const char ident[] = "$OpenBSD: fmt_scaled.c,v 1.1 2003/05/15 01:26:26 ian Exp $"; +static const char ident[] = "$OpenBSD: fmt_scaled.c,v 1.2 2003/12/27 19:49:51 otto Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -233,15 +233,18 @@ fmt_scaled(long long number, char *result) } } fract = (10 * fract + 512) / 1024; - /* if the result would be >= 10, round main number up */ + /* if the result would be >= 10, round main number */ if (fract == 10) { - number++; + if (number >= 0) + number++; + else + number--; fract = 0; } if (number == 0) strlcpy(result, "0B", FMT_SCALED_STRSIZE); - else if (number > 100 || number < -100) + else if (unit == NONE || number >= 100 || number <= -100) (void)snprintf(result, FMT_SCALED_STRSIZE, "%lld%c", number, scale_chars[unit]); else