diff options
author | John Beppu <beppu@lbox.org> | 1999-12-15 18:52:17 +0000 |
---|---|---|
committer | John Beppu <beppu@lbox.org> | 1999-12-15 18:52:17 +0000 |
commit | e1618e42a8299cc928ba9af78bbea65899e76f4b (patch) | |
tree | 4c79cd53d71791615f0ee0b37116748ccfeefe29 | |
parent | 3cd5d2541f375d5c87a35028fc4f6db0215872c2 (diff) | |
download | busybox-w32-e1618e42a8299cc928ba9af78bbea65899e76f4b.tar.gz busybox-w32-e1618e42a8299cc928ba9af78bbea65899e76f4b.tar.bz2 busybox-w32-e1618e42a8299cc928ba9af78bbea65899e76f4b.zip |
Implemented du -s
-rw-r--r-- | coreutils/du.c | 37 | ||||
-rw-r--r-- | du.c | 37 |
2 files changed, 62 insertions, 12 deletions
diff --git a/coreutils/du.c b/coreutils/du.c index 14e0bdf24..e5788c63d 100644 --- a/coreutils/du.c +++ b/coreutils/du.c | |||
@@ -32,17 +32,35 @@ | |||
32 | #include <sys/stat.h> | 32 | #include <sys/stat.h> |
33 | #endif | 33 | #endif |
34 | 34 | ||
35 | typedef void (Display)(size_t, char *); | ||
36 | |||
35 | static const char du_usage[] = | 37 | static const char du_usage[] = |
36 | "Usage: du [OPTION]... [FILE]...\n"; | 38 | "Usage: du [OPTION]... [FILE]...\n\n" |
39 | "\t-s\tdisplay only a total for each argument\n" | ||
40 | ; | ||
37 | 41 | ||
38 | typedef void (Display)(size_t, char *); | 42 | static int du_depth = 0; |
43 | |||
44 | static Display *print; | ||
39 | 45 | ||
40 | static void | 46 | static void |
41 | print(size_t size, char *filename) | 47 | print_null(size_t size, char *filename) { } |
48 | |||
49 | static void | ||
50 | print_normal(size_t size, char *filename) | ||
42 | { | 51 | { |
43 | fprintf(stdout, "%-7d %s\n", (size >> 1), filename); | 52 | fprintf(stdout, "%-7d %s\n", (size >> 1), filename); |
44 | } | 53 | } |
45 | 54 | ||
55 | static void | ||
56 | print_summary(size_t size, char *filename) | ||
57 | { | ||
58 | if (du_depth == 1) { | ||
59 | print_normal(size, filename); | ||
60 | } | ||
61 | } | ||
62 | |||
63 | |||
46 | /* tiny recursive du */ | 64 | /* tiny recursive du */ |
47 | static size_t | 65 | static size_t |
48 | du(char *filename) | 66 | du(char *filename) |
@@ -54,6 +72,8 @@ du(char *filename) | |||
54 | fprintf(stdout, "du: %s: %s\n", filename, strerror(errno)); | 72 | fprintf(stdout, "du: %s: %s\n", filename, strerror(errno)); |
55 | return 0; | 73 | return 0; |
56 | } | 74 | } |
75 | |||
76 | du_depth++; | ||
57 | sum = statbuf.st_blocks; | 77 | sum = statbuf.st_blocks; |
58 | 78 | ||
59 | if (S_ISDIR(statbuf.st_mode)) { | 79 | if (S_ISDIR(statbuf.st_mode)) { |
@@ -76,6 +96,7 @@ du(char *filename) | |||
76 | closedir(dir); | 96 | closedir(dir); |
77 | print(sum, filename); | 97 | print(sum, filename); |
78 | } | 98 | } |
99 | du_depth--; | ||
79 | return sum; | 100 | return sum; |
80 | } | 101 | } |
81 | 102 | ||
@@ -85,12 +106,16 @@ du_main(int argc, char **argv) | |||
85 | int i; | 106 | int i; |
86 | char opt; | 107 | char opt; |
87 | 108 | ||
109 | /* default behaviour */ | ||
110 | print = print_normal; | ||
111 | |||
88 | /* parse argv[] */ | 112 | /* parse argv[] */ |
89 | for (i = 1; i < argc; i++) { | 113 | for (i = 1; i < argc; i++) { |
90 | if (argv[i][0] == '-') { | 114 | if (argv[i][0] == '-') { |
91 | opt = argv[i][1]; | 115 | opt = argv[i][1]; |
92 | switch (opt) { | 116 | switch (opt) { |
93 | case 's': | 117 | case 's': |
118 | print = print_summary; | ||
94 | break; | 119 | break; |
95 | case 'h': | 120 | case 'h': |
96 | usage(du_usage); | 121 | usage(du_usage); |
@@ -110,12 +135,12 @@ du_main(int argc, char **argv) | |||
110 | } else { | 135 | } else { |
111 | int sum; | 136 | int sum; |
112 | for ( ; i < argc; i++) { | 137 | for ( ; i < argc; i++) { |
113 | sum = du(argv[i]) >> 1; | 138 | sum = du(argv[i]); |
114 | if (sum) printf("%-7d %s\n", sum, argv[i]); | 139 | if (sum) { print_normal(sum, argv[i]); } |
115 | } | 140 | } |
116 | } | 141 | } |
117 | 142 | ||
118 | exit(0); | 143 | exit(0); |
119 | } | 144 | } |
120 | 145 | ||
121 | /* $Id: du.c,v 1.5 1999/12/10 15:23:47 beppu Exp $ */ | 146 | /* $Id: du.c,v 1.6 1999/12/15 18:52:17 beppu Exp $ */ |
@@ -32,17 +32,35 @@ | |||
32 | #include <sys/stat.h> | 32 | #include <sys/stat.h> |
33 | #endif | 33 | #endif |
34 | 34 | ||
35 | typedef void (Display)(size_t, char *); | ||
36 | |||
35 | static const char du_usage[] = | 37 | static const char du_usage[] = |
36 | "Usage: du [OPTION]... [FILE]...\n"; | 38 | "Usage: du [OPTION]... [FILE]...\n\n" |
39 | "\t-s\tdisplay only a total for each argument\n" | ||
40 | ; | ||
37 | 41 | ||
38 | typedef void (Display)(size_t, char *); | 42 | static int du_depth = 0; |
43 | |||
44 | static Display *print; | ||
39 | 45 | ||
40 | static void | 46 | static void |
41 | print(size_t size, char *filename) | 47 | print_null(size_t size, char *filename) { } |
48 | |||
49 | static void | ||
50 | print_normal(size_t size, char *filename) | ||
42 | { | 51 | { |
43 | fprintf(stdout, "%-7d %s\n", (size >> 1), filename); | 52 | fprintf(stdout, "%-7d %s\n", (size >> 1), filename); |
44 | } | 53 | } |
45 | 54 | ||
55 | static void | ||
56 | print_summary(size_t size, char *filename) | ||
57 | { | ||
58 | if (du_depth == 1) { | ||
59 | print_normal(size, filename); | ||
60 | } | ||
61 | } | ||
62 | |||
63 | |||
46 | /* tiny recursive du */ | 64 | /* tiny recursive du */ |
47 | static size_t | 65 | static size_t |
48 | du(char *filename) | 66 | du(char *filename) |
@@ -54,6 +72,8 @@ du(char *filename) | |||
54 | fprintf(stdout, "du: %s: %s\n", filename, strerror(errno)); | 72 | fprintf(stdout, "du: %s: %s\n", filename, strerror(errno)); |
55 | return 0; | 73 | return 0; |
56 | } | 74 | } |
75 | |||
76 | du_depth++; | ||
57 | sum = statbuf.st_blocks; | 77 | sum = statbuf.st_blocks; |
58 | 78 | ||
59 | if (S_ISDIR(statbuf.st_mode)) { | 79 | if (S_ISDIR(statbuf.st_mode)) { |
@@ -76,6 +96,7 @@ du(char *filename) | |||
76 | closedir(dir); | 96 | closedir(dir); |
77 | print(sum, filename); | 97 | print(sum, filename); |
78 | } | 98 | } |
99 | du_depth--; | ||
79 | return sum; | 100 | return sum; |
80 | } | 101 | } |
81 | 102 | ||
@@ -85,12 +106,16 @@ du_main(int argc, char **argv) | |||
85 | int i; | 106 | int i; |
86 | char opt; | 107 | char opt; |
87 | 108 | ||
109 | /* default behaviour */ | ||
110 | print = print_normal; | ||
111 | |||
88 | /* parse argv[] */ | 112 | /* parse argv[] */ |
89 | for (i = 1; i < argc; i++) { | 113 | for (i = 1; i < argc; i++) { |
90 | if (argv[i][0] == '-') { | 114 | if (argv[i][0] == '-') { |
91 | opt = argv[i][1]; | 115 | opt = argv[i][1]; |
92 | switch (opt) { | 116 | switch (opt) { |
93 | case 's': | 117 | case 's': |
118 | print = print_summary; | ||
94 | break; | 119 | break; |
95 | case 'h': | 120 | case 'h': |
96 | usage(du_usage); | 121 | usage(du_usage); |
@@ -110,12 +135,12 @@ du_main(int argc, char **argv) | |||
110 | } else { | 135 | } else { |
111 | int sum; | 136 | int sum; |
112 | for ( ; i < argc; i++) { | 137 | for ( ; i < argc; i++) { |
113 | sum = du(argv[i]) >> 1; | 138 | sum = du(argv[i]); |
114 | if (sum) printf("%-7d %s\n", sum, argv[i]); | 139 | if (sum) { print_normal(sum, argv[i]); } |
115 | } | 140 | } |
116 | } | 141 | } |
117 | 142 | ||
118 | exit(0); | 143 | exit(0); |
119 | } | 144 | } |
120 | 145 | ||
121 | /* $Id: du.c,v 1.5 1999/12/10 15:23:47 beppu Exp $ */ | 146 | /* $Id: du.c,v 1.6 1999/12/15 18:52:17 beppu Exp $ */ |