From 8753441b3ba4316448e1ae5f408e6a84b0116a3c Mon Sep 17 00:00:00 2001 From: marha Date: Mon, 11 Feb 2013 08:02:10 +0100 Subject: xserver mesa git update 11 Feb 2013 xserver commit c1602d1c17967bdd4db9db19b3a9c0dfca6a58aa mesa commit 990bd49fba7d539e950bdda6eb9819a9abf14850 --- xorg-server/os/utils.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'xorg-server/os/utils.c') diff --git a/xorg-server/os/utils.c b/xorg-server/os/utils.c index e396ba4b5..60e828e28 100644 --- a/xorg-server/os/utils.c +++ b/xorg-server/os/utils.c @@ -1990,6 +1990,38 @@ FormatUInt64(uint64_t num, char *string) string[len] = '\0'; } +/** + * Format a double number as %.2f. + */ +void +FormatDouble(double dbl, char *string) +{ + int slen = 0; + uint64_t frac; + + frac = (dbl > 0 ? dbl : -dbl) * 100.0 + 0.5; + frac %= 100; + + /* write decimal part to string */ + if (dbl < 0 && dbl > -1) + string[slen++] = '-'; + FormatInt64((int64_t)dbl, &string[slen]); + + while(string[slen] != '\0') + slen++; + + /* append fractional part, but only if we have enough characters. We + * expect string to be 21 chars (incl trailing \0) */ + if (slen <= 17) { + string[slen++] = '.'; + if (frac < 10) + string[slen++] = '0'; + + FormatUInt64(frac, &string[slen]); + } +} + + /* Format a number into a hexadecimal string in a signal safe manner. The string * should be at least 17 characters in order to handle all uint64_t values. */ void -- cgit v1.2.3