*
*/
-#include "internal.h"
+#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_name_too_long
#include "messages.c"
typedef void (Display) (long, char *);
-static const char du_usage[] =
- "du [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
- "\nSummarizes disk space used for each FILE and/or directory.\n"
- "Disk space is printed in units of 1024 bytes.\n\n"
- "Options:\n"
- "\t-l\tcount sizes many times if hard linked\n"
- "\t-s\tdisplay only a total for each argument\n"
-#endif
- ;
-
static int du_depth = 0;
static int count_hardlinks = 0;
int du_main(int argc, char **argv)
{
int i;
- char opt;
+ int c;
/* default behaviour */
print = print_normal;
/* parse argv[] */
- for (i = 1; i < argc; i++) {
- if (argv[i][0] == '-') {
- opt = argv[i][1];
- switch (opt) {
+ while ((c = getopt(argc, argv, "sl")) != EOF) {
+ switch (c) {
case 's':
- print = print_summary;
- break;
+ print = print_summary;
+ break;
case 'l':
- count_hardlinks = 1;
- break;
- case 'h':
- case '-':
- usage(du_usage);
- break;
+ count_hardlinks = 1;
+ break;
default:
- errorMsg("invalid option -- %c\n", opt);
- usage(du_usage);
+ usage(du_usage);
}
- } else {
- break;
- }
}
/* go through remaining args (if any) */
- if (i >= argc) {
+ if (optind >= argc) {
du(".");
} else {
long sum;
- for (; i < argc; i++) {
+ for (i=optind; i < argc; i++) {
sum = du(argv[i]);
if (sum && isDirectory(argv[i], FALSE, NULL)) {
print_normal(sum, argv[i]);
return(0);
}
-/* $Id: du.c,v 1.21 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: du.c,v 1.25 2000/09/25 21:45:57 andersen Exp $ */
/*
Local Variables:
c-file-style: "linux"