From 6be1fd967c69696684f75eeab758b56bd5c2eaf9 Mon Sep 17 00:00:00 2001 From: rjune Date: Mon, 22 Jan 2001 22:35:38 +0000 Subject: Add HUMAN_READABLE define for -m and -h support in du, df, and ls Add support for -k in du, df, and ls(no define, it's for compatibliity with the GNU utils as bb does -k by default) Fix bug #1084 git-svn-id: svn://busybox.net/trunk/busybox@1635 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- du.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'du.c') diff --git a/du.c b/du.c index 8628732d8..56a7a9a0c 100644 --- a/du.c +++ b/du.c @@ -33,6 +33,10 @@ #include #include +#ifdef BB_FEATURE_HUMAN_READABLE +unsigned long du_disp_hr = KILOBYTE; +#endif + typedef void (Display) (long, char *); static int du_depth = 0; @@ -42,12 +46,17 @@ static Display *print; static void print_normal(long size, char *filename) { +#ifdef BB_FEATURE_HUMAN_READABLE + printf("%s\t%s\n", format((size * KILOBYTE), du_disp_hr), filename); +#else printf("%ld\t%s\n", size, filename); +#endif } static void print_summary(long size, char *filename) { if (du_depth == 1) { +printf("summary\n"); print_normal(size, filename); } } @@ -132,7 +141,11 @@ int du_main(int argc, char **argv) print = print_normal; /* parse argv[] */ - while ((c = getopt(argc, argv, "sl")) != EOF) { + while ((c = getopt(argc, argv, "sl" +#ifdef BB_FEATURE_HUMAN_READABLE +"hm" +#endif +"k")) != EOF) { switch (c) { case 's': print = print_summary; @@ -140,6 +153,13 @@ int du_main(int argc, char **argv) case 'l': count_hardlinks = 1; break; +#ifdef BB_FEATURE_HUMAN_READABLE + case 'h': du_disp_hr = 0; break; + case 'm': du_disp_hr = MEGABYTE; break; + case 'k': du_disp_hr = KILOBYTE; break; +#else + case 'k': break; +#endif default: usage(du_usage); } @@ -155,7 +175,7 @@ int du_main(int argc, char **argv) for (i=optind; i < argc; i++) { if ((sum = du(argv[i])) == 0) status = EXIT_FAILURE; - if (is_directory(argv[i], FALSE, NULL)==FALSE) { + if(is_directory(argv[i], FALSE, NULL)==FALSE) { print_normal(sum, argv[i]); } reset_ino_dev_hashtable(); @@ -165,7 +185,7 @@ int du_main(int argc, char **argv) return status; } -/* $Id: du.c,v 1.33 2001/01/18 02:57:08 kraai Exp $ */ +/* $Id: du.c,v 1.34 2001/01/22 22:35:38 rjune Exp $ */ /* Local Variables: c-file-style: "linux" -- cgit v1.2.3-55-g6feb