diff options
Diffstat (limited to 'coreutils/df.c')
-rw-r--r-- | coreutils/df.c | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/coreutils/df.c b/coreutils/df.c index 03aa78148..01c41db38 100644 --- a/coreutils/df.c +++ b/coreutils/df.c | |||
@@ -64,7 +64,9 @@ | |||
64 | //usage: "[-Pk" | 64 | //usage: "[-Pk" |
65 | //usage: IF_FEATURE_HUMAN_READABLE("mh") | 65 | //usage: IF_FEATURE_HUMAN_READABLE("mh") |
66 | //usage: "T" | 66 | //usage: "T" |
67 | //usage: IF_FEATURE_DF_FANCY("ai] [-B SIZE") | 67 | //usage: IF_FEATURE_DF_FANCY("a" |
68 | //usage: IF_PLATFORM_POSIX("i") | ||
69 | //usage: "] [-B SIZE") | ||
68 | //usage: "] [-t TYPE] [FILESYSTEM]..." | 70 | //usage: "] [-t TYPE] [FILESYSTEM]..." |
69 | //usage:#define df_full_usage "\n\n" | 71 | //usage:#define df_full_usage "\n\n" |
70 | //usage: "Print filesystem usage statistics\n" | 72 | //usage: "Print filesystem usage statistics\n" |
@@ -78,7 +80,9 @@ | |||
78 | //usage: "\n -t TYPE Print only mounts of this type" | 80 | //usage: "\n -t TYPE Print only mounts of this type" |
79 | //usage: IF_FEATURE_DF_FANCY( | 81 | //usage: IF_FEATURE_DF_FANCY( |
80 | //usage: "\n -a Show all filesystems" | 82 | //usage: "\n -a Show all filesystems" |
83 | //usage: IF_PLATFORM_POSIX( | ||
81 | //usage: "\n -i Inodes" | 84 | //usage: "\n -i Inodes" |
85 | //usage: ) | ||
82 | //usage: "\n -B SIZE Blocksize" | 86 | //usage: "\n -B SIZE Blocksize" |
83 | //usage: ) | 87 | //usage: ) |
84 | //usage: | 88 | //usage: |
@@ -109,6 +113,12 @@ static unsigned long kscale(unsigned long b, unsigned long bs) | |||
109 | } | 113 | } |
110 | #endif | 114 | #endif |
111 | 115 | ||
116 | #if ENABLE_PLATFORM_MINGW32 | ||
117 | # define ENABLE_FEATURE_DF_FANCY_POSIX 0 | ||
118 | #else | ||
119 | # define ENABLE_FEATURE_DF_FANCY_POSIX ENABLE_FEATURE_DF_FANCY | ||
120 | #endif | ||
121 | |||
112 | int df_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 122 | int df_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
113 | int df_main(int argc UNUSED_PARAM, char **argv) | 123 | int df_main(int argc UNUSED_PARAM, char **argv) |
114 | { | 124 | { |
@@ -124,11 +134,11 @@ int df_main(int argc UNUSED_PARAM, char **argv) | |||
124 | OPT_FSTYPE = (1 << 2), | 134 | OPT_FSTYPE = (1 << 2), |
125 | OPT_t = (1 << 3), | 135 | OPT_t = (1 << 3), |
126 | OPT_ALL = (1 << 4) * ENABLE_FEATURE_DF_FANCY, | 136 | OPT_ALL = (1 << 4) * ENABLE_FEATURE_DF_FANCY, |
127 | OPT_INODE = (1 << 5) * ENABLE_FEATURE_DF_FANCY, | 137 | OPT_INODE = (1 << 5) * ENABLE_FEATURE_DF_FANCY_POSIX, |
128 | OPT_BSIZE = (1 << 6) * ENABLE_FEATURE_DF_FANCY, | 138 | OPT_BSIZE = (1 << (5 + ENABLE_FEATURE_DF_FANCY_POSIX)) * ENABLE_FEATURE_DF_FANCY, |
129 | OPT_HUMAN = (1 << (4 + 3*ENABLE_FEATURE_DF_FANCY)) * ENABLE_FEATURE_HUMAN_READABLE, | 139 | OPT_HUMAN = (1 << (4 + 2*ENABLE_FEATURE_DF_FANCY + ENABLE_FEATURE_DF_FANCY_POSIX)) * ENABLE_FEATURE_HUMAN_READABLE, |
130 | OPT_HUMANDEC = (1 << (5 + 3*ENABLE_FEATURE_DF_FANCY)) * ENABLE_FEATURE_HUMAN_READABLE, | 140 | OPT_HUMANDEC = (1 << (5 + 2*ENABLE_FEATURE_DF_FANCY + ENABLE_FEATURE_DF_FANCY_POSIX)) * ENABLE_FEATURE_HUMAN_READABLE, |
131 | OPT_MEGA = (1 << (6 + 3*ENABLE_FEATURE_DF_FANCY)) * ENABLE_FEATURE_HUMAN_READABLE, | 141 | OPT_MEGA = (1 << (6 + 2*ENABLE_FEATURE_DF_FANCY + ENABLE_FEATURE_DF_FANCY_POSIX)) * ENABLE_FEATURE_HUMAN_READABLE, |
132 | }; | 142 | }; |
133 | const char *disp_units_hdr = NULL; | 143 | const char *disp_units_hdr = NULL; |
134 | char *chp, *opt_t; | 144 | char *chp, *opt_t; |
@@ -144,7 +154,11 @@ int df_main(int argc UNUSED_PARAM, char **argv) | |||
144 | 154 | ||
145 | opt = getopt32(argv, "^" | 155 | opt = getopt32(argv, "^" |
146 | "kPTt:" | 156 | "kPTt:" |
157 | #if ENABLE_PLATFORM_POSIX | ||
147 | IF_FEATURE_DF_FANCY("aiB:") | 158 | IF_FEATURE_DF_FANCY("aiB:") |
159 | #else | ||
160 | IF_FEATURE_DF_FANCY("aB:") | ||
161 | #endif | ||
148 | IF_FEATURE_HUMAN_READABLE("hHm") | 162 | IF_FEATURE_HUMAN_READABLE("hHm") |
149 | "\0" | 163 | "\0" |
150 | #if ENABLE_FEATURE_HUMAN_READABLE && ENABLE_FEATURE_DF_FANCY | 164 | #if ENABLE_FEATURE_HUMAN_READABLE && ENABLE_FEATURE_DF_FANCY |
@@ -155,6 +169,9 @@ int df_main(int argc UNUSED_PARAM, char **argv) | |||
155 | , &opt_t | 169 | , &opt_t |
156 | IF_FEATURE_DF_FANCY(, &chp) | 170 | IF_FEATURE_DF_FANCY(, &chp) |
157 | ); | 171 | ); |
172 | /* -k overrides $POSIXLY_CORRECT: */ | ||
173 | if (opt & OPT_KILO) | ||
174 | df_disp_hr = 1024; | ||
158 | if (opt & OPT_MEGA) | 175 | if (opt & OPT_MEGA) |
159 | df_disp_hr = 1024*1024; | 176 | df_disp_hr = 1024*1024; |
160 | 177 | ||
@@ -185,8 +202,8 @@ int df_main(int argc UNUSED_PARAM, char **argv) | |||
185 | if (disp_units_hdr == NULL) { | 202 | if (disp_units_hdr == NULL) { |
186 | #if ENABLE_FEATURE_HUMAN_READABLE | 203 | #if ENABLE_FEATURE_HUMAN_READABLE |
187 | disp_units_hdr = xasprintf("%s-blocks", | 204 | disp_units_hdr = xasprintf("%s-blocks", |
188 | /* print df_disp_hr, show no fractionals, | 205 | /* print df_disp_hr; show no fractionals; |
189 | * use suffixes if OPT_POSIX is set in opt */ | 206 | * if -P, unit=1 (print it in full, no KMG suffixes) */ |
190 | make_human_readable_str(df_disp_hr, 0, !!(opt & OPT_POSIX)) | 207 | make_human_readable_str(df_disp_hr, 0, !!(opt & OPT_POSIX)) |
191 | ); | 208 | ); |
192 | #else | 209 | #else |