aboutsummaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-11-15 07:02:55 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-11-15 07:02:55 +0000
commitf430cdbf2e7cfd284443addd98c93fbb7017d8e5 (patch)
tree9187e3703a17aeb35bfb93a9c3cfafc0385f1c64 /coreutils
parent1fe4e9e573c2c6f5338890cc3d1de6d2b7384600 (diff)
downloadbusybox-w32-f430cdbf2e7cfd284443addd98c93fbb7017d8e5.tar.gz
busybox-w32-f430cdbf2e7cfd284443addd98c93fbb7017d8e5.tar.bz2
busybox-w32-f430cdbf2e7cfd284443addd98c93fbb7017d8e5.zip
df: add -i (conditional on CONFIG)
uasge: trim a bit
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/Config.in7
-rw-r--r--coreutils/df.c26
2 files changed, 29 insertions, 4 deletions
diff --git a/coreutils/Config.in b/coreutils/Config.in
index 3370b2a5d..d3cbc4213 100644
--- a/coreutils/Config.in
+++ b/coreutils/Config.in
@@ -135,6 +135,13 @@ config DF
135 df reports the amount of disk space used and available 135 df reports the amount of disk space used and available
136 on filesystems. 136 on filesystems.
137 137
138config FEATURE_DF_INODE
139 bool "Enable -i (inode information)"
140 default n
141 depends on DF
142 help
143 This option enables support for df -i.
144
138config DIRNAME 145config DIRNAME
139 bool "dirname" 146 bool "dirname"
140 default n 147 default n
diff --git a/coreutils/df.c b/coreutils/df.c
index ad6a4f370..0d7e5206f 100644
--- a/coreutils/df.c
+++ b/coreutils/df.c
@@ -45,9 +45,14 @@ int df_main(int argc, char **argv)
45 /* default display is kilobytes */ 45 /* default display is kilobytes */
46 const char *disp_units_hdr = "1k-blocks"; 46 const char *disp_units_hdr = "1k-blocks";
47 47
48 enum {
49 OPT_INODE = (ENABLE_FEATURE_HUMAN_READABLE ? (1 << 3) : (1 << 1))
50 * ENABLE_FEATURE_DF_INODE
51 };
52
48#if ENABLE_FEATURE_HUMAN_READABLE 53#if ENABLE_FEATURE_HUMAN_READABLE
49 opt_complementary = "h-km:k-hm:m-hk"; 54 opt_complementary = "h-km:k-hm:m-hk";
50 opt = getopt32(argv, "hmk"); 55 opt = getopt32(argv, "hmk" USE_FEATURE_DF_INODE("i"));
51 if (opt & 1) { 56 if (opt & 1) {
52 df_disp_hr = 0; 57 df_disp_hr = 0;
53 disp_units_hdr = " Size"; 58 disp_units_hdr = " Size";
@@ -56,8 +61,11 @@ int df_main(int argc, char **argv)
56 df_disp_hr = 1024*1024; 61 df_disp_hr = 1024*1024;
57 disp_units_hdr = "1M-blocks"; 62 disp_units_hdr = "1M-blocks";
58 } 63 }
64 if (opt & OPT_INODE) {
65 disp_units_hdr = " Inodes";
66 }
59#else 67#else
60 opt = getopt32(argv, "k"); 68 opt = getopt32(argv, "k" USE_FEATURE_DF_INODE("i"));
61#endif 69#endif
62 70
63 printf("Filesystem%11s%-15sUsed Available Use%% Mounted on\n", 71 printf("Filesystem%11s%-15sUsed Available Use%% Mounted on\n",
@@ -104,7 +112,16 @@ int df_main(int argc, char **argv)
104 goto SET_ERROR; 112 goto SET_ERROR;
105 } 113 }
106 114
107 if ((s.f_blocks > 0) || !mount_table){ 115 if ((s.f_blocks > 0) || !mount_table) {
116 if (opt & OPT_INODE) {
117 s.f_blocks = s.f_files;
118 s.f_bavail = s.f_bfree = s.f_ffree;
119 s.f_bsize = 1;
120#if ENABLE_FEATURE_HUMAN_READABLE
121 if (df_disp_hr)
122 df_disp_hr = 1;
123#endif
124 }
108 blocks_used = s.f_blocks - s.f_bfree; 125 blocks_used = s.f_blocks - s.f_bfree;
109 blocks_percent_used = 0; 126 blocks_percent_used = 0;
110 if (blocks_used + s.f_bavail) { 127 if (blocks_used + s.f_bavail) {
@@ -115,7 +132,8 @@ int df_main(int argc, char **argv)
115 132
116 if (strcmp(device, "rootfs") == 0) { 133 if (strcmp(device, "rootfs") == 0) {
117 continue; 134 continue;
118 } else if (strcmp(device, "/dev/root") == 0) { 135 }
136 if (strcmp(device, "/dev/root") == 0) {
119 /* Adjusts device to be the real root device, 137 /* Adjusts device to be the real root device,
120 * or leaves device alone if it can't find it */ 138 * or leaves device alone if it can't find it */
121 device = find_block_device("/"); 139 device = find_block_device("/");