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.
This commit is contained in:
parent
1761b9dabe
commit
9947a244d4
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user