]> git.cameronkatri.com Git - mandoc.git/blobdiff - tbl_opts.c
Further apropos(1) speed optimization was trickier than anticipated.
[mandoc.git] / tbl_opts.c
index b93886764a411b9691dc08d4ac9488edc4d77acb..5bd67f80ee3a263b0890f916f98ce7f993cf1038 100644 (file)
@@ -1,6 +1,6 @@
-/*     $Id: tbl_opts.c,v 1.7 2011/01/07 13:20:58 kristaps Exp $ */
+/*     $Id: tbl_opts.c,v 1.12 2011/09/18 14:14:15 schwarze Exp $ */
 /*
- * Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include "mandoc.h"
+#include "libmandoc.h"
 #include "libroff.h"
 
 enum   tbl_ident {
@@ -88,7 +93,8 @@ arg(struct tbl_node *tbl, int ln, const char *p, int *pos, enum tbl_ident key)
        /* Arguments always begin with a parenthesis. */
 
        if ('(' != p[*pos]) {
-               TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos);
+               mandoc_msg(MANDOCERR_TBL, tbl->parse, 
+                               ln, *pos, NULL);
                return(0);
        }
 
@@ -103,12 +109,14 @@ arg(struct tbl_node *tbl, int ln, const char *p, int *pos, enum tbl_ident key)
        switch (key) {
        case (KEY_DELIM):
                if ('\0' == p[(*pos)++]) {
-                       TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1);
+                       mandoc_msg(MANDOCERR_TBL, tbl->parse,
+                                       ln, *pos - 1, NULL);
                        return(0);
                } 
 
                if ('\0' == p[(*pos)++]) {
-                       TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1);
+                       mandoc_msg(MANDOCERR_TBL, tbl->parse,
+                                       ln, *pos - 1, NULL);
                        return(0);
                } 
                break;
@@ -116,7 +124,8 @@ arg(struct tbl_node *tbl, int ln, const char *p, int *pos, enum tbl_ident key)
                if ('\0' != (tbl->opts.tab = p[(*pos)++]))
                        break;
 
-               TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1);
+               mandoc_msg(MANDOCERR_TBL, tbl->parse,
+                               ln, *pos - 1, NULL);
                return(0);
        case (KEY_LINESIZE):
                for (i = 0; i < KEY_MAXNUMSZ && p[*pos]; i++, (*pos)++) {
@@ -131,13 +140,14 @@ arg(struct tbl_node *tbl, int ln, const char *p, int *pos, enum tbl_ident key)
                        break;
                }
 
-               (*tbl->msg)(MANDOCERR_TBL, tbl->data, ln, *pos, NULL);
+               mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, *pos, NULL);
                return(0);
        case (KEY_DPOINT):
                if ('\0' != (tbl->opts.decimal = p[(*pos)++]))
                        break;
 
-               TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1);
+               mandoc_msg(MANDOCERR_TBL, tbl->parse, 
+                               ln, *pos - 1, NULL);
                return(0);
        default:
                abort();
@@ -149,7 +159,7 @@ arg(struct tbl_node *tbl, int ln, const char *p, int *pos, enum tbl_ident key)
        if (')' == p[(*pos)++])
                return(1);
 
-       TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos - 1);
+       mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, *pos - 1, NULL);
        return(0);
 }
 
@@ -188,7 +198,7 @@ again:      /*
        /* Copy up to first non-alpha character. */
 
        for (sv = *pos, i = 0; i < KEY_MAXNAME; i++, (*pos)++) {
-               buf[i] = tolower(p[*pos]);
+               buf[i] = (char)tolower((unsigned char)p[*pos]);
                if ( ! isalpha((unsigned char)buf[i]))
                        break;
        }
@@ -196,7 +206,7 @@ again:      /*
        /* Exit if buffer is empty (or overrun). */
 
        if (KEY_MAXNAME == i || 0 == i) {
-               TBL_MSG(tbl, MANDOCERR_TBL, ln, *pos);
+               mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, *pos, NULL);
                return;
        }
 
@@ -235,7 +245,7 @@ again:      /*
         */
 
        if (KEY_MAXKEYS == i)
-               TBL_MSG(tbl, MANDOCERR_TBLOPT, ln, sv);
+               mandoc_msg(MANDOCERR_TBLOPT, tbl->parse, ln, sv, NULL);
 
        goto again;
        /* NOTREACHED */