source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Remove function calls to res() and so forth in term_word().
@ 2011-05-15 22:29 kristaps
  0 siblings, 0 replies; only message in thread
From: kristaps @ 2011-05-15 22:29 UTC (permalink / raw)
  To: source

Log Message:
-----------
Remove function calls to res() and so forth in term_word().  These were
only used once and simply bloated the binary.  Also fix mchars_num2char
to correctly render the character instead of using atoi().  This makes
the conversation more strict, but it's more correct.

Modified Files:
--------------
    mdocml:
        chars.c
        term.c

Revision Data
-------------
Index: term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term.c,v
retrieving revision 1.190
retrieving revision 1.191
diff -Lterm.c -Lterm.c -u -p -r1.190 -r1.191
--- term.c
+++ term.c
@@ -33,12 +33,9 @@
 #include "term.h"
 #include "main.h"
 
-static	void		  spec(struct termp *, const char *, size_t);
-static	void		  res(struct termp *, const char *, size_t);
-static	void		  bufferc(struct termp *, char);
-static	void		  adjbuf(struct termp *p, int);
-static	void		  encode(struct termp *, const char *, size_t);
-
+static	void		 adjbuf(struct termp *p, int);
+static	void		 bufferc(struct termp *, char);
+static	void		 encode(struct termp *, const char *, size_t);
 
 void
 term_free(struct termp *p)
@@ -344,43 +341,6 @@ term_vspace(struct termp *p)
 	(*p->endline)(p);
 }
 
-
-static void
-numbered(struct termp *p, const char *word, size_t len)
-{
-	char		 c;
-
-	if ('\0' != (c = mchars_num2char(word, len)))
-		encode(p, &c, 1);
-}
-
-
-static void
-spec(struct termp *p, const char *word, size_t len)
-{
-	const char	*rhs;
-	size_t		 sz;
-
-	rhs = mchars_spec2str(p->symtab, word, len, &sz);
-	if (rhs) 
-		encode(p, rhs, sz);
-	else if (1 == len)
-		encode(p, word, len);
-}
-
-
-static void
-res(struct termp *p, const char *word, size_t len)
-{
-	const char	*rhs;
-	size_t		 sz;
-
-	rhs = mchars_res2str(p->symtab, word, len, &sz);
-	if (rhs)
-		encode(p, rhs, sz);
-}
-
-
 void
 term_fontlast(struct termp *p)
 {
@@ -445,7 +405,6 @@ term_fontpop(struct termp *p)
 	p->fonti--;
 }
 
-
 /*
  * Handle pwords, partial words, which may be either a single word or a
  * phrase that cannot be broken down (such as a literal string).  This
@@ -454,7 +413,8 @@ term_fontpop(struct termp *p)
 void
 term_word(struct termp *p, const char *word)
 {
-	const char	*seq;
+	const char	*seq, *cp;
+	char		 c;
 	int		 sz;
 	size_t		 ssz;
 	enum mandoc_esc	 esc;
@@ -492,13 +452,20 @@ term_word(struct termp *p, const char *w
 
 		switch (esc) {
 		case (ESCAPE_NUMBERED):
-			numbered(p, seq, sz);
+			if ('\0' != (c = mchars_num2char(seq, sz)))
+				encode(p, &c, 1);
 			break;
 		case (ESCAPE_PREDEF):
-			res(p, seq, sz);
+			cp = mchars_res2str(p->symtab, seq, sz, &ssz);
+			if (NULL != cp)
+				encode(p, cp, ssz);
 			break;
 		case (ESCAPE_SPECIAL):
-			spec(p, seq, sz);
+			cp = mchars_spec2str(p->symtab, seq, sz, &ssz);
+			if (NULL != cp) 
+				encode(p, cp, ssz);
+			else if (1 == ssz)
+				encode(p, seq, sz);
 			break;
 		case (ESCAPE_FONTBOLD):
 			term_fontrepl(p, TERMFONT_BOLD);
@@ -522,7 +489,6 @@ term_word(struct termp *p, const char *w
 	}
 }
 
-
 static void
 adjbuf(struct termp *p, int sz)
 {
@@ -536,7 +502,6 @@ adjbuf(struct termp *p, int sz)
 		(p->buf, sizeof(int) * (size_t)p->maxcols);
 }
 
-
 static void
 bufferc(struct termp *p, char c)
 {
@@ -547,7 +512,6 @@ bufferc(struct termp *p, char c)
 	p->buf[p->col++] = c;
 }
 
-
 static void
 encode(struct termp *p, const char *word, size_t sz)
 {
@@ -591,7 +555,6 @@ encode(struct termp *p, const char *word
 		p->buf[p->col++] = word[i];
 	}
 }
-
 
 size_t
 term_len(const struct termp *p, size_t sz)
Index: chars.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/chars.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -Lchars.c -Lchars.c -u -p -r1.42 -r1.43
--- chars.c
+++ chars.c
@@ -26,6 +26,7 @@
 #include <string.h>
 
 #include "mandoc.h"
+#include "libmandoc.h"
 
 #define	PRINT_HI	 126
 #define	PRINT_LO	 32
@@ -148,11 +149,9 @@ mchars_num2char(const char *p, size_t sz
 {
 	int		  i;
 
-	if (sz > 3)
+	if ((i = mandoc_strntou(p, sz, 10)) < 0)
 		return('\0');
 
-	i = atoi(p);
-	/* LINTED */
 	return(isprint(i) ? i : '\0');
 }
 
--
 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 22:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-15 22:29 mdocml: Remove function calls to res() and so forth in term_word() 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).