which gives me the ability to do verbose and nonverbose test
suite running (`VERBOSE=1 make test` is the traditional output
now, and `make test` just gives pass/fail on each .t file)
1. two security holes (scripting attacks via
stupid oversights that I never had test cases
for) consisting of
* if explicit html is forbidden, I was putting out
a `<` then streaming out text until I reached
a '>'. So if someone did `<hi <script>attack<hi</script>`,
it would work, and
* I was being overly greedy about escaping (with \\)
`"` and `'`, so a malformed title string could contain
arbitrary text, up to and including scripts.
2. three markdown.pl compatability cases
* lines at the end of a paragraph never get `<br/>`'ed,
* blockquotes can be indented up to 3 spaces,
* SETEXT-style header lines can have trailing spaces,
and tweak one more markdown.pl compatability case, in
that list items absorb new paragraphs if they're indented
at all. The reference implementation is somewhat pathological
about how it treats nested lists (in a way that I do not wish
to follow) but I changed my "subsequent paragraph snarf" code
in `markdown.c` to absorb paragraphs indented by at least the
indent level of the list (so if the list is indented two spaces,
following paragraphs indented two spaces will be absorbed.)
exist on plan9) and `grep` (with appropriate backslashing) instead
of `fgrep` (`fgrep` doesn't exist on plan9) or `grep -F` (`-F` option
doesn't exist on plan9?)
2. move the source for `echo` and `cols` into the new `tools` directory.
is for `<`automatic links`>`, the new function `maybe_autolink()` is
for reddit-style inline autolinks, and the new function
`process_possible_link()` handles the formatting of the token picked
up by `maybe_tag_or_link()` or `maybe_autolink()`.
2. Fix a bug in `ishdr()` so that it won't pick up a line containing
a single `#` and emit it as a `<h0>`.
3. Modify the behavior of backslash escaping in `parenthetical()` so
that all punctuation can be escaped.
1. don't be aggressive when looking for etx headers. Lines
beginning with # WILL be an etx header, no matter what.
2. don't forget to trim trailing spaces.
3. The single line `##` translates to `<h1>#</h1>`
2. Add a test for a null list.
3. modify the header detector to not eat space both forward and backwards
(causes single-character headers to be ignored.)