From 3a8fad78053e1fb9fdaa227a066bb62e814cb3c1 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Thu, 17 Jul 2008 16:59:59 -0700 Subject: [PATCH] Moving big_num() into lib/compat.c so tls.c can use it. --- lib/compat.c | 43 +++++++++++++++++++++++++++++++++++++++++++ util.c | 43 ------------------------------------------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/lib/compat.c b/lib/compat.c index e0cb9f95..494b64fc 100644 --- a/lib/compat.c +++ b/lib/compat.c @@ -151,3 +151,46 @@ int sys_gettimeofday(struct timeval *tv) return gettimeofday(tv); #endif } + +/* Return the int64 number as a string. If the human_flag arg is non-zero, + * we may output the number in K, M, or G units. We can return up to 4 + * buffers at a time. */ +char *big_num(int64 num, int human_flag) +{ + static char bufs[4][128]; /* more than enough room */ + static unsigned int n; + char *s; + + n = (n + 1) % (sizeof bufs / sizeof bufs[0]); + + if (human_flag) { + char units = '\0'; + int mult = human_flag == 1 ? 1000 : 1024; + double dnum = 0; + if (num > mult*mult*mult) { + dnum = (double)num / (mult*mult*mult); + units = 'G'; + } else if (num > mult*mult) { + dnum = (double)num / (mult*mult); + units = 'M'; + } else if (num > mult) { + dnum = (double)num / mult; + units = 'K'; + } + if (units) { + snprintf(bufs[n], sizeof bufs[0], "%.2f%c", dnum, units); + return bufs[n]; + } + } + + s = bufs[n] + sizeof bufs[0] - 1; + *s = '\0'; + + if (!num) + *--s = '0'; + while (num) { + *--s = (char)(num % 10) + '0'; + num /= 10; + } + return s; +} diff --git a/util.c b/util.c index c6981745..0af7259c 100644 --- a/util.c +++ b/util.c @@ -1188,49 +1188,6 @@ int unsafe_symlink(const char *dest, const char *src) return (depth < 0); } -/* Return the int64 number as a string. If the human_flag arg is non-zero, - * we may output the number in K, M, or G units. We can return up to 4 - * buffers at a time. */ -char *big_num(int64 num, int human_flag) -{ - static char bufs[4][128]; /* more than enough room */ - static unsigned int n; - char *s; - - n = (n + 1) % (sizeof bufs / sizeof bufs[0]); - - if (human_flag) { - char units = '\0'; - int mult = human_flag == 1 ? 1000 : 1024; - double dnum = 0; - if (num > mult*mult*mult) { - dnum = (double)num / (mult*mult*mult); - units = 'G'; - } else if (num > mult*mult) { - dnum = (double)num / (mult*mult); - units = 'M'; - } else if (num > mult) { - dnum = (double)num / mult; - units = 'K'; - } - if (units) { - snprintf(bufs[n], sizeof bufs[0], "%.2f%c", dnum, units); - return bufs[n]; - } - } - - s = bufs[n] + sizeof bufs[0] - 1; - *s = '\0'; - - if (!num) - *--s = '0'; - while (num) { - *--s = (char)(num % 10) + '0'; - num /= 10; - } - return s; -} - /* Return the double number as a string. If the --human-readable option was * specified, we may output the number in K, M, or G units. We use a buffer * from big_num() to return our result. */ -- 2.34.1