Clean up list_pages
* Use bash arrays to load and iterate over paths
* Use bash builtin regex and paramater expansion to filter files
* Drop the dependency to perl in this function
Cleaning up get()
* UUOC http://partmaps.org/era/unix/award.html#cat
Using bash builtin instead of external commands
* test, [ are limited commands, [[ is built in
Replacing external programs with bash builtins
* Dirname can be done with parameter expansion
* All variables should be quoted to avoid wordsplitting
* Use bash arrays to load and iterate over paths safely
Prefer PAGER env variable and fallback on less(1)
Cleaning up display()
Passing exit code from PAGER properly, removing unnecessary call to exit
Calls to chdir(2) should be error checked
* Bad things can happen if you don't sanity check cd
Case insensitivity should be set within functional scope
Quote all potentially dangerous expansions
Quotes around array expansion
$PAGER-related fix won't work. Option -R only required for less, all other pagers don't need it and event don't support. i.e. vimpager and more will fail instantly with "unknown option" error message.
Also current text highlighting defaults are incompatible with more. See pull request #12 for details and a bit better impl.
hmm some of these should be separate pull-requests but i'll take a look
cherry-picked some but now a few wont apply properly
I was back and forth between submitting multiple pull-requests, or just breaking it into separate commits.
I went with separate commits simply because I'm not adding any new features per se. I wanted to optimize this for speed, sanity check all lines that could possibly error out, as well as minimize the call to outside programs and prefer bash built-ins.
I realize now that some of the commits are dependent on the others, and cherry-picking a select few most likely won't work. If you want to pull-in some of the changes I can modify this for separate pull-requests to clearly identify/separate the changes.