summaryrefslogtreecommitdiffstatshomepage
path: root/action.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-01-20 22:55:46 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-01-20 22:55:46 +0000
commit8c93af8e9eb62eb23b9862156fbb36edd225ed36 (patch)
treef7d458624e88d7c3e4c76fd3d0e224029fb4f872 /action.c
parentc4da36392950a99306bb7aae41a441fdf8e9f48f (diff)
downloadmandoc-8c93af8e9eb62eb23b9862156fbb36edd225ed36.tar.gz
mandoc-8c93af8e9eb62eb23b9862156fbb36edd225ed36.tar.zst
mandoc-8c93af8e9eb62eb23b9862156fbb36edd225ed36.zip
Added regression tests (just for prologue, for now).
Minor fixes in parsing prologue.
Diffstat (limited to 'action.c')
-rw-r--r--action.c43
1 files changed, 10 insertions, 33 deletions
diff --git a/action.c b/action.c
index 3d4e9ba5..40816488 100644
--- a/action.c
+++ b/action.c
@@ -1,4 +1,4 @@
-/* $Id: action.c,v 1.14 2009/01/20 13:44:05 kristaps Exp $ */
+/* $Id: action.c,v 1.15 2009/01/20 22:55:46 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -246,6 +246,8 @@ post_dt(struct mdoc *mdoc)
if (NULL == mdoc->meta.title)
mdoc->meta.title = xstrdup("untitled");
+ mdoc_msg(mdoc, "title: %s", mdoc->meta.title);
+
return(post_prologue(mdoc));
}
@@ -279,46 +281,21 @@ post_os(struct mdoc *mdoc)
static int
post_dd(struct mdoc *mdoc)
{
- char date[64];
- size_t sz;
- char *p;
- struct mdoc_node *n;
+ char buf[64];
assert(MDOC_ELEM == mdoc->last->type);
assert(MDOC_Dd == mdoc->last->tok);
- n = mdoc->last->child;
assert(0 == mdoc->meta.date);
- date[0] = 0;
-
- sz = 64;
-
- for ( ; 0 == mdoc->meta.date && n; n = n->next) {
- assert(MDOC_TEXT == n->type);
- p = n->data.text.string;
- if (xstrcmp(p, "$Mdocdate: January 20 2009 $")) {
- mdoc->meta.date = time(NULL);
- continue;
- } else if (xstrcmp(p, "$")) {
- mdoc->meta.date = mdoc_atotime(date);
- continue;
- } else if (xstrcmp(p, "$Mdocdate:"))
- continue;
+ if ( ! xstrlcats(buf, mdoc->last->child, 64))
+ return(mdoc_err(mdoc, "macro parameters too long"));
+ if (0 == (mdoc->meta.date = mdoc_atotime(buf)))
+ return(mdoc_err(mdoc, "invalid parameter syntax"));
- if ( ! xstrlcat(date, n->data.text.string, sz))
- return(mdoc_nerr(mdoc, n, "invalid parameter syntax"));
- if (n->next && ! xstrlcat(date, " ", sz))
- return(mdoc_nerr(mdoc, n, "invalid parameter syntax"));
- }
+ mdoc_msg(mdoc, "date: %u", mdoc->meta.date);
- if (mdoc->meta.date && NULL == n)
- return(post_prologue(mdoc));
- else if (n)
- return(mdoc_err(mdoc, "invalid parameter syntax"));
- if ((mdoc->meta.date = mdoc_atotime(date)))
- return(post_prologue(mdoc));
- return(mdoc_err(mdoc, "invalid parameter syntax"));
+ return(post_prologue(mdoc));
}