=================================================================== RCS file: /cvs/mandoc/mdoc_validate.c,v retrieving revision 1.45 retrieving revision 1.49 diff -u -p -r1.45 -r1.49 --- mandoc/mdoc_validate.c 2009/10/15 02:56:51 1.45 +++ mandoc/mdoc_validate.c 2009/10/22 10:35:33 1.49 @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.45 2009/10/15 02:56:51 kristaps Exp $ */ +/* $Id: mdoc_validate.c,v 1.49 2009/10/22 10:35:33 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -74,6 +74,7 @@ static int eerr_eq0(POST_ARGS); static int eerr_eq1(POST_ARGS); static int eerr_ge1(POST_ARGS); static int eerr_le2(POST_ARGS); +static int eerr_le1(POST_ARGS); static int ewarn_ge1(POST_ARGS); static int herr_eq0(POST_ARGS); static int herr_ge1(POST_ARGS); @@ -93,7 +94,6 @@ static int post_rs(POST_ARGS); static int post_sh(POST_ARGS); static int post_sh_body(POST_ARGS); static int post_sh_head(POST_ARGS); -static int post_sp(POST_ARGS); static int post_st(POST_ARGS); static int pre_an(PRE_ARGS); static int pre_bd(PRE_ARGS); @@ -128,7 +128,7 @@ static v_post posts_notext[] = { eerr_eq0, NULL }; static v_post posts_pf[] = { eerr_eq1, NULL }; static v_post posts_rs[] = { berr_ge1, herr_eq0, post_rs, NULL }; static v_post posts_sh[] = { herr_ge1, bwarn_ge1, post_sh, NULL }; -static v_post posts_sp[] = { post_sp, NULL }; +static v_post posts_sp[] = { eerr_le1, NULL }; static v_post posts_ss[] = { herr_ge1, NULL }; static v_post posts_st[] = { eerr_eq1, post_st, NULL }; static v_post posts_text[] = { eerr_ge1, NULL }; @@ -195,7 +195,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { NULL, posts_text }, /* Vt */ { NULL, posts_xr }, /* Xr */ { NULL, posts_text }, /* %A */ - { NULL, posts_text }, /* %B */ + { NULL, posts_text }, /* %B */ /* FIXME: can be used outside Rs/Re. */ { NULL, posts_text }, /* %D */ { NULL, posts_text }, /* %I */ { NULL, posts_text }, /* %J */ @@ -203,7 +203,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { NULL, posts_text }, /* %O */ { NULL, posts_text }, /* %P */ { NULL, posts_text }, /* %R */ - { NULL, posts_text }, /* %T */ + { NULL, posts_text }, /* %T */ /* FIXME: can be used outside Rs/Re. */ { NULL, posts_text }, /* %V */ { NULL, NULL }, /* Ac */ { NULL, NULL }, /* Ao */ @@ -408,6 +408,7 @@ CHECK_BODY_DEFN(ge1, err, err_child_gt, 0) /* berr_ge1 CHECK_ELEM_DEFN(ge1, warn, warn_child_gt, 0) /* ewarn_gt1() */ CHECK_ELEM_DEFN(eq1, err, err_child_eq, 1) /* eerr_eq1() */ CHECK_ELEM_DEFN(le2, err, err_child_lt, 3) /* eerr_le2() */ +CHECK_ELEM_DEFN(le1, err, err_child_lt, 2) /* eerr_le1() */ CHECK_ELEM_DEFN(eq0, err, err_child_eq, 0) /* eerr_eq0() */ CHECK_ELEM_DEFN(ge1, err, err_child_gt, 0) /* eerr_ge1() */ CHECK_HEAD_DEFN(eq0, err, err_child_eq, 0) /* herr_eq0() */ @@ -695,6 +696,8 @@ pre_bd(PRE_ARGS) for (i = 0, err = type = 0; ! err && i < (int)n->args->argc; i++) switch (n->args->argv[i].arg) { + case (MDOC_Centred): + /* FALLTHROUGH */ case (MDOC_Ragged): /* FALLTHROUGH */ case (MDOC_Unfilled): @@ -702,8 +705,6 @@ pre_bd(PRE_ARGS) case (MDOC_Filled): /* FALLTHROUGH */ case (MDOC_Literal): - /* FALLTHROUGH */ - case (MDOC_File): if (0 == type++) break; return(mdoc_nerr(mdoc, n, EMULTIDISP)); @@ -1132,37 +1133,6 @@ post_root(POST_ARGS) return(1); } - - -static int -post_sp(POST_ARGS) -{ - long lval; - char *ep, *buf; - - if (NULL == mdoc->last->child) - return(1); - else if ( ! eerr_eq1(mdoc)) - return(0); - - assert(MDOC_TEXT == mdoc->last->child->type); - buf = mdoc->last->child->string; - assert(buf); - - /* From OpenBSD's strtol(3). */ - errno = 0; - lval = strtol(buf, &ep, 10); - if (buf[0] == '\0' || *ep != '\0') - return(mdoc_nerr(mdoc, mdoc->last->child, ENUMFMT)); - - if ((errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN)) || - (lval > INT_MAX || lval < 0)) - return(mdoc_nerr(mdoc, mdoc->last->child, ENUMFMT)); - - return(1); -} - - static int