=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/main.c,v retrieving revision 1.21 retrieving revision 1.22 diff -c -r1.21 -r1.22 *** src/usr.bin/mandoc/main.c 2010/02/18 02:11:26 1.21 --- src/usr.bin/mandoc/main.c 2010/03/26 01:22:05 1.22 *************** *** 1,4 **** ! /* $Id: main.c,v 1.21 2010/02/18 02:11:26 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * --- 1,4 ---- ! /* $Id: main.c,v 1.22 2010/03/26 01:22:05 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * *************** *** 60,70 **** #define WARN_WALL (1 << 0) /* All-warnings mask. */ #define WARN_WERR (1 << 2) /* Warnings->errors. */ int fflags; ! #define IGN_SCOPE (1 << 0) /* Ignore scope errors. */ ! #define NO_IGN_ESCAPE (1 << 1) /* Don't ignore bad escapes. */ ! #define NO_IGN_MACRO (1 << 2) /* Don't ignore bad macros. */ ! #define NO_IGN_CHARS (1 << 3) /* Don't ignore bad chars. */ ! #define IGN_ERRORS (1 << 4) /* Ignore failed parse. */ enum intt inttype; /* Input parsers... */ struct man *man; struct man *lastman; --- 60,70 ---- #define WARN_WALL (1 << 0) /* All-warnings mask. */ #define WARN_WERR (1 << 2) /* Warnings->errors. */ int fflags; ! #define FL_IGN_SCOPE (1 << 0) /* Ignore scope errors. */ ! #define FL_NIGN_ESCAPE (1 << 1) /* Don't ignore bad escapes. */ ! #define FL_NIGN_MACRO (1 << 2) /* Don't ignore bad macros. */ ! #define FL_NIGN_CHARS (1 << 3) /* Don't ignore bad chars. */ ! #define FL_IGN_ERRORS (1 << 4) /* Ignore failed parse. */ enum intt inttype; /* Input parsers... */ struct man *man; struct man *lastman; *************** *** 78,85 **** char outopts[BUFSIZ]; }; static int foptions(int *, char *); ! static int toptions(enum outt *, char *); static int moptions(enum intt *, char *); static int woptions(int *, char *); static int merr(void *, int, int, const char *); --- 78,89 ---- char outopts[BUFSIZ]; }; + #define FL_STRICT FL_NIGN_ESCAPE | \ + FL_NIGN_MACRO | \ + FL_NIGN_CHARS + static int foptions(int *, char *); ! static int toptions(struct curparse *, char *); static int moptions(enum intt *, char *); static int woptions(int *, char *); static int merr(void *, int, int, const char *); *************** *** 132,138 **** (void)strlcat(curp.outopts, ",", BUFSIZ); break; case ('T'): ! if ( ! toptions(&curp.outtype, optarg)) return(EXIT_FAILURE); break; case ('W'): --- 136,142 ---- (void)strlcat(curp.outopts, ",", BUFSIZ); break; case ('T'): ! if ( ! toptions(&curp, optarg)) return(EXIT_FAILURE); break; case ('W'): *************** *** 160,166 **** curp.fd = STDIN_FILENO; c = fdesc(&blk, &ln, &curp); ! if ( ! (IGN_ERRORS & curp.fflags)) rc = 1 == c ? 1 : 0; else rc = -1 == c ? 0 : 1; --- 164,170 ---- curp.fd = STDIN_FILENO; c = fdesc(&blk, &ln, &curp); ! if ( ! (FL_IGN_ERRORS & curp.fflags)) rc = 1 == c ? 1 : 0; else rc = -1 == c ? 0 : 1; *************** *** 168,174 **** while (rc && *argv) { c = ffile(&blk, &ln, *argv, &curp); ! if ( ! (IGN_ERRORS & curp.fflags)) rc = 1 == c ? 1 : 0; else rc = -1 == c ? 0 : 1; --- 172,178 ---- while (rc && *argv) { c = ffile(&blk, &ln, *argv, &curp); ! if ( ! (FL_IGN_ERRORS & curp.fflags)) rc = 1 == c ? 1 : 0; else rc = -1 == c ? 0 : 1; *************** *** 232,242 **** pflags = MAN_IGN_MACRO | MAN_IGN_ESCAPE | MAN_IGN_CHARS; ! if (curp->fflags & NO_IGN_MACRO) pflags &= ~MAN_IGN_MACRO; ! if (curp->fflags & NO_IGN_CHARS) pflags &= ~MAN_IGN_CHARS; ! if (curp->fflags & NO_IGN_ESCAPE) pflags &= ~MAN_IGN_ESCAPE; return(man_alloc(curp, pflags, &mancb)); --- 236,246 ---- pflags = MAN_IGN_MACRO | MAN_IGN_ESCAPE | MAN_IGN_CHARS; ! if (curp->fflags & FL_NIGN_MACRO) pflags &= ~MAN_IGN_MACRO; ! if (curp->fflags & FL_NIGN_CHARS) pflags &= ~MAN_IGN_CHARS; ! if (curp->fflags & FL_NIGN_ESCAPE) pflags &= ~MAN_IGN_ESCAPE; return(man_alloc(curp, pflags, &mancb)); *************** *** 256,268 **** pflags = MDOC_IGN_MACRO | MDOC_IGN_ESCAPE | MDOC_IGN_CHARS; ! if (curp->fflags & IGN_SCOPE) pflags |= MDOC_IGN_SCOPE; ! if (curp->fflags & NO_IGN_ESCAPE) pflags &= ~MDOC_IGN_ESCAPE; ! if (curp->fflags & NO_IGN_MACRO) pflags &= ~MDOC_IGN_MACRO; ! if (curp->fflags & NO_IGN_CHARS) pflags &= ~MDOC_IGN_CHARS; return(mdoc_alloc(curp, pflags, &mdoccb)); --- 260,272 ---- pflags = MDOC_IGN_MACRO | MDOC_IGN_ESCAPE | MDOC_IGN_CHARS; ! if (curp->fflags & FL_IGN_SCOPE) pflags |= MDOC_IGN_SCOPE; ! if (curp->fflags & FL_NIGN_ESCAPE) pflags &= ~MDOC_IGN_ESCAPE; ! if (curp->fflags & FL_NIGN_MACRO) pflags &= ~MDOC_IGN_MACRO; ! if (curp->fflags & FL_NIGN_CHARS) pflags &= ~MDOC_IGN_CHARS; return(mdoc_alloc(curp, pflags, &mdoccb)); *************** *** 534,552 **** static int ! toptions(enum outt *tflags, char *arg) { if (0 == strcmp(arg, "ascii")) ! *tflags = OUTT_ASCII; ! else if (0 == strcmp(arg, "lint")) ! *tflags = OUTT_LINT; else if (0 == strcmp(arg, "tree")) ! *tflags = OUTT_TREE; else if (0 == strcmp(arg, "html")) ! *tflags = OUTT_HTML; else if (0 == strcmp(arg, "xhtml")) ! *tflags = OUTT_XHTML; else { fprintf(stderr, "%s: Bad argument\n", arg); return(0); --- 538,559 ---- static int ! toptions(struct curparse *curp, char *arg) { if (0 == strcmp(arg, "ascii")) ! curp->outtype = OUTT_ASCII; ! else if (0 == strcmp(arg, "lint")) { ! curp->outtype = OUTT_LINT; ! curp->wflags |= WARN_WALL; ! curp->fflags |= FL_STRICT; ! } else if (0 == strcmp(arg, "tree")) ! curp->outtype = OUTT_TREE; else if (0 == strcmp(arg, "html")) ! curp->outtype = OUTT_HTML; else if (0 == strcmp(arg, "xhtml")) ! curp->outtype = OUTT_XHTML; else { fprintf(stderr, "%s: Bad argument\n", arg); return(0); *************** *** 575,600 **** o = arg; switch (getsubopt(&arg, UNCONST(toks), &v)) { case (0): ! *fflags |= IGN_SCOPE; break; case (1): ! *fflags |= NO_IGN_ESCAPE; break; case (2): ! *fflags |= NO_IGN_MACRO; break; case (3): ! *fflags |= NO_IGN_CHARS; break; case (4): ! *fflags |= IGN_ERRORS; break; case (5): ! *fflags |= NO_IGN_ESCAPE | ! NO_IGN_MACRO | NO_IGN_CHARS; break; case (6): ! *fflags &= ~NO_IGN_ESCAPE; break; default: fprintf(stderr, "%s: Bad argument\n", o); --- 582,606 ---- o = arg; switch (getsubopt(&arg, UNCONST(toks), &v)) { case (0): ! *fflags |= FL_IGN_SCOPE; break; case (1): ! *fflags |= FL_NIGN_ESCAPE; break; case (2): ! *fflags |= FL_NIGN_MACRO; break; case (3): ! *fflags |= FL_NIGN_CHARS; break; case (4): ! *fflags |= FL_IGN_ERRORS; break; case (5): ! *fflags |= FL_STRICT; break; case (6): ! *fflags &= ~FL_NIGN_ESCAPE; break; default: fprintf(stderr, "%s: Bad argument\n", o);