-/* $Id: man.c,v 1.160 2015/04/19 14:25:41 schwarze Exp $ */
+/* $Id: man.c,v 1.163 2015/04/23 16:17:44 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2013, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
static int man_pmacro(struct roff_man *, int, char *, int);
-void
-man_endparse(struct roff_man *man)
-{
-
- man_macroend(man);
-}
-
int
man_parseln(struct roff_man *man, int ln, char *buf, int offs)
{
man_ptext(man, ln, buf, offs));
}
-void
-man_elem_alloc(struct roff_man *man, int line, int pos, int tok)
-{
- struct roff_node *p;
-
- p = roff_node_alloc(man, line, pos, ROFFT_ELEM, tok);
- roff_node_append(man, p);
- man->next = ROFF_NEXT_CHILD;
-}
-
-void
-man_block_alloc(struct roff_man *man, int line, int pos, int tok)
-{
- struct roff_node *p;
-
- p = roff_node_alloc(man, line, pos, ROFFT_BLOCK, tok);
- roff_node_append(man, p);
- man->next = ROFF_NEXT_CHILD;
-}
-
static void
man_descope(struct roff_man *man, int line, int offs)
{
/* Allocate a blank entry. */
if (man->last->tok != MAN_SH &&
man->last->tok != MAN_SS) {
- man_elem_alloc(man, line, offs, MAN_sp);
+ roff_elem_alloc(man, line, offs, MAN_sp);
man->next = ROFF_NEXT_SIBLING;
}
return(1);
assert(man && man->parse);
return(man->parse);
}
-
-void
-man_deroff(char **dest, const struct roff_node *n)
-{
- char *cp;
- size_t sz;
-
- if (n->type != ROFFT_TEXT) {
- for (n = n->child; n; n = n->next)
- man_deroff(dest, n);
- return;
- }
-
- /* Skip leading whitespace and escape sequences. */
-
- cp = n->string;
- while ('\0' != *cp) {
- if ('\\' == *cp) {
- cp++;
- mandoc_escape((const char **)&cp, NULL, NULL);
- } else if (isspace((unsigned char)*cp))
- cp++;
- else
- break;
- }
-
- /* Skip trailing whitespace. */
-
- for (sz = strlen(cp); sz; sz--)
- if (0 == isspace((unsigned char)cp[sz-1]))
- break;
-
- /* Skip empty strings. */
-
- if (0 == sz)
- return;
-
- if (NULL == *dest) {
- *dest = mandoc_strndup(cp, sz);
- return;
- }
-
- mandoc_asprintf(&cp, "%s %*s", *dest, (int)sz, cp);
- free(*dest);
- *dest = cp;
-}