aboutsummaryrefslogtreecommitdiff
path: root/coreutils/df.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-08-13 12:27:49 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-08-13 12:27:49 +0000
commit08294dbf5bc6fb1ea0b185488675d91169e231ce (patch)
tree2f0ad14f5a2a4edf5cdf36e72eaaad7c70ed0c42 /coreutils/df.c
parent319f8ebef8a9e48cb74b220d4585552928549266 (diff)
downloadbusybox-08294dbf5bc6fb1ea0b185488675d91169e231ce.tar.gz
df: match coreutils behavior of wrapping lines if filesystem name is too long.
df: trim help text
Diffstat (limited to 'coreutils/df.c')
-rw-r--r--coreutils/df.c49
1 files changed, 24 insertions, 25 deletions
diff --git a/coreutils/df.c b/coreutils/df.c
index f616398f4..fba59e791 100644
--- a/coreutils/df.c
+++ b/coreutils/df.c
@@ -23,19 +23,19 @@
#include "libbb.h"
#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
int df_main(int argc, char **argv);
int df_main(int argc, char **argv)
{
- long blocks_used;
- long blocks_percent_used;
-#if ENABLE_FEATURE_HUMAN_READABLE
- unsigned long df_disp_hr = 1024;
+ unsigned long blocks_used;
+ unsigned blocks_percent_used;
+#if ENABLE_FEATURE_HUMAN_READABLE
+ unsigned df_disp_hr = 1024;
#endif
int status = EXIT_SUCCESS;
unsigned opt;
@@ -43,10 +43,9 @@ int df_main(int argc, char **argv)
struct mntent *mount_entry;
struct statfs s;
/* default display is kilobytes */
- static const char hdr_1k[] ALIGN1 = "1k-blocks";
- const char *disp_units_hdr = hdr_1k;
+ const char *disp_units_hdr = "1k-blocks";
-#if ENABLE_FEATURE_HUMAN_READABLE
+#if ENABLE_FEATURE_HUMAN_READABLE
opt_complementary = "h-km:k-hm:m-hk";
opt = getopt32(argc, argv, "hmk");
if (opt & 1) {
@@ -73,7 +72,7 @@ int df_main(int argc, char **argv)
}
}
- do {
+ while (1) {
const char *device;
const char *mount_point;
@@ -109,7 +108,7 @@ int df_main(int argc, char **argv)
blocks_used = s.f_blocks - s.f_bfree;
blocks_percent_used = 0;
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);
}
@@ -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
- printf("%-20s %9s ", device,
+ printf(" %9s ",
make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr));
- printf("%9s ",
- make_human_readable_str( (s.f_blocks - s.f_bfree),
+ printf(" %9s " + 1,
+ make_human_readable_str((s.f_blocks - s.f_bfree),
s.f_bsize, df_disp_hr));
- printf("%9s %3ld%% %s\n",
- make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr),
- blocks_percent_used, mount_point);
+ printf("%9s %3u%% %s\n",
+ make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr),
+ blocks_percent_used, mount_point);
#else
- printf("%-20s %9ld %9ld %9ld %3ld%% %s\n",
- device,
- kscale(s.f_blocks, s.f_bsize),
- kscale(s.f_blocks-s.f_bfree, s.f_bsize),
- kscale(s.f_bavail, s.f_bsize),
- blocks_percent_used, mount_point);
+ printf(" %9lu %9lu %9lu %3u%% %s\n",
+ kscale(s.f_blocks, s.f_bsize),
+ kscale(s.f_blocks-s.f_bfree, s.f_bsize),
+ kscale(s.f_bavail, s.f_bsize),
+ blocks_percent_used, mount_point);
#endif
}
-
- } while (1);
+ }
fflush_stdout_and_exit(status);
}