Browse Source

Revert "Integer-only coolsize() (#84)"

This reverts commit 7be0726164.
master
Arun Prakash Jana 6 years ago
parent
commit
4d93a7f9fe
1 changed files with 5 additions and 15 deletions
  1. +5
    -15
      nnn.c

+ 5
- 15
nnn.c View File

@@ -80,7 +80,6 @@
#endif
#include <ftw.h>
#include <wchar.h>
#include <inttypes.h>

#include "nnn.h"

@@ -1440,8 +1439,10 @@ coolsize(off_t size)
{
static const char * const U = "BKMGTPEZY";
static char size_buf[12]; /* Buffer to hold human readable size */
static int rem, i;
static int fdig; /* number of fractional digits to show */
static int i;

static long double rem;
static const double div_2_pow_10 = 1.0 / 1024.0;

i = 0;
rem = 0;
@@ -1452,18 +1453,7 @@ coolsize(off_t size)
++i;
}

rem = (1000 * rem) >> 10; /* convert 1024th fractions to 1000th */
fdig = 3;

/* Show 1 decimal for KB sizes and 2 decimals for MBs. */
if (i < 3) { --fdig; rem = (rem + 5) / 10; }
if (i < 2) { --fdig; rem = (rem + 5) / 10; }

if (i > 0)
snprintf(size_buf, 12, "%" PRId64 ".%0*i%c", size, fdig, rem, U[i]);
else
snprintf(size_buf, 12, "%" PRId64 "%c", size, U[i]);

snprintf(size_buf, 12, "%.*Lf%c", i, size + rem * div_2_pow_10, U[i]);
return size_buf;
}



Loading…
Cancel
Save