=================================================================== RCS file: /cvs/mandoc/Attic/mdocml.c,v retrieving revision 1.17 retrieving revision 1.20 diff -u -p -r1.17 -r1.20 --- mandoc/Attic/mdocml.c 2008/12/04 11:25:29 1.17 +++ mandoc/Attic/mdocml.c 2008/12/10 14:42:46 1.20 @@ -1,4 +1,4 @@ -/* $Id: mdocml.c,v 1.17 2008/12/04 11:25:29 kristaps Exp $ */ +/* $Id: mdocml.c,v 1.20 2008/12/10 14:42:46 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -50,12 +50,19 @@ static int begin_bufs(const struct md_args *, static int leave_bufs(const struct md_buf *, const struct md_buf *, int); +#ifdef __linux__ +extern int getsubopt(char **, char *const *, char **); +#endif + int main(int argc, char *argv[]) { int c; - char *out, *in; + char *out, *in, *opts, *v; struct md_args args; +#define ALL 0 +#define ERROR 1 + char *toks[] = { "all", "error", NULL }; extern char *optarg; extern int optind; @@ -64,9 +71,9 @@ main(int argc, char *argv[]) (void)memset(&args, 0, sizeof(struct md_args)); - args.type = MD_XML; + args.type = MD_NOOP; - while (-1 != (c = getopt(argc, argv, "c:ef:o:vW"))) + while (-1 != (c = getopt(argc, argv, "c:ef:o:vW:"))) switch (c) { case ('c'): if (args.type != MD_HTML) @@ -83,6 +90,8 @@ main(int argc, char *argv[]) args.type = MD_HTML; else if (0 == strcmp(optarg, "xml")) args.type = MD_XML; + else if (0 == strcmp(optarg, "noop")) + args.type = MD_NOOP; else errx(1, "invalid filter type"); break; @@ -93,7 +102,19 @@ main(int argc, char *argv[]) args.verbosity++; break; case ('W'): - args.warnings |= MD_WARN_ALL; + opts = optarg; + while (*opts) + switch (getsubopt(&opts, toks, &v)) { + case (ALL): + args.warnings |= MD_WARN_ALL; + break; + case (ERROR): + args.warnings |= MD_WARN_ERROR; + break; + default: + usage(); + return(1); + } break; default: usage(); @@ -250,6 +271,8 @@ usage(void) { extern char *__progname; - (void)printf("usage: %s [-vW] [-f filter] [-o outfile] " - "[infile]\n", __progname); + (void)fprintf(stderr, "usage: %s [-v] [-Wwarn...] " + "[-f filter] [-o outfile] [infile]\n", + __progname); } +