Lines Matching defs:mdoc
34 #include "mdoc.h"
42 #define PRE_ARGS struct mdoc *mdoc, struct mdoc_node *n
43 #define POST_ARGS struct mdoc *mdoc
59 static void check_text(struct mdoc *, int, int, char *);
60 static void check_argv(struct mdoc *,
62 static void check_args(struct mdoc *, struct mdoc_node *);
295 mdoc_valid_pre(struct mdoc *mdoc, struct mdoc_node *n)
302 check_text(mdoc, n->line, n->pos, n->string);
314 check_args(mdoc, n);
317 (*p)(mdoc, n);
321 mdoc_valid_post(struct mdoc *mdoc)
326 n = mdoc->last;
339 post_root(mdoc);
358 (*p)(mdoc);
364 check_args(struct mdoc *mdoc, struct mdoc_node *n)
373 check_argv(mdoc, n, &n->args->argv[i]);
377 check_argv(struct mdoc *mdoc, struct mdoc_node *n, struct mdoc_argv *v)
382 check_text(mdoc, v->line, v->pos, v->value[i]);
386 check_text(struct mdoc *mdoc, int ln, int pos, char *p)
390 if (MDOC_LITERAL & mdoc->flags)
394 mandoc_msg(MANDOCERR_FI_TAB, mdoc->parse,
406 for (node = mdoc->last->parent; node; node = node->parent)
413 mdoc->parse, n->line, n->pos,
478 mdoc->parse, argv->line,
486 mdoc->parse, argv->line,
493 mdoc->parse, argv->line,
502 mdoc->parse, argv->line,
508 mdoc->parse, argv->line,
525 mdoc->parse, n->line, n->pos,
536 mdoc->parse, n->line, n->pos, "Bl -%s",
549 mandoc_msg(MANDOCERR_BL_NOTYPE, mdoc->parse,
564 mandoc_msg(MANDOCERR_BL_NOWIDTH, mdoc->parse,
577 mandoc_vmsg(MANDOCERR_BL_SKIPW, mdoc->parse,
596 pre_par(mdoc, n);
606 pre_literal(mdoc, n);
632 mandoc_msg(MANDOCERR_BD_FILE, mdoc->parse,
638 mdoc->parse, argv->line,
644 mdoc->parse, argv->line,
653 mdoc->parse, argv->line,
668 mdoc->parse, n->line, n->pos,
673 mandoc_msg(MANDOCERR_BD_NOTYPE, mdoc->parse,
677 pre_par(mdoc, n);
692 mdoc->parse, argv->line, argv->pos,
713 mandoc_msg(MANDOCERR_ARG_STD, mdoc->parse,
722 mandoc_msg(MANDOCERR_MACRO_OBS, mdoc->parse,
730 if (mdoc->meta.title != NULL)
731 mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,
733 else if (mdoc->meta.os != NULL)
734 mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,
742 if (mdoc->meta.os != NULL)
743 mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,
745 else if (mdoc->flags & MDOC_PBODY)
746 mandoc_msg(MANDOCERR_PROLOG_LATE, mdoc->parse,
754 if (mdoc->meta.date != NULL)
755 mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,
757 else if (mdoc->flags & MDOC_PBODY)
758 mandoc_msg(MANDOCERR_PROLOG_LATE, mdoc->parse,
760 else if (mdoc->meta.title != NULL)
761 mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,
763 else if (mdoc->meta.os != NULL)
764 mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,
779 np = mdoc->last;
791 mandoc_msg(MANDOCERR_BF_NOFONT, mdoc->parse,
798 mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
825 mandoc_vmsg(MANDOCERR_BF_BADFONT, mdoc->parse,
837 n = mdoc->last->child;
855 n = mdoc->last;
858 mdoc->parse, n->line, n->pos,
870 n = mdoc->last->child;
874 mandoc_msg(MANDOCERR_FN_PAREN, mdoc->parse,
882 post_fname(mdoc);
883 post_fa(mdoc);
891 n = mdoc->last;
897 mandoc_msg(MANDOCERR_FO_NOHEAD, mdoc->parse,
902 mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
906 mdoc_node_delete(mdoc, n->last);
909 post_fname(mdoc);
918 for (n = mdoc->last->child; n != NULL; n = n->next) {
925 mandoc_msg(MANDOCERR_FA_COMMA, mdoc->parse,
946 if (MDOC_BODY != mdoc->last->type)
949 for (n = mdoc->last->child; n; n = n->next)
951 mandoc_msg(MANDOCERR_VT_CHILD, mdoc->parse,
960 n = mdoc->last;
965 mdoc_node_relink(mdoc, n->last);
967 if (NULL != mdoc->meta.name)
970 mdoc_deroff(&mdoc->meta.name, n);
972 if (NULL == mdoc->meta.name)
973 mandoc_msg(MANDOCERR_NM_NONAME, mdoc->parse,
982 n = mdoc->last;
988 mandoc_msg(MANDOCERR_ND_EMPTY, mdoc->parse,
991 post_hyph(mdoc);
999 n = mdoc->last;
1005 mandoc_msg(MANDOCERR_BLK_EMPTY, mdoc->parse,
1008 post_hyph(mdoc);
1016 n = mdoc->last;
1022 mandoc_msg(MANDOCERR_BLK_EMPTY, mdoc->parse,
1030 mdoc->flags &= ~MDOC_LITERAL;
1044 if (mdoc->last->child)
1047 nn = mdoc->last;
1048 mdoc->next = MDOC_NEXT_CHILD;
1052 mdoc_word_alloc(mdoc, nn->line, nn->pos, "file");
1053 mdoc_word_alloc(mdoc, nn->line, nn->pos, "...");
1058 mdoc_word_alloc(mdoc, nn->line, nn->pos, "~");
1064 mdoc->last = nn;
1074 n = mdoc->last;
1076 mdoc->next = MDOC_NEXT_CHILD;
1077 mdoc_word_alloc(mdoc, n->line, n->pos, "AT&T UNIX");
1078 mdoc->last = n;
1091 mandoc_vmsg(MANDOCERR_AT_BAD, mdoc->parse,
1106 np = mdoc->last;
1110 mandoc_msg(MANDOCERR_MACRO_EMPTY, mdoc->parse,
1113 mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
1121 if (MDOC_BLOCK == mdoc->last->type)
1122 mdoc->last->norm->Es = mdoc->last_es;
1129 mdoc->last_es = mdoc->last;
1139 nit = mdoc->last;
1158 mdoc->parse, nit->line, nit->pos,
1171 mdoc->parse, nit->line, nit->pos,
1178 mdoc->parse, nit->line, nit->pos,
1192 mdoc->parse, nit->line, nit->pos,
1213 n = mdoc->last;
1217 post_bl_block_tag(mdoc);
1239 mdoc->parse, nc->line, nc->pos,
1241 mdoc_node_relink(mdoc, nc);
1245 mdoc->parse, nc->line, nc->pos,
1248 mdoc_node_delete(mdoc, nc);
1295 n = mdoc->last;
1351 nh = mdoc->last;
1356 mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
1359 mdoc_node_delete(mdoc, nch);
1413 nbody = mdoc->last;
1416 post_bl_block(mdoc);
1419 post_bl_head(mdoc);
1429 mandoc_msg(MANDOCERR_BLK_EMPTY, mdoc->parse,
1442 mandoc_msg(MANDOCERR_BL_MOVE, mdoc->parse,
1494 n = mdoc->last;
1498 mdoc->parse, n->line, n->pos, "Bk");
1499 mdoc_node_delete(mdoc, n);
1504 post_sm(struct mdoc *mdoc)
1508 nch = mdoc->last->child;
1511 mdoc->flags ^= MDOC_SMOFF;
1518 mdoc->flags &= ~MDOC_SMOFF;
1522 mdoc->flags |= MDOC_SMOFF;
1527 mdoc->parse, nch->line, nch->pos,
1528 "%s %s", mdoc_macronames[mdoc->last->tok], nch->string);
1529 mdoc_node_relink(mdoc, nch);
1540 if (mdoc->meta.date == NULL)
1541 mdoc->meta.date = mdoc->quick ?
1543 mandoc_normdate(mdoc->parse, NULL, 0, 0);
1545 if (mdoc->meta.title == NULL) {
1547 mdoc->parse, 0, 0, "EOF");
1548 mdoc->meta.title = mandoc_strdup("UNTITLED");
1551 if (mdoc->meta.vol == NULL)
1552 mdoc->meta.vol = mandoc_strdup("LOCAL");
1554 if (mdoc->meta.os == NULL) {
1556 mdoc->parse, 0, 0, NULL);
1557 mdoc->meta.os = mandoc_strdup("");
1562 n = mdoc->first->child;
1567 mandoc_msg(MANDOCERR_DOC_EMPTY, mdoc->parse, 0, 0, NULL);
1569 mandoc_msg(MANDOCERR_SEC_BEFORE, mdoc->parse,
1579 n = mdoc->last;
1585 mandoc_vmsg(MANDOCERR_ST_BAD, mdoc->parse,
1587 mdoc_node_delete(mdoc, n);
1600 np = mdoc->last;
1606 mandoc_msg(MANDOCERR_RS_EMPTY, mdoc->parse,
1626 mdoc->parse, nch->line, nch->pos,
1694 for (nch = mdoc->last->child; nch != NULL; nch = nch->next) {
1712 if (MDOC_LINE & mdoc->last->flags)
1713 mandoc_msg(MANDOCERR_NS_SKIP, mdoc->parse,
1714 mdoc->last->line, mdoc->last->pos, NULL);
1721 post_ignpar(mdoc);
1723 switch (mdoc->last->type) {
1725 post_sh_head(mdoc);
1728 switch (mdoc->lastsec) {
1730 post_sh_name(mdoc);
1733 post_sh_see_also(mdoc);
1736 post_sh_authors(mdoc);
1755 for (n = mdoc->last->child; n != NULL; n = n->next) {
1764 mdoc->parse, n->line, n->pos, NULL);
1771 mandoc_msg(MANDOCERR_NAMESEC_BAD, mdoc->parse,
1778 mandoc_msg(MANDOCERR_NAMESEC_NONM, mdoc->parse,
1779 mdoc->last->line, mdoc->last->pos, NULL);
1781 mandoc_msg(MANDOCERR_NAMESEC_NOND, mdoc->parse,
1782 mdoc->last->line, mdoc->last->pos, NULL);
1793 n = mdoc->last->child;
1806 mdoc->parse, n->line, n->pos,
1812 mdoc->parse, n->line, n->pos,
1818 mdoc->parse, n->line, n->pos,
1840 mandoc_vmsg(MANDOCERR_XR_PUNCT, mdoc->parse,
1861 if ( ! child_an(mdoc->last))
1862 mandoc_msg(MANDOCERR_AN_MISSING, mdoc->parse,
1863 mdoc->last->line, mdoc->last->pos, NULL);
1883 mdoc_deroff(&secname, mdoc->last);
1888 if (SEC_NAME != sec && SEC_NONE == mdoc->lastnamed)
1889 mandoc_vmsg(MANDOCERR_NAMESEC_FIRST, mdoc->parse,
1890 mdoc->last->line, mdoc->last->pos,
1896 roff_setreg(mdoc->roff, "nS", 1, '=');
1897 mdoc->flags |= MDOC_SYNOPSIS;
1899 roff_setreg(mdoc->roff, "nS", 0, '=');
1900 mdoc->flags &= ~MDOC_SYNOPSIS;
1905 mdoc->lastsec = sec;
1916 mdoc->last->parent->sec = sec;
1917 mdoc->last->sec = sec;
1918 for (n = mdoc->last->child; n; n = n->next)
1933 if (sec == mdoc->lastnamed)
1934 mandoc_vmsg(MANDOCERR_SEC_REP, mdoc->parse,
1935 mdoc->last->line, mdoc->last->pos,
1938 if (sec < mdoc->lastnamed)
1939 mandoc_vmsg(MANDOCERR_SEC_ORDER, mdoc->parse,
1940 mdoc->last->line, mdoc->last->pos,
1945 mdoc->lastnamed = sec;
1949 if (mdoc->meta.msec == NULL) {
1957 if (*mdoc->meta.msec == '4')
1964 if (*mdoc->meta.msec == '2')
1966 if (*mdoc->meta.msec == '3')
1972 if (*mdoc->meta.msec == '9')
1976 mandoc_vmsg(MANDOCERR_SEC_MSEC, mdoc->parse,
1977 mdoc->last->line, mdoc->last->pos,
1991 switch (mdoc->last->type) {
1993 post_hyph(mdoc);
2001 if (NULL != (np = mdoc->last->child))
2004 mdoc->parse, np->line, np->pos,
2006 mdoc_macronames[mdoc->last->tok]);
2007 mdoc_node_delete(mdoc, np);
2010 if (NULL != (np = mdoc->last->last))
2012 mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse,
2015 mdoc_macronames[mdoc->last->tok]);
2016 mdoc_node_delete(mdoc, np);
2024 if (NULL == mdoc->last)
2034 if (MDOC_Pp != mdoc->last->tok &&
2035 MDOC_Lp != mdoc->last->tok &&
2036 MDOC_br != mdoc->last->tok)
2045 mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse,
2046 mdoc->last->line, mdoc->last->pos,
2047 "%s before %s", mdoc_macronames[mdoc->last->tok],
2049 mdoc_node_delete(mdoc, mdoc->last);
2057 np = mdoc->last;
2061 mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
2066 mdoc->parse, np->line, np->pos, "%s %s",
2069 if (NULL == (np = mdoc->last->prev)) {
2070 np = mdoc->last->parent;
2074 (MDOC_br != mdoc->last->tok ||
2078 mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse,
2079 mdoc->last->line, mdoc->last->pos,
2080 "%s after %s", mdoc_macronames[mdoc->last->tok],
2082 mdoc_node_delete(mdoc, mdoc->last);
2089 pre_display(mdoc, n);
2101 mdoc->flags |= MDOC_LITERAL;
2105 mdoc->flags |= MDOC_LITERAL;
2107 mdoc->flags |= MDOC_LITERAL;
2121 if (mdoc->meta.date)
2122 free(mdoc->meta.date);
2124 n = mdoc->last;
2126 mdoc->meta.date = mdoc->quick ? mandoc_strdup("") :
2127 mandoc_normdate(mdoc->parse, NULL, n->line, n->pos);
2133 if (mdoc->quick)
2134 mdoc->meta.date = datestr;
2136 mdoc->meta.date = mandoc_normdate(mdoc->parse,
2141 mdoc_node_delete(mdoc, n);
2151 n = mdoc->last;
2153 free(mdoc->meta.title);
2154 free(mdoc->meta.msec);
2155 free(mdoc->meta.vol);
2156 free(mdoc->meta.arch);
2158 mdoc->meta.title = NULL;
2159 mdoc->meta.msec = NULL;
2160 mdoc->meta.vol = NULL;
2161 mdoc->meta.arch = NULL;
2168 mdoc->parse, n->line, n->pos, "Dt");
2169 mdoc->meta.title = mandoc_strdup("UNTITLED");
2171 mdoc->meta.title = mandoc_strdup(nn->string);
2178 mdoc->parse, nn->line,
2192 mdoc->parse, n->line, n->pos,
2193 "Dt %s", mdoc->meta.title);
2194 mdoc->meta.vol = mandoc_strdup("LOCAL");
2198 mdoc->meta.msec = mandoc_strdup(nn->string);
2204 mandoc_vmsg(MANDOCERR_MSEC_BAD, mdoc->parse,
2206 mdoc->meta.vol = mandoc_strdup(nn->string);
2208 mdoc->meta.vol = mandoc_strdup(cp);
2217 mdoc->meta.arch = mandoc_strdup(nn->string);
2222 mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
2226 mdoc_node_delete(mdoc, n);
2240 n = mdoc->last->child;
2254 n = mdoc->last;
2265 free(mdoc->meta.os);
2266 mdoc->meta.os = NULL;
2267 mdoc_deroff(&mdoc->meta.os, n);
2268 if (mdoc->meta.os)
2271 if (mdoc->defos) {
2272 mdoc->meta.os = mandoc_strdup(mdoc->defos);
2277 mdoc->meta.os = mandoc_strdup(OSNAME);
2281 mandoc_msg(MANDOCERR_OS_UNAME, mdoc->parse,
2288 mdoc->meta.os = mandoc_strdup(defbuf);
2292 mdoc_node_delete(mdoc, n);
2304 n = mdoc->last;
2309 if (mdoc->meta.name == NULL) {
2310 mandoc_msg(MANDOCERR_EX_NONAME, mdoc->parse,
2315 mdoc->next = MDOC_NEXT_CHILD;
2316 mdoc_word_alloc(mdoc, n->line, n->pos, mdoc->meta.name);
2317 mdoc->last = n;