diff options
author | Rob Landley | 2006-06-15 22:11:10 +0000 |
---|---|---|
committer | Rob Landley | 2006-06-15 22:11:10 +0000 |
commit | 9947a244d44edd3862694cce7a91e706b0cbd529 (patch) | |
tree | 95f86862ac564a70e11638464763dbd1655ded7b | |
parent | 1761b9dabe9b1bd5ca5233e181fd8926ade5a390 (diff) | |
download | busybox-9947a244d44edd3862694cce7a91e706b0cbd529.zip busybox-9947a244d44edd3862694cce7a91e706b0cbd529.tar.gz |
Patch from Rich Felker:
- duplicated format bit 14 forced LIST_EXEC always-on
- -p option was behaving just like -F (SUSv3 says -p only shows / for
dirs, not other special symbols)
- tests for LIST_EXEC in color functions were nonsense (constant
tests). i assume they were supposed to be (all_fmt & LIST_EXEC)
however having coloring of executable files depend on -F seems
undesirable.
-rw-r--r-- | coreutils/ls.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c index 9c0e8f1..47acec6 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -90,8 +90,6 @@ enum { #define LIST_MASK ((LIST_EXEC << 1) - 1) /* what files will be displayed */ -/* TODO -- We may be able to make DISP_NORMAL 0 to save a bit slot. */ -#define DISP_NORMAL (1U<<14) /* show normal filenames */ #define DISP_DIRNAME (1U<<15) /* 2 or more items? label directories */ #define DISP_HIDDEN (1U<<16) /* show filenames starting with . */ #define DISP_DOT (1U<<17) /* show . and .. */ @@ -99,7 +97,7 @@ enum { #define DISP_RECURSIVE (1U<<19) /* show directory and everything below it */ #define DISP_ROWS (1U<<20) /* print across rows */ -#define DISP_MASK (((DISP_ROWS << 1) - 1) & ~(DISP_NORMAL - 1)) +#define DISP_MASK (((DISP_ROWS << 1) - 1) & ~(DISP_DIRNAME - 1)) #ifdef CONFIG_FEATURE_LS_SORTFILES /* how will the files be sorted */ @@ -254,8 +252,7 @@ static char fgcolor(mode_t mode) if (errno == ENOENT) { return '\037'; } - if (LIST_EXEC && S_ISREG(mode) - && (mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + if (S_ISREG(mode) && (mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return COLOR(0xF000); /* File is executable ... */ return COLOR(mode); } @@ -263,8 +260,7 @@ static char fgcolor(mode_t mode) /*----------------------------------------------------------------------*/ static char bgcolor(mode_t mode) { - if (LIST_EXEC && S_ISREG(mode) - && (mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + if (S_ISREG(mode) && (mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return ATTR(0xF000); /* File is executable ... */ return ATTR(mode); } @@ -276,8 +272,11 @@ static char append_char(mode_t mode) { if (!(all_fmt & LIST_FILETYPE)) return '\0'; - if ((all_fmt & LIST_EXEC) && S_ISREG(mode) - && (mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + if (S_ISDIR(mode)) + return '/'; + if (!(all_fmt & LIST_EXEC)) + return '\0'; + if (S_ISREG(mode) && (mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return '*'; return APPCHAR(mode); } @@ -944,7 +943,7 @@ int ls_main(int argc, char **argv) char *color_opt; #endif - all_fmt = LIST_SHORT | DISP_NORMAL | STYLE_AUTO + all_fmt = LIST_SHORT | STYLE_AUTO #ifdef CONFIG_FEATURE_LS_TIMESTAMPS | TIME_MOD #endif |