aboutsummaryrefslogtreecommitdiff
path: root/coreutils/ls.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-07-02 14:25:51 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2009-07-02 14:25:51 +0200
commit5508363fd05ecf71bc1db887256da1c0ae960c8d (patch)
treec74565b5172423df2601e58105c9188b702852d1 /coreutils/ls.c
parent5478aaf5b8f9a90ab37d9de89fc893886f9580db (diff)
downloadbusybox-5508363fd05ecf71bc1db887256da1c0ae960c8d.tar.gz
ls: fix --color handling. Closes bug 435.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/ls.c')
-rw-r--r--coreutils/ls.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 379b0f94f..db42601e2 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -144,8 +144,7 @@ static const char ls_options[] ALIGN1 =
IF_FEATURE_LS_FOLLOWLINKS("L") /* 1, 24 */
IF_FEATURE_LS_RECURSIVE("R") /* 1, 25 */
IF_FEATURE_HUMAN_READABLE("h") /* 1, 26 */
- IF_SELINUX("K") /* 1, 27 */
- IF_SELINUX("Z") /* 1, 28 */
+ IF_SELINUX("KZ") /* 2, 28 */
IF_FEATURE_AUTOWIDTH("T:w:") /* 2, 30 */
;
enum {
@@ -162,6 +161,16 @@ enum {
OPT_Q = (1 << 10),
//OPT_A = (1 << 11),
//OPT_k = (1 << 12),
+ OPTBIT_color = 13
+ + 4 * ENABLE_FEATURE_LS_TIMESTAMPS
+ + 4 * ENABLE_FEATURE_LS_SORTFILES
+ + 2 * ENABLE_FEATURE_LS_FILETYPES
+ + 1 * ENABLE_FEATURE_LS_FOLLOWLINKS
+ + 1 * ENABLE_FEATURE_LS_RECURSIVE
+ + 1 * ENABLE_FEATURE_HUMAN_READABLE
+ + 2 * ENABLE_SELINUX
+ + 2 * ENABLE_FEATURE_AUTOWIDTH,
+ OPT_color = 1 << OPTBIT_color,
};
enum {
@@ -966,7 +975,7 @@ int ls_main(int argc UNUSED_PARAM, char **argv)
if (!p || (p[0] && strcmp(p, "none") != 0))
show_color = 1;
}
- if (opt & (1 << i)) { /* next flag after short options */
+ if (opt & OPT_color) { /* next flag after short options */
if (strcmp("always", color_opt) == 0)
show_color = 1;
else if (strcmp("never", color_opt) == 0)