aboutsummaryrefslogtreecommitdiff
path: root/du.c
diff options
context:
space:
mode:
authorrjune <rjune@69ca8d6d-28ef-0310-b511-8ec308f3f277>2001-01-22 22:35:38 +0000
committerrjune <rjune@69ca8d6d-28ef-0310-b511-8ec308f3f277>2001-01-22 22:35:38 +0000
commit6be1fd967c69696684f75eeab758b56bd5c2eaf9 (patch)
tree97ed53aec9cbe3a3021804e9758abb3e04f05879 /du.c
parent6ddaebeb3829d0865b3b29be747c894d12843763 (diff)
downloadbusybox-w32-6be1fd967c69696684f75eeab758b56bd5c2eaf9.tar.gz
busybox-w32-6be1fd967c69696684f75eeab758b56bd5c2eaf9.tar.bz2
busybox-w32-6be1fd967c69696684f75eeab758b56bd5c2eaf9.zip
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
Diffstat (limited to 'du.c')
-rw-r--r--du.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/du.c b/du.c
index 8628732d8..56a7a9a0c 100644
--- a/du.c
+++ b/du.c
@@ -33,6 +33,10 @@
33#include <stdio.h> 33#include <stdio.h>
34#include <errno.h> 34#include <errno.h>
35 35
36#ifdef BB_FEATURE_HUMAN_READABLE
37unsigned long du_disp_hr = KILOBYTE;
38#endif
39
36typedef void (Display) (long, char *); 40typedef void (Display) (long, char *);
37 41
38static int du_depth = 0; 42static int du_depth = 0;
@@ -42,12 +46,17 @@ static Display *print;
42 46
43static void print_normal(long size, char *filename) 47static void print_normal(long size, char *filename)
44{ 48{
49#ifdef BB_FEATURE_HUMAN_READABLE
50 printf("%s\t%s\n", format((size * KILOBYTE), du_disp_hr), filename);
51#else
45 printf("%ld\t%s\n", size, filename); 52 printf("%ld\t%s\n", size, filename);
53#endif
46} 54}
47 55
48static void print_summary(long size, char *filename) 56static void print_summary(long size, char *filename)
49{ 57{
50 if (du_depth == 1) { 58 if (du_depth == 1) {
59printf("summary\n");
51 print_normal(size, filename); 60 print_normal(size, filename);
52 } 61 }
53} 62}
@@ -132,7 +141,11 @@ int du_main(int argc, char **argv)
132 print = print_normal; 141 print = print_normal;
133 142
134 /* parse argv[] */ 143 /* parse argv[] */
135 while ((c = getopt(argc, argv, "sl")) != EOF) { 144 while ((c = getopt(argc, argv, "sl"
145#ifdef BB_FEATURE_HUMAN_READABLE
146"hm"
147#endif
148"k")) != EOF) {
136 switch (c) { 149 switch (c) {
137 case 's': 150 case 's':
138 print = print_summary; 151 print = print_summary;
@@ -140,6 +153,13 @@ int du_main(int argc, char **argv)
140 case 'l': 153 case 'l':
141 count_hardlinks = 1; 154 count_hardlinks = 1;
142 break; 155 break;
156#ifdef BB_FEATURE_HUMAN_READABLE
157 case 'h': du_disp_hr = 0; break;
158 case 'm': du_disp_hr = MEGABYTE; break;
159 case 'k': du_disp_hr = KILOBYTE; break;
160#else
161 case 'k': break;
162#endif
143 default: 163 default:
144 usage(du_usage); 164 usage(du_usage);
145 } 165 }
@@ -155,7 +175,7 @@ int du_main(int argc, char **argv)
155 for (i=optind; i < argc; i++) { 175 for (i=optind; i < argc; i++) {
156 if ((sum = du(argv[i])) == 0) 176 if ((sum = du(argv[i])) == 0)
157 status = EXIT_FAILURE; 177 status = EXIT_FAILURE;
158 if (is_directory(argv[i], FALSE, NULL)==FALSE) { 178 if(is_directory(argv[i], FALSE, NULL)==FALSE) {
159 print_normal(sum, argv[i]); 179 print_normal(sum, argv[i]);
160 } 180 }
161 reset_ino_dev_hashtable(); 181 reset_ino_dev_hashtable();
@@ -165,7 +185,7 @@ int du_main(int argc, char **argv)
165 return status; 185 return status;
166} 186}
167 187
168/* $Id: du.c,v 1.33 2001/01/18 02:57:08 kraai Exp $ */ 188/* $Id: du.c,v 1.34 2001/01/22 22:35:38 rjune Exp $ */
169/* 189/*
170Local Variables: 190Local Variables:
171c-file-style: "linux" 191c-file-style: "linux"