aboutsummaryrefslogtreecommitdiff
path: root/coreutils/ls.c
diff options
context:
space:
mode:
Diffstat (limited to 'coreutils/ls.c')
-rw-r--r--coreutils/ls.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c
index f515f9f8f..02e26bedb 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -155,15 +155,17 @@ enum {
OPT_Q = (1 << 10),
//OPT_A = (1 << 11),
//OPT_k = (1 << 12),
- OPTBIT_color = 13
+ OPTBIT_F = 13
+ 4 * ENABLE_FEATURE_LS_TIMESTAMPS
- + 4 * ENABLE_FEATURE_LS_SORTFILES
+ + 4 * ENABLE_FEATURE_LS_SORTFILES,
+ OPTBIT_color = OPTBIT_F
+ 2 * ENABLE_FEATURE_LS_FILETYPES
+ 1 * ENABLE_FEATURE_LS_FOLLOWLINKS
+ 1 * ENABLE_FEATURE_LS_RECURSIVE
+ 1 * ENABLE_FEATURE_HUMAN_READABLE
+ 2 * ENABLE_SELINUX
+ 2 * ENABLE_FEATURE_AUTOWIDTH,
+ OPT_F = (1 << OPTBIT_F) * ENABLE_FEATURE_LS_FILETYPES,
OPT_color = 1 << OPTBIT_color,
};
@@ -1066,8 +1068,10 @@ int ls_main(int argc UNUSED_PARAM, char **argv)
dn = NULL;
nfiles = 0;
do {
- /* NB: follow links on command line unless -l or -s */
- cur = my_stat(*argv, *argv, !(all_fmt & (STYLE_LONG|LIST_BLOCKS)));
+ /* NB: follow links on command line unless -l, -s or -F */
+ cur = my_stat(*argv, *argv,
+ !((all_fmt & (STYLE_LONG|LIST_BLOCKS)) || (option_mask32 & OPT_F))
+ );
argv++;
if (!cur)
continue;