From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (kristaps@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id p4QBwPFj011925 for ; Thu, 26 May 2011 07:58:26 -0400 (EDT) Received: (from kristaps@localhost) by krisdoz.my.domain (8.14.3/8.14.3/Submit) id p4QBwPs9029826; Thu, 26 May 2011 07:58:25 -0400 (EDT) Date: Thu, 26 May 2011 07:58:25 -0400 (EDT) Message-Id: <201105261158.p4QBwPs9029826@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: kristaps@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: If a predefined string is missing, emit a warning and make it an X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- If a predefined string is missing, emit a warning and make it an empty string instead of passing it along to libmdoc/libman (where it'll be printed verbatim, now). This is what groff seems to do, too (of course without a warning). Modified Files: -------------- mdocml: roff.c Revision Data ------------- Index: roff.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/roff.c,v retrieving revision 1.141 retrieving revision 1.142 diff -Lroff.c -Lroff.c -u -p -r1.141 -r1.142 --- roff.c +++ roff.c @@ -150,7 +150,7 @@ static const char *roff_getstrn(const st static enum rofferr roff_line_ignore(ROFF_ARGS); static enum rofferr roff_nr(ROFF_ARGS); static int roff_res(struct roff *, - char **, size_t *, int); + char **, size_t *, int, int); static enum rofferr roff_rm(ROFF_ARGS); static void roff_setstr(struct roff *, const char *, const char *, int); @@ -387,7 +387,7 @@ roff_alloc(struct regset *regs, struct m * is processed. */ static int -roff_res(struct roff *r, char **bufp, size_t *szp, int pos) +roff_res(struct roff *r, char **bufp, size_t *szp, int ln, int pos) { const char *stesc; /* start of an escape sequence ('\\') */ const char *stnam; /* start of the name, after "[(*" */ @@ -454,8 +454,9 @@ roff_res(struct roff *r, char **bufp, si res = roff_getstrn(r, stnam, (size_t)i); if (NULL == res) { - cp -= maxl ? 1 : 0; - continue; + /* TODO: keep track of the correct position. */ + mandoc_msg(MANDOCERR_BADESCAPE, r->parse, ln, pos, NULL); + res = ""; } /* Replace the escape sequence by the string. */ @@ -491,7 +492,7 @@ roff_parseln(struct roff *r, int ln, cha * words to fill in. */ - if (r->first_string && ! roff_res(r, bufp, szp, pos)) + if (r->first_string && ! roff_res(r, bufp, szp, ln, pos)) return(ROFF_REPARSE); ppos = pos; -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv