diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2018-12-15 19:30:25 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2018-12-15 19:30:25 +0000 |
commit | d672f8cb82878baf3834e938c4c416f4493952cf (patch) | |
tree | a46f3c1570ef9a8cdb5d67fd75e3bb77c8e4068f /html.c | |
parent | bb4f86d616ee99eb82c0875af27b9d8a216ecfdc (diff) | |
download | mandoc-d672f8cb82878baf3834e938c4c416f4493952cf.tar.gz mandoc-d672f8cb82878baf3834e938c4c416f4493952cf.tar.zst mandoc-d672f8cb82878baf3834e938c4c416f4493952cf.zip |
Several improvements to escape sequence handling.
* Add the missing special character \_ (underscore).
* Partial implementations of \a (leader character)
and \E (uninterpreted escape character).
* Parse and ignore \r (reverse line feed).
* Add a WARNING message about undefined escape sequences.
* Add an UNSUPP message about unsupported escape sequences.
* Mark \! and \? (transparent throughput)
and \O (suppress output) as unsupported.
* Treat the various variants of zero-width spaces as one-byte escape
sequences rather than as special characters, to avoid defining bogus
forms with square brackets.
* For special characters with one-byte names, do not define bogus
forms with square brackets, except for \[-], which is valid.
* In the form with square brackets, undefined special characters do not
fall back to printing the name verbatim, not even for one-byte names.
* Starting a special character name with a blank is an error.
* Undefined escape sequences never abort formatting of the input
string, not even in HTML output mode.
* Document the newly handled escapes, and a few that were missing.
* Regression tests for most of the above.
Diffstat (limited to 'html.c')
-rw-r--r-- | html.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -1,4 +1,4 @@ -/* $Id: html.c,v 1.245 2018/12/04 18:29:38 schwarze Exp $ */ +/* $Id: html.c,v 1.246 2018/12/15 19:30:26 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2011-2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org> @@ -402,9 +402,6 @@ print_encode(struct html *h, const char *p, const char *pend, int norecurse) continue; esc = mandoc_escape(&p, &seq, &len); - if (ESCAPE_ERROR == esc) - break; - switch (esc) { case ESCAPE_FONT: case ESCAPE_FONTPREV: @@ -422,6 +419,8 @@ print_encode(struct html *h, const char *p, const char *pend, int norecurse) case ESCAPE_SKIPCHAR: h->flags |= HTML_SKIPCHAR; continue; + case ESCAPE_ERROR: + continue; default: break; } @@ -446,6 +445,9 @@ print_encode(struct html *h, const char *p, const char *pend, int norecurse) if (c <= 0) continue; break; + case ESCAPE_UNDEF: + c = *seq; + break; case ESCAPE_DEVICE: print_word(h, "html"); continue; |