version 1.14, 2009/01/20 13:44:05 |
version 1.15, 2009/01/20 22:55:46 |
Line 246 post_dt(struct mdoc *mdoc) |
|
Line 246 post_dt(struct mdoc *mdoc) |
|
if (NULL == mdoc->meta.title) |
if (NULL == mdoc->meta.title) |
mdoc->meta.title = xstrdup("untitled"); |
mdoc->meta.title = xstrdup("untitled"); |
|
|
|
mdoc_msg(mdoc, "title: %s", mdoc->meta.title); |
|
|
return(post_prologue(mdoc)); |
return(post_prologue(mdoc)); |
} |
} |
|
|
Line 279 post_os(struct mdoc *mdoc) |
|
Line 281 post_os(struct mdoc *mdoc) |
|
static int |
static int |
post_dd(struct mdoc *mdoc) |
post_dd(struct mdoc *mdoc) |
{ |
{ |
char date[64]; |
char buf[64]; |
size_t sz; |
|
char *p; |
|
struct mdoc_node *n; |
|
|
|
assert(MDOC_ELEM == mdoc->last->type); |
assert(MDOC_ELEM == mdoc->last->type); |
assert(MDOC_Dd == mdoc->last->tok); |
assert(MDOC_Dd == mdoc->last->tok); |
|
|
n = mdoc->last->child; |
|
assert(0 == mdoc->meta.date); |
assert(0 == mdoc->meta.date); |
date[0] = 0; |
|
|
|
sz = 64; |
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")); |
|
|
for ( ; 0 == mdoc->meta.date && n; n = n->next) { |
mdoc_msg(mdoc, "date: %u", mdoc->meta.date); |
assert(MDOC_TEXT == n->type); |
|
p = n->data.text.string; |
|
|
|
if (xstrcmp(p, "$Mdocdate$")) { |
return(post_prologue(mdoc)); |
mdoc->meta.date = time(NULL); |
|
continue; |
|
} else if (xstrcmp(p, "$")) { |
|
mdoc->meta.date = mdoc_atotime(date); |
|
continue; |
|
} else if (xstrcmp(p, "$Mdocdate:")) |
|
continue; |
|
|
|
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")); |
|
} |
|
|
|
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")); |
|
} |
} |
|
|
|
|