=================================================================== RCS file: /cvs/mandoc/mdoc_validate.c,v retrieving revision 1.159 retrieving revision 1.160 diff -u -p -r1.159 -r1.160 --- mandoc/mdoc_validate.c 2011/03/15 16:23:51 1.159 +++ mandoc/mdoc_validate.c 2011/03/17 09:22:39 1.160 @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.159 2011/03/15 16:23:51 kristaps Exp $ */ +/* $Id: mdoc_validate.c,v 1.160 2011/03/17 09:22:39 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2011 Ingo Schwarze @@ -74,6 +74,7 @@ static void check_args(struct mdoc *, struct mdoc_nod static int concat(struct mdoc *, char *, const struct mdoc_node *, size_t); +static enum mdoc_sec a2sec(const char *); static int ebool(POST_ARGS); static int berr_ge1(POST_ARGS); @@ -321,6 +322,30 @@ static const enum mdoct rsord[RSORD_MAX] = { MDOC__U }; +static const char * const secnames[SEC__MAX] = { + NULL, + "NAME", + "LIBRARY", + "SYNOPSIS", + "DESCRIPTION", + "IMPLEMENTATION NOTES", + "RETURN VALUES", + "ENVIRONMENT", + "FILES", + "EXIT STATUS", + "EXAMPLES", + "DIAGNOSTICS", + "COMPATIBILITY", + "ERRORS", + "SEE ALSO", + "STANDARDS", + "HISTORY", + "AUTHORS", + "CAVEATS", + "BUGS", + "SECURITY CONSIDERATIONS", + NULL +}; int mdoc_valid_pre(struct mdoc *mdoc, struct mdoc_node *n) @@ -1821,7 +1846,7 @@ post_sh_head(POST_ARGS) if ( ! concat(mdoc, buf, mdoc->last->child, BUFSIZ)) return(0); - sec = mdoc_str2sec(buf); + sec = a2sec(buf); /* The NAME should be first. */ @@ -2253,5 +2278,17 @@ concat(struct mdoc *m, char *p, const struct mdoc_node } return(1); +} + +static enum mdoc_sec +a2sec(const char *p) +{ + int i; + + for (i = 0; i < (int)SEC__MAX; i++) + if (secnames[i] && 0 == strcmp(p, secnames[i])) + return((enum mdoc_sec)i); + + return(SEC_CUSTOM); }