"staywithu" writes:

In BusyBox v1.00-pre2,
 commands like ls, df with -h option report a wrong file size for files larger than 4GBtye!!

For example,
   when I execute 'ls -l', it reports
      -rw-r--r--      1 root       root    5368709120    Aug    17  2003  large_stream.tp

   when I execute 'ls -lh', I expect that
      -rw-r--r--      1 root       root                5.0G    Aug    17  2003  large_stream.tp

  but it reports
      -rw-r--r--      1 root       root                1.0G    Aug    17  2003  large_stream.tp

I fixed this bug that...
 Line 31 in libbb/human_readable.c and line 275 include/libbb.h

     const char *make_human_readable_str(unsigned long size
      =>   const char *make_human_readable_str(unsigned long long size

It's OK!
This commit is contained in:
Eric Andersen 2003-08-22 23:08:37 +00:00
parent 6d3c7e7a9c
commit 97e2426582
2 changed files with 5 additions and 5 deletions

View File

@ -267,7 +267,8 @@ enum {
MEGABYTE = (KILOBYTE*1024),
GIGABYTE = (MEGABYTE*1024)
};
const char *make_human_readable_str(unsigned long size, unsigned long block_size, unsigned long display_unit);
const char *make_human_readable_str(unsigned long long size,
unsigned long block_size, unsigned long display_unit);
int bb_ask_confirmation(void);
int klogctl(int type, char * b, int len);

View File

@ -28,9 +28,8 @@
#include <stdio.h>
#include "libbb.h"
const char *make_human_readable_str(unsigned long size,
unsigned long block_size,
unsigned long display_unit)
const char *make_human_readable_str(unsigned long long size,
unsigned long block_size, unsigned long display_unit)
{
/* The code will adjust for additional (appended) units. */
static const char zero_and_units[] = { '0', 0, 'k', 'M', 'G', 'T' };
@ -48,7 +47,7 @@ const char *make_human_readable_str(unsigned long size,
f = fmt;
frac = 0;
val = ((unsigned long long) size) * block_size;
val = size * block_size;
if (val == 0) {
return u;
}