-/* $Id: mdoc.c,v 1.179 2011/02/06 22:05:20 kristaps Exp $ */
+/* $Id: mdoc.c,v 1.183 2011/03/15 13:23:33 kristaps Exp $ */
/*
- * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
struct mdoc_node *);
static int mdoc_ptext(struct mdoc *, int, char *, int);
static int mdoc_pmacro(struct mdoc *, int, char *, int);
-static int mdoc_span_alloc(struct mdoc *,
- const struct tbl_span *);
-
const struct mdoc_node *
mdoc_node(const struct mdoc *m)
free(mdoc->meta.vol);
if (mdoc->meta.msec)
free(mdoc->meta.msec);
+ if (mdoc->meta.date)
+ free(mdoc->meta.date);
}
return(0);
}
+int
+mdoc_addeqn(struct mdoc *m, const struct eqn *ep)
+{
+ struct mdoc_node *n;
+
+ assert( ! (MDOC_HALT & m->flags));
+
+ /* No text before an initial macro. */
+
+ if (SEC_NONE == m->lastnamed) {
+ mdoc_pmsg(m, ep->line, ep->pos, MANDOCERR_NOTEXT);
+ return(1);
+ }
+
+ n = node_alloc(m, ep->line, ep->pos, MDOC_MAX, MDOC_EQN);
+ n->eqn = ep;
+
+ if ( ! node_append(m, n))
+ return(0);
+
+ m->next = MDOC_NEXT_SIBLING;
+ return(1);
+}
+
int
mdoc_addspan(struct mdoc *m, const struct tbl_span *sp)
{
+ struct mdoc_node *n;
assert( ! (MDOC_HALT & m->flags));
return(1);
}
- return(mdoc_span_alloc(m, sp));
+ n = node_alloc(m, sp->line, 0, MDOC_MAX, MDOC_TBL);
+ n->span = sp;
+
+ if ( ! node_append(m, n))
+ return(0);
+
+ m->next = MDOC_NEXT_SIBLING;
+ return(1);
}
m->meta.vol = mandoc_strdup("LOCAL");
if (NULL == m->meta.os)
m->meta.os = mandoc_strdup("LOCAL");
- if (0 == m->meta.date)
- m->meta.date = time(NULL);
+ if (NULL == m->meta.date)
+ m->meta.date = mandoc_normdate(NULL,
+ m->msg, m->data, line, ppos);
m->flags |= MDOC_PBODY;
}
return(1);
}
-static int
-mdoc_span_alloc(struct mdoc *m, const struct tbl_span *sp)
-{
- struct mdoc_node *n;
-
- n = node_alloc(m, sp->line, 0, MDOC_MAX, MDOC_TBL);
- n->span = sp;
-
- if ( ! node_append(m, n))
- return(0);
-
- m->next = MDOC_NEXT_SIBLING;
- return(1);
-}
-
-
int
mdoc_word_alloc(struct mdoc *m, int line, int pos, const char *p)
{