+ int status = EXIT_SUCCESS;
+ int i;
+ int c;
+
+ /* default behaviour */
+ print = print_normal;
+
+ /* parse argv[] */
+ while ((c = getopt(argc, argv, "sl"
+#ifdef BB_FEATURE_HUMAN_READABLE
+"hm"
+#endif
+"k")) != EOF) {
+ switch (c) {
+ case 's':
+ print = print_summary;
+ break;
+ case 'l':
+ count_hardlinks = 1;
+ break;
+#ifdef BB_FEATURE_HUMAN_READABLE
+ case 'h': disp_hr = 0; break;
+ case 'm': disp_hr = MEGABYTE; break;
+#endif
+ case 'k': break;
+ default:
+ show_usage();
+ }
+ }
+
+ /* go through remaining args (if any) */
+ if (optind >= argc) {
+ if (du(".") == 0)
+ status = EXIT_FAILURE;
+ } else {
+ long sum;
+
+ for (i=optind; i < argc; i++) {
+ if ((sum = du(argv[i])) == 0)
+ status = EXIT_FAILURE;
+ if(is_directory(argv[i], FALSE, NULL)==FALSE) {
+ print_normal(sum, argv[i]);
+ }
+ reset_ino_dev_hashtable();
+ }
+ }
+
+ return status;