+ m->next = MAN_NEXT_CHILD;
+ return(1);
+}
+
+
+int
+man_body_alloc(struct man *m, int line, int pos, int tok)
+{
+ struct man_node *p;
+
+ p = man_node_alloc(line, pos, MAN_BODY, tok);
+ if (NULL == p)
+ return(0);
+ if ( ! man_node_append(m, p))
+ return(0);
+ m->next = MAN_NEXT_CHILD;
+ return(1);
+}
+
+
+int
+man_block_alloc(struct man *m, int line, int pos, int tok)
+{
+ struct man_node *p;
+
+ p = man_node_alloc(line, pos, MAN_BLOCK, tok);
+ if (NULL == p)
+ return(0);
+ if ( ! man_node_append(m, p))
+ return(0);
+ m->next = MAN_NEXT_CHILD;
+ return(1);
+}
+
+
+static int
+pstring(struct man *m, int line, int pos,
+ const char *p, size_t len)
+{
+ struct man_node *n;
+ size_t sv;
+
+ n = man_node_alloc(line, pos, MAN_TEXT, -1);
+ if (NULL == n)
+ return(0);
+
+ n->string = malloc(len + 1);
+ if (NULL == n->string) {
+ free(n);
+ return(0);
+ }
+
+ sv = strlcpy(n->string, p, len + 1);
+
+ /* Prohibit truncation. */
+ assert(sv < len + 1);
+
+ if ( ! man_node_append(m, n))
+ return(0);
+ m->next = MAN_NEXT_SIBLING;
+ return(1);
+}
+
+
+int
+man_word_alloc(struct man *m, int line, int pos, const char *word)
+{
+
+ return(pstring(m, line, pos, word, strlen(word)));