CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]        2019/02/06 13:54:28

Modified files:
        usr.bin/mandoc : roff.c 
        regress/usr.bin/mandoc/roff/cond: register.in register.out_ascii 
                                          string.in string.out_ascii 
        regress/usr.bin/mandoc/roff/de: Makefile 
        regress/usr.bin/mandoc/roff/ds: Makefile 
        regress/usr.bin/mandoc/roff/nr: Makefile 
        regress/usr.bin/mandoc/roff/rn: Makefile 
Added files:
        regress/usr.bin/mandoc/roff/de: tab.in tab.out_ascii 
        regress/usr.bin/mandoc/roff/ds: tab.in tab.out_ascii 
        regress/usr.bin/mandoc/roff/nr: tab.in tab.out_ascii 
        regress/usr.bin/mandoc/roff/rn: tab.in tab.out_ascii 
                                        tab.out_lint 

Log message:
Let roff_getname() end the roff identifier at a tab character
and audit all its callers whether termination is handled correctly.

Resulting improvements:
* An escape or tab ending the macro name in a macro invocation
is discarded, and argument processing is started after it.
* An escape or tab ending a name in ".if d" and ".if r" is preserved.
* An escape ending a name in ".ds" causes the whole request to be ignored.
* A tab ending a name in ".ds" becomes part of the string.
* An escape or tab ending a name in ".rm"
causes the rest of the line to be ignored.
* An escape or tab ending the first name in ".als", ".rn", or ".nr"
causes the whole request to be ignored.

Kurt Jaeger <pi at FreeBSD> made me aware of
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235456#c0
and in that bug report, comment 0 item (3) is a special case
of this class of issues.

Yes, the "mh" manual pages are no doubt among the worst on the planet.

Reply via email to