mirror of
https://github.com/sheumann/hush.git
synced 2025-01-13 21:31:51 +00:00
ls: make -x force columnar output; remove unused parts of TRIGGER code
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
f313746a6d
commit
d87815d5e0
@ -56,7 +56,7 @@ TERMINAL_WIDTH = 80, /* use 79 if terminal has linefold bug */
|
||||
COLUMN_GAP = 2, /* includes the file type char */
|
||||
|
||||
/* what is the overall style of the listing */
|
||||
STYLE_COLUMNS = 1 << 21, /* fill columns */
|
||||
STYLE_COLUMNAR = 1 << 21, /* many records per line */
|
||||
STYLE_LONG = 2 << 21, /* one record per line, extended info */
|
||||
STYLE_SINGLE = 3 << 21, /* one record per line */
|
||||
STYLE_MASK = STYLE_SINGLE,
|
||||
@ -167,52 +167,45 @@ enum {
|
||||
OPT_color = 1 << OPTBIT_color,
|
||||
};
|
||||
|
||||
enum {
|
||||
LIST_MASK_TRIGGER = 0,
|
||||
STYLE_MASK_TRIGGER = STYLE_MASK,
|
||||
DISP_MASK_TRIGGER = DISP_ROWS,
|
||||
SORT_MASK_TRIGGER = SORT_MASK,
|
||||
};
|
||||
|
||||
/* TODO: simple toggles may be stored as OPT_xxx bits instead */
|
||||
static const unsigned opt_flags[] = {
|
||||
LIST_SHORT | STYLE_COLUMNS, /* C */
|
||||
DISP_HIDDEN | DISP_DOT, /* a */
|
||||
DISP_NOLIST, /* d */
|
||||
LIST_INO, /* i */
|
||||
LIST_LONG | STYLE_LONG, /* l - remember LS_DISP_HR in mask! */
|
||||
LIST_SHORT | STYLE_SINGLE, /* 1 */
|
||||
0, /* g (don't show owner) - handled via OPT_g */
|
||||
LIST_ID_NUMERIC, /* n */
|
||||
LIST_BLOCKS, /* s */
|
||||
DISP_ROWS, /* x */
|
||||
0, /* Q (quote filename) - handled via OPT_Q */
|
||||
DISP_HIDDEN, /* A */
|
||||
LIST_SHORT | STYLE_COLUMNAR, /* C */
|
||||
DISP_HIDDEN | DISP_DOT, /* a */
|
||||
DISP_NOLIST, /* d */
|
||||
LIST_INO, /* i */
|
||||
LIST_LONG | STYLE_LONG, /* l - remember LS_DISP_HR in mask! */
|
||||
LIST_SHORT | STYLE_SINGLE, /* 1 */
|
||||
0, /* g (don't show owner) - handled via OPT_g */
|
||||
LIST_ID_NUMERIC, /* n */
|
||||
LIST_BLOCKS, /* s */
|
||||
LIST_SHORT | DISP_ROWS | STYLE_COLUMNAR, /* x */
|
||||
0, /* Q (quote filename) - handled via OPT_Q */
|
||||
DISP_HIDDEN, /* A */
|
||||
ENABLE_SELINUX * LIST_CONTEXT, /* k (ignored if !SELINUX) */
|
||||
#if ENABLE_FEATURE_LS_TIMESTAMPS
|
||||
TIME_CHANGE | (ENABLE_FEATURE_LS_SORTFILES * SORT_CTIME), /* c */
|
||||
LIST_FULLTIME, /* e */
|
||||
LIST_FULLTIME, /* e */
|
||||
ENABLE_FEATURE_LS_SORTFILES * SORT_MTIME, /* t */
|
||||
TIME_ACCESS | (ENABLE_FEATURE_LS_SORTFILES * SORT_ATIME), /* u */
|
||||
#endif
|
||||
#if ENABLE_FEATURE_LS_SORTFILES
|
||||
SORT_SIZE, /* S */
|
||||
SORT_EXT, /* X */
|
||||
SORT_REVERSE, /* r */
|
||||
SORT_VERSION, /* v */
|
||||
SORT_SIZE, /* S */
|
||||
SORT_EXT, /* X */
|
||||
SORT_REVERSE, /* r */
|
||||
SORT_VERSION, /* v */
|
||||
#endif
|
||||
#if ENABLE_FEATURE_LS_FILETYPES
|
||||
LIST_FILETYPE | LIST_EXEC, /* F */
|
||||
LIST_FILETYPE, /* p */
|
||||
LIST_FILETYPE | LIST_EXEC, /* F */
|
||||
LIST_FILETYPE, /* p */
|
||||
#endif
|
||||
#if ENABLE_FEATURE_LS_FOLLOWLINKS
|
||||
FOLLOW_LINKS, /* L */
|
||||
FOLLOW_LINKS, /* L */
|
||||
#endif
|
||||
#if ENABLE_FEATURE_LS_RECURSIVE
|
||||
DISP_RECURSIVE, /* R */
|
||||
DISP_RECURSIVE, /* R */
|
||||
#endif
|
||||
#if ENABLE_FEATURE_HUMAN_READABLE
|
||||
LS_DISP_HR, /* h */
|
||||
LS_DISP_HR, /* h */
|
||||
#endif
|
||||
#if ENABLE_SELINUX
|
||||
LIST_MODEBITS|LIST_NLINKS|LIST_CONTEXT|LIST_SIZE|LIST_DATE_TIME, /* K */
|
||||
@ -547,7 +540,7 @@ static unsigned calc_name_len(const char *name)
|
||||
|
||||
|
||||
/* Return the number of used columns.
|
||||
* Note that only STYLE_COLUMNS uses return value.
|
||||
* Note that only STYLE_COLUMNAR uses return value.
|
||||
* STYLE_SINGLE and STYLE_LONG don't care.
|
||||
* coreutils 7.2 also supports:
|
||||
* ls -b (--escape) = octal escapes (although it doesn't look like working)
|
||||
@ -581,7 +574,7 @@ static unsigned print_name(const char *name)
|
||||
}
|
||||
|
||||
/* Return the number of used columns.
|
||||
* Note that only STYLE_COLUMNS uses return value,
|
||||
* Note that only STYLE_COLUMNAR uses return value,
|
||||
* STYLE_SINGLE and STYLE_LONG don't care.
|
||||
*/
|
||||
static NOINLINE unsigned list_single(const struct dnode *dn)
|
||||
@ -739,7 +732,7 @@ static void showfiles(struct dnode **dn, unsigned nfiles)
|
||||
unsigned i, ncols, nrows, row, nc;
|
||||
unsigned column = 0;
|
||||
unsigned nexttab = 0;
|
||||
unsigned column_width = 0; /* used only by STYLE_COLUMNS */
|
||||
unsigned column_width = 0; /* used only by STYLE_COLUMNAR */
|
||||
|
||||
if (all_fmt & STYLE_LONG) { /* STYLE_LONG or STYLE_SINGLE */
|
||||
ncols = 1;
|
||||
@ -1005,21 +998,15 @@ int ls_main(int argc UNUSED_PARAM, char **argv)
|
||||
if (opt & (1 << i)) {
|
||||
unsigned flags = opt_flags[i];
|
||||
|
||||
if (flags & LIST_MASK_TRIGGER)
|
||||
all_fmt &= ~LIST_MASK;
|
||||
if (flags & STYLE_MASK_TRIGGER)
|
||||
if (flags & STYLE_MASK)
|
||||
all_fmt &= ~STYLE_MASK;
|
||||
if (flags & SORT_MASK_TRIGGER)
|
||||
if (flags & SORT_MASK)
|
||||
all_fmt &= ~SORT_MASK;
|
||||
if (flags & DISP_MASK_TRIGGER)
|
||||
all_fmt &= ~DISP_MASK;
|
||||
if (flags & TIME_MASK)
|
||||
all_fmt &= ~TIME_MASK;
|
||||
|
||||
if (flags & LIST_CONTEXT)
|
||||
all_fmt |= STYLE_SINGLE;
|
||||
/* huh?? opt cannot be 'l' */
|
||||
//if (LS_DISP_HR && opt == 'l')
|
||||
// all_fmt &= ~LS_DISP_HR;
|
||||
all_fmt |= flags;
|
||||
}
|
||||
}
|
||||
@ -1066,7 +1053,7 @@ int ls_main(int argc UNUSED_PARAM, char **argv)
|
||||
|
||||
/* choose a display format if one was not already specified by an option */
|
||||
if (!(all_fmt & STYLE_MASK))
|
||||
all_fmt |= (isatty(STDOUT_FILENO) ? STYLE_COLUMNS : STYLE_SINGLE);
|
||||
all_fmt |= (isatty(STDOUT_FILENO) ? STYLE_COLUMNAR : STYLE_SINGLE);
|
||||
|
||||
argv += optind;
|
||||
if (!argv[0])
|
||||
|
Loading…
x
Reference in New Issue
Block a user