From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ilko Iliev Date: Tue, 21 Oct 2008 16:11:34 +0200 Subject: [U-Boot] [PATCH] improved strmhz() In-Reply-To: <20081021135519.D8053835694E@gemini.denx.de> References: <48FDCEB6.9040206@ronetix.at> <20081021135519.D8053835694E@gemini.denx.de> Message-ID: <48FDE316.2080903@ronetix.at> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Wolfgang Denk wrote: > Dear Ilko Iliev, > > In message <48FDCEB6.9040206@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: > Yes, it works. -- Mit freundlichen Gr??en/With best regards, Ilko Iliev Ronetix Development Tools GmbH Waidhausenstrasse 13/5 1140 Vienna, Austria Tel: +43 1 956 3138 Tel: +43 720 500 315 Fax: +43 1 8174 955 3464 E-Mail: iliev at ronetix.at Web: www.ronetix.at VAT: ATU63916016 Ronetix GmbH - 1140 Vienna - Gesch?ftsf?hrer: Ilko Iliev Registergericht: HG Vienna, FN 304979z