+static int
+md_run_leave(const struct md_args *args, struct md_mbuf *mbuf,
+ struct md_rbuf *rbuf, int c, void *data)
+{
+ assert(args);
+ assert(mbuf);
+ assert(rbuf);
+
+ /* Run exiters. */
+ switch (args->type) {
+ case (MD_HTML4_STRICT):
+ if ( ! md_exit_html4_strict(args, mbuf, rbuf, c, data))
+ return(-1);
+ break;
+ case (MD_DUMMY):
+ break;
+ default:
+ abort();
+ }
+
+ /* Make final flush of buffer. */
+ if ( ! md_buf_flush(mbuf))
+ return(-1);
+
+ return(c);
+}
+
+
+static int
+md_run_enter(const struct md_args *args, struct md_mbuf *mbuf,
+ struct md_rbuf *rbuf, void *p)