-/*
- * Look up the standard string in a table. We know that it exists from
- * the validation phase, so assert on failure. If a standard key wasn't
- * supplied, supply the default ``AT&T UNIX''.
- */
-static int
-post_at(POST_ARGS)
-{
- struct mdoc_node *nn;
- const char *p, *q;
- char *buf;
- size_t sz;
-
- if (n->child) {
- assert(MDOC_TEXT == n->child->type);
- p = mdoc_a2att(n->child->string);
- if (p) {
- free(n->child->string);
- n->child->string = mandoc_strdup(p);
- } else {
- p = "AT&T UNIX ";
- q = n->child->string;
- sz = strlen(p) + strlen(q) + 1;
- buf = mandoc_malloc(sz);
- strlcpy(buf, p, sz);
- strlcat(buf, q, sz);
- free(n->child->string);
- n->child->string = buf;
- }
- return(1);
- }
-
- nn = n;
- m->next = MDOC_NEXT_CHILD;
- if ( ! mdoc_word_alloc(m, nn->line, nn->pos, "AT&T UNIX"))
- return(0);
- m->last = nn;
- return(1);
-}
-
-
-/*
- * Mark the current section. The ``named'' section (lastnamed) is set
- * whenever the current section isn't a custom section--we use this to
- * keep track of section ordering. Also check that the section is
- * allowed within the document's manual section.
- */
-static int
-post_sh(POST_ARGS)
-{
- enum mdoc_sec sec;
- char buf[BUFSIZ];
-
- if (MDOC_HEAD != n->type)
- return(1);
-
- if ( ! concat(m, buf, n->child, BUFSIZ))
- return(0);
- sec = mdoc_str2sec(buf);
- /*
- * The first section should always make us move into a non-new
- * state.
- */
- if (SEC_NONE == m->lastnamed || SEC_CUSTOM != sec)
- m->lastnamed = sec;
-
- /*
- * Switch the parser's SYNOPSIS mode, to be copied
- * into individual nodes when creating them.
- * Note that this mode can also be set and unset
- * using the roff nS register.
- */
- if (SEC_SYNOPSIS == sec)
- m->flags |= MDOC_SYNOPSIS;
- else
- m->flags &= ~MDOC_SYNOPSIS;
-
- /* Some sections only live in certain manual sections. */
-
- switch ((m->lastsec = sec)) {
- case (SEC_RETURN_VALUES):
- /* FALLTHROUGH */
- case (SEC_ERRORS):
- assert(m->meta.msec);
- if (*m->meta.msec == '2')
- break;
- if (*m->meta.msec == '3')
- break;
- if (*m->meta.msec == '9')
- break;
- return(mdoc_nmsg(m, n, MANDOCERR_SECMSEC));
- default:
- break;
- }
- return(1);
-}
-
-