Complete rewrite of the lexer in a single function with four operation
authorschwarze <schwarze@openbsd.org>
Mon, 26 Jun 2017 19:53:00 +0000 (19:53 +0000)
committerschwarze <schwarze@openbsd.org>
Mon, 26 Jun 2017 19:53:00 +0000 (19:53 +0000)
commit6538659f99b578041ba4abf41e872617663f7686
tree9622c4783df26acafa8b54d360a5a1b1f8d3b22c
parentb57ffdab91b38cc6a9f2b476c00b2848443c00ce
Complete rewrite of the lexer in a single function with four operation
modes instead of four functions, resulting in considerable
simplification, fifty lines less of code, fifteen fewer automatic
variables, and several bug fixes, for example:

1. The delim control statement consumes exactly two bytes of input,
requires no whitespace after these two bytes, and does not treat
quotes in any special way.
2. If the argument of left, right, gfont, gsize, or size is defined
as an alias, only the first word of the value is used as the
delimiter, font name, or font size.
3. If a back, fwd, down, or up keyword is followed by another keyword
instead of the required number, GNU eqn does nothing useful, but
typically errors out.  So no need to have special handling (with
an ugly goto!) for it in mandoc.

Also getting rid of one pointless static buffer and twelve redundant
calls to strlcpy(3).
usr.bin/mandoc/eqn.c
usr.bin/mandoc/libroff.h