df: match coreutils behavior of wrapping lines if filesystem name is too long.

df: trim help text
This commit is contained in:
Denis Vlasenko 2007-08-13 12:27:49 +00:00
parent 319f8ebef8
commit 08294dbf5b
2 changed files with 29 additions and 29 deletions

View File

@ -23,19 +23,19 @@
#include "libbb.h" #include "libbb.h"
#if !ENABLE_FEATURE_HUMAN_READABLE #if !ENABLE_FEATURE_HUMAN_READABLE
static long kscale(long b, long bs) static unsigned long kscale(unsigned long b, unsigned long bs)
{ {
return ( b * (long long) bs + 1024/2 ) / 1024; return (b * (unsigned long long) bs + 1024/2) / 1024;
} }
#endif #endif
int df_main(int argc, char **argv); int df_main(int argc, char **argv);
int df_main(int argc, char **argv) int df_main(int argc, char **argv)
{ {
long blocks_used; unsigned long blocks_used;
long blocks_percent_used; unsigned blocks_percent_used;
#if ENABLE_FEATURE_HUMAN_READABLE #if ENABLE_FEATURE_HUMAN_READABLE
unsigned long df_disp_hr = 1024; unsigned df_disp_hr = 1024;
#endif #endif
int status = EXIT_SUCCESS; int status = EXIT_SUCCESS;
unsigned opt; unsigned opt;
@ -43,10 +43,9 @@ int df_main(int argc, char **argv)
struct mntent *mount_entry; struct mntent *mount_entry;
struct statfs s; struct statfs s;
/* default display is kilobytes */ /* default display is kilobytes */
static const char hdr_1k[] ALIGN1 = "1k-blocks"; const char *disp_units_hdr = "1k-blocks";
const char *disp_units_hdr = hdr_1k;
#if ENABLE_FEATURE_HUMAN_READABLE #if ENABLE_FEATURE_HUMAN_READABLE
opt_complementary = "h-km:k-hm:m-hk"; opt_complementary = "h-km:k-hm:m-hk";
opt = getopt32(argc, argv, "hmk"); opt = getopt32(argc, argv, "hmk");
if (opt & 1) { if (opt & 1) {
@ -73,7 +72,7 @@ int df_main(int argc, char **argv)
} }
} }
do { while (1) {
const char *device; const char *device;
const char *mount_point; const char *mount_point;
@ -109,7 +108,7 @@ int df_main(int argc, char **argv)
blocks_used = s.f_blocks - s.f_bfree; blocks_used = s.f_blocks - s.f_bfree;
blocks_percent_used = 0; blocks_percent_used = 0;
if (blocks_used + s.f_bavail) { if (blocks_used + s.f_bavail) {
blocks_percent_used = (((long long) blocks_used) * 100 blocks_percent_used = (blocks_used * 100ULL
+ (blocks_used + s.f_bavail)/2 + (blocks_used + s.f_bavail)/2
) / (blocks_used + s.f_bavail); ) / (blocks_used + s.f_bavail);
} }
@ -125,28 +124,28 @@ int df_main(int argc, char **argv)
} }
} }
if (printf("\n%-20s" + 1, device) > 20)
printf("\n%-20s", "");
#if ENABLE_FEATURE_HUMAN_READABLE #if ENABLE_FEATURE_HUMAN_READABLE
printf("%-20s %9s ", device, printf(" %9s ",
make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr)); make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr));
printf("%9s ", printf(" %9s " + 1,
make_human_readable_str( (s.f_blocks - s.f_bfree), make_human_readable_str((s.f_blocks - s.f_bfree),
s.f_bsize, df_disp_hr)); s.f_bsize, df_disp_hr));
printf("%9s %3ld%% %s\n", printf("%9s %3u%% %s\n",
make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr), make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr),
blocks_percent_used, mount_point); blocks_percent_used, mount_point);
#else #else
printf("%-20s %9ld %9ld %9ld %3ld%% %s\n", printf(" %9lu %9lu %9lu %3u%% %s\n",
device, kscale(s.f_blocks, s.f_bsize),
kscale(s.f_blocks, s.f_bsize), kscale(s.f_blocks-s.f_bfree, s.f_bsize),
kscale(s.f_blocks-s.f_bfree, s.f_bsize), kscale(s.f_bavail, s.f_bsize),
kscale(s.f_bavail, s.f_bsize), blocks_percent_used, mount_point);
blocks_percent_used, mount_point);
#endif #endif
} }
}
} while (1);
fflush_stdout_and_exit(status); fflush_stdout_and_exit(status);
} }

View File

@ -607,12 +607,13 @@
"[-" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILESYSTEM ...]" "[-" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILESYSTEM ...]"
#define df_full_usage \ #define df_full_usage \
"Print the filesystem space used and space available" \ "Print the filesystem space used and space available" \
"\n\nOptions:\n" \
USE_FEATURE_HUMAN_READABLE( \ USE_FEATURE_HUMAN_READABLE( \
"\n -h Print sizes in human readable format (e.g., 1K 243M 2G )\n" \ "\n\nOptions control size display:" \
" -m Print sizes in megabytes\n" \ "\n -h Human readable (e.g. 1K 243M 2G)" \
" -k Print sizes in kilobytes(default)") \ "\n -m 1024*1024 blocks" \
"\n -k 1024 blocks") \
SKIP_FEATURE_HUMAN_READABLE( \ SKIP_FEATURE_HUMAN_READABLE( \
"\n\nOptions:" \
"\n -k Ignored") "\n -k Ignored")
#define df_example_usage \ #define df_example_usage \
"$ df\n" \ "$ df\n" \