aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2006-06-15 22:11:10 +0000
committerRob Landley <rob@landley.net>2006-06-15 22:11:10 +0000
commit9947a244d44edd3862694cce7a91e706b0cbd529 (patch)
tree95f86862ac564a70e11638464763dbd1655ded7b
parent1761b9dabe9b1bd5ca5233e181fd8926ade5a390 (diff)
downloadbusybox-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.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 9c0e8f17d..47acec603 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