source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: kristaps@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: Remove function calls to res() and so forth in term_word().
Date: Sun, 15 May 2011 18:29:50 -0400 (EDT)	[thread overview]
Message-ID: <201105152229.p4FMToZ6007627@krisdoz.my.domain> (raw)

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

                 reply	other threads:[~2011-05-15 22:29 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201105152229.p4FMToZ6007627@krisdoz.my.domain \
    --to=kristaps@mdocml.bsd.lv \
    --cc=source@mdocml.bsd.lv \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).