source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Fix missing support for \N'n' when calculating string widths in
@ 2011-05-15 15:47 kristaps
  0 siblings, 0 replies; only message in thread
From: kristaps @ 2011-05-15 15:47 UTC (permalink / raw)
  To: source

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-05-15 15:47 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-15 15:47 mdocml: Fix missing support for \N'n' when calculating string widths in kristaps

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).