]> git.cameronkatri.com Git - mandoc.git/commitdiff
Get mdoc_argv.c ready to use [some of] mandoc_getarg() by giving said
authorKristaps Dzonsons <kristaps@bsd.lv>
Sun, 17 Apr 2011 09:08:19 +0000 (09:08 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Sun, 17 Apr 2011 09:08:19 +0000 (09:08 +0000)
function a parameter to suppress warnings.

libmandoc.h
libmdoc.h
man_macro.c
mandoc.c
roff.c

index 835e9bf2dbd92648bf36cf7b0c3043eb81dc6158..efbb4d839f172c276e94f90058be8d7bb6a3e44c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: libmandoc.h,v 1.18 2011/04/09 15:29:40 kristaps Exp $ */
+/*     $Id: libmandoc.h,v 1.19 2011/04/17 09:08:19 kristaps Exp $ */
 /*
  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -74,7 +74,8 @@ void           mandoc_msg(enum mandocerr, struct mparse *,
 void            mandoc_vmsg(enum mandocerr, struct mparse *, 
                        int, int, const char *, ...);
 char           *mandoc_strdup(const char *);
-char           *mandoc_getarg(struct mparse *, char **, int, int *);
+char           *mandoc_getarg(struct mparse *, 
+                       char **, int, int, int *);
 char           *mandoc_normdate(struct mparse *, char *, int, int);
 int             mandoc_eos(const char *, size_t, int);
 int             mandoc_hyph(const char *, const char *);
index 2a55eb37be84630edeb70b698a5b214d2b56415e..911cbc3e4cf0756f91a091f6c4c79fca3c403311 100644 (file)
--- a/libmdoc.h
+++ b/libmdoc.h
@@ -1,4 +1,4 @@
-/*     $Id: libmdoc.h,v 1.72 2011/03/22 14:33:05 kristaps Exp $ */
+/*     $Id: libmdoc.h,v 1.73 2011/04/17 09:08:19 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -62,20 +62,20 @@ struct      mdoc_macro {
 
 enum   margserr {
        ARGS_ERROR,
-       ARGS_EOLN,
-       ARGS_WORD,
-       ARGS_PUNCT,
-       ARGS_QWORD,
-       ARGS_PHRASE,
-       ARGS_PPHRASE,
-       ARGS_PEND
+       ARGS_EOLN, /* end-of-line */
+       ARGS_WORD, /* normal word */
+       ARGS_PUNCT, /* series of punctuation */
+       ARGS_QWORD, /* quoted word */
+       ARGS_PHRASE, /* Ta'd phrase (-column) */
+       ARGS_PPHRASE, /* tabbed phrase (-column) */
+       ARGS_PEND /* last phrase (-column) */
 };
 
 enum   margverr {
        ARGV_ERROR,
-       ARGV_EOLN,
-       ARGV_ARG,
-       ARGV_WORD
+       ARGV_EOLN, /* end of line */
+       ARGV_ARG, /* valid argument */
+       ARGV_WORD /* normal word (or bad argument---same thing) */
 };
 
 /*
index b3212e680630319ebabb3649fef10f0b58ad6497..b4e265246bbf8375afa5fb4d7751e77ef4804b15 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_macro.c,v 1.60 2011/03/23 15:33:57 kristaps Exp $ */
+/*     $Id: man_macro.c,v 1.61 2011/04/17 09:08:19 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -484,6 +484,6 @@ man_args(struct man *m, int line, int *pos, char *buf, char **v)
        if ('\0' == *start)
                return(0);
 
-       *v = mandoc_getarg(m->parse, v, line, pos);
+       *v = mandoc_getarg(m->parse, v, line, 1, pos);
        return(1);
 }
index 2c59d598cb84f0fcbbed7faf8ec310b790352f5e..ca73afd7f40b497dfffb1bd9cecabcb9490bd34a 100644 (file)
--- a/mandoc.c
+++ b/mandoc.c
@@ -1,4 +1,4 @@
-/*     $Id: mandoc.c,v 1.46 2011/04/09 15:35:30 kristaps Exp $ */
+/*     $Id: mandoc.c,v 1.47 2011/04/17 09:08:19 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -460,18 +460,19 @@ mandoc_strdup(const char *ptr)
  * or to the null byte terminating the argument line.
  */
 char *
-mandoc_getarg(struct mparse *parse, char **cpp, int ln, int *pos)
+mandoc_getarg(struct mparse *parse, 
+               char **cpp, int ln, int dowarn, int *pos)
 {
        char     *start, *cp;
        int       quoted, pairs, white;
 
        /* Quoting can only start with a new word. */
        start = *cpp;
+       quoted = 0;
        if ('"' == *start) {
                quoted = 1;
                start++;
-       } else
-               quoted = 0;
+       } 
 
        pairs = 0;
        white = 0;
@@ -507,7 +508,7 @@ mandoc_getarg(struct mparse *parse, char **cpp, int ln, int *pos)
        }
 
        /* Quoted argument without a closing quote. */
-       if (1 == quoted)
+       if (dowarn && 1 == quoted)
                mandoc_msg(MANDOCERR_BADQUOTE, parse, ln, *pos, NULL);
 
        /* Null-terminate this argument and move to the next one. */
@@ -521,7 +522,7 @@ mandoc_getarg(struct mparse *parse, char **cpp, int ln, int *pos)
        *pos += (int)(cp - start) + (quoted ? 1 : 0);
        *cpp = cp;
 
-       if ('\0' == *cp && (white || ' ' == cp[-1]))
+       if (dowarn && '\0' == *cp && (white || ' ' == cp[-1]))
                mandoc_msg(MANDOCERR_EOLNSPACE, parse, ln, *pos, NULL);
 
        return(start);
diff --git a/roff.c b/roff.c
index 89d7f466fcd94d470244a2a679050f556606dad4..548e2f94cbbd95d9c18afa831c68ec7dd8fa0f2b 100644 (file)
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/*     $Id: roff.c,v 1.134 2011/04/13 16:26:11 kristaps Exp $ */
+/*     $Id: roff.c,v 1.135 2011/04/17 09:08:19 kristaps Exp $ */
 /*
  * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -1238,7 +1238,7 @@ roff_userdef(ROFF_ARGS)
        cp = *bufp + pos;
        for (i = 0; i < 9; i++)
                arg[i] = '\0' == *cp ? "" :
-                   mandoc_getarg(r->parse, &cp, ln, &pos);
+                   mandoc_getarg(r->parse, &cp, ln, 1, &pos);
 
        /*
         * Expand macro arguments.