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.
-/* $Id: chars.c,v 1.42 2011/05/15 15:47:46 kristaps Exp $ */
+/* $Id: chars.c,v 1.43 2011/05/15 22:29:50 kristaps Exp $ */
/*
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
/*
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
#include <string.h>
#include "mandoc.h"
#include <string.h>
#include "mandoc.h"
#define PRINT_HI 126
#define PRINT_LO 32
#define PRINT_HI 126
#define PRINT_LO 32
+ if ((i = mandoc_strntou(p, sz, 10)) < 0)
- i = atoi(p);
- /* LINTED */
return(isprint(i) ? i : '\0');
}
return(isprint(i) ? i : '\0');
}
-/* $Id: term.c,v 1.190 2011/05/15 15:47:46 kristaps Exp $ */
+/* $Id: term.c,v 1.191 2011/05/15 22:29:50 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
#include "term.h"
#include "main.h"
#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)
void
term_free(struct termp *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)
{
void
term_fontlast(struct termp *p)
{
/*
* 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
/*
* 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
void
term_word(struct termp *p, const char *word)
{
void
term_word(struct termp *p, const char *word)
{
+ const char *seq, *cp;
+ char c;
int sz;
size_t ssz;
enum mandoc_esc esc;
int sz;
size_t ssz;
enum mandoc_esc esc;
switch (esc) {
case (ESCAPE_NUMBERED):
switch (esc) {
case (ESCAPE_NUMBERED):
+ if ('\0' != (c = mchars_num2char(seq, sz)))
+ encode(p, &c, 1);
break;
case (ESCAPE_PREDEF):
break;
case (ESCAPE_PREDEF):
+ cp = mchars_res2str(p->symtab, seq, sz, &ssz);
+ if (NULL != cp)
+ encode(p, cp, ssz);
break;
case (ESCAPE_SPECIAL):
break;
case (ESCAPE_SPECIAL):
+ 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);
break;
case (ESCAPE_FONTBOLD):
term_fontrepl(p, TERMFONT_BOLD);
static void
adjbuf(struct termp *p, int sz)
{
static void
adjbuf(struct termp *p, int sz)
{
(p->buf, sizeof(int) * (size_t)p->maxcols);
}
(p->buf, sizeof(int) * (size_t)p->maxcols);
}
static void
bufferc(struct termp *p, char c)
{
static void
bufferc(struct termp *p, char c)
{
static void
encode(struct termp *p, const char *word, size_t sz)
{
static void
encode(struct termp *p, const char *word, size_t sz)
{
size_t
term_len(const struct termp *p, size_t sz)
{
size_t
term_len(const struct termp *p, size_t sz)
{