]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc_markdown.c
Rename mandoc_getarg() to roff_getarg() and pass it the roff parser
[mandoc.git] / mdoc_markdown.c
index 301b71c724600de9aae5a17eb9e617b79fb36417..35bae5bca7d03285b6e82975357e38f28ba9105f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_markdown.c,v 1.26 2018/08/17 20:33:38 schwarze Exp $ */
+/*     $Id: mdoc_markdown.c,v 1.29 2018/12/15 19:30:26 schwarze Exp $ */
 /*
  * Copyright (c) 2017, 2018 Ingo Schwarze <schwarze@openbsd.org>
  *
@@ -19,6 +19,7 @@
 #include <assert.h>
 #include <ctype.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 
 #include "mandoc_aux.h"
@@ -48,6 +49,7 @@ static        void     md_uri(const char *);
 static int      md_cond_head(struct roff_node *);
 static int      md_cond_body(struct roff_node *);
 
+static int      md_pre_abort(struct roff_node *);
 static int      md_pre_raw(struct roff_node *);
 static int      md_pre_word(struct roff_node *);
 static int      md_pre_skip(struct roff_node *);
@@ -138,7 +140,7 @@ static      const struct md_act md_acts[MDOC_MAX - MDOC_Dd] = {
        { md_cond_head, md_pre_Nd, NULL, NULL, NULL }, /* Nd */
        { NULL, md_pre_Nm, md_post_Nm, "**", "**" }, /* Nm */
        { md_cond_body, md_pre_word, md_post_word, "[", "]" }, /* Op */
-       { NULL, md_pre_Fd, md_post_raw, "*", "*" }, /* Ot */
+       { NULL, md_pre_abort, NULL, NULL, NULL }, /* Ot */
        { NULL, md_pre_raw, md_post_raw, "*", "*" }, /* Pa */
        { NULL, NULL, NULL, NULL, NULL }, /* Rv */
        { NULL, NULL, NULL, NULL, NULL }, /* St */
@@ -211,7 +213,7 @@ static      const struct md_act md_acts[MDOC_MAX - MDOC_Dd] = {
        { NULL, md_pre_raw, md_post_raw, "*", "*" }, /* Fr */
        { NULL, NULL, NULL, NULL, NULL }, /* Ud */
        { NULL, NULL, md_post_Lb, NULL, NULL }, /* Lb */
-       { NULL, md_pre_Pp, NULL, NULL, NULL }, /* Lp */
+       { NULL, md_pre_abort, NULL, NULL, NULL }, /* Lp */
        { NULL, md_pre_Lk, NULL, NULL, NULL }, /* Lk */
        { NULL, md_pre_Mt, NULL, NULL, NULL }, /* Mt */
        { md_cond_body, md_pre_word, md_post_word, "{", "}" }, /* Brq */
@@ -587,6 +589,9 @@ md_word(const char *s)
                        case ESCAPE_SPECIAL:
                                uc = mchars_spec2cp(seq, sz);
                                break;
+                       case ESCAPE_UNDEF:
+                               uc = *seq;
+                               break;
                        case ESCAPE_DEVICE:
                                md_rawword("markdown");
                                continue;
@@ -600,6 +605,7 @@ md_word(const char *s)
                                nextfont = "***";
                                break;
                        case ESCAPE_FONT:
+                       case ESCAPE_FONTCW:
                        case ESCAPE_FONTROMAN:
                                nextfont = "";
                                break;
@@ -721,6 +727,12 @@ md_cond_body(struct roff_node *n)
        return n->type == ROFFT_BODY;
 }
 
+static int
+md_pre_abort(struct roff_node *n)
+{
+       abort();
+}
+
 static int
 md_pre_raw(struct roff_node *n)
 {