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)
|
#define LIST_MASK ((LIST_EXEC << 1) - 1)
|
||||||
|
|
||||||
/* what files will be displayed */
|
/* 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_DIRNAME (1U<<15) /* 2 or more items? label directories */
|
||||||
#define DISP_HIDDEN (1U<<16) /* show filenames starting with . */
|
#define DISP_HIDDEN (1U<<16) /* show filenames starting with . */
|
||||||
#define DISP_DOT (1U<<17) /* show . and .. */
|
#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_RECURSIVE (1U<<19) /* show directory and everything below it */
|
||||||
#define DISP_ROWS (1U<<20) /* print across rows */
|
#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
|
#ifdef CONFIG_FEATURE_LS_SORTFILES
|
||||||
/* how will the files be sorted */
|
/* how will the files be sorted */
|
||||||
@ -254,8 +252,7 @@ static char fgcolor(mode_t mode)
|
|||||||
if (errno == ENOENT) {
|
if (errno == ENOENT) {
|
||||||
return '\037';
|
return '\037';
|
||||||
}
|
}
|
||||||
if (LIST_EXEC && S_ISREG(mode)
|
if (S_ISREG(mode) && (mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
|
||||||
&& (mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
|
|
||||||
return COLOR(0xF000); /* File is executable ... */
|
return COLOR(0xF000); /* File is executable ... */
|
||||||
return COLOR(mode);
|
return COLOR(mode);
|
||||||
}
|
}
|
||||||
@ -263,8 +260,7 @@ static char fgcolor(mode_t mode)
|
|||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
static char bgcolor(mode_t mode)
|
static char bgcolor(mode_t mode)
|
||||||
{
|
{
|
||||||
if (LIST_EXEC && S_ISREG(mode)
|
if (S_ISREG(mode) && (mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
|
||||||
&& (mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
|
|
||||||
return ATTR(0xF000); /* File is executable ... */
|
return ATTR(0xF000); /* File is executable ... */
|
||||||
return ATTR(mode);
|
return ATTR(mode);
|
||||||
}
|
}
|
||||||
@ -276,8 +272,11 @@ static char append_char(mode_t mode)
|
|||||||
{
|
{
|
||||||
if (!(all_fmt & LIST_FILETYPE))
|
if (!(all_fmt & LIST_FILETYPE))
|
||||||
return '\0';
|
return '\0';
|
||||||
if ((all_fmt & LIST_EXEC) && S_ISREG(mode)
|
if (S_ISDIR(mode))
|
||||||
&& (mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
|
return '/';
|
||||||
|
if (!(all_fmt & LIST_EXEC))
|
||||||
|
return '\0';
|
||||||
|
if (S_ISREG(mode) && (mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
|
||||||
return '*';
|
return '*';
|
||||||
return APPCHAR(mode);
|
return APPCHAR(mode);
|
||||||
}
|
}
|
||||||
@ -944,7 +943,7 @@ int ls_main(int argc, char **argv)
|
|||||||
char *color_opt;
|
char *color_opt;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
all_fmt = LIST_SHORT | DISP_NORMAL | STYLE_AUTO
|
all_fmt = LIST_SHORT | STYLE_AUTO
|
||||||
#ifdef CONFIG_FEATURE_LS_TIMESTAMPS
|
#ifdef CONFIG_FEATURE_LS_TIMESTAMPS
|
||||||
| TIME_MOD
|
| TIME_MOD
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user