mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 13:51:31 +00:00
parent
58d90bfcf6
commit
4d93a7f9fe
20
nnn.c
20
nnn.c
|
@ -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…
Reference in a new issue