* mdocml: Make the character table available to libroff so it can check
@ 2014-10-28 17:36 schwarze
0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-10-28 17:36 UTC (permalink / raw)
To: source
Log Message:
-----------
Make the character table available to libroff so it can check the
validity of character escape names and warn about unknown ones.
This requires mchars_spec2cp() to report unknown names again.
Fortunately, that doesn't require changing the calling code because
according to groff, invalid character escapes should not produce
output anyway, and now that we warn about them, that's fine.
Modified Files:
--------------
mdocml:
cgi.c
chars.c
demandoc.c
html.c
html.h
libmandoc.h
main.c
main.h
man_term.c
mandoc.3
mandoc.h
mandocdb.c
mdoc_term.c
read.c
roff.c
term.c
term.h
term_ascii.c
term_ps.c
Revision Data
-------------
Index: html.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/html.h,v
retrieving revision 1.66
retrieving revision 1.67
diff -Lhtml.h -Lhtml.h -u -p -r1.66 -r1.67
--- html.h
+++ html.h
@@ -133,7 +133,7 @@ struct html {
struct tagq tags; /* stack of open tags */
struct rofftbl tbl; /* current table */
struct tag *tblt; /* current open table scope */
- struct mchars *symtab; /* character-escapes */
+ const struct mchars *symtab; /* character table */
char *base_man; /* base for manpage href */
char *base_includes; /* base for include href */
char *style; /* style-sheet URI */
Index: chars.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/chars.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -Lchars.c -Lchars.c -u -p -r1.63 -r1.64
--- chars.c
+++ chars.c
@@ -104,7 +104,7 @@ mchars_spec2cp(const struct mchars *arg,
const struct ln *ln;
ln = find(arg, p, sz);
- return(ln != NULL ? ln->unicode : sz == 1 ? *p : 0xFFFD);
+ return(ln != NULL ? ln->unicode : sz == 1 ? (unsigned char)*p : -1);
}
char
Index: term.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term.h,v
retrieving revision 1.104
retrieving revision 1.105
diff -Lterm.h -Lterm.h -u -p -r1.104 -r1.105
--- term.h
+++ term.h
@@ -85,7 +85,7 @@ struct termp {
#define TERMP_SPLIT (1 << 13) /* Break line before .An. */
int *buf; /* Output buffer. */
enum termenc enc; /* Type of encoding. */
- struct mchars *symtab; /* Encoded-symbol table. */
+ const struct mchars *symtab; /* Character table. */
enum termfont fontl; /* Last font set. */
enum termfont fontq[10]; /* Symmetric fonts. */
int fonti; /* Index of font stack. */
Index: term_ascii.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term_ascii.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -Lterm_ascii.c -Lterm_ascii.c -u -p -r1.37 -r1.38
--- term_ascii.c
+++ term_ascii.c
@@ -36,7 +36,8 @@
#include "term.h"
#include "main.h"
-static struct termp *ascii_init(enum termenc, char *);
+static struct termp *ascii_init(enum termenc,
+ const struct mchars *, char *);
static double ascii_hspan(const struct termp *,
const struct roffsu *);
static size_t ascii_width(const struct termp *, int);
@@ -56,7 +57,7 @@ static size_t locale_width(const stru
static struct termp *
-ascii_init(enum termenc enc, char *outopts)
+ascii_init(enum termenc enc, const struct mchars *mchars, char *outopts)
{
const char *toks[5];
char *v;
@@ -64,6 +65,7 @@ ascii_init(enum termenc enc, char *outop
p = mandoc_calloc(1, sizeof(struct termp));
+ p->symtab = mchars;
p->tabwidth = 5;
p->defrmargin = p->lastrmargin = 78;
@@ -131,24 +133,24 @@ ascii_init(enum termenc enc, char *outop
}
void *
-ascii_alloc(char *outopts)
+ascii_alloc(const struct mchars *mchars, char *outopts)
{
- return(ascii_init(TERMENC_ASCII, outopts));
+ return(ascii_init(TERMENC_ASCII, mchars, outopts));
}
void *
-utf8_alloc(char *outopts)
+utf8_alloc(const struct mchars *mchars, char *outopts)
{
- return(ascii_init(TERMENC_UTF8, outopts));
+ return(ascii_init(TERMENC_UTF8, mchars, outopts));
}
void *
-locale_alloc(char *outopts)
+locale_alloc(const struct mchars *mchars, char *outopts)
{
- return(ascii_init(TERMENC_LOCALE, outopts));
+ return(ascii_init(TERMENC_LOCALE, mchars, outopts));
}
static void
Index: mandoc.3
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mandoc.3,v
retrieving revision 1.26
retrieving revision 1.27
diff -Lmandoc.3 -Lmandoc.3 -u -p -r1.26 -r1.27
--- mandoc.3
+++ mandoc.3
@@ -52,6 +52,7 @@
.Fa "int options"
.Fa "enum mandoclevel wlevel"
.Fa "mandocmsg mmsg"
+.Fa "const struct mchars *mchars"
.Fa "char *defos"
.Fc
.Ft void
@@ -173,6 +174,8 @@ The following describes a general parse
.Bl -enum
.It
initiate a parsing sequence with
+.Xr mchars_alloc 3
+and
.Fn mparse_alloc ;
.It
parse files or file descriptors with
@@ -187,7 +190,9 @@ or
.Fn man_node ;
.It
free all allocated memory with
-.Fn mparse_free ,
+.Fn mparse_free
+and
+.Xr mchars_free 3 ,
or invoke
.Fn mparse_reset
and parse new files.
@@ -208,6 +213,12 @@ A fatal error, error, or warning message
A classification of an
.Vt "enum mandocerr"
as regards system operation.
+.It Vt "struct mchars"
+An opaque pointer to a a character table.
+Created with
+.Xr mchars_alloc 3
+and freed with
+.Xr mchars_free 3 .
.It Vt "struct mparse"
An opaque pointer to a running parse sequence.
Created with
@@ -332,6 +343,9 @@ A callback function to handle errors and
See
.Pa main.c
for an example.
+.It Ar mchars
+An opaque pointer to a a character table obtained from
+.Xr mchars_alloc 3 .
.It Ar defos
A default string for the
.Xr mdoc 7
Index: html.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/html.c,v
retrieving revision 1.179
retrieving revision 1.180
diff -Lhtml.c -Lhtml.c -u -p -r1.179 -r1.180
--- html.c
+++ html.c
@@ -127,11 +127,10 @@ static int print_escape(char);
static int print_encode(struct html *, const char *, int);
static void print_metaf(struct html *, enum mandoc_esc);
static void print_attr(struct html *, const char *, const char *);
-static void *ml_alloc(char *);
-static void *
-ml_alloc(char *outopts)
+void *
+html_alloc(const struct mchars *mchars, char *outopts)
{
struct html *h;
const char *toks[5];
@@ -146,7 +145,7 @@ ml_alloc(char *outopts)
h = mandoc_calloc(1, sizeof(struct html));
h->tags.head = NULL;
- h->symtab = mchars_alloc();
+ h->symtab = mchars;
while (outopts && *outopts)
switch (getsubopt(&outopts, UNCONST(toks), &v)) {
@@ -169,20 +168,6 @@ ml_alloc(char *outopts)
return(h);
}
-void *
-html_alloc(char *outopts)
-{
-
- return(ml_alloc(outopts));
-}
-
-void *
-xhtml_alloc(char *outopts)
-{
-
- return(ml_alloc(outopts));
-}
-
void
html_free(void *p)
{
@@ -195,9 +180,6 @@ html_free(void *p)
h->tags.head = tag->next;
free(tag);
}
-
- if (h->symtab)
- mchars_free(h->symtab);
free(h);
}
Index: term_ps.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term_ps.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -Lterm_ps.c -Lterm_ps.c -u -p -r1.67 -r1.68
--- term_ps.c
+++ term_ps.c
@@ -106,7 +106,7 @@ static void ps_printf(struct termp *,
static void ps_putchar(struct termp *, char);
static void ps_setfont(struct termp *, enum termfont);
static void ps_setwidth(struct termp *, int, size_t);
-static struct termp *pspdf_alloc(char *);
+static struct termp *pspdf_alloc(const struct mchars *, char *);
static void pdf_obj(struct termp *, size_t);
/*
@@ -507,29 +507,29 @@ static const struct font fonts[TERMFONT_
};
void *
-pdf_alloc(char *outopts)
+pdf_alloc(const struct mchars *mchars, char *outopts)
{
struct termp *p;
- if (NULL != (p = pspdf_alloc(outopts)))
+ if (NULL != (p = pspdf_alloc(mchars, outopts)))
p->type = TERMTYPE_PDF;
return(p);
}
void *
-ps_alloc(char *outopts)
+ps_alloc(const struct mchars *mchars, char *outopts)
{
struct termp *p;
- if (NULL != (p = pspdf_alloc(outopts)))
+ if (NULL != (p = pspdf_alloc(mchars, outopts)))
p->type = TERMTYPE_PS;
return(p);
}
static struct termp *
-pspdf_alloc(char *outopts)
+pspdf_alloc(const struct mchars *mchars, char *outopts)
{
struct termp *p;
unsigned int pagex, pagey;
@@ -539,6 +539,7 @@ pspdf_alloc(char *outopts)
char *v;
p = mandoc_calloc(1, sizeof(struct termp));
+ p->symtab = mchars;
p->enc = TERMENC_ASCII;
p->ps = mandoc_calloc(1, sizeof(struct termp_ps));
Index: mandoc.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mandoc.h,v
retrieving revision 1.166
retrieving revision 1.167
diff -Lmandoc.h -Lmandoc.h -u -p -r1.166 -r1.167
--- mandoc.h
+++ mandoc.h
@@ -433,7 +433,7 @@ int mchars_spec2cp(const struct mchar
const char *mchars_spec2str(const struct mchars *,
const char *, size_t, size_t *);
struct mparse *mparse_alloc(int, enum mandoclevel, mandocmsg,
- const char *);
+ const struct mchars *, const char *);
void mparse_free(struct mparse *);
void mparse_keep(struct mparse *);
enum mandoclevel mparse_open(struct mparse *, int *, const char *,
Index: cgi.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/cgi.c,v
retrieving revision 1.99
retrieving revision 1.100
diff -Lcgi.c -Lcgi.c -u -p -r1.99 -r1.100
--- cgi.c
+++ cgi.c
@@ -824,6 +824,7 @@ static void
format(const struct req *req, const char *file)
{
struct mparse *mp;
+ struct mchars *mchars;
struct mdoc *mdoc;
struct man *man;
void *vp;
@@ -837,8 +838,9 @@ format(const struct req *req, const char
return;
}
+ mchars = mchars_alloc();
mp = mparse_alloc(MPARSE_SO, MANDOCLEVEL_FATAL, NULL,
- req->q.manpath);
+ mchars, req->q.manpath);
rc = mparse_readfd(mp, fd, file);
close(fd);
@@ -864,10 +866,11 @@ format(const struct req *req, const char
req->q.manpath, file);
pg_error_internal();
mparse_free(mp);
+ mchars_free(mchars);
return;
}
- vp = html_alloc(opts);
+ vp = html_alloc(mchars, opts);
if (NULL != mdoc)
html_mdoc(vp, mdoc);
@@ -876,6 +879,7 @@ format(const struct req *req, const char
html_free(vp);
mparse_free(mp);
+ mchars_free(mchars);
free(opts);
}
Index: main.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/main.c,v
retrieving revision 1.194
retrieving revision 1.195
diff -Lmain.c -Lmain.c -u -p -r1.194 -r1.195
--- main.c
+++ main.c
@@ -64,7 +64,6 @@ enum outt {
OUTT_TREE, /* -Ttree */
OUTT_MAN, /* -Tman */
OUTT_HTML, /* -Thtml */
- OUTT_XHTML, /* -Txhtml */
OUTT_LINT, /* -Tlint */
OUTT_PS, /* -Tps */
OUTT_PDF /* -Tpdf */
@@ -72,6 +71,7 @@ enum outt {
struct curparse {
struct mparse *mp;
+ struct mchars *mchars; /* character table */
enum mandoclevel wlevel; /* ignore messages below this */
int wstop; /* stop after a file with a warning */
enum outt outtype; /* which output to use */
@@ -364,7 +364,9 @@ main(int argc, char *argv[])
if (use_pager && isatty(STDOUT_FILENO))
spawn_pager();
- curp.mp = mparse_alloc(options, curp.wlevel, mmsg, defos);
+ curp.mchars = mchars_alloc();
+ curp.mp = mparse_alloc(options, curp.wlevel, mmsg,
+ curp.mchars, defos);
/*
* Conditionally start up the lookaside buffer before parsing.
@@ -409,8 +411,8 @@ main(int argc, char *argv[])
if (curp.outfree)
(*curp.outfree)(curp.outdata);
- if (curp.mp)
- mparse_free(curp.mp);
+ mparse_free(curp.mp);
+ mchars_free(curp.mchars);
#if HAVE_SQLITE3
out:
@@ -495,32 +497,34 @@ parse(struct curparse *curp, int fd, con
if ( ! (curp->outman && curp->outmdoc)) {
switch (curp->outtype) {
- case OUTT_XHTML:
- curp->outdata = xhtml_alloc(curp->outopts);
- curp->outfree = html_free;
- break;
case OUTT_HTML:
- curp->outdata = html_alloc(curp->outopts);
+ curp->outdata = html_alloc(curp->mchars,
+ curp->outopts);
curp->outfree = html_free;
break;
case OUTT_UTF8:
- curp->outdata = utf8_alloc(curp->outopts);
+ curp->outdata = utf8_alloc(curp->mchars,
+ curp->outopts);
curp->outfree = ascii_free;
break;
case OUTT_LOCALE:
- curp->outdata = locale_alloc(curp->outopts);
+ curp->outdata = locale_alloc(curp->mchars,
+ curp->outopts);
curp->outfree = ascii_free;
break;
case OUTT_ASCII:
- curp->outdata = ascii_alloc(curp->outopts);
+ curp->outdata = ascii_alloc(curp->mchars,
+ curp->outopts);
curp->outfree = ascii_free;
break;
case OUTT_PDF:
- curp->outdata = pdf_alloc(curp->outopts);
+ curp->outdata = pdf_alloc(curp->mchars,
+ curp->outopts);
curp->outfree = pspdf_free;
break;
case OUTT_PS:
- curp->outdata = ps_alloc(curp->outopts);
+ curp->outdata = ps_alloc(curp->mchars,
+ curp->outopts);
curp->outfree = pspdf_free;
break;
default:
@@ -529,8 +533,6 @@ parse(struct curparse *curp, int fd, con
switch (curp->outtype) {
case OUTT_HTML:
- /* FALLTHROUGH */
- case OUTT_XHTML:
curp->outman = html_man;
curp->outmdoc = html_mdoc;
break;
@@ -665,7 +667,7 @@ toptions(struct curparse *curp, char *ar
else if (0 == strcmp(arg, "locale"))
curp->outtype = OUTT_LOCALE;
else if (0 == strcmp(arg, "xhtml"))
- curp->outtype = OUTT_XHTML;
+ curp->outtype = OUTT_HTML;
else if (0 == strcmp(arg, "ps"))
curp->outtype = OUTT_PS;
else if (0 == strcmp(arg, "pdf"))
Index: mandocdb.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mandocdb.c,v
retrieving revision 1.167
retrieving revision 1.168
diff -Lmandocdb.c -Lmandocdb.c -u -p -r1.167 -r1.168
--- mandocdb.c
+++ mandocdb.c
@@ -425,9 +425,9 @@ main(int argc, char *argv[])
}
exitcode = (int)MANDOCLEVEL_OK;
- mp = mparse_alloc(mparse_options, MANDOCLEVEL_FATAL, NULL, NULL);
mc = mchars_alloc();
-
+ mp = mparse_alloc(mparse_options, MANDOCLEVEL_FATAL, NULL,
+ mc, NULL);
ohash_init(&mpages, 6, &mpages_info);
ohash_init(&mlinks, 6, &mlinks_info);
@@ -525,8 +525,8 @@ main(int argc, char *argv[])
}
out:
manpath_free(&dirs);
- mchars_free(mc);
mparse_free(mp);
+ mchars_free(mc);
mpages_free();
ohash_delete(&mpages);
ohash_delete(&mlinks);
Index: demandoc.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/demandoc.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -Ldemandoc.c -Ldemandoc.c -u -p -r1.11 -r1.12
--- demandoc.c
+++ demandoc.c
@@ -43,6 +43,7 @@ int
main(int argc, char *argv[])
{
struct mparse *mp;
+ struct mchars *mchars;
int ch, i, list;
extern int optind;
@@ -76,7 +77,8 @@ main(int argc, char *argv[])
argc -= optind;
argv += optind;
- mp = mparse_alloc(MPARSE_SO, MANDOCLEVEL_FATAL, NULL, NULL);
+ mchars = mchars_alloc();
+ mp = mparse_alloc(MPARSE_SO, MANDOCLEVEL_FATAL, NULL, mchars, NULL);
assert(mp);
if (0 == argc)
@@ -88,6 +90,7 @@ main(int argc, char *argv[])
}
mparse_free(mp);
+ mchars_free(mchars);
return((int)MANDOCLEVEL_OK);
}
Index: term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term.c,v
retrieving revision 1.230
retrieving revision 1.231
diff -Lterm.c -Lterm.c -u -p -r1.230 -r1.231
--- term.c
+++ term.c
@@ -42,11 +42,7 @@ void
term_free(struct termp *p)
{
- if (p->buf)
- free(p->buf);
- if (p->symtab)
- mchars_free(p->symtab);
-
+ free(p->buf);
free(p);
}
Index: roff.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/roff.c,v
retrieving revision 1.236
retrieving revision 1.237
diff -Lroff.c -Lroff.c -u -p -r1.236 -r1.237
--- roff.c
+++ roff.c
@@ -107,6 +107,7 @@ struct roffreg {
struct roff {
struct mparse *parse; /* parse point */
+ const struct mchars *mchars; /* character table */
struct roffnode *last; /* leaf of stack */
int *rstack; /* stack of inverted `ie' values */
struct roffreg *regtab; /* number registers */
@@ -476,12 +477,13 @@ roff_free(struct roff *r)
}
struct roff *
-roff_alloc(struct mparse *parse, int options)
+roff_alloc(struct mparse *parse, const struct mchars *mchars, int options)
{
struct roff *r;
r = mandoc_calloc(1, sizeof(struct roff));
r->parse = parse;
+ r->mchars = mchars;
r->options = options;
r->format = options & (MPARSE_MDOC | MPARSE_MAN);
r->rstackpos = -1;
@@ -508,6 +510,8 @@ roff_res(struct roff *r, char **bufp, si
char *nbuf; /* new buffer to copy bufp to */
size_t maxl; /* expected length of the escape name */
size_t naml; /* actual length of the escape name */
+ enum mandoc_esc esc; /* type of the escape sequence */
+ int inaml; /* length returned from mandoc_escape() */
int expand_count; /* to avoid infinite loops */
int npos; /* position in numeric expression */
int arg_complete; /* argument not interrupted by eol */
@@ -551,7 +555,10 @@ roff_res(struct roff *r, char **bufp, si
res = ubuf;
break;
default:
- if (ESCAPE_ERROR == mandoc_escape(&cp, NULL, NULL))
+ esc = mandoc_escape(&cp, &stnam, &inaml);
+ if (esc == ESCAPE_ERROR ||
+ (esc == ESCAPE_SPECIAL &&
+ mchars_spec2cp(r->mchars, stnam, inaml) < 0))
mandoc_vmsg(MANDOCERR_ESC_BAD,
r->parse, ln, (int)(stesc - *bufp),
"%.*s", (int)(cp - stesc), stesc);
Index: man_term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man_term.c,v
retrieving revision 1.154
retrieving revision 1.155
diff -Lman_term.c -Lman_term.c -u -p -r1.154 -r1.155
--- man_term.c
+++ man_term.c
@@ -151,9 +151,6 @@ terminal_man(void *arg, const struct man
p->rmargin = p->maxrmargin = p->defrmargin;
p->tabwidth = term_len(p, 5);
- if (NULL == p->symtab)
- p->symtab = mchars_alloc();
-
n = man_node(man)->child;
meta = man_meta(man);
Index: mdoc_term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_term.c,v
retrieving revision 1.286
retrieving revision 1.287
diff -Lmdoc_term.c -Lmdoc_term.c -u -p -r1.286 -r1.287
--- mdoc_term.c
+++ mdoc_term.c
@@ -261,9 +261,6 @@ terminal_mdoc(void *arg, const struct md
p->rmargin = p->maxrmargin = p->defrmargin;
p->tabwidth = term_len(p, 5);
- if (NULL == p->symtab)
- p->symtab = mchars_alloc();
-
n = mdoc_node(mdoc)->child;
meta = mdoc_meta(mdoc);
Index: main.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/main.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -Lmain.h -Lmain.h -u -p -r1.16 -r1.17
--- main.h
+++ main.h
@@ -32,8 +32,7 @@ struct man;
* terminal output routines with different character settings.
*/
-void *html_alloc(char *);
-void *xhtml_alloc(char *);
+void *html_alloc(const struct mchars *, char *);
void html_mdoc(void *, const struct mdoc *);
void html_man(void *, const struct man *);
void html_free(void *);
@@ -44,13 +43,13 @@ void tree_man(void *, const struct ma
void man_mdoc(void *, const struct mdoc *);
void man_man(void *, const struct man *);
-void *locale_alloc(char *);
-void *utf8_alloc(char *);
-void *ascii_alloc(char *);
+void *locale_alloc(const struct mchars *, char *);
+void *utf8_alloc(const struct mchars *, char *);
+void *ascii_alloc(const struct mchars *, char *);
void ascii_free(void *);
-void *pdf_alloc(char *);
-void *ps_alloc(char *);
+void *pdf_alloc(const struct mchars *, char *);
+void *ps_alloc(const struct mchars *, char *);
void pspdf_free(void *);
void terminal_mdoc(void *, const struct mdoc *);
Index: libmandoc.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/libmandoc.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -Llibmandoc.h -Llibmandoc.h -u -p -r1.45 -r1.46
--- libmandoc.h
+++ libmandoc.h
@@ -76,7 +76,7 @@ int preconv_cue(const struct buf *);
int preconv_encode(struct buf *, struct buf *, int *);
void roff_free(struct roff *);
-struct roff *roff_alloc(struct mparse *, int);
+struct roff *roff_alloc(struct mparse *, const struct mchars *, int);
void roff_reset(struct roff *);
enum rofferr roff_parseln(struct roff *, int,
char **, size_t *, int, int *);
Index: read.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/read.c,v
retrieving revision 1.93
retrieving revision 1.94
diff -Lread.c -Lread.c -u -p -r1.93 -r1.94
--- read.c
+++ read.c
@@ -51,6 +51,7 @@ struct mparse {
struct man *man; /* man parser */
struct mdoc *mdoc; /* mdoc parser */
struct roff *roff; /* roff parser (!NULL) */
+ const struct mchars *mchars; /* character table */
char *sodest; /* filename pointed to by .so */
const char *file; /* filename of current input file */
struct buf *primary; /* buffer currently being parsed */
@@ -914,8 +915,8 @@ mparse_wait(struct mparse *curp, pid_t c
}
struct mparse *
-mparse_alloc(int options, enum mandoclevel wlevel,
- mandocmsg mmsg, const char *defos)
+mparse_alloc(int options, enum mandoclevel wlevel, mandocmsg mmsg,
+ const struct mchars *mchars, const char *defos)
{
struct mparse *curp;
@@ -928,7 +929,8 @@ mparse_alloc(int options, enum mandoclev
curp->mmsg = mmsg;
curp->defos = defos;
- curp->roff = roff_alloc(curp, options);
+ curp->mchars = mchars;
+ curp->roff = roff_alloc(curp, curp->mchars, options);
if (curp->options & MPARSE_MDOC)
curp->pmdoc = mdoc_alloc(
curp->roff, curp, curp->defos,
--
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:[~2014-10-28 17:36 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-28 17:36 mdocml: Make the character table available to libroff so it can check schwarze
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).