[U-Boot] [PATCH] improved strmhz()
Wolfgang Denk
wd at denx.de
Tue Oct 21 15:55:19 CEST 2008
Dear Ilko Iliev,
In message <48FDCEB6.9040206 at ronetix.at> you wrote:
> This patch prevents the displaying of results like this:
> hz = 1999170000
> buf = "200.-83"
I think you got one '0' too many in your example - the example would
just print "1999.170" which is correct.
> --- a/lib_generic/strmhz.c
> +++ b/lib_generic/strmhz.c
> @@ -28,10 +28,15 @@ char *strmhz (char *buf, long hz)
> long m;
>
> n = DIV_ROUND(hz, 1000000L);
> - l = sprintf (buf, "%ld", n);
>
> hz -= n * 1000000L;
> m = DIV_ROUND(hz, 1000L);
> + if ( m < 0 ) {
> + n--;
> + m += 1000L;
> + }
> +
> + l = sprintf (buf, "%ld", n);
> if (m != 0)
> sprintf (buf + l, ".%03ld", m);
> return (buf);
That looks overly complex to me. Can you please check if this patch
fixes the problem for your test cases, too:
More information about the U-Boot
mailing list