From 200d522fb85c24dd1ed36e5fcc29c1140b8b428b Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 22 Sep 2009 15:34:28 +0200 Subject: df: unicode-aware column formatting. By Tomas Heinrich (theinric AT redhat.com) Signed-off-by: Denys Vlasenko --- coreutils/df.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 #include #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)); -- cgit v1.2.3