(oops). Do the same for -Thtml (oops^2).
-/* $Id: chars.c,v 1.41 2011/05/14 17:54:42 kristaps Exp $ */
+/* $Id: chars.c,v 1.42 2011/05/15 15:47:46 kristaps Exp $ */
/*
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
* This can only be a printable character (i.e., alnum, punct, space) so
* prevent the character from ruining our state (backspace, newline, and
* so on).
+ * If the character is illegal, returns '\0'.
*/
char
mchars_num2char(const char *p, size_t sz)
-/* $Id: html.c,v 1.138 2011/05/14 16:28:23 kristaps Exp $ */
+/* $Id: html.c,v 1.139 2011/05/15 15:47:46 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
switch (mandoc_escape(&cp, &seq, &ssz)) {
case (ESCAPE_ERROR):
return(sz);
+ case (ESCAPE_NUMBERED):
+ /* FALLTHROUGH */
case (ESCAPE_PREDEF):
- sz++;
- break;
+ /* FALLTHROUGH */
case (ESCAPE_SPECIAL):
sz++;
break;
-/* $Id: term.c,v 1.189 2011/05/15 14:50:01 kristaps Exp $ */
+/* $Id: term.c,v 1.190 2011/05/15 15:47:46 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
term_strlen(const struct termp *p, const char *cp)
{
size_t sz, rsz, i;
- int ssz;
+ int ssz, c;
const char *seq, *rhs;
static const char rej[] = { '\\', ASCII_HYPH, ASCII_NBRSP, '\0' };
switch (*cp) {
case ('\\'):
cp++;
+ rhs = NULL;
switch (mandoc_escape(&cp, &seq, &ssz)) {
case (ESCAPE_ERROR):
return(sz);
+ case (ESCAPE_NUMBERED):
+ c = mchars_num2char(seq, ssz);
+ if ('\0' != c)
+ sz += (*p->width)(p, c);
+ break;
case (ESCAPE_PREDEF):
rhs = mchars_res2str
(p->symtab, seq, ssz, &rsz);
rsz = ssz;
break;
default:
- rhs = NULL;
break;
}