From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (kristaps@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id p4FFlkEg016295 for ; Sun, 15 May 2011 11:47:46 -0400 (EDT) Received: (from kristaps@localhost) by krisdoz.my.domain (8.14.3/8.14.3/Submit) id p4FFlkOp014022; Sun, 15 May 2011 11:47:46 -0400 (EDT) Date: Sun, 15 May 2011 11:47:46 -0400 (EDT) Message-Id: <201105151547.p4FFlkOp014022@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: kristaps@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Fix missing support for \N'n' when calculating string widths in X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- Fix missing support for \N'n' when calculating string widths in -Tascii (oops). Do the same for -Thtml (oops^2). Modified Files: -------------- mdocml: chars.c html.c term.c Revision Data ------------- Index: term.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term.c,v retrieving revision 1.189 retrieving revision 1.190 diff -Lterm.c -Lterm.c -u -p -r1.189 -r1.190 --- term.c +++ term.c @@ -605,7 +605,7 @@ size_t 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' }; @@ -624,9 +624,15 @@ term_strlen(const struct termp *p, const 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); @@ -642,7 +648,6 @@ term_strlen(const struct termp *p, const rsz = ssz; break; default: - rhs = NULL; break; } Index: chars.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/chars.c,v retrieving revision 1.41 retrieving revision 1.42 diff -Lchars.c -Lchars.c -u -p -r1.41 -r1.42 --- chars.c +++ chars.c @@ -141,6 +141,7 @@ mchars_res2cp(struct mchars *arg, const * 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) Index: html.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/html.c,v retrieving revision 1.138 retrieving revision 1.139 diff -Lhtml.c -Lhtml.c -u -p -r1.138 -r1.139 --- html.c +++ html.c @@ -316,9 +316,10 @@ html_strlen(const char *cp) 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; -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv