diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-09-22 17:34:28 +0400 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-09-22 17:34:28 +0400 |
commit | 200d522fb85c24dd1ed36e5fcc29c1140b8b428b (patch) | |
tree | ae1fdb4e3700af96dfc63451e7c52f87fea5fb4b /coreutils/df.c | |
parent | 4ff1ce063979a0d9df7ec42823eee4624723ab58 (diff) |
df: unicode-aware column formatting. By Tomas Heinrich (theinric AT redhat.com)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/df.c')
-rw-r--r-- | coreutils/df.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/coreutils/df.c b/coreutils/df.c index 4bbfe943b..c37b18893 100644 --- a/coreutils/df.c +++ b/coreutils/df.c @@ -25,6 +25,7 @@ #include <mntent.h> #include <sys/vfs.h> #include "libbb.h" +#include "unicode.h" #if !ENABLE_FEATURE_HUMAN_READABLE static unsigned long kscale(unsigned long b, unsigned long bs) @@ -57,6 +58,8 @@ int df_main(int argc, char **argv) const char *disp_units_hdr = NULL; char *chp; + check_unicode_in_env(); + #if ENABLE_FEATURE_HUMAN_READABLE && ENABLE_FEATURE_DF_FANCY opt_complementary = "k-mB:m-Bk:B-km"; #elif ENABLE_FEATURE_HUMAN_READABLE @@ -108,6 +111,9 @@ int df_main(int argc, char **argv) while (1) { const char *device; const char *mount_point; +#if ENABLE_FEATURE_ASSUME_UNICODE + size_t dev_len; +#endif if (mount_table) { mount_entry = getmntent(mount_table); @@ -169,8 +175,18 @@ int df_main(int argc, char **argv) } #endif +#if ENABLE_FEATURE_ASSUME_UNICODE + dev_len = bb_mbstrlen(device); + if (dev_len > 20) { + printf("%s\n%20s", device, ""); + } else { + printf("%s%*s", device, 20 - dev_len, ""); + } +#else if (printf("\n%-20s" + 1, device) > 20) printf("\n%-20s", ""); +#endif + #if ENABLE_FEATURE_HUMAN_READABLE printf(" %9s ", make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr)); |