version 1.37, 2010/12/19 07:53:12 |
version 1.38, 2011/01/04 22:28:17 |
|
|
/* $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> |
* 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 |
|
|
#include "libman.h" |
#include "libman.h" |
#include "libmandoc.h" |
#include "libmandoc.h" |
|
|
#include "out.h" |
|
#include "term.h" |
|
#include "tbl.h" |
|
|
|
#define CHKARGS struct man *m, struct man_node *n |
#define CHKARGS struct man *m, struct man_node *n |
|
|
typedef int (*v_check)(CHKARGS); |
typedef int (*v_check)(CHKARGS); |
|
|
static int post_fi(CHKARGS); |
static int post_fi(CHKARGS); |
static int post_nf(CHKARGS); |
static int post_nf(CHKARGS); |
static int post_TH(CHKARGS); |
static int post_TH(CHKARGS); |
static int post_TS(CHKARGS); |
|
static int post_UC(CHKARGS); |
static int post_UC(CHKARGS); |
|
|
static v_check posts_at[] = { post_AT, NULL }; |
static v_check posts_at[] = { post_AT, NULL }; |
|
|
static v_check posts_part[] = { check_part, NULL }; |
static v_check posts_part[] = { check_part, NULL }; |
static v_check posts_sec[] = { check_sec, NULL }; |
static v_check posts_sec[] = { check_sec, NULL }; |
static v_check posts_th[] = { check_ge2, check_le5, check_title, post_TH, NULL }; |
static v_check posts_th[] = { check_ge2, check_le5, check_title, post_TH, NULL }; |
static v_check posts_ts[] = { post_TS, NULL }; |
|
static v_check posts_uc[] = { post_UC, NULL }; |
static v_check posts_uc[] = { post_UC, NULL }; |
static v_check pres_bline[] = { check_bline, NULL }; |
static v_check pres_bline[] = { check_bline, NULL }; |
|
|
|
|
{ NULL, NULL }, /* PD */ |
{ NULL, NULL }, /* PD */ |
{ NULL, posts_at }, /* AT */ |
{ NULL, posts_at }, /* AT */ |
{ NULL, NULL }, /* in */ |
{ NULL, NULL }, /* in */ |
{ NULL, posts_ts }, /* TS */ |
|
{ NULL, NULL }, /* TE */ |
|
{ NULL, posts_ft }, /* ft */ |
{ NULL, posts_ft }, /* ft */ |
}; |
}; |
|
|
|
|
{ |
{ |
v_check *cp; |
v_check *cp; |
|
|
if (MAN_TEXT == n->type) |
switch (n->type) { |
|
case (MAN_TEXT): |
|
/* FALLTHROUGH */ |
|
case (MAN_ROOT): |
|
/* FALLTHROUGH */ |
|
case (MAN_TBL): |
return(1); |
return(1); |
if (MAN_ROOT == n->type) |
default: |
return(1); |
break; |
|
} |
|
|
if (NULL == (cp = man_valids[n->tok].pres)) |
if (NULL == (cp = man_valids[n->tok].pres)) |
return(1); |
return(1); |
|
|
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_TBL): |
|
return(1); |
default: |
default: |
break; |
break; |
} |
} |
|
|
free(m->meta.source); |
free(m->meta.source); |
|
|
m->meta.source = mandoc_strdup(p); |
m->meta.source = mandoc_strdup(p); |
return(1); |
|
} |
|
|
|
static int |
|
post_TS(CHKARGS) |
|
{ |
|
|
|
if (MAN_HEAD == n->type) |
|
n->parent->data.TS = tbl_alloc(); |
|
|
|
return(1); |
return(1); |
} |
} |