-
- if (MAN_MAX == (c = man_hash_find(m->htab, mac))) {
- if ( ! (MAN_IGN_MACRO & m->pflags)) {
- (void)man_verr(m, ln, ppos,
- "unknown macro: %s", mac);
- goto err;
- }
- if ( ! man_vwarn(m, ln, ppos,
- "unknown macro: %s", mac))
- goto err;
- goto out;
- }
-
- /* The macro is sane. Jump to the next word. */
-
- while (buf[i] && ' ' == buf[i])
- i++;
-
- /* Begin recursive parse sequence. */
-
- if ( ! man_macro(m, c, ln, ppos, &i, buf))
- goto err;
-
-out:
- if (fl) {
- /*
- * A NLINE macro has been immediately followed with
- * another. Close out the preceeding macro's scope, and
- * continue.
- */
- assert(MAN_ROOT != m->last->type);
- assert(m->last->parent);
- assert(MAN_ROOT != m->last->parent->type);
-
- if (n != m->last)
- m->last = m->last->parent;
-
- if ( ! man_valid_post(m))
- return(0);
- if ( ! man_action_post(m))
- return(0);
- m->next = MAN_NEXT_SIBLING;
- m->flags &= ~MAN_NLINE;
- }
-
- return(1);
-
-err: /* Error out. */
-
- m->flags |= MAN_HALT;
- return(0);
-}