=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/main.c,v retrieving revision 1.89 retrieving revision 1.90 diff -c -r1.89 -r1.90 *** src/usr.bin/mandoc/main.c 2014/03/21 22:17:01 1.89 --- src/usr.bin/mandoc/main.c 2014/04/20 16:44:44 1.90 *************** *** 1,4 **** ! /* $Id: main.c,v 1.89 2014/03/21 22:17:01 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2011, 2012, 2014 Ingo Schwarze --- 1,4 ---- ! /* $Id: main.c,v 1.90 2014/04/20 16:44:44 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2011, 2012, 2014 Ingo Schwarze *************** *** 51,59 **** struct mparse *mp; enum mandoclevel wlevel; /* ignore messages below this */ int wstop; /* stop after a file with a warning */ ! enum outt outtype; /* which output to use */ out_mdoc outmdoc; /* mdoc output ptr */ ! out_man outman; /* man output ptr */ out_free outfree; /* free output ptr */ void *outdata; /* data for output */ char outopts[BUFSIZ]; /* buf of output opts */ --- 51,59 ---- struct mparse *mp; enum mandoclevel wlevel; /* ignore messages below this */ int wstop; /* stop after a file with a warning */ ! enum outt outtype; /* which output to use */ out_mdoc outmdoc; /* mdoc output ptr */ ! out_man outman; /* man output ptr */ out_free outfree; /* free output ptr */ void *outdata; /* data for output */ char outopts[BUFSIZ]; /* buf of output opts */ *************** *** 65,71 **** static int moptions(int *, char *); static void mmsg(enum mandocerr, enum mandoclevel, const char *, int, int, const char *); ! static void parse(struct curparse *, int, const char *, enum mandoclevel *); static int toptions(struct curparse *, char *); static void usage(void) __attribute__((noreturn)); --- 65,71 ---- static int moptions(int *, char *); static void mmsg(enum mandocerr, enum mandoclevel, const char *, int, int, const char *); ! static void parse(struct curparse *, int, const char *, enum mandoclevel *); static int toptions(struct curparse *, char *); static void usage(void) __attribute__((noreturn)); *************** *** 74,79 **** --- 74,80 ---- static const char *progname; + int main(int argc, char *argv[]) { *************** *** 103,141 **** curp.wlevel = MANDOCLEVEL_FATAL; defos = NULL; - /* LINTED */ while (-1 != (c = getopt(argc, argv, "I:m:O:T:VW:"))) switch (c) { ! case ('I'): if (strncmp(optarg, "os=", 3)) { ! fprintf(stderr, "-I%s: Bad argument\n", ! optarg); return((int)MANDOCLEVEL_BADARG); } if (defos) { ! fprintf(stderr, "-I%s: Duplicate argument\n", ! optarg); return((int)MANDOCLEVEL_BADARG); } defos = mandoc_strdup(optarg + 3); break; ! case ('m'): if ( ! moptions(&options, optarg)) return((int)MANDOCLEVEL_BADARG); break; ! case ('O'): (void)strlcat(curp.outopts, optarg, BUFSIZ); (void)strlcat(curp.outopts, ",", BUFSIZ); break; ! case ('T'): if ( ! toptions(&curp, optarg)) return((int)MANDOCLEVEL_BADARG); break; ! case ('W'): if ( ! woptions(&curp, optarg)) return((int)MANDOCLEVEL_BADARG); break; ! case ('V'): version(); /* NOTREACHED */ default: --- 104,142 ---- curp.wlevel = MANDOCLEVEL_FATAL; defos = NULL; while (-1 != (c = getopt(argc, argv, "I:m:O:T:VW:"))) switch (c) { ! case 'I': if (strncmp(optarg, "os=", 3)) { ! fprintf(stderr, ! "-I%s: Bad argument\n", optarg); return((int)MANDOCLEVEL_BADARG); } if (defos) { ! fprintf(stderr, ! "-I%s: Duplicate argument\n", ! optarg); return((int)MANDOCLEVEL_BADARG); } defos = mandoc_strdup(optarg + 3); break; ! case 'm': if ( ! moptions(&options, optarg)) return((int)MANDOCLEVEL_BADARG); break; ! case 'O': (void)strlcat(curp.outopts, optarg, BUFSIZ); (void)strlcat(curp.outopts, ",", BUFSIZ); break; ! case 'T': if ( ! toptions(&curp, optarg)) return((int)MANDOCLEVEL_BADARG); break; ! case 'W': if ( ! woptions(&curp, optarg)) return((int)MANDOCLEVEL_BADARG); break; ! case 'V': version(); /* NOTREACHED */ default: *************** *** 194,208 **** "[-Ooption] " "[-Toutput] " "[-Wlevel]\n" ! "\t [file ...]\n", progname); exit((int)MANDOCLEVEL_BADARG); } static void ! parse(struct curparse *curp, int fd, ! const char *file, enum mandoclevel *level) { enum mandoclevel rc; struct mdoc *mdoc; --- 195,209 ---- "[-Ooption] " "[-Toutput] " "[-Wlevel]\n" ! "\t [file ...]\n", progname); exit((int)MANDOCLEVEL_BADARG); } static void ! parse(struct curparse *curp, int fd, const char *file, ! enum mandoclevel *level) { enum mandoclevel rc; struct mdoc *mdoc; *************** *** 232,262 **** if ( ! (curp->outman && curp->outmdoc)) { switch (curp->outtype) { ! case (OUTT_XHTML): curp->outdata = xhtml_alloc(curp->outopts); curp->outfree = html_free; break; ! case (OUTT_HTML): curp->outdata = html_alloc(curp->outopts); curp->outfree = html_free; break; ! case (OUTT_UTF8): curp->outdata = utf8_alloc(curp->outopts); curp->outfree = ascii_free; break; ! case (OUTT_LOCALE): curp->outdata = locale_alloc(curp->outopts); curp->outfree = ascii_free; break; ! case (OUTT_ASCII): curp->outdata = ascii_alloc(curp->outopts); curp->outfree = ascii_free; break; ! case (OUTT_PDF): curp->outdata = pdf_alloc(curp->outopts); curp->outfree = pspdf_free; break; ! case (OUTT_PS): curp->outdata = ps_alloc(curp->outopts); curp->outfree = pspdf_free; break; --- 233,263 ---- if ( ! (curp->outman && curp->outmdoc)) { switch (curp->outtype) { ! case OUTT_XHTML: curp->outdata = xhtml_alloc(curp->outopts); curp->outfree = html_free; break; ! case OUTT_HTML: curp->outdata = html_alloc(curp->outopts); curp->outfree = html_free; break; ! case OUTT_UTF8: curp->outdata = utf8_alloc(curp->outopts); curp->outfree = ascii_free; break; ! case OUTT_LOCALE: curp->outdata = locale_alloc(curp->outopts); curp->outfree = ascii_free; break; ! case OUTT_ASCII: curp->outdata = ascii_alloc(curp->outopts); curp->outfree = ascii_free; break; ! case OUTT_PDF: curp->outdata = pdf_alloc(curp->outopts); curp->outfree = pspdf_free; break; ! case OUTT_PS: curp->outdata = ps_alloc(curp->outopts); curp->outfree = pspdf_free; break; *************** *** 265,293 **** } switch (curp->outtype) { ! case (OUTT_HTML): /* FALLTHROUGH */ ! case (OUTT_XHTML): curp->outman = html_man; curp->outmdoc = html_mdoc; break; ! case (OUTT_TREE): curp->outman = tree_man; curp->outmdoc = tree_mdoc; break; ! case (OUTT_MAN): curp->outmdoc = man_mdoc; curp->outman = man_man; break; ! case (OUTT_PDF): /* FALLTHROUGH */ ! case (OUTT_ASCII): /* FALLTHROUGH */ ! case (OUTT_UTF8): /* FALLTHROUGH */ ! case (OUTT_LOCALE): /* FALLTHROUGH */ ! case (OUTT_PS): curp->outman = terminal_man; curp->outmdoc = terminal_mdoc; break; --- 266,294 ---- } switch (curp->outtype) { ! case OUTT_HTML: /* FALLTHROUGH */ ! case OUTT_XHTML: curp->outman = html_man; curp->outmdoc = html_mdoc; break; ! case OUTT_TREE: curp->outman = tree_man; curp->outmdoc = tree_mdoc; break; ! case OUTT_MAN: curp->outmdoc = man_mdoc; curp->outman = man_man; break; ! case OUTT_PDF: /* FALLTHROUGH */ ! case OUTT_ASCII: /* FALLTHROUGH */ ! case OUTT_UTF8: /* FALLTHROUGH */ ! case OUTT_LOCALE: /* FALLTHROUGH */ ! case OUTT_PS: curp->outman = terminal_man; curp->outmdoc = terminal_mdoc; break; *************** *** 368,374 **** woptions(struct curparse *curp, char *arg) { char *v, *o; ! const char *toks[6]; toks[0] = "stop"; toks[1] = "all"; --- 369,375 ---- woptions(struct curparse *curp, char *arg) { char *v, *o; ! const char *toks[6]; toks[0] = "stop"; toks[1] = "all"; *************** *** 380,397 **** while (*arg) { o = arg; switch (getsubopt(&arg, UNCONST(toks), &v)) { ! case (0): curp->wstop = 1; break; ! case (1): /* FALLTHROUGH */ ! case (2): curp->wlevel = MANDOCLEVEL_WARNING; break; ! case (3): curp->wlevel = MANDOCLEVEL_ERROR; break; ! case (4): curp->wlevel = MANDOCLEVEL_FATAL; break; default: --- 381,398 ---- while (*arg) { o = arg; switch (getsubopt(&arg, UNCONST(toks), &v)) { ! case 0: curp->wstop = 1; break; ! case 1: /* FALLTHROUGH */ ! case 2: curp->wlevel = MANDOCLEVEL_WARNING; break; ! case 3: curp->wlevel = MANDOCLEVEL_ERROR; break; ! case 4: curp->wlevel = MANDOCLEVEL_FATAL; break; default: *************** *** 404,417 **** } static void ! mmsg(enum mandocerr t, enum mandoclevel lvl, const char *file, int line, int col, const char *msg) { ! fprintf(stderr, "%s:%d:%d: %s: %s", ! file, line, col + 1, ! mparse_strlevel(lvl), ! mparse_strerror(t)); if (msg) fprintf(stderr, ": %s", msg); --- 405,416 ---- } static void ! mmsg(enum mandocerr t, enum mandoclevel lvl, const char *file, int line, int col, const char *msg) { ! fprintf(stderr, "%s:%d:%d: %s: %s", file, line, col + 1, ! mparse_strlevel(lvl), mparse_strerror(t)); if (msg) fprintf(stderr, ": %s", msg);