=================================================================== RCS file: /cvs/mandoc/term.c,v retrieving revision 1.93 retrieving revision 1.94 diff -u -p -r1.93 -r1.94 --- mandoc/term.c 2009/07/24 11:54:25 1.93 +++ mandoc/term.c 2009/07/27 12:02:49 1.94 @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.93 2009/07/24 11:54:25 kristaps Exp $ */ +/* $Id: term.c,v 1.94 2009/07/27 12:02:49 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -34,6 +34,8 @@ static void term_free(struct termp *); static void term_pescape(struct termp *, const char **); static void term_nescape(struct termp *, const char *, size_t); +static void term_sescape(struct termp *, + const char *, size_t); static void term_chara(struct termp *, char); static void term_encodea(struct termp *, char); static int term_isopendelim(const char *); @@ -399,12 +401,29 @@ term_nescape(struct termp *p, const char *word, size_t rhs = term_a2ascii(p->symtab, word, len, &sz); - if (rhs) - for (i = 0; i < (int)sz; i++) - term_encodea(p, rhs[i]); + if (NULL == rhs) + return; + for (i = 0; i < (int)sz; i++) + term_encodea(p, rhs[i]); } +static void +term_sescape(struct termp *p, const char *word, size_t len) +{ + const char *rhs; + size_t sz; + int i; + + rhs = term_a2res(p->symtab, word, len, &sz); + + if (NULL == rhs) + return; + for (i = 0; i < (int)sz; i++) + term_encodea(p, rhs[i]); +} + + /* * Handle an escape sequence: determine its length and pass it to the * escape-symbol look table. Note that we assume mdoc(3) has validated @@ -448,13 +467,13 @@ term_pescape(struct termp *p, const char **word) return; } - term_nescape(p, wp, 2); + term_sescape(p, wp, 2); *word = ++wp; return; case ('['): break; default: - term_nescape(p, wp, 1); + term_sescape(p, wp, 1); *word = wp; return; }