mirror of
https://github.com/jarun/nnn.git
synced 2024-09-29 09:17:51 +00:00
parent
58d90bfcf6
commit
4d93a7f9fe
20
nnn.c
20
nnn.c
|
@ -80,7 +80,6 @@
|
||||||
#endif
|
#endif
|
||||||
#include <ftw.h>
|
#include <ftw.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include <inttypes.h>
|
|
||||||
|
|
||||||
#include "nnn.h"
|
#include "nnn.h"
|
||||||
|
|
||||||
|
@ -1440,8 +1439,10 @@ coolsize(off_t size)
|
||||||
{
|
{
|
||||||
static const char * const U = "BKMGTPEZY";
|
static const char * const U = "BKMGTPEZY";
|
||||||
static char size_buf[12]; /* Buffer to hold human readable size */
|
static char size_buf[12]; /* Buffer to hold human readable size */
|
||||||
static int rem, i;
|
static int i;
|
||||||
static int fdig; /* number of fractional digits to show */
|
|
||||||
|
static long double rem;
|
||||||
|
static const double div_2_pow_10 = 1.0 / 1024.0;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
rem = 0;
|
rem = 0;
|
||||||
|
@ -1452,18 +1453,7 @@ coolsize(off_t size)
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
rem = (1000 * rem) >> 10; /* convert 1024th fractions to 1000th */
|
snprintf(size_buf, 12, "%.*Lf%c", i, size + rem * div_2_pow_10, U[i]);
|
||||||
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]);
|
|
||||||
|
|
||||||
return size_buf;
|
return size_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue