- return (depth < 0);
-}
-
-/* Return the int64 number as a string. If the --human-readable option was
- * specified, we may output the number in K, M, or G units. We can return
- * up to 4 buffers at a time. */
-char *human_num(int64 num)
-{
- 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_readable) {
- char units = '\0';
- int mult = human_readable == 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) {
- sprintf(bufs[n], "%.2f%c", dnum, units);
- return bufs[n];
- }
- }
-
- s = bufs[n] + sizeof bufs[0] - 1;
- *s = '\0';
-
- if (!num)
- *--s = '0';
- while (num) {
- *--s = (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 human_num() to return our result. */
-char *human_dnum(double dnum, int decimal_digits)
-{
- char *buf = human_num(dnum);
- int len = strlen(buf);
- if (isdigit(*(uchar*)(buf+len-1))) {
- /* There's extra room in buf prior to the start of the num. */
- buf -= decimal_digits + 1;
- snprintf(buf, len + decimal_digits + 2, "%.*f", decimal_digits, dnum);
- }
- return buf;