- switch ((m->lastsec = sec)) {
- case (SEC_RETURN_VALUES):
- /* FALLTHROUGH */
- case (SEC_ERRORS):
- switch (m->meta.msec) {
- case (2):
- /* FALLTHROUGH */
- case (3):
- /* FALLTHROUGH */
- case (9):
- break;
- default:
- return(mdoc_nwarn(m, m->last, EBADSEC));
+
+/*
+ * Substitute the value of `St' for the corresponding formatted string.
+ * We're guaranteed that this exists (it's been verified during the
+ * validation phase).
+ */
+/* ARGSUSED */
+static int
+post_st(POST_ARGS)
+{
+ const char *p;
+
+ assert(MDOC_TEXT == n->child->type);
+ p = mdoc_a2st(n->child->string);
+ if (p != NULL) {
+ free(n->child->string);
+ n->child->string = mandoc_strdup(p);
+ }
+ return(1);
+}
+
+
+/*
+ * 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;