X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=coreutils%2Fdu.c;h=56a7a9a0cf3cc868927c9940bad06adfdcfeccff;hb=f5d5e77321ad32b3952dcdf21d14fd0ef3d4c1a9;hp=313a910adb5ea8c3288204a83ebf49eb0f7abaf0;hpb=e884970c87b921542fb9351b7a907796a0a4de23;p=oweals%2Fbusybox.git diff --git a/coreutils/du.c b/coreutils/du.c index 313a910ad..56a7a9a0c 100644 --- a/coreutils/du.c +++ b/coreutils/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) { - fprintf(stdout, "%ld\t%s\n", size, 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); } } @@ -60,8 +69,7 @@ static long du(char *filename) int len; if ((lstat(filename, &statbuf)) != 0) { - printf("du: %s: %s\n", filename, strerror(errno)); - return 0; + perror_msg_and_die("%s", filename); } du_depth++; @@ -97,7 +105,7 @@ static long du(char *filename) } if (len + strlen(name) + 1 > BUFSIZ) { - errorMsg(name_too_long); + error_msg(name_too_long); du_depth--; return 0; } @@ -133,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; @@ -141,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); } @@ -156,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 (sum && isDirectory(argv[i], FALSE, NULL)) { + if(is_directory(argv[i], FALSE, NULL)==FALSE) { print_normal(sum, argv[i]); } reset_ino_dev_hashtable(); @@ -166,7 +185,7 @@ int du_main(int argc, char **argv) return status; } -/* $Id: du.c,v 1.28 2000/12/06 15:56:31 kraai Exp $ */ +/* $Id: du.c,v 1.34 2001/01/22 22:35:38 rjune Exp $ */ /* Local Variables: c-file-style: "linux"