aboutsummaryrefslogtreecommitdiff
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
parent5478aaf5b8f9a90ab37d9de89fc893886f9580db (diff)
downloadbusybox-w32-5508363fd05ecf71bc1db887256da1c0ae960c8d.tar.gz
busybox-w32-5508363fd05ecf71bc1db887256da1c0ae960c8d.tar.bz2
busybox-w32-5508363fd05ecf71bc1db887256da1c0ae960c8d.zip
ls: fix --color handling. Closes bug 435.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--coreutils/ls.c15
-rw-r--r--testsuite/ls/ls-1-works6
-rw-r--r--testsuite/ls/ls-h-works6
-rw-r--r--testsuite/ls/ls-l-works4
-rw-r--r--testsuite/ls/ls-s-works4
5 files changed, 22 insertions, 13 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 =
144 IF_FEATURE_LS_FOLLOWLINKS("L") /* 1, 24 */ 144 IF_FEATURE_LS_FOLLOWLINKS("L") /* 1, 24 */
145 IF_FEATURE_LS_RECURSIVE("R") /* 1, 25 */ 145 IF_FEATURE_LS_RECURSIVE("R") /* 1, 25 */
146 IF_FEATURE_HUMAN_READABLE("h") /* 1, 26 */ 146 IF_FEATURE_HUMAN_READABLE("h") /* 1, 26 */
147 IF_SELINUX("K") /* 1, 27 */ 147 IF_SELINUX("KZ") /* 2, 28 */
148 IF_SELINUX("Z") /* 1, 28 */
149 IF_FEATURE_AUTOWIDTH("T:w:") /* 2, 30 */ 148 IF_FEATURE_AUTOWIDTH("T:w:") /* 2, 30 */
150 ; 149 ;
151enum { 150enum {
@@ -162,6 +161,16 @@ enum {
162 OPT_Q = (1 << 10), 161 OPT_Q = (1 << 10),
163 //OPT_A = (1 << 11), 162 //OPT_A = (1 << 11),
164 //OPT_k = (1 << 12), 163 //OPT_k = (1 << 12),
164 OPTBIT_color = 13
165 + 4 * ENABLE_FEATURE_LS_TIMESTAMPS
166 + 4 * ENABLE_FEATURE_LS_SORTFILES
167 + 2 * ENABLE_FEATURE_LS_FILETYPES
168 + 1 * ENABLE_FEATURE_LS_FOLLOWLINKS
169 + 1 * ENABLE_FEATURE_LS_RECURSIVE
170 + 1 * ENABLE_FEATURE_HUMAN_READABLE
171 + 2 * ENABLE_SELINUX
172 + 2 * ENABLE_FEATURE_AUTOWIDTH,
173 OPT_color = 1 << OPTBIT_color,
165}; 174};
166 175
167enum { 176enum {
@@ -966,7 +975,7 @@ int ls_main(int argc UNUSED_PARAM, char **argv)
966 if (!p || (p[0] && strcmp(p, "none") != 0)) 975 if (!p || (p[0] && strcmp(p, "none") != 0))
967 show_color = 1; 976 show_color = 1;
968 } 977 }
969 if (opt & (1 << i)) { /* next flag after short options */ 978 if (opt & OPT_color) { /* next flag after short options */
970 if (strcmp("always", color_opt) == 0) 979 if (strcmp("always", color_opt) == 0)
971 show_color = 1; 980 show_color = 1;
972 else if (strcmp("never", color_opt) == 0) 981 else if (strcmp("never", color_opt) == 0)
diff --git a/testsuite/ls/ls-1-works b/testsuite/ls/ls-1-works
index 8ad484fc3..885694920 100644
--- a/testsuite/ls/ls-1-works
+++ b/testsuite/ls/ls-1-works
@@ -1,4 +1,4 @@
1[ -n "$d" ] || d=.. 1[ -n "$d" ] || d=..
2ls -1 "$d" > logfile.gnu 2LC_ALL=C ls -1 "$d" > logfile.gnu
3busybox ls -1 "$d" > logfile.bb 3LC_ALL=C busybox ls -1 "$d" > logfile.bb
4cmp logfile.gnu logfile.bb 4diff -ubw logfile.gnu logfile.bb
diff --git a/testsuite/ls/ls-h-works b/testsuite/ls/ls-h-works
index 7331262c9..0c83f7cc5 100644
--- a/testsuite/ls/ls-h-works
+++ b/testsuite/ls/ls-h-works
@@ -1,4 +1,4 @@
1[ -n "$d" ] || d=.. 1[ -n "$d" ] || d=..
2ls -h "$d" > logfile.gnu 2LC_ALL=C ls -h "$d" > logfile.gnu
3busybox ls -h "$d" > logfile.bb 3LC_ALL=C busybox ls -h "$d" > logfile.bb
4cmp logfile.gnu logfile.bb 4diff -ubw logfile.gnu logfile.bb
diff --git a/testsuite/ls/ls-l-works b/testsuite/ls/ls-l-works
index efc2b196e..1bad34bcf 100644
--- a/testsuite/ls/ls-l-works
+++ b/testsuite/ls/ls-l-works
@@ -1,4 +1,4 @@
1[ -n "$d" ] || d=.. 1[ -n "$d" ] || d=..
2LC_ALL=C ls -l "$d" > logfile.gnu 2LC_ALL=C ls -l "$d" > logfile.gnu
3busybox ls -l "$d" > logfile.bb 3LC_ALL=C busybox ls -l "$d" > logfile.bb
4diff -w logfile.gnu logfile.bb 4diff -ubw logfile.gnu logfile.bb
diff --git a/testsuite/ls/ls-s-works b/testsuite/ls/ls-s-works
index 6c8bf3627..0a9d7526f 100644
--- a/testsuite/ls/ls-s-works
+++ b/testsuite/ls/ls-s-works
@@ -1,4 +1,4 @@
1[ -n "$d" ] || d=.. 1[ -n "$d" ] || d=..
2LC_ALL=C ls -1s "$d" > logfile.gnu 2LC_ALL=C ls -1s "$d" > logfile.gnu
3busybox ls -1s "$d" > logfile.bb 3LC_ALL=C busybox ls -1s "$d" > logfile.bb
4cmp logfile.gnu logfile.bb 4diff -ubw logfile.gnu logfile.bb