[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