+
+static const char ls_opts[] = "1AaCdgilnsx"
+#ifdef CONFIG_FEATURE_LS_FILETYPES
+ "Fp"
+#endif
+#ifdef CONFIG_FEATURE_LS_RECURSIVE
+ "R"
+#endif
+#ifdef CONFIG_FEATURE_LS_SORTFILES
+ "rSvX"
+#endif
+#ifdef CONFIG_FEATURE_LS_TIMESTAMPS
+ "ecut"
+#endif
+#ifdef CONFIG_FEATURE_LS_FOLLOWLINKS
+ "L"
+#endif
+#ifdef CONFIG_FEATURE_HUMAN_READABLE
+ "h"
+#endif
+ "k"
+#ifdef CONFIG_FEATURE_AUTOWIDTH
+ "T:w:"
+#endif
+ ;
+
+#define LIST_MASK_TRIGGER LIST_SHORT
+#define STYLE_MASK_TRIGGER STYLE_MASK
+#define SORT_MASK_TRIGGER SORT_MASK
+#define DISP_MASK_TRIGGER DISP_ROWS
+#define TIME_MASK_TRIGGER TIME_MASK
+
+static const unsigned opt_flags[] = {
+ LIST_SHORT | STYLE_SINGLE, /* 1 */
+ DISP_HIDDEN, /* A */
+ DISP_HIDDEN | DISP_DOT, /* a */
+ LIST_SHORT | STYLE_COLUMNS, /* C */
+ DISP_NOLIST, /* d */
+ 0, /* g - ingored */
+ LIST_INO, /* i */
+ LIST_LONG | STYLE_LONG, /* l - remember LS_DISP_HR in mask! */
+ LIST_ID_NUMERIC, /* n */
+ LIST_BLOCKS, /* s */
+ DISP_ROWS, /* x */
+#ifdef CONFIG_FEATURE_LS_FILETYPES
+ LIST_FILETYPE | LIST_EXEC, /* F */
+ LIST_FILETYPE, /* p */
+#endif
+#ifdef CONFIG_FEATURE_LS_RECURSIVE
+ DISP_RECURSIVE, /* R */
+#endif
+#ifdef CONFIG_FEATURE_LS_SORTFILES
+ SORT_ORDER_REVERSE, /* r */
+ SORT_SIZE, /* S */
+ SORT_VERSION, /* v */
+ SORT_EXT, /* v */
+#endif
+#ifdef CONFIG_FEATURE_LS_TIMESTAMPS
+ LIST_FULLTIME, /* e */
+#ifdef CONFIG_FEATURE_LS_SORTFILES
+ TIME_CHANGE | SORT_CTIME, /* c */
+#else
+ TIME_CHANGE, /* c */
+#endif
+#ifdef CONFIG_FEATURE_LS_SORTFILES
+ TIME_ACCESS | SORT_ATIME, /* u */
+#else
+ TIME_ACCESS, /* u */
+#endif
+#ifdef CONFIG_FEATURE_LS_SORTFILES
+ SORT_MTIME, /* t */
+#else
+ 0, /* t - ignored -- is this correct? */
+#endif
+#endif
+#ifdef CONFIG_FEATURE_LS_FOLLOWLINKS
+ FOLLOW_LINKS, /* L */
+#endif
+#ifdef CONFIG_FEATURE_HUMAN_READABLE
+LS_DISP_HR, /* h */
+#endif
+ 0, /* k - ingored */
+};
+
+
+/*----------------------------------------------------------------------*/
+