=================================================================== RCS file: /cvs/mandoc/Attic/libmdocml.c,v retrieving revision 1.8 retrieving revision 1.13 diff -u -p -r1.8 -r1.13 --- mandoc/Attic/libmdocml.c 2008/11/24 08:50:33 1.8 +++ mandoc/Attic/libmdocml.c 2008/11/28 15:25:49 1.13 @@ -1,4 +1,4 @@ -/* $Id: libmdocml.c,v 1.8 2008/11/24 08:50:33 kristaps Exp $ */ +/* $Id: libmdocml.c,v 1.13 2008/11/28 15:25:49 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -17,6 +17,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ #include +#include #include #include #include @@ -55,8 +56,7 @@ md_buf_fill(struct md_rbuf *in) } -static int -md_buf_flush(struct md_mbuf *buf) +static int md_buf_flush(struct md_mbuf *buf) { ssize_t sz; @@ -136,13 +136,13 @@ md_run_leave(const struct md_args *args, struct md_mbu /* Run exiters. */ switch (args->type) { case (MD_HTML4_STRICT): - if ( ! md_exit_html4_strict(args, mbuf, rbuf, c, data)) - return(-1); + if ( ! md_exit_html4_strict(data, -1 == c ? 0 : 1)) + c = -1; break; - case (MD_DUMMY): - break; default: - abort(); + if ( ! md_exit_valid(data, -1 == c ? 0 : 1)) + c = -1; + break; } /* Make final flush of buffer. */ @@ -172,7 +172,7 @@ md_run_enter(const struct md_args *args, struct md_mbu fp = md_line_html4_strict; break; default: - fp = md_line_dummy; + fp = md_line_valid; break; } @@ -188,6 +188,13 @@ again: return(md_run_leave(args, mbuf, rbuf, 0, p)); for (i = 0; i < sz; i++) { + /* + if ( ! isascii(rbuf->buf[i])) { + warnx("%s: non-ascii char (line %zu, col %zu)", + rbuf->name, rbuf->line, pos); + return(md_run_leave(args, mbuf, rbuf, -1, p)); + } + */ if ('\n' != rbuf->buf[i]) { if (pos < BUFFER_LINE) { /* LINTED */ @@ -200,7 +207,7 @@ again: } line[pos] = 0; - if ( ! (*fp)(args, mbuf, rbuf, line, pos, p)) + if ( ! (*fp)(p, line, pos)) return(md_run_leave(args, mbuf, rbuf, -1, p)); rbuf->line++; pos = 0; @@ -228,18 +235,17 @@ md_run(const struct md_args *args, mbuf.pos = 0; rbuf.line = 1; - data = NULL; /* Run initialisers. */ switch (args->type) { case (MD_HTML4_STRICT): - if ( ! md_init_html4_strict(args, &mbuf, &rbuf, &data)) - return(-1); + data = md_init_html4_strict + (args, &mbuf, &rbuf); break; - case (MD_DUMMY): - break; default: - abort(); + data = md_init_valid + (args, &mbuf, &rbuf); + break; } /* Go into mainline. */