lc: List files in categories (and columns) – from Coherent Unix clone
github.com
github.com
Beautifying the output sounds like a good idea, perhaps something like this should be an option of standard ls?
What strikes me is that the code (which is very idiomatic of C code) is very expressive at the function level, but most of it happens inside the few functions, and the function bodies are much less readable for those who don't write C ls clones all day. The main function is very long because it handles command line switches, that boilerplate could be moved to a function or library.
The file lc.1 (UNIX man pasge) is missing, as has already. been pointed out.
• simple/compact: single file
• small: 446 lines of C code
• flat/monolithic: lots of global variables, no separation between functionality and I/O, no separation between command and library API that does the core part of the work.
(Just posting what was on my mind, not my intention to attack this fine work!)
https://www.icl1900.co.uk/unix4fun/coherent/ftp/vms/
Additional Information:
Apparently it impressed Dennis R. Enough to say it was the very best clone, and no, it did not infringe on the source code.
But, yes, that is the manual page I converted from (actually I grabbed it from the tarballs linked in the README - should be the same thing). My entire experience of troff would fit on the inside of a Rizla packet with some space to spare, but looking at the original I think it was using some special macro package that doesn't exist on modern systems. So I re-wrote it to use `-man` macros as best I could, but also included the original man page source for anyone that thinks they can do a better job in future.
Key features:
- Multi-level sorting by combinations of attributes like size, time, and file type, with user-defined precedence
- Configurable file kind sorting order
- Value-dependent coloring for file attributes such as timestamps, permissions, or sizes.
- Abbreviations: Automatically shorten filenames, user/group names or symlink targets.
- File type classification: Integrates libmagic for file type inspection.
- Hyperlink support
- Per-directory configs: custom behaviors for specific directories using local tweak files (.lc).
- Lightweight (~900 lines of code) with only author's CLI library "cligen" and Nim's stdlib as dependencies.
and more.
[1]: https://github.com/c-blake/lc#vector-typemulti-dimensionalit...
Soon everything will be machine readable only.
With 865 dependencies pulled in by cargo :-)
This is really nice though. I do like that directories and files are separate. You could probably hack this a bit and give you directories, git repos and files. I know that a git repo is just a directory, with special files, but it's surprisingly often that I find myself wondering if a directory is a git repo.