Display big files in K/M/G

This commit is contained in:
Alexander S. Aganichev 2001-12-20 16:07:53 +00:00
parent aa20211b6a
commit 140773cdc1

View File

@ -82,6 +82,7 @@ class gfileselect : public gwinpick {
void print_line(uint idx, uint pos, bool isbar);
void scroll(int where);
bool handle_key();
const char *gensize(ulong size);
public:
@ -136,6 +137,32 @@ void gfileselect::do_delayed() {
}
// ------------------------------------------------------------------
#define KFIX(A) (int) (((A) * 1000.0 / 1024.0) / 10)
const char *gfileselect::gensize(ulong size) {
static char ret[16];
if(size >= 1048576000) {
size += 5242880;
sprintf(ret, "%3d.%02dG", (int) size/1073741824, KFIX((size%1073741824)/1024));
}
else if(size >= 1024000) {
size += 5120;
sprintf(ret, "%3d.%02dM", (int) size/1048576, KFIX((size%1048576)/1024));
}
else if(size >= 1000) {
size += 5;
sprintf(ret, "%3d.%02dk", (int) size/1024, KFIX(size%1024));
}
else
sprintf(ret, "%d", (int) size);
return ret;
}
// ------------------------------------------------------------------
void gfileselect::print_line(uint idx, uint pos, bool isbar) {
@ -144,11 +171,11 @@ void gfileselect::print_line(uint idx, uint pos, bool isbar) {
FFblk& fb = fblk[idx];
sprintf(buf, "%c%-*.*s %8lu %2d-%02d-%02d %2d:%02d ",
sprintf(buf, "%c%-*.*s %8s %2d-%02d-%02d %2d:%02d ",
fb.selected ? MMRK_MARK : ' ',
MAXCOL-62, (int)MAXCOL-62,
fb.name,
fb.size,
gensize(fb.size),
fb.day,
fb.month,
fb.year % 100,