df: match coreutils behavior of wrapping lines if filesystem name is too long.
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 13 Aug 2007 12:27:49 +0000 (12:27 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 13 Aug 2007 12:27:49 +0000 (12:27 -0000)
df: trim help text

coreutils/df.c
include/usage.h

index f616398f4e4080feca972f8fce94c2f73a96a362..fba59e791055adc0bf1de5e7a47551de5e5ad3db 100644 (file)
 #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);
 }
index d5e9d7d5d78ea7bdde8c77ce0f589ea5bae91124..f5025b70ad263b182512bb1d8123e79f83fa9a0c 100644 (file)
        "[-" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILESYSTEM ...]"
 #define df_full_usage \
        "Print the filesystem space used and space available" \
-       "\n\nOptions:\n" \
        USE_FEATURE_HUMAN_READABLE( \
-       "\n     -h      Print sizes in human readable format (e.g., 1K 243M 2G )\n" \
-       "       -m      Print sizes in megabytes\n" \
-       "       -k      Print sizes in kilobytes(default)") \
+       "\n\nOptions control size display:" \
+       "\n     -h      Human readable (e.g. 1K 243M 2G)" \
+       "\n     -m      1024*1024 blocks" \
+       "\n     -k      1024 blocks") \
        SKIP_FEATURE_HUMAN_READABLE( \
+       "\n\nOptions:" \
        "\n     -k      Ignored")
 #define df_example_usage \
        "$ df\n" \