summaryrefslogtreecommitdiffstatshomepage
path: root/mmain.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-03-08 11:41:22 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-03-08 11:41:22 +0000
commit6b2defb0f921c22df14e94ce0098640d4401303e (patch)
treeb4088b5d8253e5f241001d599644d414ecfd56bd /mmain.c
parenta454003ad67073a51037d0dc5dcbf5b3cced1b8e (diff)
downloadmandoc-6b2defb0f921c22df14e94ce0098640d4401303e.tar.gz
mandoc-6b2defb0f921c22df14e94ce0098640d4401303e.tar.zst
mandoc-6b2defb0f921c22df14e94ce0098640d4401303e.zip
BROKEN CHECK-IN. Wide-ranging updates.
Removed libmdoc internal argv limit (all dynamic). Removed "data" union in mdoc_node (to be selectively re-added).
Diffstat (limited to 'mmain.c')
-rw-r--r--mmain.c35
1 files changed, 30 insertions, 5 deletions
diff --git a/mmain.c b/mmain.c
index 0660f284..5932d0ac 100644
--- a/mmain.c
+++ b/mmain.c
@@ -1,4 +1,4 @@
- /* $Id: mmain.c,v 1.5 2009/03/06 14:13:47 kristaps Exp $ */
+ /* $Id: mmain.c,v 1.6 2009/03/08 11:41:22 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -44,11 +44,13 @@ struct mmain {
u_long bufsz; /* Input buffer size. */
char *in; /* Input file name. */
int fdin; /* Input file desc. */
+ int pflags; /* Parse flags. */
};
extern char *__progname;
-static int getsopts(struct mmain *, char *);
+static int optswarn(struct mmain *, char *);
+static int optsopt(struct mmain *, char *);
static int parse(struct mmain *);
static void msg_msg(void *, int, int, const char *);
static int msg_err(void *, int, int, const char *);
@@ -109,7 +111,7 @@ mmain_getopt(struct mmain *p, int argc, char *argv[],
extern int optind;
- sz = strlcpy(opts, "VvW:", 32);
+ sz = strlcpy(opts, "VvW:f:", 32);
assert(sz < 32);
if (u) {
@@ -122,6 +124,10 @@ mmain_getopt(struct mmain *p, int argc, char *argv[],
/* LINTED */
while (-1 != (c = getopt(argc, argv, opts)))
switch (c) {
+ case ('f'):
+ if ( ! optsopt(p, optarg))
+ return(-1);
+ break;
case ('v'):
p->dbg++;
break;
@@ -129,7 +135,7 @@ mmain_getopt(struct mmain *p, int argc, char *argv[],
(void)printf("%s %s\n", __progname, VERSION);
return(0);
case ('W'):
- if ( ! getsopts(p, optarg))
+ if ( ! optswarn(p, optarg))
return(-1);
break;
case ('?'):
@@ -208,7 +214,26 @@ mmain_mdoc(struct mmain *p)
static int
-getsopts(struct mmain *p, char *arg)
+optsopt(struct mmain *p, char *arg)
+{
+ char *v;
+ char *toks[] = { "ignore-scope", NULL };
+
+ while (*arg)
+ switch (getsubopt(&arg, toks, &v)) {
+ case (0):
+ p->pflags |= MDOC_IGN_SCOPE;
+ break;
+ default:
+ return(0);
+ }
+
+ return(1);
+}
+
+
+static int
+optswarn(struct mmain *p, char *arg)
{
char *v;
char *toks[] = { "all", "compat",