Documentation issues:

   man page formatting is a bit fragile.  I need to re-learn the man macros!

Functionality issues:

?  Look for a .clsrc file anywhere in the contents of any listed directory?
   This allows one to set up highly filesystem-context-specific defaults.
   It requires (maybe) re-parsing the config file for every ls() invocation,
   but would be very convenient for some directories.  E.g., for an auto-
   mounter directory, it could disable target stat()s.  Of course, making
   things like that show up in am-dirs isn't always easy.  We could search
   up the chain of ".." links until we get to root, accepting any .clsrc
   we find or falling back to the /etc/clsrc ~/.clsrc as usual.

   Need a hash table to avoid reading the same directory twice (as happens
   with symlink loops or indirect loops).  This easily runs us out of path
X  buffer space, too.

   %A format flag for "rwx" style permissions?
x  just did global option to decide full ls -l-esque rwxrwxrwx vs octal.

   files given as command arguments, but failing to match a filter are
   not listed.  This is not what 'ls' does, but may be a better default
   given '*' globbing/filename generation syntax.  Hmm.

x  -i/I/X include & exclude by other kinds of type fixes above, too.

Performance issues:

    regex's are sloooow.  relatively fancy default eg.clsrc uses them only
    for suffix, character classes, prefix.  As we did with the suffix case,
    we can probably tailor a custom match() function for prefix & c.c.
    This could save about 15..20%.
x   made 'isDot' builtin and add a character list matcher.  15% speedup.

    Remaining low hanging performance fruit is to reconceive the formatting
    engine.  Right now there is a lot of vprintf chatter back and forth to
    do only strtoull and strcpy with padding to the maximum field width.
    Profiling suggests that this could save about 15..20% user CPU.

    Could conceivably take advantage of the typing info in struct dirent to
    avoid ever calling stat().  Could be a 30..50% overall speed up on BSD,
    especially over network file systems.

x   Sort by File * rather than File (this only improves things by about 5%).
    The above solves the memory motion traffic problem in File_sort(), but
    cmps() can still be slow.  Can do same work in ~50% working set size if
    we replace File structure with the compressed 64-byte version:
        typedef struct {
            unsigned long long  size;
            char               *pfx, *name;
            unsigned long       atime, mtime, ctime, ino, blocks;
            unsigned short      nlink;
            unsigned            mask  : 12,
                                itype :  4,
                                key   : 10,
                                npfx  : 10,
                                nnm   : 10,
                                base  : 10,
                                ext   : 10,
                                Ext   : 10,
                                rdev  : 14, /* table entry, 16384 dev files */
                                uid   :  8, /* table entry, 512 uid */
                                usr   :  8, /* table entry */
                                gid   :  8, /* table entry, 512 gid */
                                grp   :  8; /* table entry */
            unsigned char       type,
                                perms;
        #if ULONG_MAX == 4294967295
            unsigned char       padding_to_64[8];
        #endif
        } cFile;

Portability issues:
    Test on:
X       Linux
X       FreeBSD
X       OpenBSD
X       MacOS
  x     Solaris (mostly works. %R seems busted on links from /dev -> /devices)
        HP-UX
        AIX
    autoconf the sucker?
