version 1.60, 2011/01/17 00:21:29 |
version 1.63, 2011/03/07 01:35:51 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* 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 |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 121 man_valid_pre(struct man *m, struct man_node *n) |
|
Line 122 man_valid_pre(struct man *m, struct man_node *n) |
|
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case (MAN_ROOT): |
case (MAN_ROOT): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
|
case (MAN_EQN): |
|
/* FALLTHROUGH */ |
case (MAN_TBL): |
case (MAN_TBL): |
return(1); |
return(1); |
default: |
default: |
Line 150 man_valid_post(struct man *m) |
|
Line 153 man_valid_post(struct man *m) |
|
return(check_text(m, m->last)); |
return(check_text(m, m->last)); |
case (MAN_ROOT): |
case (MAN_ROOT): |
return(check_root(m, m->last)); |
return(check_root(m, m->last)); |
|
case (MAN_EQN): |
|
/* FALLTHROUGH */ |
case (MAN_TBL): |
case (MAN_TBL): |
return(1); |
return(1); |
default: |
default: |
Line 190 check_root(CHKARGS) |
|
Line 195 check_root(CHKARGS) |
|
*/ |
*/ |
|
|
m->meta.title = mandoc_strdup("unknown"); |
m->meta.title = mandoc_strdup("unknown"); |
m->meta.date = time(NULL); |
|
m->meta.msec = mandoc_strdup("1"); |
m->meta.msec = mandoc_strdup("1"); |
|
m->meta.date = mandoc_normdate(NULL, |
|
m->msg, m->data, n->line, n->pos); |
} |
} |
|
|
return(1); |
return(1); |
Line 294 check_ft(CHKARGS) |
|
Line 300 check_ft(CHKARGS) |
|
} |
} |
|
|
if (0 == ok) { |
if (0 == ok) { |
man_vmsg(m, MANDOCERR_BADFONT, |
man_vmsg(m, MANDOCERR_BADFONT, |
n->line, n->pos, "%s", cp); |
n->line, n->pos, "%s", cp); |
*cp = '\0'; |
*cp = '\0'; |
} |
} |
|
|
post_TH(CHKARGS) |
post_TH(CHKARGS) |
{ |
{ |
const char *p; |
const char *p; |
|
int line, pos; |
|
|
if (m->meta.title) |
if (m->meta.title) |
free(m->meta.title); |
free(m->meta.title); |
Line 382 post_TH(CHKARGS) |
|
Line 389 post_TH(CHKARGS) |
|
free(m->meta.source); |
free(m->meta.source); |
if (m->meta.msec) |
if (m->meta.msec) |
free(m->meta.msec); |
free(m->meta.msec); |
if (m->meta.rawdate) |
if (m->meta.date) |
free(m->meta.rawdate); |
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.msec = m->meta.source = NULL; |
m->meta.date = 0; |
|
|
|
/* ->TITLE<- MSEC DATE SOURCE VOL */ |
/* ->TITLE<- MSEC DATE SOURCE VOL */ |
|
|
Line 415 post_TH(CHKARGS) |
|
Line 423 post_TH(CHKARGS) |
|
|
|
/* TITLE MSEC ->DATE<- SOURCE VOL */ |
/* 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) |
if (n) |
n = n->next; |
n = n->next; |
if (n && n->string && *n->string) { |
if (n) |
m->meta.date = mandoc_a2time |
pos = n->pos; |
(MTIME_ISO_8601, n->string); |
m->meta.date = mandoc_normdate(n ? n->string : NULL, |
if (0 == m->meta.date) { |
m->msg, m->data, line, pos); |
man_nmsg(m, n, MANDOCERR_BADDATE); |
|
m->meta.rawdate = mandoc_strdup(n->string); |
|
} |
|
} else |
|
m->meta.date = time(NULL); |
|
|
|
/* TITLE MSEC DATE ->SOURCE<- VOL */ |
/* TITLE MSEC DATE ->SOURCE<- VOL */ |
|
|