aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ISSUES.markdown6
-rw-r--r--Makefile16
-rw-r--r--README.markdown148
-rw-r--r--bash/bash_completion.d/eds.bash4
-rw-r--r--bash/bash_completion.d/td.bash2
-rwxr-xr-xbin/fgscr4
-rwxr-xr-xbin/jfc2
-rwxr-xr-xbin/jfcd4
-rwxr-xr-xbin/mktd2
-rwxr-xr-xbin/murl2
-rwxr-xr-xbin/pa2
-rwxr-xr-xbin/paz2
-rwxr-xr-xbin/rfcr4
-rwxr-xr-xbin/rnda4
-rwxr-xr-xbin/rndf3
-rwxr-xr-xbin/rndl4
-rwxr-xr-xbin/sls2
-rwxr-xr-xbin/sra2
-rwxr-xr-xbin/sta2
-rwxr-xr-xbin/td2
-rwxr-xr-xbin/tlcs2
-rwxr-xr-xbin/xgo2
-rwxr-xr-xbin/xgoc2
-rwxr-xr-xbin/xrbg2
-rwxr-xr-xcheck/man2
-rwxr-xr-xgames/dr2
-rwxr-xr-xgames/rndn2
-rw-r--r--man/man1/apf.1df (renamed from man/man1/apf.1)2
-rw-r--r--man/man1/ax.1df (renamed from man/man1/ax.1)2
-rw-r--r--man/man1/bel.1df (renamed from man/man1/bel.1)2
-rw-r--r--man/man1/br.1df (renamed from man/man1/br.1)4
-rw-r--r--man/man1/ca.1df (renamed from man/man1/ca.1)2
-rw-r--r--man/man1/cf.1df (renamed from man/man1/cf.1)2
-rw-r--r--man/man1/clrd.1df (renamed from man/man1/clrd.1)6
-rw-r--r--man/man1/clwr.1df (renamed from man/man1/clwr.1)6
-rw-r--r--man/man1/d2u.1df (renamed from man/man1/d2u.1)4
-rw-r--r--man/man1/dmp.1df (renamed from man/man1/dmp.1)2
-rw-r--r--man/man1/dub.1df (renamed from man/man1/dub.1)2
-rw-r--r--man/man1/edda.1df (renamed from man/man1/edda.1)2
-rw-r--r--man/man1/eds.1df (renamed from man/man1/eds.1)2
-rw-r--r--man/man1/fgscr.1df (renamed from man/man1/fgscr.1)8
-rw-r--r--man/man1/fnl.1df (renamed from man/man1/fnl.1)6
-rw-r--r--man/man1/gms.1df (renamed from man/man1/gms.1)8
-rw-r--r--man/man1/grc.1df (renamed from man/man1/grc.1)4
-rw-r--r--man/man1/gscr.1df (renamed from man/man1/gscr.1)4
-rw-r--r--man/man1/han.1df (renamed from man/man1/han.1)2
-rw-r--r--man/man1/hurl.1df (renamed from man/man1/hurl.1)4
-rw-r--r--man/man1/igex.1df (renamed from man/man1/igex.1)2
-rw-r--r--man/man1/isgr.1df (renamed from man/man1/isgr.1)4
-rw-r--r--man/man1/jfc.1df (renamed from man/man1/jfc.1)4
-rw-r--r--man/man1/jfcd.1df (renamed from man/man1/jfcd.1)6
-rw-r--r--man/man1/maybe.1df (renamed from man/man1/maybe.1)6
-rw-r--r--man/man1/mkcp.1df (renamed from man/man1/mkcp.1)4
-rw-r--r--man/man1/mkmv.1df (renamed from man/man1/mkmv.1)4
-rw-r--r--man/man1/mktd.1df (renamed from man/man1/mktd.1)4
-rw-r--r--man/man1/motd.1df (renamed from man/man1/motd.1)2
-rw-r--r--man/man1/murl.1df (renamed from man/man1/murl.1)8
-rw-r--r--man/man1/pa.1df (renamed from man/man1/pa.1)4
-rw-r--r--man/man1/paz.1df (renamed from man/man1/paz.1)4
-rw-r--r--man/man1/pit.1df (renamed from man/man1/pit.1)2
-rw-r--r--man/man1/plmu.1df (renamed from man/man1/plmu.1)2
-rw-r--r--man/man1/rfcf.1df (renamed from man/man1/rfcf.1)4
-rw-r--r--man/man1/rfcr.1df (renamed from man/man1/rfcr.1)8
-rw-r--r--man/man1/rfct.1df (renamed from man/man1/rfct.1)4
-rw-r--r--man/man1/rmrej.1df (renamed from man/man1/rmrej.1)2
-rw-r--r--man/man1/rnda.1df (renamed from man/man1/rnda.1)6
-rw-r--r--man/man1/rndf.1df (renamed from man/man1/rndf.1)6
-rw-r--r--man/man1/rndi.1df (renamed from man/man1/rndi.1)4
-rw-r--r--man/man1/rndl.122
-rw-r--r--man/man1/rndl.1df22
-rw-r--r--man/man1/rnds.1df (renamed from man/man1/rnds.1)6
-rw-r--r--man/man1/sd2u.1df (renamed from man/man1/sd2u.1)4
-rw-r--r--man/man1/shb.1df (renamed from man/man1/shb.1)2
-rw-r--r--man/man1/sls.1df (renamed from man/man1/sls.1)9
-rw-r--r--man/man1/slsf.1df (renamed from man/man1/slsf.1)6
-rw-r--r--man/man1/spr.1df (renamed from man/man1/spr.1)2
-rw-r--r--man/man1/sra.1df (renamed from man/man1/sra.1)8
-rw-r--r--man/man1/sshi.1df (renamed from man/man1/sshi.1)2
-rw-r--r--man/man1/sta.1df (renamed from man/man1/sta.1)8
-rw-r--r--man/man1/stbl.1df (renamed from man/man1/stbl.1)4
-rw-r--r--man/man1/stex.1df (renamed from man/man1/stex.1)2
-rw-r--r--man/man1/stws.1df (renamed from man/man1/stws.1)4
-rw-r--r--man/man1/su2d.1df (renamed from man/man1/su2d.1)4
-rw-r--r--man/man1/td.1df (renamed from man/man1/td.1)2
-rw-r--r--man/man1/tl.1df (renamed from man/man1/tl.1)4
-rw-r--r--man/man1/tlcs.1df (renamed from man/man1/tlcs.1)6
-rw-r--r--man/man1/try.1df (renamed from man/man1/try.1)4
-rw-r--r--man/man1/u2d.1df (renamed from man/man1/u2d.1)4
-rw-r--r--man/man1/unf.1df (renamed from man/man1/unf.1)2
-rw-r--r--man/man1/urlc.1df (renamed from man/man1/urlc.1)4
-rw-r--r--man/man1/urlh.1df (renamed from man/man1/urlh.1)4
-rw-r--r--man/man1/urlmt.1df (renamed from man/man1/urlmt.1)6
-rw-r--r--man/man1/xgo.1df (renamed from man/man1/xgo.1)4
-rw-r--r--man/man1/xgoc.1df (renamed from man/man1/xgoc.1)6
-rw-r--r--man/man1/xrbg.1df (renamed from man/man1/xrbg.1)10
-rw-r--r--man/man6/aaf.6df (renamed from man/man6/aaf.6)2
-rw-r--r--man/man6/acq.6df (renamed from man/man6/acq.6)2
-rw-r--r--man/man6/dr.6df (renamed from man/man6/dr.6)4
-rw-r--r--man/man6/kvlt.6df (renamed from man/man6/kvlt.6)2
-rw-r--r--man/man6/rndn.6df (renamed from man/man6/rndn.6)6
-rw-r--r--man/man6/xyzzy.6df (renamed from man/man6/xyzzy.6)2
-rw-r--r--man/man6/zs.6df (renamed from man/man6/zs.6)2
-rw-r--r--man/man7/dotfiles.7df730
-rw-r--r--man/man7/dotfiles.7df.header (renamed from man/man7/dotfiles.7.header)2
-rw-r--r--man/man8/sue.8df (renamed from man/man8/sue.8)2
-rw-r--r--readline/inputrc2
-rw-r--r--vim/after/ftplugin/sh.vim2
107 files changed, 1022 insertions, 292 deletions
diff --git a/ISSUES.markdown b/ISSUES.markdown
index 24b576d6..7f906123 100644
--- a/ISSUES.markdown
+++ b/ISSUES.markdown
@@ -10,10 +10,10 @@ Known issues
* At least one of the completion scripts (pass.bash) hangs on empty
completions (i.e. nothing matches the search term) in Bash 4.4rc1; the last
thing bash -x shows is an "exit 1" hang
-* The checks gscr(1) makes to determine where it is are a bit naive (don't
+* The checks gscr(1df) makes to determine where it is are a bit naive (don't
work with bare repos) and could probably be improved with some appropriate
- git-reflog(1) cals
-* The \xFF syntax for regex as used in rfct(1) is not POSIX. Need to decide
+ git-reflog(1) calls
+* The \xFF syntax for regex as used in rfct(1df) is not POSIX. Need to decide
if it's well-supported enough to keep it anyway.
* On OpenBSD pdksh, including single quotes in comments within command
substitution throws "unclosed quote" errors in the linter checks:
diff --git a/Makefile b/Makefile
index acb6f149..370c1315 100644
--- a/Makefile
+++ b/Makefile
@@ -101,8 +101,8 @@ gnupg/gpg.conf : gnupg/gpg.conf.m4
m4 -D DOTFILES_HOME="$(HOME)" \
gnupg/gpg.conf.m4 > gnupg/gpg.conf
-man/man7/dotfiles.7 : README.markdown man/man7/dotfiles.7.header
- cat man/man7/dotfiles.7.header README.markdown | \
+man/man7/dotfiles.7df : README.markdown man/man7/dotfiles.7df.header
+ cat man/man7/dotfiles.7df.header README.markdown | \
pandoc -sS -t man -o "$@"
mutt/muttrc : mutt/muttrc.m4
@@ -165,15 +165,15 @@ install-bin-man :
install -m 0755 -d -- \
"$(HOME)"/.local/share/man/man1 \
"$(HOME)"/.local/share/man/man8
- install -pm 0644 -- man/man1/*.1 "$(HOME)"/.local/share/man/man1
- install -pm 0644 -- man/man8/*.8 "$(HOME)"/.local/share/man/man8
+ install -pm 0644 -- man/man1/*.1df "$(HOME)"/.local/share/man/man1
+ install -pm 0644 -- man/man8/*.8df "$(HOME)"/.local/share/man/man8
install-curl :
install -pm 0644 -- curl/curlrc "$(HOME)"/.curlrc
-install-dotfiles-man : man/man7/dotfiles.7
+install-dotfiles-man : man/man7/dotfiles.7df
install -m 0755 -d -- "$(HOME)"/.local/share/man/man7
- install -pm 0644 -- man/man7/*.7 "$(HOME)"/.local/share/man/man7
+ install -pm 0644 -- man/man7/*.7df "$(HOME)"/.local/share/man/man7
install-dunst : install-x
install -m 0755 -d -- "$(HOME)"/.config/dunst
@@ -192,8 +192,8 @@ install-games : games/acq games/kvlt games/zs check-games install-games-man
done
install-games-man :
- install -m 0755 -d -- "$(HOME)"/.local/share/man/man6
- install -pm 0644 -- man/man6/*.6 "$(HOME)"/.local/share/man/man6
+ install -m 0755 -d -- "$(HOME)"/.local/share/man/man6df
+ install -pm 0644 -- man/man6/*.6df "$(HOME)"/.local/share/man/man6
install-git : git/gitconfig
install -pm 0644 -- git/gitconfig "$(HOME)"/.gitconfig
diff --git a/README.markdown b/README.markdown
index 8580b578..9aa6dace 100644
--- a/README.markdown
+++ b/README.markdown
@@ -332,123 +332,123 @@ user's current shell.
Installed by the `install-bin` target:
* Three SSH-related scripts:
- * `sls(1)` prints hostnames read from a `ssh_config(5)` file. It uses
- `slsf(1)` to read each one.
- * `sra(1)` runs a command on multiple hosts read from `sls(1)` and prints
+ * `sls(1df)` prints hostnames read from a `ssh_config(5)` file. It uses
+ `slsf(1df)` to read each one.
+ * `sra(1df)` runs a command on multiple hosts read from `sls(1df)` and prints
output.
- * `sta(1)` runs a command on multiple hosts read from `sls(1)` and prints
+ * `sta(1df)` runs a command on multiple hosts read from `sls(1df)` and prints
the hostname if the command returns zero.
* Five URL-related shortcut scripts:
- * `hurl(1)` extracts values of `href` attributes of `<a>` tags, sorts
+ * `hurl(1df)` extracts values of `href` attributes of `<a>` tags, sorts
them uniquely, and writes them to `stdout`; it requires
[pup](https://github.com/ericchiang/pup).
- * `murl(1)` converts Markdown documents to HTML with `pandoc(1)` and
- runs the output through `hurl(1)`.
- * `urlc(1)` accepts a list of URLs on `stdin` and writes error messages
+ * `murl(1df)` converts Markdown documents to HTML with `pandoc(1)` and
+ runs the output through `hurl(1df)`.
+ * `urlc(1df)` accepts a list of URLs on `stdin` and writes error messages
to `stderr` if any of the URLs are broken, redirecting, or are insecure
and have working secure versions; requires `curl(1)`.
- * `urlh(1)` prints the values for a given HTTP header from a HEAD
+ * `urlh(1df)` prints the values for a given HTTP header from a HEAD
response.
- * `urlmt(1)` prints the MIME type from the `Content-Type` header as
- retrieved by `urlh(1)`.
+ * `urlmt(1df)` prints the MIME type from the `Content-Type` header as
+ retrieved by `urlh(1df)`.
* Three RFC-related shortcut scripts:
- * `rfcf(1)` fetches ASCII RFCs from the IETF website.
- * `rfct(1)` formats ASCII RFCs.
- * `rfcr(1)` does both, displaying in a pager if appropriate, like a
+ * `rfcf(1df)` fetches ASCII RFCs from the IETF website.
+ * `rfct(1df)` formats ASCII RFCs.
+ * `rfcr(1df)` does both, displaying in a pager if appropriate, like a
`man(1)` reader for RFCs.
* Five toy random-number scripts (not for sensitive/dead-serious use):
- * `rndi(1)` gets a random integer within two bounds.
- * `rnds(1)` attempts to get an optional random seed for `rndi(1)`.
- * `rnda(1)` uses `rndi(1)` to choose a random argument.
- * `rndf(1)` uses `rnda(1)` to choose a random file from a directory.
- * `rndl(1)` uses `rndi(1)` to choose a random line from files.
+ * `rndi(1df)` gets a random integer within two bounds.
+ * `rnds(1df)` attempts to get an optional random seed for `rndi(1df)`.
+ * `rnda(1df)` uses `rndi(1df)` to choose a random argument.
+ * `rndf(1df)` uses `rnda(1df)` to choose a random file from a directory.
+ * `rndl(1df)` uses `rndi(1df)` to choose a random line from files.
* Four file formatting scripts:
- * `d2u(1)` converts DOS line endings in files to UNIX ones.
- * `u2d(1)` converts UNIX line endings in files to DOS ones.
- * `stbl(1)` strips a trailing blank line from the files in its arguments.
- * `stws(1)` strips trailing spaces from the ends of lines of the files in
+ * `d2u(1df)` converts DOS line endings in files to UNIX ones.
+ * `u2d(1df)` converts UNIX line endings in files to DOS ones.
+ * `stbl(1df)` strips a trailing blank line from the files in its arguments.
+ * `stws(1df)` strips trailing spaces from the ends of lines of the files in
its arguments.
* Five stream formatting scripts:
- * `sd2u(1)` converts DOS line endings in streams to UNIX ones.
- * `su2d(1)` converts UNIX line endings in streams to DOS ones.
- * `tl(1)` tags input lines with a prefix or suffix, basically a `sed(1)`
+ * `sd2u(1df)` converts DOS line endings in streams to UNIX ones.
+ * `su2d(1df)` converts UNIX line endings in streams to DOS ones.
+ * `tl(1df)` tags input lines with a prefix or suffix, basically a `sed(1)`
shortcut.
- * `tlcs(1)` executes a command and uses `tl(1)` to tag stdout and stderr
+ * `tlcs(1df)` executes a command and uses `tl(1df)` to tag stdout and stderr
lines, and color them if you want.
- * `unf(1)` joins lines with leading spaces to the previous line. Intended
+ * `unf(1df)` joins lines with leading spaces to the previous line. Intended
for unfolding HTTP headers, but it should work for most RFC 822
formats.
-* `apf(1)` prepends arguments to a command with ones read from a file,
+* `apf(1df)` prepends arguments to a command with ones read from a file,
intended as a framework for shell wrappers or functions.
-* `ax(1)` evaluates an awk expression given on the command line; this is
+* `ax(1df)` evaluates an awk expression given on the command line; this is
intended as a quick way to test how Awk would interpret a given expression.
-* `bel(1)` prints a terminal bell character.
-* `br(1)` launches `$BROWSER`, or a more suitable application for an URL if
+* `bel(1df)` prints a terminal bell character.
+* `br(1df)` launches `$BROWSER`, or a more suitable application for an URL if
it knows of one.
-* `ca(1)` prints a count of its given arguments.
-* `cf(1)` prints a count of entries in a given directory.
-* `clrd(1)` sets up a per-line file read, clearing the screen first.
-* `clwr(1)` sets up a per-line file write, clearing the screen before each line
-* `dmp(1)` copies a pass(1) entry selected by `dmenu(1)` to the X CLIPBOARD.
-* `dub(1)` lists the biggest entries in a directory.
-* `edda(1)` provides a means to run `ed(1)` over a set of files preserving
+* `ca(1df)` prints a count of its given arguments.
+* `cf(1df)` prints a count of entries in a given directory.
+* `clrd(1df)` sets up a per-line file read, clearing the screen first.
+* `clwr(1df)` sets up a per-line file write, clearing the screen before each line
+* `dmp(1df)` copies a pass(1) entry selected by `dmenu(1)` to the X CLIPBOARD.
+* `dub(1df)` lists the biggest entries in a directory.
+* `edda(1df)` provides a means to run `ed(1)` over a set of files preserving
any options, mostly useful for scripts.
-* `eds(1)` edits executable script files in `EDSPATH`, defaulting to
+* `eds(1df)` edits executable script files in `EDSPATH`, defaulting to
`~/.local/bin`, for personal scripting snippets.
-* `fgscr(1)` finds Git repositories in a directory root and scrubs them with
- `gscr(1)`.
-* `fnl(1)` runs a command and saves its output and error into temporary files,
+* `fgscr(1df)` finds Git repositories in a directory root and scrubs them with
+ `gscr(1df)`.
+* `fnl(1df)` runs a command and saves its output and error into temporary files,
printing their paths and line counts
-* `gms(1)` runs a set of `getmailrc` files; does much the same thing as the
+* `gms(1df)` runs a set of `getmailrc` files; does much the same thing as the
script `getmails` in the `getmail` suite, but runs the requests in parallel
- and does up to three silent retries using `try(1)`.
-* `grc(1)` quietly tests whether the given directory appears to be a Git
+ and does up to three silent retries using `try(1df)`.
+* `grc(1df)` quietly tests whether the given directory appears to be a Git
repository with pending changes.
-* `gscr(1)` scrubs Git repositories.
-* `han(1)` provides a `keywordprg` for Vim's Bash script filetype that will
+* `gscr(1df)` scrubs Git repositories.
+* `han(1df)` provides a `keywordprg` for Vim's Bash script filetype that will
look for `help` topics. You could use it from the shell too.
-* `igex(1)` wraps around a command to allow you to ignore error conditions
+* `igex(1df)` wraps around a command to allow you to ignore error conditions
that don't actually worry you, exiting with 0 anyway.
-* `isgr(1)` quietly tests whether the given directory appears to be a Git
+* `isgr(1df)` quietly tests whether the given directory appears to be a Git
repository.
-* `jfc(1)` adds and commits lazily to a Git repository.
-* `jfcd(1)` watches a directory for changes and runs `jfc(1)` if it sees any.
-* `maybe(1)` is like `true(1)` or `false(1)`; given a probability of success,
+* `jfc(1df)` adds and commits lazily to a Git repository.
+* `jfcd(1df)` watches a directory for changes and runs `jfc(1df)` if it sees any.
+* `maybe(1df)` is like `true(1)` or `false(1)`; given a probability of success,
it exits with success or failure. Good for quick tests.
-* `mkcp(1)` creates a directory and copies preceding arguments into it.
-* `mkmv(1)` creates a directory and moves preceding arguments into it.
-* `motd(1)` shows the system MOTD.
-* `pa(1)` prints its arguments, one per line.
-* `paz(1)` print its arguments terminated by NULL chars.
-* `pit(1)` runs its input through a pager if its standard output looks like a
+* `mkcp(1df)` creates a directory and copies preceding arguments into it.
+* `mkmv(1df)` creates a directory and moves preceding arguments into it.
+* `motd(1df)` shows the system MOTD.
+* `pa(1df)` prints its arguments, one per line.
+* `paz(1df)` print its arguments terminated by NULL chars.
+* `pit(1df)` runs its input through a pager if its standard output looks like a
terminal.
-* `plmu(1)` retrieves a list of installed modules from
+* `plmu(1df)` retrieves a list of installed modules from
[`plenv`](https://github.com/tokuhirom/plenv), filters out any modules in
`~/.plenv/non-cpan-modules`, and updates them all.
-* `rmrej(1)` deletes rejected hunks from a failed `patch(1)` run.
-* `shb(1)` attempts to build shebang lines for scripts from `$PATH`.
-* `spr(1)` posts its input to the sprunge.us pastebin.
-* `sshi(1)` prints human-readable SSH connection details.
-* `stex(1)` strips extensions from filenames.
-* `sue(8)` execs `sudoedit(8)` as the owner of all the file arguments given,
+* `rmrej(1df)` deletes rejected hunks from a failed `patch(1)` run.
+* `shb(1df)` attempts to build shebang lines for scripts from `$PATH`.
+* `spr(1df)` posts its input to the sprunge.us pastebin.
+* `sshi(1df)` prints human-readable SSH connection details.
+* `stex(1df)` strips extensions from filenames.
+* `sue(8df)` execs `sudoedit(8)` as the owner of all the file arguments given,
perhaps in cases where you may not necessarily have `root` `sudo(8)`
privileges.
-* `td(1)` manages a to-do file for you with `$EDITOR` and `git(1)`; I used to
+* `td(1df)` manages a to-do file for you with `$EDITOR` and `git(1)`; I used to
use Taskwarrior, but found it too complex and buggy.
-* `try(1)` repeats a command up to a given number of times until it succeeds,
+* `try(1df)` repeats a command up to a given number of times until it succeeds,
only printing error output if all three attempts failed. Good for
tolerating blips or temporary failures in `cron(8)` scripts.
There's some silly stuff in `install-games`:
-* `aaf(6)` gets a random [ASCII Art Farts](http://www.asciiartfarts.com/)
+* `aaf(6df)` gets a random [ASCII Art Farts](http://www.asciiartfarts.com/)
comic.
-* `acq(6)` allows you to interrogate AC, the interplanetary computer.
-* `kvlt(6)` translates input to emulate a style of typing unique to black
+* `acq(6df)` allows you to interrogate AC, the interplanetary computer.
+* `kvlt(6df)` translates input to emulate a style of typing unique to black
metal communities on the internet.
-* `rndn(6)` implements an esoteric random number generation algorithm.
-* `xyzzy(6)` teleports to a marked location on the filesystem.
-* `zs(6)` prepends "z" case-appropriately to every occurrence of "s" in the
+* `rndn(6df)` implements an esoteric random number generation algorithm.
+* `xyzzy(6df)` teleports to a marked location on the filesystem.
+* `zs(6df)` prepends "z" case-appropriately to every occurrence of "s" in the
text on its standard input.
Manuals
diff --git a/bash/bash_completion.d/eds.bash b/bash/bash_completion.d/eds.bash
index 8d0f6067..0395fd4c 100644
--- a/bash/bash_completion.d/eds.bash
+++ b/bash/bash_completion.d/eds.bash
@@ -1,5 +1,5 @@
-# Complete args to eds(1) with existing executables in $EDSPATH, defaulting to
-# ~/.local/bin
+# Complete args to eds(1df) with existing executables in $EDSPATH, defaulting
+# to ~/.local/bin
_eds() {
local edspath
edspath=${EDSPATH:-"$HOME"/.local/bin}
diff --git a/bash/bash_completion.d/td.bash b/bash/bash_completion.d/td.bash
index ffb9c973..6d995d0e 100644
--- a/bash/bash_completion.d/td.bash
+++ b/bash/bash_completion.d/td.bash
@@ -1,4 +1,4 @@
-# Complete filenames for td(1)
+# Complete filenames for td(1df)
_td() {
local dir
dir=${TODO_DIR:-"$HOME"/Todo}
diff --git a/bin/fgscr b/bin/fgscr
index 9e80cd09..7d5ff4c5 100755
--- a/bin/fgscr
+++ b/bin/fgscr
@@ -1,9 +1,9 @@
#!/bin/sh
# Find all the Git repositories in a directory and scrub them all
-# Check we have gscr(1) first
+# Check we have gscr(1df) first
command -v gscr >/dev/null 2>&1 || exit
# Look for any dir named .git in the given (default current) dir and run
-# gscr(1) on it
+# gscr(1df) on it
find "${@:-.}" -name '*.git' -type d -exec gscr {} \;
diff --git a/bin/jfc b/bin/jfc
index 1ac8d16d..33d0fe5d 100755
--- a/bin/jfc
+++ b/bin/jfc
@@ -11,4 +11,4 @@ grc || exit 0
git add --all || exit
# Quietly commit with a stock message and use its exit value as ours
-git commit --message 'Committed by jfc(1)' --quiet
+git commit --message 'Committed by jfc(1df)' --quiet
diff --git a/bin/jfcd b/bin/jfcd
index b5fff5a1..8bd54e3b 100755
--- a/bin/jfcd
+++ b/bin/jfcd
@@ -1,6 +1,6 @@
#!/bin/sh
-# Watch a directory for changes and commit them with jfc(1) if there are any;
+# Watch a directory for changes and commit them with jfc(1d) if there are any;
# requires inotifywait(1)
self=jfcd
@@ -18,6 +18,6 @@ inw() {
# Directory to check is first and only argument; defaults to current directory
cd -- "${1:-.}" || exit
-# Run a while loop over inotifywait(1) calls, running jfc(1) on the working
+# Run a while loop over inotifywait(1) calls, running jfc(1d) on the working
# directory
while inw ; do jfc ; done
diff --git a/bin/mktd b/bin/mktd
index afbcf4bb..75bbb4b3 100755
--- a/bin/mktd
+++ b/bin/mktd
@@ -1,7 +1,7 @@
#!/bin/sh
# Try to make a random temp directory
-# Get a random seed from rnds(1); if it's empty, that's still workable
+# Get a random seed from rnds(1df); if it's empty, that's still workable
seed=$(rnds)
# Build the intended directory name, with the last element a random integer
diff --git a/bin/murl b/bin/murl
index 610ef6e4..95db92c9 100755
--- a/bin/murl
+++ b/bin/murl
@@ -1,6 +1,6 @@
#!/bin/sh
# Format markdown and pass it to hurl to extract URLs from it.
-# Pipe the output of pandoc(1) on our args into hurl(1)
+# Pipe the output of pandoc(1) on our args into hurl(1df)
pandoc -f markdown -t html -- "${@:-/dev/stdin}" |
hurl
diff --git a/bin/pa b/bin/pa
index 35aa6773..e03e1bb0 100755
--- a/bin/pa
+++ b/bin/pa
@@ -1,4 +1,4 @@
#!/bin/sh
-# Print arguments, one per line. Compare paz(1).
+# Print arguments, one per line. Compare paz(1df).
[ "$#" -gt 0 ] || exit 0
printf '%s\n' "$@"
diff --git a/bin/paz b/bin/paz
index 2cc31c6e..b1f09ca9 100755
--- a/bin/paz
+++ b/bin/paz
@@ -1,4 +1,4 @@
#!/bin/sh
-# Print arguments, terminated by null chars. Compare pa(1).
+# Print arguments, terminated by null chars. Compare pa(1df).
[ "$#" -gt 0 ] || exit 0
printf '%s\0' "$@"
diff --git a/bin/rfcr b/bin/rfcr
index 74488c8c..03de898d 100755
--- a/bin/rfcr
+++ b/bin/rfcr
@@ -8,10 +8,10 @@ if ! [ "$1" ] ; then
fi
rn=$1
-# Retrieve the RFC with rfcf(1)
+# Retrieve the RFC with rfcf(1df)
rfcf "$rn" |
-# Pipe it through rfct(1) to format it as text
+# Pipe it through rfct(1df) to format it as text
rfct |
# Either spit it directly or through a pager
diff --git a/bin/rnda b/bin/rnda
index 078e5008..5af4a3bd 100755
--- a/bin/rnda
+++ b/bin/rnda
@@ -1,5 +1,5 @@
#!/bin/sh
-# Choose a random argument using rndi(1)
+# Choose a random argument using rndi(1df)
# Check we have at least one argument
if [ "$#" -eq 0 ] ; then
@@ -7,7 +7,7 @@ if [ "$#" -eq 0 ] ; then
exit 2
fi
-# Get a random seed from rnds(1); if it's empty, that's still workable
+# Get a random seed from rnds(1df); if it's empty, that's still workable
seed=$(rnds)
# Get a random integet from 1 to the number of arguments
diff --git a/bin/rndf b/bin/rndf
index 06e15fbe..67f9d997 100755
--- a/bin/rndf
+++ b/bin/rndf
@@ -1,5 +1,6 @@
#!/bin/sh
-# Choose a random file from a given directory using rnda(1); ignores dot files
+# Choose a random file from a given directory using rnda(1df); ignores dot
+# files
# Directory is first argument; defaults to current directory
dir=${1:-.}
diff --git a/bin/rndl b/bin/rndl
index 7d5cb6b7..7d2c3041 100755
--- a/bin/rndl
+++ b/bin/rndl
@@ -41,10 +41,10 @@ case $lc in
;;
esac
-# Try to get a random seed from rnds(1) for rndi(1)
+# Try to get a random seed from rnds(1df) for rndi(1df)
seed=$(rnds)
-# Get a random line number from rndi(1)
+# Get a random line number from rndi(1df)
ri=$(rndi 1 "$lc" "$seed") || exit
# Print the line using sed(1)
diff --git a/bin/sls b/bin/sls
index d3c67cc7..770b8ec0 100755
--- a/bin/sls
+++ b/bin/sls
@@ -16,5 +16,5 @@ if [ "$#" -eq 0 ] ; then
exit 1
fi
-# Otherwise, we can run slsf(1) over the ones we did collect
+# Otherwise, we can run slsf(1df) over the ones we did collect
slsf -- "$@"
diff --git a/bin/sra b/bin/sra
index 6c281918..7f072dfb 100755
--- a/bin/sra
+++ b/bin/sra
@@ -1,5 +1,5 @@
#!/bin/sh
-# Run ssh(1) with an optional command on every host in sls(1) output
+# Run ssh(1) with an optional command on every host in sls(1df) output
# Use FD3 to keep a reference to the script's stdin for the ssh(1) calls
exec 3<&0
sls | while read -r hostname ; do
diff --git a/bin/sta b/bin/sta
index 396a2015..848d9740 100755
--- a/bin/sta
+++ b/bin/sta
@@ -1,5 +1,5 @@
#!/bin/sh
-# Print list of sls(1) hostnames that exit 0 when a connection is attempted
+# Print list of sls(1df) hostnames that exit 0 when a connection is attempted
# and the optional given command is run. Discard stdout, but preserve stderr.
sls | while read -r hostname ; do
# shellcheck disable=SC2029
diff --git a/bin/td b/bin/td
index 90df92d9..69077a8d 100755
--- a/bin/td
+++ b/bin/td
@@ -29,4 +29,4 @@ git add -- "$file"
# If there are changes to commit, commit them
git diff-index --quiet HEAD ||
-git commit --message 'Changed by td(1)' --quiet
+git commit --message 'Changed by td(1df)' --quiet
diff --git a/bin/tlcs b/bin/tlcs
index 30068303..4e101201 100755
--- a/bin/tlcs
+++ b/bin/tlcs
@@ -83,7 +83,7 @@ for sig in EXIT HUP INT TERM ; do
done
td=$(mktd "$self") || exit
-# Execute the command, passing stdout and stderr to tl(1) calls as appropriate
+# Execute the command, passing stdout and stderr to tl(1df) calls as appropriate
# via named pipes
out=$td/out err=$td/err
mkfifo -- "$out" "$err" || exit
diff --git a/bin/xgo b/bin/xgo
index a6489855..6cbcaedb 100755
--- a/bin/xgo
+++ b/bin/xgo
@@ -67,7 +67,7 @@ for url ; do (
;;
esac
- # Otherwise, just pass it to br(1)
+ # Otherwise, just pass it to br(1df)
br "$url"
) & done
diff --git a/bin/xgoc b/bin/xgoc
index 9e4b0929..516f7028 100755
--- a/bin/xgoc
+++ b/bin/xgoc
@@ -1,3 +1,3 @@
#!/bin/sh
-# Run xgo(1) with the contents of the X clipboard
+# Run xgo(1df) with the contents of the X clipboard
xgo "$(xsel)"
diff --git a/bin/xrbg b/bin/xrbg
index 554c24dd..801bf078 100755
--- a/bin/xrbg
+++ b/bin/xrbg
@@ -1,4 +1,4 @@
#!/bin/sh
-# Apply a random background image. Requires rndf(1) and feh(1).
+# Apply a random background image. Requires rndf(1df) and feh(1).
bg=$(rndf "${XBACKGROUNDS:-"$HOME"/.xbackgrounds}") || exit
feh --bg-scale --no-fehbg -- "$bg"
diff --git a/check/man b/check/man
index 7591d1af..ca1c248c 100755
--- a/check/man
+++ b/check/man
@@ -20,7 +20,7 @@ find bin games -type f -print |
sed 's_.*/__;s_\..*$__' |
sort | uniq > "$td"/bin
# shellcheck disable=SC2016
-find man/man[168] -type f -name '*.[168]' -print |
+find man/man[168] -type f -name '*.[168]df' -print |
sed 's_.*/__;s_\..*$__' |
sort | uniq > "$td"/man
diff --git a/games/dr b/games/dr
index 785ec2bd..a236dc1e 100755
--- a/games/dr
+++ b/games/dr
@@ -18,7 +18,7 @@ case $d in
*) exit 2 ;;
esac
-# Roll the dice the appropriate number of times using rndi(1)
+# Roll the dice the appropriate number of times using rndi(1df)
i=0 t=0
while [ "$i" -lt "$n" ] ; do
seed=$(rnds)
diff --git a/games/rndn b/games/rndn
index 3abf730a..18c34218 100755
--- a/games/rndn
+++ b/games/rndn
@@ -1,7 +1,7 @@
#!/bin/sh
# Esoteric random number generator
-# Single optional argument is a random seed, otherwise use rnds(1)
+# Single optional argument is a random seed, otherwise use rnds(1df)
s=${1:-"$(rnds)"}
# Validate s
diff --git a/man/man1/apf.1 b/man/man1/apf.1df
index 7cb2ab28..6f8804e0 100644
--- a/man/man1/apf.1
+++ b/man/man1/apf.1df
@@ -1,4 +1,4 @@
-.TH APF 1 "August 2016" "Manual page for apf"
+.TH APF 1df "August 2016" "Manual page for apf"
.SH NAME
.B apf
\- add arguments to a command from a file
diff --git a/man/man1/ax.1 b/man/man1/ax.1df
index 2e8d7179..b3218d37 100644
--- a/man/man1/ax.1
+++ b/man/man1/ax.1df
@@ -1,4 +1,4 @@
-.TH AX 1 "July 2016" "Manual page for ax"
+.TH AX 1df "July 2016" "Manual page for ax"
.SH NAME
.B ax
\- evaluate an awk expression
diff --git a/man/man1/bel.1 b/man/man1/bel.1df
index 36b568fd..e55ae517 100644
--- a/man/man1/bel.1
+++ b/man/man1/bel.1df
@@ -1,4 +1,4 @@
-.TH BEL 1 "August 2016" "Manual page for bel"
+.TH BEL 1df "August 2016" "Manual page for bel"
.SH NAME
.B bel
\- ring the terminal bell
diff --git a/man/man1/br.1 b/man/man1/br.1df
index 5f6de5f7..b20cfc70 100644
--- a/man/man1/br.1
+++ b/man/man1/br.1df
@@ -1,4 +1,4 @@
-.TH BR 1 "August 2016" "Manual page for br"
+.TH BR 1df "August 2016" "Manual page for br"
.SH NAME
.B br
\- launch "$BROWSER"
@@ -18,6 +18,6 @@ arguments. That's it.
It was written to have a clean way to launch $BROWSER from ~/.xbindkeysrc. It
has no other reason to exist.
.SH SEE ALSO
-xgo(1), xgoc(1)
+xgo(1df), xgoc(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/ca.1 b/man/man1/ca.1df
index 1d79d62e..06f3e100 100644
--- a/man/man1/ca.1
+++ b/man/man1/ca.1df
@@ -1,4 +1,4 @@
-.TH CA 1 "July 2016" "Manual page for ca"
+.TH CA 1df "July 2016" "Manual page for ca"
.SH NAME
.B ca
\- print a count of the given arguments
diff --git a/man/man1/cf.1 b/man/man1/cf.1df
index 0bedb19f..8d6e3edc 100644
--- a/man/man1/cf.1
+++ b/man/man1/cf.1df
@@ -1,4 +1,4 @@
-.TH CF 1 "July 2016" "Manual page for cf"
+.TH CF 1df "July 2016" "Manual page for cf"
.SH NAME
.B cf
\- print a count of entries in a directory
diff --git a/man/man1/clrd.1 b/man/man1/clrd.1df
index 696b3303..25e7e677 100644
--- a/man/man1/clrd.1
+++ b/man/man1/clrd.1df
@@ -1,4 +1,4 @@
-.TH CLRD 1 "August 2016" "Manual page for clrd"
+.TH CLRD 1df "August 2016" "Manual page for clrd"
.SH NAME
.B clrd
\- clear the screen and run tail on the arguments
@@ -9,8 +9,8 @@ file
.B clrd
clears the screen and runs tail -f on the given file. It will not run if stdout
is not a terminal. This is for use in minimal socket-network programs like
-ii(1), along with clwr(1).
+ii(1), along with clwr(1df).
.SH SEE ALSO
-clwr(1), ii(1)
+clwr(1df), ii(1)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/clwr.1 b/man/man1/clwr.1df
index ecb29f5c..e8fa1ea9 100644
--- a/man/man1/clwr.1
+++ b/man/man1/clwr.1df
@@ -1,4 +1,4 @@
-.TH CLWR 1 "August 2016" "Manual page for clwr"
+.TH CLWR 1df "August 2016" "Manual page for clwr"
.SH NAME
.B clwr
\- clear screen, read line from terminal, write line to file
@@ -9,8 +9,8 @@ file
.B clwr
clears the screen, accepts a line of input from stdin, writes it to the given
file, and loops. This is for use in minimal socket-network programs like ii(1),
-along with clrd(1).
+along with clrd(1df).
.SH SEE ALSO
-clrd(1), ii(1)
+clrd(1df), ii(1)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/d2u.1 b/man/man1/d2u.1df
index d42b87b9..18c27829 100644
--- a/man/man1/d2u.1
+++ b/man/man1/d2u.1df
@@ -1,4 +1,4 @@
-.TH D2U 1 "August 2016" "Manual page for d2u"
+.TH D2U 1df "August 2016" "Manual page for d2u"
.SH NAME
.B d2u
\- change text files from DOS to UNIX format
@@ -8,6 +8,6 @@
Applies ed(1) to change DOS \\r\\n (CRLF) line endings to UNIX \\n line
endings. Files already in UNIX format should be unchanged.
.SH SEE ALSO
-ed(1), u2d(1), sd2u(1), su2d(1)
+ed(1), u2d(1df), sd2u(1df), su2d(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/dmp.1 b/man/man1/dmp.1df
index 33dde9b8..b9f11bf8 100644
--- a/man/man1/dmp.1
+++ b/man/man1/dmp.1df
@@ -1,4 +1,4 @@
-.TH DMP 1 "August 2016" "Manual page for dmp"
+.TH DMP 1df "August 2016" "Manual page for dmp"
.SH NAME
.B dmp
\- pick a pass(1) password with dmenu(1)
diff --git a/man/man1/dub.1 b/man/man1/dub.1df
index 7a2098ec..52900a36 100644
--- a/man/man1/dub.1
+++ b/man/man1/dub.1df
@@ -1,4 +1,4 @@
-.TH DUB 1 "July 2016" "Manual page for dub"
+.TH DUB 1df "July 2016" "Manual page for dub"
.SH NAME
.B dub
\- list the biggest files in the given directory
diff --git a/man/man1/edda.1 b/man/man1/edda.1df
index 3123c0ce..521c329b 100644
--- a/man/man1/edda.1
+++ b/man/man1/edda.1df
@@ -1,4 +1,4 @@
-.TH EDDA 1 "August 2016" "Manual page for edda"
+.TH EDDA 1df "August 2016" "Manual page for edda"
.SH NAME
.B edda
\- run ed(1) over multiple files
diff --git a/man/man1/eds.1 b/man/man1/eds.1df
index 545f90fc..5dc1674d 100644
--- a/man/man1/eds.1
+++ b/man/man1/eds.1df
@@ -1,4 +1,4 @@
-.TH VIS 1 "November 2015" "Manual page for eds"
+.TH VIS 1df "November 2015" "Manual page for eds"
.SH NAME
.B eds
\- create and edit personal scripts
diff --git a/man/man1/fgscr.1 b/man/man1/fgscr.1df
index f75ed2d8..80da3798 100644
--- a/man/man1/fgscr.1
+++ b/man/man1/fgscr.1df
@@ -1,7 +1,7 @@
-.TH GSCR 1 "July 2016" "Manual page for fgscr"
+.TH GSCR 1df "July 2016" "Manual page for fgscr"
.SH NAME
.B fgscr
-\- find Git repositories and scrub them with gscr(1)
+\- find Git repositories and scrub them with gscr(1df)
.SH SYNOPSIS
.B fgscr
.br
@@ -9,8 +9,8 @@
.SH DESCRIPTION
.B fgscr
searches for Git repositories recursively with the given ancestor directory
-(defaults to the current directory), and runs gscr(1) over them.
+(defaults to the current directory), and runs gscr(1df) over them.
.SH SEE ALSO
-git(1), gscr(1), isgr(1)
+git(1), gscr(1df), isgr(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/fnl.1 b/man/man1/fnl.1df
index a578dbf4..6c34f19c 100644
--- a/man/man1/fnl.1
+++ b/man/man1/fnl.1df
@@ -1,4 +1,4 @@
-.TH FNL 1 "August 2016" "Manual page for fnl"
+.TH FNL 1df "August 2016" "Manual page for fnl"
.SH NAME
.B fnl
\- list the biggest files in the given directory
@@ -8,9 +8,9 @@ command arg1 ...
.SH DESCRIPTION
.B fnl
runs the command specifies in its arguments, writing any stdout and stderr to
-separate temporary files created with mktd(1), and then runs wc(1) over them to
+separate temporary files created with mktd(1df), and then runs wc(1) over them to
show their statistics and full paths.
.SH SEE ALSO
-igex(1)
+igex(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/gms.1 b/man/man1/gms.1df
index 34b1ece0..b6b0f716 100644
--- a/man/man1/gms.1
+++ b/man/man1/gms.1df
@@ -1,4 +1,4 @@
-.TH GMS 1 "June 2016" "Manual page for gms"
+.TH GMS 1df "June 2016" "Manual page for gms"
.SH NAME
.B gms
\- run getmail(1) requests in parallel over multiple getmailrc.* files
@@ -11,14 +11,14 @@ doing much the same thing as the getmails(1) script included in the Getmail
distribution. It differs from that script in a few ways:
.IP \[bu] 4
It includes per-rc-file locking so that at most one getmail(1) process runs for
-the same account, but allows multiple instances of gms(1) to run at the same
+the same account, but allows multiple instances of gms(1df) to run at the same
time.
.IP \[bu]
It runs the requests in parallel using fork(2)/wait(2).
.IP \[bu]
-It uses try(1) to attempt each fetch three times, with 15 seconds between each
+It uses try(1df) to attempt each fetch three times, with 15 seconds between each
attempt, and only prints errors if all three attempts fail.
.SH SEE ALSO
-getmail(1), try(1)
+getmail(1), try(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/grc.1 b/man/man1/grc.1df
index dffe75e6..3eab5d0b 100644
--- a/man/man1/grc.1
+++ b/man/man1/grc.1df
@@ -1,4 +1,4 @@
-.TH GRC 1 "June 2016" "Manual page for grc"
+.TH GRC 1df "June 2016" "Manual page for grc"
.SH NAME
.B grc
\- return whether dir is a Git repository with pending changes
@@ -12,6 +12,6 @@
checks whether the given directory (defaulting to the working directory) is a
Git repository and has pending changes. Normally this emits no output.
.SH SEE ALSO
-git(1), isgr(1)
+git(1), isgr(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/gscr.1 b/man/man1/gscr.1df
index d5495929..93683681 100644
--- a/man/man1/gscr.1
+++ b/man/man1/gscr.1df
@@ -1,4 +1,4 @@
-.TH GSCR 1 "July 2016" "Manual page for gscr"
+.TH GSCR 1df "July 2016" "Manual page for gscr"
.SH NAME
.B gscr
\- scrub a Git repository to pack it and reduce its size
@@ -16,6 +16,6 @@ runs the git fsck, reflog --expire, and gc commands to get rid of dangling
commit objects in a repository and pack the repository down as small as
possible. Each command will only run if the one before it exited non-zero.
.SH SEE ALSO
-git(1), fgscr(1), isgr(1)
+git(1), fgscr(1df), isgr(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/han.1 b/man/man1/han.1df
index efa72645..1372fd90 100644
--- a/man/man1/han.1
+++ b/man/man1/han.1df
@@ -1,4 +1,4 @@
-.TH HAN 1 "May 2015" "Manual page for han"
+.TH HAN 1df "May 2015" "Manual page for han"
.SH NAME
.B han
\- try running builtin help, then man(1)
diff --git a/man/man1/hurl.1 b/man/man1/hurl.1df
index 23a73085..548b03b8 100644
--- a/man/man1/hurl.1
+++ b/man/man1/hurl.1df
@@ -1,4 +1,4 @@
-.TH HURL 1 "June 2016" "Manual page for hurl"
+.TH HURL 1df "June 2016" "Manual page for hurl"
.SH NAME
.B hurl
\- parse contents of href attributes of <a> elements from HTML pages
@@ -19,6 +19,6 @@ order.
.SH SEE ALSO
[1] pup: https://github.com/ericchiang/pup
.br
-murl(1), urlc(1)
+murl(1df), urlc(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/igex.1 b/man/man1/igex.1df
index 731041c6..d2920c05 100644
--- a/man/man1/igex.1
+++ b/man/man1/igex.1df
@@ -1,4 +1,4 @@
-.TH IGEX 1 "August 2016" "Manual page for igex"
+.TH IGEX 1df "August 2016" "Manual page for igex"
.SH NAME
.B igex
\- run a command, ignoring specified error exit values
diff --git a/man/man1/isgr.1 b/man/man1/isgr.1df
index 06d089ac..0f313579 100644
--- a/man/man1/isgr.1
+++ b/man/man1/isgr.1df
@@ -1,4 +1,4 @@
-.TH ISGR 1 "August 2016" "Manual page for isgr"
+.TH ISGR 1df "August 2016" "Manual page for isgr"
.SH NAME
.B isgr
\- print a count of entries in a directory
@@ -13,6 +13,6 @@ exits with 0 if the given directory (or the current directory if one is not
given) appears to be a working copy of a Git repository. It exits 1 otherwise.
All output from the git(1) commands used to check this is suppressed.
.SH SEE ALSO
-git(1), gscr(1), fgscr(1), grc(1)
+git(1), gscr(1df), fgscr(1df), grc(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/jfc.1 b/man/man1/jfc.1df
index 12be2f61..135fefa8 100644
--- a/man/man1/jfc.1
+++ b/man/man1/jfc.1df
@@ -1,4 +1,4 @@
-.TH JFC 1 "June 2016" "Manual page for jfc"
+.TH JFC 1df "June 2016" "Manual page for jfc"
.SH NAME
.B jfc
\- add all and commit quietly to a Git repository with a stock message
@@ -16,6 +16,6 @@ author uses it for his ~/.remind files.
.SH NOTES
Can you guess what it stands for?
.SH SEE ALSO
-git(1), jfcd(1), isgr(1), grc(1)
+git(1), jfcd(1df), isgr(1df), grc(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/jfcd.1 b/man/man1/jfcd.1df
index 9efa9d07..5ca631b3 100644
--- a/man/man1/jfcd.1
+++ b/man/man1/jfcd.1df
@@ -1,4 +1,4 @@
-.TH JFCD 1 "June 2016" "Manual page for jfcd"
+.TH JFCD 1df "June 2016" "Manual page for jfcd"
.SH NAME
.B jfcd
\- watch a directory and automatically commit changes to it
@@ -8,9 +8,9 @@
.SH DESCRIPTION
.B jfcd
watches a directory recursively with inotifywait(1) and commits all changes
-with jfc(1) as it detects them. It logs its output and errors to syslog using
+with jfc(1df) as it detects them. It logs its output and errors to syslog using
logger(1).
.SH SEE ALSO
-git(1), inotifywait(1), jfc(1), logger(1)
+git(1), inotifywait(1), jfc(1df), logger(1)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/maybe.1 b/man/man1/maybe.1df
index 3d27901b..5a94a59e 100644
--- a/man/man1/maybe.1
+++ b/man/man1/maybe.1df
@@ -1,5 +1,3 @@
-.TH MAYBE 1 "August 2016" "Manual page for maybe"
-.SH NAME
.B maybe
\- possibly exit with success
.SH USAGE
@@ -16,12 +14,12 @@ probability. Good for using in tests. Exits with 2 rather than 1 on usage
errors.
.P
The numerator default to 1 and the denominator to 2 for a roughly equal chance
-of success or failure. rndi(1) is used for the randomness.
+of success or failure. rndi(1df) is used for the randomness.
.P
$ maybe
$ maybe 3
$ maybe 2 5
.SH SEE ALSO
-true(1), false(1), try(1), rndi(1)
+true(1), false(1), try(1df), rndi(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/mkcp.1 b/man/man1/mkcp.1df
index 6db6ec1f..1beae4a8 100644
--- a/man/man1/mkcp.1
+++ b/man/man1/mkcp.1df
@@ -1,4 +1,4 @@
-.TH MKCP 1 "July 2016" "Manual page for mkcp"
+.TH MKCP 1df "July 2016" "Manual page for mkcp"
.SH NAME
.B mkcp
\- create last argument as directory and copy remaining arguments into it
@@ -14,6 +14,6 @@ combines mkdir(1) and cp(1) into one call, creating the last argument as a
directory and recursively copying the remaining arguments into it. If the
directory creation fails, the script stops before attempting the copy.
.SH SEE ALSO
-mkdir(1), cp(1), mkmv(1)
+mkdir(1), cp(1), mkmv(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/mkmv.1 b/man/man1/mkmv.1df
index 28056021..f00fe266 100644
--- a/man/man1/mkmv.1
+++ b/man/man1/mkmv.1df
@@ -1,4 +1,4 @@
-.TH MKMV 1 "August 2016" "Manual page for mkmv"
+.TH MKMV 1df "August 2016" "Manual page for mkmv"
.SH NAME
.B mkmv
\- create last argument as directory and move remaining arguments into it
@@ -14,6 +14,6 @@ combines mkdir(1) and mv(1) into one call, creating the last argument as a
directory and moving the remaining arguments into it. If the directory creation
fails, the script stops before attempting the move.
.SH SEE ALSO
-mkdir(1), mv(1), mkmv(1)
+mkdir(1), mv(1), mkmv(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/mktd.1 b/man/man1/mktd.1df
index 680cbd61..8224d2d7 100644
--- a/man/man1/mktd.1
+++ b/man/man1/mktd.1df
@@ -1,4 +1,4 @@
-.TH MKTD 1 "August 2016" "Manual page for mktd"
+.TH MKTD 1df "August 2016" "Manual page for mktd"
.SH NAME
.B mktd
\- try hard to safely create a temporary directory in a POSIX-compliant way
@@ -31,7 +31,7 @@ You could use it in a script like this:
done
td=$(mktd myprogram) || exit
.SH SEE ALSO
-rndi(1)
+rndi(1df)
.br
<http://mywiki.wooledge.org/BashFAQ/062>
.SH AUTHOR
diff --git a/man/man1/motd.1 b/man/man1/motd.1df
index 50350a52..6e8725ce 100644
--- a/man/man1/motd.1
+++ b/man/man1/motd.1df
@@ -1,4 +1,4 @@
-.TH MOTD 1 "August 2016" "Manual page for motd"
+.TH MOTD 1df "August 2016" "Manual page for motd"
.SH NAME
.B motd
\- show the system MOTD file
diff --git a/man/man1/murl.1 b/man/man1/murl.1df
index ecff8623..f022152b 100644
--- a/man/man1/murl.1
+++ b/man/man1/murl.1df
@@ -1,7 +1,7 @@
-.TH MURL 1 "June 2016" "Manual page for murl"
+.TH MURL 1df "June 2016" "Manual page for murl"
.SH NAME
.B murl
-\- convert Markdown to HTML with pandoc(1) and extract URLs from it with hurl(1)
+\- convert Markdown to HTML with pandoc(1) and extract URLs from it with hurl(1df)
.SH SYNOPSIS
.B murl
README.markdown
@@ -14,10 +14,10 @@ find -type f -name '*.markdown' -exec cat {} \\; |
.SH DESCRIPTION
.B murl
renders its Markdown input into HTML using pandoc(1), and passes that to
-hurl(1) which in turn prints the links from the rendered content.
+hurl(1df) which in turn prints the links from the rendered content.
.SH SEE ALSO
[1] pup: https://github.com/ericchiang/pup
.br
-hurl(1), urlc(1)
+hurl(1df), urlc(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/pa.1 b/man/man1/pa.1df
index 51eedacd..4800c085 100644
--- a/man/man1/pa.1
+++ b/man/man1/pa.1df
@@ -1,4 +1,4 @@
-.TH PA 1 "July 2016" "Manual page for pa"
+.TH PA 1df "July 2016" "Manual page for pa"
.SH NAME
.B pa
\- print the given arguments one per line
@@ -10,6 +10,6 @@ arg1 arg2 arg3
prints each of its arguments followed by a newline. If there are no arguments,
it does nothing.
.SH SEE ALSO
-paz(1)
+paz(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/paz.1 b/man/man1/paz.1df
index 531552f6..b34fa6c4 100644
--- a/man/man1/paz.1
+++ b/man/man1/paz.1df
@@ -1,4 +1,4 @@
-.TH PAZ 1 "July 2016" "Manual page for paz"
+.TH PAZ 1df "July 2016" "Manual page for paz"
.SH NAME
.B paz
\- print the given arguments null-terminated
@@ -10,6 +10,6 @@ arg1 arg2 arg3
prints each of its arguments followed by a null character. If there are no
arguments, it does nothing.
.SH SEE ALSO
-pa(1)
+pa(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/pit.1 b/man/man1/pit.1df
index 34a00aff..f4165845 100644
--- a/man/man1/pit.1
+++ b/man/man1/pit.1df
@@ -1,4 +1,4 @@
-.TH PIT 1 "July 2016" "Manual page for pit"
+.TH PIT 1df "July 2016" "Manual page for pit"
.SH NAME
.B pit
\- show arguments or output in a pager if stdout looks like a terminal
diff --git a/man/man1/plmu.1 b/man/man1/plmu.1df
index b92bff3b..4cae1d85 100644
--- a/man/man1/plmu.1
+++ b/man/man1/plmu.1df
@@ -1,4 +1,4 @@
-.TH PLMU 1 "June 2016" "Manual page for plmu"
+.TH PLMU 1df "June 2016" "Manual page for plmu"
.SH NAME
.B plmu
\- upgrade plenv[1] modules with cpanm(1)
diff --git a/man/man1/rfcf.1 b/man/man1/rfcf.1df
index 2e60ee82..1f6a77c8 100644
--- a/man/man1/rfcf.1
+++ b/man/man1/rfcf.1df
@@ -1,4 +1,4 @@
-.TH RFCF 1 "July 2016" "Manual page for rfcf"
+.TH RFCF 1df "July 2016" "Manual page for rfcf"
.SH NAME
.B rfcf
\- fetch an RFC from the IETF site and write it to stdout
@@ -10,6 +10,6 @@
retrieves the RFC with the given number from the IETF website and writes its
contents to stdout.
.SH SEE ALSO
-rfct(1), rfcr(1)
+rfct(1df), rfcr(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/rfcr.1 b/man/man1/rfcr.1df
index 00dcb219..d4255207 100644
--- a/man/man1/rfcr.1
+++ b/man/man1/rfcr.1df
@@ -1,4 +1,4 @@
-.TH RFCR 1 "July 2016" "Manual page for rfcr"
+.TH RFCR 1df "July 2016" "Manual page for rfcr"
.SH NAME
.B rfcr
\- fetch and format an RFC from the IETF website and view it on a terminal
@@ -7,10 +7,10 @@
1918
.SH DESCRIPTION
.B rfcr
-retrieves the RFC with the given number from the IETF website with rfcf(1),
-formats it with rfct(1), and passes the output to pit(1) for either pager
+retrieves the RFC with the given number from the IETF website with rfcf(1df),
+formats it with rfct(1df), and passes the output to pit(1df) for either pager
display or simple output.
.SH SEE ALSO
-rfcf(1), rfct(1)
+rfcf(1df), rfct(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/rfct.1 b/man/man1/rfct.1df
index 60d9d3d4..1ef76011 100644
--- a/man/man1/rfct.1
+++ b/man/man1/rfct.1df
@@ -1,4 +1,4 @@
-.TH RFCT 1 "July 2016" "Manual page for rfct"
+.TH RFCT 1df "July 2016" "Manual page for rfct"
.SH NAME
.B rfct
\- format the contents of an RFC for nicer reading
@@ -14,6 +14,6 @@ strips page headers and footers and possibly other rubbish from the ASCII
versions of RFC documents as retrieved from the IETF website and writes them to
stdout.
.SH SEE ALSO
-rfcf(1), rfcr(1)
+rfcf(1df), rfcr(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/rmrej.1 b/man/man1/rmrej.1df
index eeff999c..9af77837 100644
--- a/man/man1/rmrej.1
+++ b/man/man1/rmrej.1df
@@ -1,4 +1,4 @@
-.TH RMREJ 1 "August 2016" "Manual page for rmrej"
+.TH RMREJ 1df "August 2016" "Manual page for rmrej"
.SH NAME
.B rmrej
\- delete all rejected hunks from a failed patch(1)
diff --git a/man/man1/rnda.1 b/man/man1/rnda.1df
index 4cfd7cbd..5cdf708c 100644
--- a/man/man1/rnda.1
+++ b/man/man1/rnda.1df
@@ -1,4 +1,4 @@
-.TH RNDA 1 "August 2016" "Manual page for rnda"
+.TH RNDA 1df "August 2016" "Manual page for rnda"
.SH NAME
.B rnda
\- return a low-quality random choice from the given arguments
@@ -7,10 +7,10 @@
arg1 arg2 arg3
.SH DESCRIPTION
.B rnda
-prints a random choice from the given arguments. It uses rndi(1), which is
+prints a random choice from the given arguments. It uses rndi(1df), which is
probably not a high-quality source, but should differ within seconds and
between runs on most systems.
.SH SEE ALSO
-rndf(1), rndi(1), rndl(1), rnds(1), rndn(6)
+rndf(1df), rndi(1df), rndl(1df), rnds(1df), rndn(6df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/rndf.1 b/man/man1/rndf.1df
index f523c3ac..a089378b 100644
--- a/man/man1/rndf.1
+++ b/man/man1/rndf.1df
@@ -1,4 +1,4 @@
-.TH RNDF 1 "August 2016" "Manual page for rndf"
+.TH RNDF 1df "August 2016" "Manual page for rndf"
.SH NAME
.B rndf
\- return a low-quality random choice of a random file in a directory
@@ -11,10 +11,10 @@
.SH DESCRIPTION
.B rndf
prints the name a random file (excluding dot files) from the given directory,
-defaulting to the current directory. It uses rndi(1), which is probably not a
+defaulting to the current directory. It uses rndi(1df), which is probably not a
high-quality source, but should differ within seconds and between runs on most
systems.
.SH SEE ALSO
-rndi(1), rnda(1), rndl(1), rnds(1), rndn(6)
+rndi(1df), rnda(1df), rndl(1df), rnds(1df), rndn(6df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/rndi.1 b/man/man1/rndi.1df
index 094a5f62..767ad148 100644
--- a/man/man1/rndi.1
+++ b/man/man1/rndi.1df
@@ -1,4 +1,4 @@
-.TH RNDI 1 "August 2016" "Manual page for rndi"
+.TH RNDI 1df "August 2016" "Manual page for rndi"
.SH NAME
.B rndi
\- return a low-quality random integer
@@ -20,6 +20,6 @@ second. This should not be used in any sort of security or statistical context.
The author wrote it to support scripts to choose a random background image from
a directory.
.SH SEE ALSO
-rnda(1), rndf(1), rndl(1), rnds(1), rndn(6)
+rnda(1df), rndf(1df), rndl(1df), rnds(1df), rndn(6df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/rndl.1 b/man/man1/rndl.1
deleted file mode 100644
index 69deb42b..00000000
--- a/man/man1/rndl.1
+++ /dev/null
@@ -1,22 +0,0 @@
-.TH RNDL 1 "August 2016" "Manual page for rndl"
-.SH NAME
-.B rndl
-\- return a low-quality random choice of a random line from files
-.SH SYNOPSIS
-.B rndl
-file
-.br
-.B rndl
-file1 file2 file3
-.br
-command |
-.B rndl
-.SH DESCRIPTION
-.B rndl
-prints a random line from its input, using rndi(1) to choose it. It uses
-rndi(1), which is probably not a high-quality source, but should differ within
-seconds and between runs on most systems.
-.SH SEE ALSO
-rndi(1), rnda(1), rndf(1), rnds(1), rndn(6)
-.SH AUTHOR
-Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/rndl.1df b/man/man1/rndl.1df
new file mode 100644
index 00000000..ec44564a
--- /dev/null
+++ b/man/man1/rndl.1df
@@ -0,0 +1,22 @@
+.TH RNDL 1df "August 2016" "Manual page for rndl"
+.SH NAME
+.B rndl
+\- return a low-quality random choice of a random line from files
+.SH SYNOPSIS
+.B rndl
+file
+.br
+.B rndl
+file1 file2 file3
+.br
+command |
+.B rndl
+.SH DESCRIPTION
+.B rndl
+prints a random line from its input, using rndi(1df) to choose it. This is
+probably not a high-quality source, but should differ within seconds and
+between runs on most systems.
+.SH SEE ALSO
+rndi(1df), rnda(1df), rndf(1df), rnds(1df), rndn(6df)
+.SH AUTHOR
+Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/rnds.1 b/man/man1/rnds.1df
index f259bd84..04e905d7 100644
--- a/man/man1/rnds.1
+++ b/man/man1/rnds.1df
@@ -1,4 +1,4 @@
-.TH RNDS 1 "August 2016" "Manual page for rnds"
+.TH RNDS 1df "August 2016" "Manual page for rnds"
.SH NAME
.B rnds
\- try to get a random seed
@@ -11,13 +11,13 @@
uses POSIX tools to try and find a random number device on the system and emits
the first field of a cksum(1) based on it as a low-quality random numeric seed.
The only optional argument allows specifying the number of random bytes to
-read, defaulting to 32. This is intended as a low-quality seed for rndi(1).
+read, defaulting to 32. This is intended as a low-quality seed for rndi(1df).
.P
/dev/urandom is tried first, then /dev/arandom, then /dev/random, before the
script gives up and emits nothing.
.P
If you have OpenSSL, you will almost certainly prefer rand(1ssl).
.SH SEE ALSO
-rndi(1), rnda(1), rndf(1), rndl(1), rand(1ssl), rndn(6)
+rndi(1df), rnda(1df), rndf(1df), rndl(1df), rand(1ssl), rndn(6df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/sd2u.1 b/man/man1/sd2u.1df
index 2903447c..53fd4f95 100644
--- a/man/man1/sd2u.1
+++ b/man/man1/sd2u.1df
@@ -1,4 +1,4 @@
-.TH SD2U 1 "August 2016" "Manual page for sd2u"
+.TH SD2U 1df "August 2016" "Manual page for sd2u"
.SH NAME
.B sd2u
\- change text stream from DOS to UNIX format
@@ -16,6 +16,6 @@ program |
Applies sed(1) to change DOS \\r\\n (CRLF) line endings to UNIX \\n line
endings. Lines already in UNIX format should be unchanged.
.SH SEE ALSO
-sed(1), su2d(1), d2u(1), u2d(1)
+sed(1), su2d(1df), d2u(1df), u2d(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/shb.1 b/man/man1/shb.1df
index 64c7e0f9..4f096713 100644
--- a/man/man1/shb.1
+++ b/man/man1/shb.1df
@@ -1,4 +1,4 @@
-.TH SHB 1 "August 2016" "Manual page for shb"
+.TH SHB 1df "August 2016" "Manual page for shb"
.SH NAME
.B shb
\- insert a shebang line above a file
diff --git a/man/man1/sls.1 b/man/man1/sls.1df
index d876b976..730be440 100644
--- a/man/man1/sls.1
+++ b/man/man1/sls.1df
@@ -1,4 +1,4 @@
-.TH SLS 1 "May 2014" "Manual page for sls"
+.TH SLS 1df "May 2014" "Manual page for sls"
.SH NAME
.B sls
\- list the first hostname on each line of an ssh_config(5) file
@@ -9,10 +9,11 @@
ssh_config_alt1 ssh_config_alt2
.SH DESCRIPTION
.B sls
-runs slsf(1) on the given set of ssh_config(5) files to print the first
+runs slsf(1df) on the given set of ssh_config(5) files to print the first
non-wildcard hostname on each "Host" line, defaulting to /etc/ssh/ssh_config
-and ~/.ssh/config if they exist. Suitable for use in batch scripts like sra(1).
+and ~/.ssh/config if they exist. Suitable for use in batch scripts like
+sra(1df).
.SH SEE ALSO
-slsf(1), sra(1), sta(1), ssh(1), ssh_config(5)
+slsf(1df), sra(1df), sta(1df), ssh(1), ssh_config(5)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/slsf.1 b/man/man1/slsf.1df
index b34a719d..03ee46a3 100644
--- a/man/man1/slsf.1
+++ b/man/man1/slsf.1df
@@ -1,4 +1,4 @@
-.TH SLSF 1 "July 2016" "Manual page for slsf"
+.TH SLSF 1df "July 2016" "Manual page for slsf"
.SH NAME
.B slsf
\- list the first hostname on each line of ssh_config(5) files
@@ -12,7 +12,7 @@ cat ~/.ssh_config |
.B slsf
iterates through the ssh_config(5) files given as its input and prints the
first name given on each "Host" line, as long as it contains no wildcards. Most
-users will probably want the sls(1) frontend.
+users will probably want the sls(1df) frontend.
.P
Within the file, a comment "### nosls" on its own line will exclude all
following output unless an "### sls" comment is read to resume it again:
@@ -24,6 +24,6 @@ following output unless an "### sls" comment is read to resume it again:
### sls
Host wanted3
.SH SEE ALSO
-sls(1), sra(1), sta(1), ssh(1), ssh_config(5)
+sls(1df), sra(1df), sta(1df), ssh(1), ssh_config(5)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/spr.1 b/man/man1/spr.1df
index 1039ae4b..6f1ae79f 100644
--- a/man/man1/spr.1
+++ b/man/man1/spr.1df
@@ -1,4 +1,4 @@
-.TH SPR 1 "July 2016" "Manual page for spr"
+.TH SPR 1df "July 2016" "Manual page for spr"
.SH NAME
.B spr
\- post input to sprunge.us pastebin and print the URL to stdout
diff --git a/man/man1/sra.1 b/man/man1/sra.1df
index db4d1abd..4c071f62 100644
--- a/man/man1/sra.1
+++ b/man/man1/sra.1df
@@ -1,15 +1,15 @@
-.TH SRA 1 "May 2014" "Manual page for sra"
+.TH SRA 1df "May 2014" "Manual page for sra"
.SH NAME
.B sra
-\- run a command on sls(1) hosts
+\- run a command on sls(1df) hosts
.SH SYNOPSIS
.B sra
.I [COMMAND]
.SH DESCRIPTION
.B sra
opens a secure shell or runs a command with ssh(1) on all the hosts returned by
-sls(1).
+sls(1df).
.SH SEE ALSO
-sta(1), sls(1)
+sta(1df), sls(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/sshi.1 b/man/man1/sshi.1df
index 8f9ee41d..8cddaa87 100644
--- a/man/man1/sshi.1
+++ b/man/man1/sshi.1df
@@ -1,4 +1,4 @@
-.TH SSHI 1 "August 2016" "Manual page for sshi"
+.TH SSHI 1df "August 2016" "Manual page for sshi"
.SH NAME
.B sshi
\- show human-readable details of the current SSH connection
diff --git a/man/man1/sta.1 b/man/man1/sta.1df
index 0a5b82c0..36551f81 100644
--- a/man/man1/sta.1
+++ b/man/man1/sta.1df
@@ -1,17 +1,17 @@
-.TH STA 1 "May 2014" "Manual page for sta"
+.TH STA 1df "May 2014" "Manual page for sta"
.SH NAME
.B sta
-\- run a command on sls(1) hosts and print the hostname if successful
+\- run a command on sls(1df) hosts and print the hostname if successful
.SH SYNOPSIS
.B sta
.I [COMMAND]
.SH DESCRIPTION
.B sta
attempts a connection and optionally runs a nominated command on all the hosts
-returned by sls(1), and prints the hostname if connected and if the optional
+returned by sls(1df), and prints the hostname if connected and if the optional
command has an exit value of 0. The stdout from the commands is discarded, but
stderr is shown.
.SH SEE ALSO
-sra(1), sls(1)
+sra(1df), sls(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/stbl.1 b/man/man1/stbl.1df
index b6339780..440f0ca2 100644
--- a/man/man1/stbl.1
+++ b/man/man1/stbl.1df
@@ -1,4 +1,4 @@
-.TH STBL 1 "August 2016" "Manual page for stbl"
+.TH STBL 1df "August 2016" "Manual page for stbl"
.SH NAME
.B stbl
\- strip a trailing blank line from files
@@ -8,6 +8,6 @@
Applies ed(1) to remove one trailing newline, if present, from each of the
given files.
.SH SEE ALSO
-ed(1), stws(1)
+ed(1), stws(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/stex.1 b/man/man1/stex.1df
index 26392fb9..ebbea7ad 100644
--- a/man/man1/stex.1
+++ b/man/man1/stex.1df
@@ -1,4 +1,4 @@
-.TH STEX 1 "August 2016" "Manual page for stex"
+.TH STEX 1df "August 2016" "Manual page for stex"
.SH NAME
.B stex
\- strip extensions from the given filenames if present
diff --git a/man/man1/stws.1 b/man/man1/stws.1df
index 717ce8d1..17674afa 100644
--- a/man/man1/stws.1
+++ b/man/man1/stws.1df
@@ -1,4 +1,4 @@
-.TH STWS 1 "August 2016" "Manual page for stws"
+.TH STWS 1df "August 2016" "Manual page for stws"
.SH NAME
.B stws
\- strip trailing spaces from files
@@ -8,6 +8,6 @@
Applies ed(1) to remove all trailing spaces at the end of lines, if present,
from each of the given files.
.SH SEE ALSO
-ed(1), stbl(1)
+ed(1), stbl(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/su2d.1 b/man/man1/su2d.1df
index 6dc71787..7de9ec03 100644
--- a/man/man1/su2d.1
+++ b/man/man1/su2d.1df
@@ -1,4 +1,4 @@
-.TH SU2D 1 "August 2016" "Manual page for su2d"
+.TH SU2D 1df "August 2016" "Manual page for su2d"
.SH NAME
.B su2d
\- change text files from UNIX to DOS format
@@ -15,6 +15,6 @@ program |
Applies sed(1) to change UNIX \\n line endings to DOS \\r\\n (CRLF) line
endings. Lines already in DOS format should be unchanged.
.SH SEE ALSO
-sed(1), sd2u(1), d2u(1), u2d(1)
+sed(1), sd2u(1df), d2u(1df), u2d(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/td.1 b/man/man1/td.1df
index ea3f9095..df1ff82f 100644
--- a/man/man1/td.1
+++ b/man/man1/td.1df
@@ -1,4 +1,4 @@
-.TH TD 1 "June 2016" "Manual page for td"
+.TH TD 1df "June 2016" "Manual page for td"
.SH NAME
.B td
\- manage to-do files
diff --git a/man/man1/tl.1 b/man/man1/tl.1df
index 4cbc8025..eee3bc98 100644
--- a/man/man1/tl.1
+++ b/man/man1/tl.1df
@@ -1,4 +1,4 @@
-.TH TL 1 "Augusr 2016" "Manual page for tl"
+.TH TL 1df "Augusr 2016" "Manual page for tl"
.SH NAME
.B tl
\- tag lines with a string prefix and/or suffix
@@ -15,6 +15,6 @@ given, defaults to reading standard input.
$ tl -p 'file: ' /path/to/file
$ dmesg | tl -s ' (stdout)'
.SH SEE ALSO
-tlcs(1)
+tlcs(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/tlcs.1 b/man/man1/tlcs.1df
index f032deef..e8f4fefa 100644
--- a/man/man1/tlcs.1
+++ b/man/man1/tlcs.1df
@@ -1,4 +1,4 @@
-.TH TLCS 1 "August 2016" "Manual page for tlcs"
+.TH TLCS 1df "August 2016" "Manual page for tlcs"
.SH NAME
.B tlcs
\- execute command and tag stdout/stderr lines
@@ -6,7 +6,7 @@
.B tlcs [-c] [-o STDOUT_PREFIX] [-e STDERR_PREFIX] [--] COMMAND [ARG1...]
.SH DESCRIPTION
Execute a command and tag the output of the stdout and stderr streams, line by
-line, using tl(1) under the hood. Add -c when writing to a terminal to color
+line, using tl(1df) under the hood. Add -c when writing to a terminal to color
the lines.
.P
Specify a stdout prefix with -o (default "stdout: "), and/or a stderr prefix
@@ -17,6 +17,6 @@ Remaining arguments are assumed to be a command and its arguments.
$ tlcs cat ~/.vimrc
$ tlcs -e 'FAIL: ' nonexistent-command
.SH SEE ALSO
-tl(1)
+tl(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/try.1 b/man/man1/try.1df
index 5c4459b0..d982c1d3 100644
--- a/man/man1/try.1
+++ b/man/man1/try.1df
@@ -1,4 +1,4 @@
-.TH TRY 1 "August 2016" "Manual page for try"
+.TH TRY 1df "August 2016" "Manual page for try"
.SH NAME
.B try
\- attempt a command up to a certain number of times until it succeeds
@@ -17,6 +17,6 @@ run.
$ try maybe
$ try -n5 -s10 gms
.SH SEE ALSO
-maybe(1)
+maybe(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/u2d.1 b/man/man1/u2d.1df
index 271b28ac..3bb16092 100644
--- a/man/man1/u2d.1
+++ b/man/man1/u2d.1df
@@ -1,4 +1,4 @@
-.TH U2D 1 "August 2016" "Manual page for u2d"
+.TH U2D 1df "August 2016" "Manual page for u2d"
.SH NAME
.B u2d
\- change text files from UNIX to DOS format
@@ -8,6 +8,6 @@
Applies ed(1) to change UNIX \\n line endings to DOS \\r\\n (CRLF) line
endings. Files already in DOS format should be unchanged.
.SH SEE ALSO
-ed(1), d2u(1), sd2u(1), su2d(1)
+ed(1), d2u(1df), sd2u(1df), su2d(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/unf.1 b/man/man1/unf.1df
index 57d4548f..b74ef9ce 100644
--- a/man/man1/unf.1
+++ b/man/man1/unf.1df
@@ -1,4 +1,4 @@
-.TH UNF 1 "August 2016" "Manual page for unf"
+.TH UNF 1df "August 2016" "Manual page for unf"
.SH NAME
.B unf
\- join lines with leading spaces to the previous line
diff --git a/man/man1/urlc.1 b/man/man1/urlc.1df
index b4234a3d..a5a6bcce 100644
--- a/man/man1/urlc.1
+++ b/man/man1/urlc.1df
@@ -1,4 +1,4 @@
-.TH URLC 1 "June 2016" "Manual page for urlc"
+.TH URLC 1df "June 2016" "Manual page for urlc"
.SH NAME
.B urlc
\- check a list of URLs for errors, redirects, and available secure
@@ -18,6 +18,6 @@ iterates through the newline-delimited URLs passed to it on stdin and using
curl(1) requests checks for retrieval errors, redirects, and tries a naïve
check to see if an HTTPS version is available of any unencrypted HTTP traffic.
.SH SEE ALSO
-curl(1), hurl(1), murl(1)
+curl(1), hurl(1df), murl(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/urlh.1 b/man/man1/urlh.1df
index 5066c7d0..d17f0a74 100644
--- a/man/man1/urlh.1
+++ b/man/man1/urlh.1df
@@ -1,4 +1,4 @@
-.TH URLH 1 "August 2016" "Manual page for urlh"
+.TH URLH 1df "August 2016" "Manual page for urlh"
.SH NAME
.B urlh
\- search for URL header values by name
@@ -12,6 +12,6 @@ makes a cURL HEAD request for the given URL, and searches the headers for a key
matching the given name, case-insensitively. It prints any matching values to
stdout.
.SH SEE ALSO
-curl(1), urlmt(1)
+curl(1), urlmt(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/urlmt.1 b/man/man1/urlmt.1df
index 843f7d81..892b10d4 100644
--- a/man/man1/urlmt.1
+++ b/man/man1/urlmt.1df
@@ -1,4 +1,4 @@
-.TH URLMT 1 "August 2016" "Manual page for urlmt"
+.TH URLMT 1df "August 2016" "Manual page for urlmt"
.SH NAME
.B urlmt
\- try to get the MIME type of the document at the given URL
@@ -7,9 +7,9 @@
https://www.sanctum.geek.nz/
.SH DESCRIPTION
.B urlmt
-uses urlh(1) to search for a Content-Type header for the given URL, and prints
+uses urlh(1df) to search for a Content-Type header for the given URL, and prints
it with any trailing data (e.g. charset) trimmed off.
.SH SEE ALSO
-curl(1), urlh(1)
+curl(1), urlh(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/xgo.1 b/man/man1/xgo.1df
index 5eec6517..368708a2 100644
--- a/man/man1/xgo.1
+++ b/man/man1/xgo.1df
@@ -1,4 +1,4 @@
-.TH XGO 1 "August 2016" "Manual page for xgo"
+.TH XGO 1df "August 2016" "Manual page for xgo"
.SH NAME
.B xgo
\- view the given URL in an appropriate program, falling back on $BROWSER
@@ -13,6 +13,6 @@ falling back on $BROWSER. The choices of application are very opinionated.
There could probably be a MIME-type and/or URL-pattern to program configuration
file, rather than hard-coding it.
.SH SEE ALSO
-br(1), xgoc(1)
+br(1df), xgoc(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/xgoc.1 b/man/man1/xgoc.1df
index a4c23571..d4244a09 100644
--- a/man/man1/xgoc.1
+++ b/man/man1/xgoc.1df
@@ -1,4 +1,4 @@
-.TH XGOC 1 "August 2016" "Manual page for xgoc"
+.TH XGOC 1df "August 2016" "Manual page for xgoc"
.SH NAME
.B xgoc
\- view an URL in the X clipboard in an appropriate program
@@ -6,8 +6,8 @@
.B xgoc
.SH DESCRIPTION
.B xgoc
-reads an URL from the X clipboard with xsel(1) and runs xgo(1) on it.
+reads an URL from the X clipboard with xsel(1) and runs xgo(1df) on it.
.SH SEE ALSO
-br(1), xgoc(1)
+br(1df), xgoc(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man1/xrbg.1 b/man/man1/xrbg.1df
index 05ced37d..481c9185 100644
--- a/man/man1/xrbg.1
+++ b/man/man1/xrbg.1df
@@ -1,4 +1,4 @@
-.TH XRBG 1 "March 2016" "Manual page for xrbg"
+.TH XRBG 1df "March 2016" "Manual page for xrbg"
.SH NAME
.B xrbg
\- apply a random X background image with feh(1)
@@ -10,10 +10,10 @@ XBACKGROUNDS=/path/to/images
.SH DESCRIPTION
.B xrbg
searches for images in the directory named in the XBACKGROUNDS environment
-variable (defaults to ~/.xbackgrounds), chooses a random one with rndf(1), and
-applies it with feh(1). It's designed for use in ~/.xinitrc, but it seems to
-work when called manually from within an X session too.
+variable (defaults to ~/.xbackgrounds), chooses a random one with rndf(1df),
+and applies it with feh(1). It's designed for use in ~/.xinitrc, but it seems
+to work when called manually from within an X session too.
.SH SEE ALSO
-feh(1), rndf(1)
+feh(1), rndf(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man6/aaf.6 b/man/man6/aaf.6df
index bd3fdadb..915cdefd 100644
--- a/man/man6/aaf.6
+++ b/man/man6/aaf.6df
@@ -1,4 +1,4 @@
-.TH AAF 6 "June 2016" "Manual page for aaf"
+.TH AAF 6df "June 2016" "Manual page for aaf"
.SH NAME
.B aaf
\- print a random ASCII Art Farts comic
diff --git a/man/man6/acq.6 b/man/man6/acq.6df
index c3a94d27..a2f17250 100644
--- a/man/man6/acq.6
+++ b/man/man6/acq.6df
@@ -1,4 +1,4 @@
-.TH ACQ 6 "August 2016" "Manual page for acq"
+.TH ACQ 6df "August 2016" "Manual page for acq"
.SH NAME
.B acq
\- interrogate AC, the interplanetary computer
diff --git a/man/man6/dr.6 b/man/man6/dr.6df
index fc586bb2..14787691 100644
--- a/man/man6/dr.6
+++ b/man/man6/dr.6df
@@ -1,4 +1,4 @@
-.TH DR 6 "August 2016" "Manual page for dr"
+.TH DR 6df "August 2016" "Manual page for dr"
.SH NAME
.B dr
\- roll D&D dice
@@ -16,6 +16,6 @@ d6
rolls dice according to the formulas used in D&D and other tabletop roleplaying
games. It only allows d4, d6, d8, d10, d12, and d20 dice.
.SH SEE ALSO
-rndi(1)
+rndi(1df)
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>
diff --git a/man/man6/kvlt.6 b/man/man6/kvlt.6df
index 8ca3ea31..bd84e2e1 100644
--- a/man/man6/kvlt.6
+++ b/man/man6/kvlt.6df
@@ -1,4 +1,4 @@
-.TH KVLT 6 "June 2016" "Manual page for kvlt"
+.TH KVLT 6df "June 2016" "Manual page for kvlt"
.SH NAME
.B kvlt
\- sound like a 14-year-old who just listened to "A Blaze in the Northern Sky"
diff --git a/man/man6/rndn.6 b/man/man6/rndn.6df
index a3521c16..97fbe30a 100644
--- a/man/man6/rndn.6
+++ b/man/man6/rndn.6df
@@ -1,4 +1,4 @@
-.TH RNDN 6 "June 2016" "Manual page for rndn"
+.TH RNDN 6df "June 2016" "Manual page for rndn"
.SH NAME
.B rndn
\- esoteric random number generator
@@ -15,12 +15,12 @@ uses an advanced but somewhat esoteric algorithm derived by Adams (2001) to
return a random number. The seed can be derived internally or specified with
the -s option.
.P
-While rndn(6) has proven robust in the author's production usage, its algorithm
+While rndn(6df) has proven robust in the author's production usage, its algorithm
has not been formally verified.
.SH SEE ALSO
<http://dilbert.com/strip/2001-10-25>
.br
-rndi(1), rnda(1), rndf(1), rndl(1), rnds(1)
+rndi(1df), rnda(1df), rndf(1df), rndl(1df), rnds(1df)
.SH AUTHORS
Tom Ryder <tom@sanctum.geek.nz>
.br
diff --git a/man/man6/xyzzy.6 b/man/man6/xyzzy.6df
index 0e96ccfd..042bb9eb 100644
--- a/man/man6/xyzzy.6
+++ b/man/man6/xyzzy.6df
@@ -1,4 +1,4 @@
-.TH XYZZY 6 "August 2016" "Manual page for xyzzy"
+.TH XYZZY 6df "August 2016" "Manual page for xyzzy"
.SH NAME
.B xyzzy
\- teleport between directories
diff --git a/man/man6/zs.6 b/man/man6/zs.6df
index 00080d62..a650cbf7 100644
--- a/man/man6/zs.6
+++ b/man/man6/zs.6df
@@ -1,4 +1,4 @@
-.TH ZS 6 "June 2016" "Manual page for zs"
+.TH ZS 6df "June 2016" "Manual page for zs"
.SH NAME
.B zs
\- prepend occurences of "s" with "z", case-appropriately
diff --git a/man/man7/dotfiles.7df b/man/man7/dotfiles.7df
new file mode 100644
index 00000000..cf8e9389
--- /dev/null
+++ b/man/man7/dotfiles.7df
@@ -0,0 +1,730 @@
+.TH "DOTFILES(7df)" "" "June 2016" "" ""
+.SH Dotfiles (Tom Ryder)
+.PP
+This is my personal repository of configuration files and scripts for
+\f[C]$HOME\f[], including most of the settings that migrate well between
+machines.
+.SS Installation
+.IP
+.nf
+\f[C]
+$\ git\ clone\ https://sanctum.geek.nz/code/dotfiles.git\ ~/.dotfiles
+$\ cd\ ~/.dotfiles
+$\ git\ submodule\ init
+$\ git\ submodule\ update
+$\ make
+$\ make\ \-n\ install
+$\ make\ install
+\f[]
+.fi
+.PP
+For the default \f[C]all\f[] target, you'll need \f[C]bash(1)\f[],
+\f[C]git(1)\f[], \f[C]install(1)\f[], \f[C]make(1)\f[], and
+\f[C]m4(1)\f[].
+.PP
+The installation \f[C]Makefile\f[] will overwrite things standing in the
+way of its installed files without backing them up, so read the output
+of \f[C]make\ \-n\ install\f[] before running \f[C]make\ install\f[] to
+make sure you aren't going to lose anything unexpected.
+If you're still not sure, install it in a temporary directory so you can
+explore:
+.IP
+.nf
+\f[C]
+$\ tmpdir=$(mktemp\ \-d)
+$\ make\ install\ HOME="$tmpdir"
+$\ env\ \-i\ HOME="$tmpdir"\ TERM="$TERM"\ bash\ \-l
+\f[]
+.fi
+.PP
+The default target will install the core terminal\-only files: cURL,
+Git, GnuPG, Vim, shell scripts and functions, and shell and terminal
+setup files.
+The remaining dotfiles can be installed with the other targets.
+Take a look at the \f[C]Makefile\f[] to see what's available.
+.SS Tools
+.PP
+Configuration is included for:
+.IP \[bu] 2
+Abook (http://abook.sourceforge.net/) \[en] curses address book program
+.IP \[bu] 2
+Bash (https://www.gnu.org/software/bash/) \[en] GNU Bourne\-Again Shell,
+including a \f[C]~/.profile\f[] configured to work with most
+Bourne\-compatible shells
+.IP \[bu] 2
+cURL (https://curl.haxx.se/) \[en] Command\-line tool for transferring
+data with URL syntax
+.IP \[bu] 2
+Dunst (http://knopwob.org/dunst/) \[en] A lightweight X11 notification
+daemon that works with \f[C]libnotify\f[]
+.IP \[bu] 2
+\f[C]finger(1)\f[] \[en] User information lookup program
+.IP \[bu] 2
+Git (https://git-scm.com/) \[en] Distributed version control system
+.IP \[bu] 2
+GnuPG (https://www.gnupg.org/) \[en] GNU Privacy Guard, for private
+communication and file encryption
+.IP \[bu] 2
+GTK+ (http://www.gtk.org/) \[en] GIMP Toolkit, for graphical user
+interface elements
+.IP \[bu] 2
+i3 (https://i3wm.org/) \[en] Tiling window manager
+.IP \[bu] 2
+less (https://www.gnu.org/software/less/) \[en] Terminal pager
+.IP \[bu] 2
+Mutt (http://www.mutt.org/) \[en] Terminal mail user agent
+.IP \[bu] 2
+\f[C]mysql(1)\f[] (http://linux.die.net/man/1/mysql) \[en] Command\-line
+MySQL client
+.IP \[bu] 2
+Ncmpcpp (https://rybczak.net/ncmpcpp/) \[en] ncurses music player client
+.IP \[bu] 2
+Newsbeuter (https://www.newsbeuter.org/) \[en] Terminal RSS/Atom feed
+reader
+.IP \[bu] 2
+\f[C]pdksh(1)\f[] (http://www.cs.mun.ca/~michael/pdksh/) \[en] public
+domain fork of the Korn shell
+.IP \[bu] 2
+\f[C]psql(1)\f[] (http://linux.die.net/man/1/psql) \[en] Command\-line
+PostgreSQL client
+.IP \[bu] 2
+Perl::Critic (http://perlcritic.com/) \[en] static source code analysis
+engine for Perl
+.IP \[bu] 2
+Perl::Tidy (http://perltidy.sourceforge.net/) \[en] Perl indenter and
+reformatter
+.IP \[bu] 2
+Readline (https://cnswww.cns.cwru.edu/php/chet/readline/rltop.html)
+\[en] GNU library for user input used by Bash, MySQL, and others
+.IP \[bu] 2
+rxvt\-unicode (http://software.schmorp.de/pkg/rxvt-unicode.html) \[en]
+Fork of the rxvt terminal emulator with Unicode support
+.IP \[bu] 2
+Subversion (https://subversion.apache.org/) \[en] Apache Subversion, a
+version control system
+.IP \[bu] 2
+tmux (https://tmux.github.io/) \[en] Terminal multiplexer similar to GNU
+Screen
+.IP \[bu] 2
+Vim (http://www.vim.org/) \[en] Vi IMproved, a text editor
+.IP \[bu] 2
+Wyrd (https://packages.debian.org/sid/wyrd) \[en] a \f[C]curses\f[]
+calendar frontend for
+Remind (https://www.roaringpenguin.com/products/remind)
+.IP \[bu] 2
+X11 (https://www.x.org/wiki/) \[en] Windowing system with network
+transparency for Unix
+.IP \[bu] 2
+Zsh (https://www.zsh.org/) \[en] Bourne\-style shell designed for
+interactive use
+.PP
+The configurations for Bash, GnuPG, Mutt, tmux, and Vim are the most
+expansive and most likely to be of interest.
+The i3 configuration is mostly changed to make window switching behave
+like Vim windows and tmux panes do, and there's a fair few resources
+defined for rxvt\-unicode.
+Otherwise, the rest of the configuration isn't too distant from the
+defaults.
+.SS Shell
+.PP
+My \f[C]\&.profile\f[] and other files in \f[C]sh\f[] are written in
+POSIX shell script, so they should work in most \f[C]sh(1)\f[]
+implementations.
+Individual scripts called by \f[C]\&.profile\f[] are saved in
+\f[C]\&.profile.d\f[] and iterated on login for ease of management.
+All of these boil down to exporting variables appropriate to the system
+and the software it has available.
+.PP
+I make an effort to target POSIX for my functions and scripts where I
+can, but Bash is my interactive shell of choice.
+.PP
+My \f[C]\&.bash_profile\f[] calls \f[C]\&.profile\f[], and then
+\f[C]\&.bashrc\f[], which only applies for interactive shells.
+Subscripts for \f[C]\&.bashrc\f[] are loaded from \f[C]\&.bashrc.d\f[].
+The contents of the \f[C]*.d\f[] directories changes depending on the
+host, so only specific scripts in it are versioned.
+.PP
+As I occasionally have work on very old internal systems, my Bash is
+written to work with any version 2.05a or
+newer (http://wiki.bash-hackers.org/scripting/bashchanges).
+This is why I use older syntax for certain things such as appending
+items to arrays:
+.IP
+.nf
+\f[C]
+array[${#array[\@]}]=$item
+\f[]
+.fi
+.PP
+Compare this to the much nicer syntax available since 3.1\-alpha1, which
+actually works for arrays with sparse indexes, unlike the above syntax:
+.IP
+.nf
+\f[C]
+array+=("$item")
+\f[]
+.fi
+.PP
+Where I do use features that are only available in versions of Bash
+newer than 2.05a, such as newer \f[C]shopt\f[] options or
+\f[C]PROMPT_DIRTRIM\f[], they are only run after testing
+\f[C]BASH_VERSINFO\f[] appropriately.
+.SS Prompt
+.PP
+When I use any other Bourne\-compatible shell, I'm generally happy to
+accept its defaults for interactive behavior.
+.PP
+A terminal session with my prompt looks something like this:
+.IP
+.nf
+\f[C]
+~$\ ssh\ remote
+tom\@remote:~$\ cd\ .dotfiles
+tom\@remote:~/.dotfiles(master+!)$\ git\ status
+\ M\ README.markdown
+M\ \ bash/bashrc.d/prompt.bash
+A\ \ init
+tom\@remote:~/.dotfiles(master+!)$\ foobar
+foobar:\ command\ not\ found
+tom\@remote:~/.dotfiles(master+!)<127>$\ sleep\ 5\ &
+[1]\ 28937
+tom\@remote:~/.dotfiles(master+!){1}$
+\f[]
+.fi
+.PP
+The username and hostname are skipped if not connected via SSH.
+The right side of the prompt expands based on context to include these
+elements in this order:
+.IP \[bu] 2
+Whether in a Git repository if applicable, and punctuation to show
+repository status including reference to upstreams at a glance.
+Subversion support can also be enabled (I need it at work), in which
+case a \f[C]git:\f[] or \f[C]svn:\f[] prefix is added appropriately
+.IP \[bu] 2
+The number of running background jobs, if non\-zero
+.IP \[bu] 2
+The exit status of the last command, if non\-zero
+.PP
+You can set \f[C]PROMPT_COLOR\f[], \f[C]PROMPT_PREFIX\f[], and
+\f[C]PROMPT_SUFFIX\f[] too, which all do about what you'd expect.
+.PP
+This is all managed within the \f[C]prompt\f[] function.
+There's some mildly hacky logic on \f[C]tput\f[] codes included such
+that it should work correctly for most common terminals using both
+\f[C]termcap(5)\f[] and \f[C]terminfo(5)\f[], including *BSD systems.
+It's also designed to degrade gracefully for eight\-color and no\-color
+terminals.
+.SS Functions
+.PP
+If a function can be written in POSIX \f[C]sh\f[] without too much
+hackery, I put it in \f[C]sh/shrc.d\f[] to be loaded by any POSIX
+interactive shell.
+Those include:
+.IP \[bu] 2
+\f[C]bc()\f[] silences startup messages from GNU \f[C]bc(1)\f[].
+.IP \[bu] 2
+\f[C]bd()\f[] changes into a named ancestor of the current directory.
+.IP \[bu] 2
+\f[C]diff()\f[] forces the unified format for \f[C]diff(1)\f[].
+.IP \[bu] 2
+\f[C]ed()\f[] tries to get verbose error messages, a prompt, and a
+Readline environment for \f[C]ed(1)\f[].
+.IP \[bu] 2
+\f[C]env()\f[] sorts the output of \f[C]env(1)\f[] if it was invoked
+with no arguments, because the various shells have different ways of
+listing exported variables.
+.IP \[bu] 2
+\f[C]gdb()\f[] silences startup messages from \f[C]gdb(1)\f[].
+.IP \[bu] 2
+\f[C]gpg()\f[] quietens \f[C]gpg(1)\f[] down for most commands.
+.IP \[bu] 2
+\f[C]grep()\f[] tries to apply color and other options good for
+interactive use, depending on the capabilities of the system
+\f[C]grep(1)\f[].
+.IP \[bu] 2
+\f[C]hgrep()\f[] allows searching \f[C]$HISTFILE\f[].
+.IP \[bu] 2
+\f[C]keychain()\f[] keeps \f[C]$GPG_TTY\f[] up to date if a GnuPG agent
+is available.
+.IP \[bu] 2
+\f[C]lhn()\f[] gets the history number of the last command, if the POSIX
+\f[C]fc\f[] builtin is available.
+.IP \[bu] 2
+\f[C]ls()\f[] tries to apply color to \f[C]ls(1)\f[] for interactive use
+if available.
+.RS 2
+.IP \[bu] 2
+\f[C]la()\f[] runs \f[C]ls\ \-A\f[] if it can, or \f[C]ls\ \-a\f[]
+otherwise.
+.IP \[bu] 2
+\f[C]ll()\f[] runs \f[C]ls\ \-Al\f[] if it can, or \f[C]ls\ \-al\f[]
+otherwise.
+through your pager, using color if it can.
+.RE
+.IP \[bu] 2
+\f[C]mkcd()\f[] creates a directory and changes into it.
+.IP \[bu] 2
+\f[C]mysql()\f[] allows shortcuts to MySQL configuration files stored in
+\f[C]~/.mysql\f[].
+.IP \[bu] 2
+\f[C]path()\f[] manages the contents of \f[C]PATH\f[] conveniently.
+.IP \[bu] 2
+\f[C]pd()\f[] changes to the argument's parent directory.
+.IP \[bu] 2
+\f[C]pwgen()\f[] generates just one decent password with
+\f[C]pwgen(1)\f[].
+.IP \[bu] 2
+\f[C]rcsdiff()\f[] forces a unified format for \f[C]rcsdiff(1)\f[].
+.IP \[bu] 2
+\f[C]rd()\f[] replaces the first instance of its first argument with its
+second argument in \f[C]$PWD\f[], emulating a feature of the Zsh
+\f[C]cd\f[] builtin that I like.
+.IP \[bu] 2
+\f[C]scp()\f[] tries to detect forgotten hostnames in \f[C]scp(1)\f[]
+command calls.
+.IP \[bu] 2
+\f[C]scr()\f[] creates a temporary directory and changes into it.
+.IP \[bu] 2
+\f[C]sd()\f[] changes into a sibling of the current directory.
+.IP \[bu] 2
+\f[C]sudo()\f[] forces \f[C]\-H\f[] for \f[C]sudo(8)\f[] calls so that
+\f[C]$HOME\f[] is never preserved; I hate having \f[C]root\f[]\-owned
+files in my home directory.
+.IP \[bu] 2
+\f[C]tmux()\f[] changes the default command for \f[C]tmux(1)\f[] to
+\f[C]attach\-session\ \-d\f[] if a session exists, or creates a new
+session if one doesn't.
+.IP \[bu] 2
+\f[C]ud()\f[] changes into an indexed ancestor of a directory.
+.IP \[bu] 2
+\f[C]vim()\f[] defines three functions to always use \f[C]vim(1)\f[] as
+my \f[C]ex(1)\f[], \f[C]vi(1)\f[] and \f[C]view(1)\f[] implementation if
+it's available.
+.IP \[bu] 2
+\f[C]vr()\f[] tries to change to the root directory of a source control
+repository.
+.PP
+There are a few other little tricks defined for other shells, mostly in
+\f[C]bash/bashrc.d\f[]:
+.IP \[bu] 2
+\f[C]keep()\f[] stores ad\-hoc shell functions and variables.
+.IP \[bu] 2
+\f[C]prompt()\f[] sets up my interactive prompt.
+.IP \[bu] 2
+\f[C]pushd()\f[] adds a default destination of \f[C]$HOME\f[] to the
+\f[C]pushd\f[] builtin.
+.IP \[bu] 2
+\f[C]vared()\f[] allows interactively editing a variable with Readline,
+emulating a Zsh function I like by the same name.
+.SS Completion
+.PP
+I find the \f[C]bash\-completion\f[] package a bit too heavy for my
+tastes, and turn it off using a stub file installed in
+\f[C]\&.config/bash_completion\f[].
+The majority of the time I just want to complete paths anyway, and this
+makes for a quicker startup without a lot of junk functions in my Bash
+namespace.
+.PP
+I do make some exceptions with completions defined in
+\f[C]\&.bash_completion.d\f[] files for things I really do get tired of
+typing repeatedly:
+.IP \[bu] 2
+Builtins, commands, help topics, shell options, and variables
+.IP \[bu] 2
+\f[C]ftp(1)\f[] hostnames from \f[C]~/.netrc\f[]
+.IP \[bu] 2
+\f[C]git(1)\f[] branch names
+.IP \[bu] 2
+\f[C]gpg(1)\f[] long options
+.IP \[bu] 2
+\f[C]make(1)\f[] targets read from a \f[C]Makefile\f[]
+.IP \[bu] 2
+\f[C]man(1)\f[] page titles
+.IP \[bu] 2
+\f[C]mysql(1)\f[] databases from \f[C]~/.mysql/*.cnf\f[]
+.IP \[bu] 2
+\f[C]pass(1)\f[] entries
+.IP \[bu] 2
+\f[C]ssh(1)\f[] hostnames from \f[C]~/.ssh/config\f[]
+.PP
+I also add completions for my own scripts and functions where useful.
+The completions are dynamically loaded if Bash is version 4.0 or
+greater.
+Otherwise, they're all loaded on startup.
+.SS pdksh
+.PP
+The pdksh configuration files and functions are not nearly as featureful
+as the Bash ones.
+They're tested on OpenBSD and FreeBSD pdksh implementations, but the
+former is the primary system for which I'm maintaining them, and there
+are some feature differences.
+.SS Zsh
+.PP
+These are experimental; I do not like Zsh much at the moment.
+The files started as a joke (\f[C]exec\ bash\f[]).
+.SS GnuPG
+.PP
+The configuration for GnuPG is intended to follow RiseUp's OpenPGP best
+practices (https://riseup.net/en/security/message-security/openpgp/best-practices).
+The configuration file is rebuilt using \f[C]m4(1)\f[] and
+\f[C]make(1)\f[] because it requires hard\-coding a path to the SKS
+keyserver certificate authority, and neither tilde nor \f[C]$HOME\f[]
+expansion works for this.
+.SS Mutt
+.PP
+My mail is kept in individual Maildirs under \f[C]~/Mail\f[], with
+\f[C]inbox\f[] being where most unfiltered mail is sent.
+I use Getmail (http://pyropus.ca/software/getmail/),
+maildrop (http://www.courier-mta.org/maildrop/), and
+MSMTP (http://msmtp.sourceforge.net/); the configurations for these are
+not included here.
+I sign whenever I have some indication that the recipient might be using
+a PGP implementation, and I encrypt whenever I have a public key
+available for them.
+The GnuPG interfacing is done with
+GPGme (https://www.gnupg.org/related_software/gpgme/), rather than
+defining commands for each crypto operation.
+I wrote an article about this
+setup (https://sanctum.geek.nz/arabesque/linux-crypto-email/) if it
+sounds appealing.
+.PP
+You'll need Abook (http://abook.sourceforge.net/) installed if you want
+to use the \f[C]query_command\f[] I have defined, and
+msmtp (http://msmtp.sourceforge.net/) for the \f[C]sendmail\f[] command.
+.SS rxvt\-unicode
+.PP
+I've butchered the URxvt Perl extensions
+\f[C]selection\-to\-clipboard\f[] and \f[C]selection\f[] into a single
+\f[C]select\f[] extension in \f[C]~/.urxvt/ext\f[], which is the only
+extension I define in \f[C]~/.Xresources\f[].
+.PP
+The included \f[C]\&.Xresources\f[] file assumes that \f[C]urxvt\f[] can
+use 256 colors and Perl extensions.
+If you're missing functionality, try changing \f[C]perl\-ext\-common\f[]
+to \f[C]default\f[].
+.PP
+My choice of font is Ubuntu Mono (http://font.ubuntu.com/), but the file
+should allow falling back to the more common Deja Vu Sans
+Mono (http://dejavu-fonts.org/wiki/Main_Page).
+I've found Terminus (http://terminus-font.sourceforge.net/) works well
+too, but bitmap fonts are not really my cup of tea.
+The Lohit Kannada font bit is purely to make ಠ_ಠ work correctly.
+( ͡° ͜ʖ ͡°) seems to work out of the box.
+.SS tmux
+.PP
+These are just generally vi\-friendly settings, not much out of the
+ordinary.
+Note that the configuration presently uses a hard\-coded 256\-color
+colorscheme, and uses non\-login shells, with an attempt to control the
+environment to stop shells thinking they have access to an X display.
+.PP
+The configuration file is created with \f[C]m4(1)\f[] to allow
+specifying a color theme.
+This is just because I use a different color for my work session.
+The default is a dark grey.
+.PP
+The configuration for Bash includes a \f[C]tmux\f[] function designed to
+make \f[C]attach\f[] into the default command if no arguments are given
+and sessions do already exist.
+The default command is normally \f[C]new\-session\f[].
+.SS Vim
+.PP
+The majority of the \f[C]\&.vimrc\f[] file is just setting options, with
+a few mappings.
+I try not to deviate too much from the Vim defaults behaviour in terms
+of interactive behavior and keybindings.
+.PP
+The configuration is extensively commented, mostly because I was reading
+through it one day and realised I'd forgotten what half of it did.
+Plugins are loaded using \@tpope's
+pathogen.vim (https://github.com/tpope/vim-pathogen).
+.SS Scripts
+.PP
+Where practical, I make short scripts into POSIX (but not Bourne)
+\f[C]sh(1)\f[], \f[C]awk(1)\f[], or \f[C]sed(1)\f[] scripts in
+\f[C]~/.local/bin\f[].
+A few of them still have Bashisms for various reasons.
+I try to use shell functions only when I actually need to, which tends
+to be when I need to tinker with the namespace of the user's current
+shell.
+.PP
+Installed by the \f[C]install\-bin\f[] target:
+.IP \[bu] 2
+Three SSH\-related scripts:
+.RS 2
+.IP \[bu] 2
+\f[C]sls(1df)\f[] prints hostnames read from a \f[C]ssh_config(5)\f[]
+file.
+It uses \f[C]slsf(1df)\f[] to read each one.
+.IP \[bu] 2
+\f[C]sra(1df)\f[] runs a command on multiple hosts read from
+\f[C]sls(1df)\f[] and prints output.
+.IP \[bu] 2
+\f[C]sta(1df)\f[] runs a command on multiple hosts read from
+\f[C]sls(1df)\f[] and prints the hostname if the command returns zero.
+.RE
+.IP \[bu] 2
+Five URL\-related shortcut scripts:
+.RS 2
+.IP \[bu] 2
+\f[C]hurl(1df)\f[] extracts values of \f[C]href\f[] attributes of
+\f[C]<a>\f[] tags, sorts them uniquely, and writes them to
+\f[C]stdout\f[]; it requires pup (https://github.com/ericchiang/pup).
+.IP \[bu] 2
+\f[C]murl(1df)\f[] converts Markdown documents to HTML with
+\f[C]pandoc(1)\f[] and runs the output through \f[C]hurl(1df)\f[].
+.IP \[bu] 2
+\f[C]urlc(1df)\f[] accepts a list of URLs on \f[C]stdin\f[] and writes
+error messages to \f[C]stderr\f[] if any of the URLs are broken,
+redirecting, or are insecure and have working secure versions; requires
+\f[C]curl(1)\f[].
+.IP \[bu] 2
+\f[C]urlh(1df)\f[] prints the values for a given HTTP header from a HEAD
+response.
+.IP \[bu] 2
+\f[C]urlmt(1df)\f[] prints the MIME type from the \f[C]Content\-Type\f[]
+header as retrieved by \f[C]urlh(1df)\f[].
+.RE
+.IP \[bu] 2
+Three RFC\-related shortcut scripts:
+.RS 2
+.IP \[bu] 2
+\f[C]rfcf(1df)\f[] fetches ASCII RFCs from the IETF website.
+.IP \[bu] 2
+\f[C]rfct(1df)\f[] formats ASCII RFCs.
+.IP \[bu] 2
+\f[C]rfcr(1df)\f[] does both, displaying in a pager if appropriate, like
+a \f[C]man(1)\f[] reader for RFCs.
+.RE
+.IP \[bu] 2
+Five toy random\-number scripts (not for sensitive/dead\-serious use):
+.RS 2
+.IP \[bu] 2
+\f[C]rndi(1df)\f[] gets a random integer within two bounds.
+.IP \[bu] 2
+\f[C]rnds(1df)\f[] attempts to get an optional random seed for
+\f[C]rndi(1df)\f[].
+.IP \[bu] 2
+\f[C]rnda(1df)\f[] uses \f[C]rndi(1df)\f[] to choose a random argument.
+.IP \[bu] 2
+\f[C]rndf(1df)\f[] uses \f[C]rnda(1df)\f[] to choose a random file from
+a directory.
+.IP \[bu] 2
+\f[C]rndl(1df)\f[] uses \f[C]rndi(1df)\f[] to choose a random line from
+files.
+.RE
+.IP \[bu] 2
+Four file formatting scripts:
+.RS 2
+.IP \[bu] 2
+\f[C]d2u(1df)\f[] converts DOS line endings in files to UNIX ones.
+.IP \[bu] 2
+\f[C]u2d(1df)\f[] converts UNIX line endings in files to DOS ones.
+.IP \[bu] 2
+\f[C]stbl(1df)\f[] strips a trailing blank line from the files in its
+arguments.
+.IP \[bu] 2
+\f[C]stws(1df)\f[] strips trailing spaces from the ends of lines of the
+files in its arguments.
+.RE
+.IP \[bu] 2
+Five stream formatting scripts:
+.RS 2
+.IP \[bu] 2
+\f[C]sd2u(1df)\f[] converts DOS line endings in streams to UNIX ones.
+.IP \[bu] 2
+\f[C]su2d(1df)\f[] converts UNIX line endings in streams to DOS ones.
+.IP \[bu] 2
+\f[C]tl(1df)\f[] tags input lines with a prefix or suffix, basically a
+\f[C]sed(1)\f[] shortcut.
+.IP \[bu] 2
+\f[C]tlcs(1df)\f[] executes a command and uses \f[C]tl(1df)\f[] to tag
+stdout and stderr lines, and color them if you want.
+.IP \[bu] 2
+\f[C]unf(1df)\f[] joins lines with leading spaces to the previous line.
+Intended for unfolding HTTP headers, but it should work for most RFC 822
+formats.
+.RE
+.IP \[bu] 2
+\f[C]apf(1df)\f[] prepends arguments to a command with ones read from a
+file, intended as a framework for shell wrappers or functions.
+.IP \[bu] 2
+\f[C]ax(1df)\f[] evaluates an awk expression given on the command line;
+this is intended as a quick way to test how Awk would interpret a given
+expression.
+.IP \[bu] 2
+\f[C]bel(1df)\f[] prints a terminal bell character.
+.IP \[bu] 2
+\f[C]br(1df)\f[] launches \f[C]$BROWSER\f[], or a more suitable
+application for an URL if it knows of one.
+.IP \[bu] 2
+\f[C]ca(1df)\f[] prints a count of its given arguments.
+.IP \[bu] 2
+\f[C]cf(1df)\f[] prints a count of entries in a given directory.
+.IP \[bu] 2
+\f[C]clrd(1df)\f[] sets up a per\-line file read, clearing the screen
+first.
+.IP \[bu] 2
+\f[C]clwr(1df)\f[] sets up a per\-line file write, clearing the screen
+before each line
+.IP \[bu] 2
+\f[C]dmp(1df)\f[] copies a pass(1) entry selected by \f[C]dmenu(1)\f[]
+to the X CLIPBOARD.
+.IP \[bu] 2
+\f[C]dub(1df)\f[] lists the biggest entries in a directory.
+.IP \[bu] 2
+\f[C]edda(1df)\f[] provides a means to run \f[C]ed(1)\f[] over a set of
+files preserving any options, mostly useful for scripts.
+.IP \[bu] 2
+\f[C]eds(1df)\f[] edits executable script files in \f[C]EDSPATH\f[],
+defaulting to \f[C]~/.local/bin\f[], for personal scripting snippets.
+.IP \[bu] 2
+\f[C]fgscr(1df)\f[] finds Git repositories in a directory root and
+scrubs them with \f[C]gscr(1df)\f[].
+.IP \[bu] 2
+\f[C]fnl(1df)\f[] runs a command and saves its output and error into
+temporary files, printing their paths and line counts
+.IP \[bu] 2
+\f[C]gms(1df)\f[] runs a set of \f[C]getmailrc\f[] files; does much the
+same thing as the script \f[C]getmails\f[] in the \f[C]getmail\f[]
+suite, but runs the requests in parallel and does up to three silent
+retries using \f[C]try(1df)\f[].
+.IP \[bu] 2
+\f[C]grc(1df)\f[] quietly tests whether the given directory appears to
+be a Git repository with pending changes.
+.IP \[bu] 2
+\f[C]gscr(1df)\f[] scrubs Git repositories.
+.IP \[bu] 2
+\f[C]han(1df)\f[] provides a \f[C]keywordprg\f[] for Vim's Bash script
+filetype that will look for \f[C]help\f[] topics.
+You could use it from the shell too.
+.IP \[bu] 2
+\f[C]igex(1df)\f[] wraps around a command to allow you to ignore error
+conditions that don't actually worry you, exiting with 0 anyway.
+.IP \[bu] 2
+\f[C]isgr(1df)\f[] quietly tests whether the given directory appears to
+be a Git repository.
+.IP \[bu] 2
+\f[C]jfc(1df)\f[] adds and commits lazily to a Git repository.
+.IP \[bu] 2
+\f[C]jfcd(1df)\f[] watches a directory for changes and runs
+\f[C]jfc(1df)\f[] if it sees any.
+.IP \[bu] 2
+\f[C]maybe(1df)\f[] is like \f[C]true(1)\f[] or \f[C]false(1)\f[]; given
+a probability of success, it exits with success or failure.
+Good for quick tests.
+.IP \[bu] 2
+\f[C]mkcp(1df)\f[] creates a directory and copies preceding arguments
+into it.
+.IP \[bu] 2
+\f[C]mkmv(1df)\f[] creates a directory and moves preceding arguments
+into it.
+.IP \[bu] 2
+\f[C]motd(1df)\f[] shows the system MOTD.
+.IP \[bu] 2
+\f[C]pa(1df)\f[] prints its arguments, one per line.
+.IP \[bu] 2
+\f[C]paz(1df)\f[] print its arguments terminated by NULL chars.
+.IP \[bu] 2
+\f[C]pit(1df)\f[] runs its input through a pager if its standard output
+looks like a terminal.
+.IP \[bu] 2
+\f[C]plmu(1df)\f[] retrieves a list of installed modules from
+\f[C]plenv\f[] (https://github.com/tokuhirom/plenv), filters out any
+modules in \f[C]~/.plenv/non\-cpan\-modules\f[], and updates them all.
+.IP \[bu] 2
+\f[C]rmrej(1df)\f[] deletes rejected hunks from a failed
+\f[C]patch(1)\f[] run.
+.IP \[bu] 2
+\f[C]shb(1df)\f[] attempts to build shebang lines for scripts from
+\f[C]$PATH\f[].
+.IP \[bu] 2
+\f[C]spr(1df)\f[] posts its input to the sprunge.us pastebin.
+.IP \[bu] 2
+\f[C]sshi(1df)\f[] prints human\-readable SSH connection details.
+.IP \[bu] 2
+\f[C]stex(1df)\f[] strips extensions from filenames.
+.IP \[bu] 2
+\f[C]sue(8df)\f[] execs \f[C]sudoedit(8)\f[] as the owner of all the
+file arguments given, perhaps in cases where you may not necessarily
+have \f[C]root\f[] \f[C]sudo(8)\f[] privileges.
+.IP \[bu] 2
+\f[C]td(1df)\f[] manages a to\-do file for you with \f[C]$EDITOR\f[] and
+\f[C]git(1)\f[]; I used to use Taskwarrior, but found it too complex and
+buggy.
+.IP \[bu] 2
+\f[C]try(1df)\f[] repeats a command up to a given number of times until
+it succeeds, only printing error output if all three attempts failed.
+Good for tolerating blips or temporary failures in \f[C]cron(8)\f[]
+scripts.
+.PP
+There's some silly stuff in \f[C]install\-games\f[]:
+.IP \[bu] 2
+\f[C]aaf(6df)\f[] gets a random ASCII Art
+Farts (http://www.asciiartfarts.com/) comic.
+.IP \[bu] 2
+\f[C]acq(6df)\f[] allows you to interrogate AC, the interplanetary
+computer.
+.IP \[bu] 2
+\f[C]kvlt(6df)\f[] translates input to emulate a style of typing unique
+to black metal communities on the internet.
+.IP \[bu] 2
+\f[C]rndn(6df)\f[] implements an esoteric random number generation
+algorithm.
+.IP \[bu] 2
+\f[C]xyzzy(6df)\f[] teleports to a marked location on the filesystem.
+.IP \[bu] 2
+\f[C]zs(6df)\f[] prepends \[lq]z\[rq] case\-appropriately to every
+occurrence of \[lq]s\[rq] in the text on its standard input.
+.SS Manuals
+.PP
+The \f[C]install\-bin\f[] and \f[C]install\-games\f[] targets install
+manuals for each script they install.
+There's also an \f[C]install\-dotfiles\-man\f[] target that uses
+\f[C]pandoc(1)\f[] to reformat this document as a manual page for
+section 7 (\f[C]dotfiles(7)\f[]) if you want that.
+I haven't made that install by default, because \f[C]pandoc(1)\f[] is a
+bit heavy.
+.PP
+If you want to use the manuals, you may need to add
+\f[C]~/.local/share/man\f[] to your \f[C]/etc/manpath\f[] configuration,
+depending on your system.
+.SS Testing
+.PP
+You can check that both sets of shell scripts are syntactically correct
+with \f[C]make\ check\-bash\f[], \f[C]make\ check\-sh\f[], or
+\f[C]make\ check\f[] for everything including the scripts in
+\f[C]bin\f[] and \f[C]games\f[].
+There's no proper test suite for the actual functionality (yet).
+.PP
+If you have ShellCheck (https://www.shellcheck.net/) and/or
+Perl::Critic (http://perlcritic.com/), there's a \f[C]lint\f[] target
+for the shell script files and Perl files respectively.
+The files don't need to pass that check to be installed.
+.SS Known issues
+.PP
+See ISSUES.markdown.
+.SS Note for previous visitors
+.PP
+Most of this repository's five\-year history was rewritten shortly after
+I moved it from GitHub to cgit, taking advantage of the upheaval to
+reduce its size and remove useless binary blobs and third\-party stuff
+that I never should have versioned anyway.
+If you've checked this out before, you'll probably need to do it again,
+and per\-commit links are likely to be broken.
+Sorry about that.
+.SS License
+.PP
+Public domain; see the included \f[C]UNLICENSE\f[] file.
+It's just configuration and simple scripts, so do whatever you like with
+it if any of it's useful to you.
+If you're feeling generous, please join and/or donate to a free software
+advocacy group, and let me know you did it because of this project:
+.IP \[bu] 2
+Free Software Foundation (https://www.fsf.org/)
+.IP \[bu] 2
+Software in the Public Interest (http://www.spi-inc.org/)
+.IP \[bu] 2
+OpenBSD Foundation (http://www.openbsdfoundation.org/)
+.SH AUTHORS
+Tom Ryder.
diff --git a/man/man7/dotfiles.7.header b/man/man7/dotfiles.7df.header
index b059b0fd..70cb6c2e 100644
--- a/man/man7/dotfiles.7.header
+++ b/man/man7/dotfiles.7df.header
@@ -1,3 +1,3 @@
-% DOTFILES(7)
+% DOTFILES(7df)
% Tom Ryder
% June 2016
diff --git a/man/man8/sue.8 b/man/man8/sue.8df
index a7701d23..f9633f51 100644
--- a/man/man8/sue.8
+++ b/man/man8/sue.8df
@@ -1,4 +1,4 @@
-.TH SUE 8 "September 2015" "Manual page for sue"
+.TH SUE 8df "September 2015" "Manual page for sue"
.SH NAME
.B sue
\- run sudoedit(8) as the arguments' owner
diff --git a/readline/inputrc b/readline/inputrc
index 2167ab70..9038c69a 100644
--- a/readline/inputrc
+++ b/readline/inputrc
@@ -65,7 +65,7 @@ $if Bash
"\el": "\C-uls -Al\C-j\C-y"
# Alt-M (for muxer) to run tmux
"\em": "\C-utmux\C-j\C-y"
- # Alt-T (for todo) to edit my to-do file with td(1)
+ # Alt-T (for todo) to edit my to-do file with td(1df)
"\et": "\C-atd\C-j\C-y"
# Ctrl-Alt-B to move backward a shell-quoted word
diff --git a/vim/after/ftplugin/sh.vim b/vim/after/ftplugin/sh.vim
index 81cbe6ef..96ad8e6d 100644
--- a/vim/after/ftplugin/sh.vim
+++ b/vim/after/ftplugin/sh.vim
@@ -5,7 +5,7 @@ let g:sh_isk='@,48-57,_,192-255,.,/'
" Assume POSIX, I never write Bourne
let g:is_posix=1
-" Use han(1) as a man(1) wrapper for Bash files if available
+" Use han(1df) as a man(1) wrapper for Bash files if available
if exists('b:is_bash') && executable('han')
setlocal keywordprg=han
endif