=================================================================== RCS file: /cvs/mandoc/Attic/validate.c,v retrieving revision 1.11 retrieving revision 1.13 diff -u -p -r1.11 -r1.13 --- mandoc/Attic/validate.c 2009/01/01 20:40:16 1.11 +++ mandoc/Attic/validate.c 2009/01/02 14:06:16 1.13 @@ -1,4 +1,4 @@ -/* $Id: validate.c,v 1.11 2009/01/01 20:40:16 kristaps Exp $ */ +/* $Id: validate.c,v 1.13 2009/01/02 14:06:16 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -29,6 +29,7 @@ typedef int (*v_args)(struct mdoc *, int, int, int, typedef int (*v_post)(struct mdoc *, int, int); static int need_head_child(struct mdoc *, int, int); +static int no_head_child(struct mdoc *, int, int); static int assert_eq0(struct mdoc *, int, int, int); static int assert_le1(struct mdoc *, int, int, int); @@ -59,6 +60,11 @@ struct valids { }; +/* + * FIXME: have arrays of function pointers in case we want multiple + * check callbacks per macro. + */ + const struct valids mdoc_valids[MDOC_MAX] = { { NULL, NULL, NULL }, /* \" */ { NULL, NULL, NULL }, /* Dd */ /* TODO */ @@ -70,12 +76,12 @@ const struct valids mdoc_valids[MDOC_MAX] = { { NULL, args_blocknest, need_head_child }, /* D1 */ { NULL, args_blocknest, need_head_child }, /* Dl */ { NULL, args_blocknest, NULL }, /* Bd */ - { NULL, NULL, NULL }, /* Ed */ + { NULL, NULL, no_head_child }, /* Ed */ { NULL, NULL, NULL }, /* Bl */ - { NULL, NULL, NULL }, /* El */ + { NULL, NULL, no_head_child }, /* El */ { NULL, NULL, NULL }, /* It */ { need_ge1, NULL, NULL }, /* Ad */ - { NULL, NULL, NULL }, /* An */ + { NULL, NULL, NULL }, /* An */ /* FIXME: no args & argv. */ { NULL, NULL, NULL }, /* Ar */ { need_ge1, NULL, NULL }, /* Cd */ { NULL, NULL, NULL }, /* Cm */ @@ -127,7 +133,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { NULL, NULL, NULL }, /* Do */ { NULL, NULL, NULL }, /* Dq */ { NULL, NULL, NULL }, /* Ec */ - { NULL, NULL, NULL }, /* Ef */ + { NULL, NULL, NULL }, /* Ef */ /* -symbolic, etc. */ { need_ge1, NULL, NULL }, /* Em */ { NULL, NULL, NULL }, /* Eo */ { assert_le1, NULL, NULL }, /* Fx */ @@ -137,7 +143,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { assert_le1, NULL, NULL }, /* Nx */ { assert_le1, NULL, NULL }, /* Ox */ { NULL, NULL, NULL }, /* Pc */ - { NULL, NULL, NULL }, /* Pf */ + { NULL, NULL, NULL }, /* Pf */ /* 2 or more arguments */ { NULL, NULL, NULL }, /* Po */ { NULL, NULL, NULL }, /* Pq */ { NULL, NULL, NULL }, /* Qc */ @@ -238,6 +244,15 @@ need_ge1(struct mdoc *mdoc, int tok, int pos, int sz) if (sz > 0) return(1); return(mdoc_err(mdoc, tok, pos, ERR_ARGS_GE1)); +} + + +static int +no_head_child(struct mdoc *mdoc, int tok, int pos) +{ + + /* TODO */ + return(1); }