aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-04-17 09:08:19 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-04-17 09:08:19 +0000
commit0880ade932d57aac1fa88eaaf4668570bff7cf1d (patch)
tree6248d908a8f84be2ed64c5e34082dcb3e41f650b
parenta8417ed4885aa3e6440de50e68bc15bb0309ca7f (diff)
downloadmandoc-0880ade932d57aac1fa88eaaf4668570bff7cf1d.tar.gz
mandoc-0880ade932d57aac1fa88eaaf4668570bff7cf1d.tar.zst
mandoc-0880ade932d57aac1fa88eaaf4668570bff7cf1d.zip
Get mdoc_argv.c ready to use [some of] mandoc_getarg() by giving said
function a parameter to suppress warnings.
-rw-r--r--libmandoc.h5
-rw-r--r--libmdoc.h22
-rw-r--r--man_macro.c4
-rw-r--r--mandoc.c13
-rw-r--r--roff.c4
5 files changed, 25 insertions, 23 deletions
diff --git a/libmandoc.h b/libmandoc.h
index 835e9bf2..efbb4d83 100644
--- a/libmandoc.h
+++ b/libmandoc.h
@@ -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 *);
diff --git a/libmdoc.h b/libmdoc.h
index 2a55eb37..911cbc3e 100644
--- 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) */
};
/*
diff --git a/man_macro.c b/man_macro.c
index b3212e68..b4e26524 100644
--- a/man_macro.c
+++ b/man_macro.c
@@ -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);
}
diff --git a/mandoc.c b/mandoc.c
index 2c59d598..ca73afd7 100644
--- 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 89d7f466..548e2f94 100644
--- 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.