summaryrefslogtreecommitdiffstats
path: root/usr.bin/mandoc/man_validate.c
diff options
context:
space:
mode:
authorschwarze <schwarze@openbsd.org>2011-03-07 01:35:33 +0000
committerschwarze <schwarze@openbsd.org>2011-03-07 01:35:33 +0000
commitb058e777acbf34e2fc7e3eb7c4d67c742d4c66ae (patch)
tree9bec3dc1880da1266da68c4e7bb56b092857c65e /usr.bin/mandoc/man_validate.c
parentThe global_int information acpi collects is not used by amd64. (diff)
downloadwireguard-openbsd-b058e777acbf34e2fc7e3eb7c4d67c742d4c66ae.tar.xz
wireguard-openbsd-b058e777acbf34e2fc7e3eb7c4d67c742d4c66ae.zip
Clean up date handling,
as a first step to get rid of the frequent petty warnings in this area: - always store dates as strings, not as seconds since the Epoch - for input, try the three most common formats everywhere - for unrecognized format, just pass the date though verbatim - when there is no date at all, still use the current date Originally triggered by a one-line patch from Tim van der Molen, <tbvdm at xs4all dot nl>, which is included here. Feedback and OK on manual parts from jmc@. "please check this in" kristaps@
Diffstat (limited to 'usr.bin/mandoc/man_validate.c')
-rw-r--r--usr.bin/mandoc/man_validate.c35
1 files changed, 13 insertions, 22 deletions
diff --git a/usr.bin/mandoc/man_validate.c b/usr.bin/mandoc/man_validate.c
index 3c1e91f809f..f6321084eb9 100644
--- a/usr.bin/mandoc/man_validate.c
+++ b/usr.bin/mandoc/man_validate.c
@@ -1,4 +1,4 @@
-/* $Id: man_validate.c,v 1.40 2011/01/17 00:15:19 schwarze Exp $ */
+/* $Id: man_validate.c,v 1.41 2011/03/07 01:35:33 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -187,8 +187,9 @@ check_root(CHKARGS)
*/
m->meta.title = mandoc_strdup("unknown");
- m->meta.date = time(NULL);
m->meta.msec = mandoc_strdup("1");
+ m->meta.date = mandoc_normdate(NULL,
+ m->msg, m->data, n->line, n->pos);
}
return(1);
@@ -370,6 +371,7 @@ static int
post_TH(CHKARGS)
{
const char *p;
+ int line, pos;
if (m->meta.title)
free(m->meta.title);
@@ -379,12 +381,13 @@ post_TH(CHKARGS)
free(m->meta.source);
if (m->meta.msec)
free(m->meta.msec);
- if (m->meta.rawdate)
- free(m->meta.rawdate);
+ if (m->meta.date)
+ free(m->meta.date);
- m->meta.title = m->meta.vol = m->meta.rawdate =
+ line = n->line;
+ pos = n->pos;
+ m->meta.title = m->meta.vol = m->meta.date =
m->meta.msec = m->meta.source = NULL;
- m->meta.date = 0;
/* ->TITLE<- MSEC DATE SOURCE VOL */
@@ -412,24 +415,12 @@ post_TH(CHKARGS)
/* TITLE MSEC ->DATE<- SOURCE VOL */
- /*
- * Try to parse the date. If this works, stash the epoch (this
- * is optimal because we can reformat it in the canonical form).
- * If it doesn't parse, isn't specified at all, or is an empty
- * string, then use the current date.
- */
-
if (n)
n = n->next;
- if (n && n->string && *n->string) {
- m->meta.date = mandoc_a2time
- (MTIME_ISO_8601, n->string);
- if (0 == m->meta.date) {
- man_nmsg(m, n, MANDOCERR_BADDATE);
- m->meta.rawdate = mandoc_strdup(n->string);
- }
- } else
- m->meta.date = time(NULL);
+ if (n)
+ pos = n->pos;
+ m->meta.date = mandoc_normdate(n ? n->string : NULL,
+ m->msg, m->data, line, pos);
/* TITLE MSEC DATE ->SOURCE<- VOL */