=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/main.c,v retrieving revision 1.195 retrieving revision 1.196 diff -c -r1.195 -r1.196 *** src/usr.bin/mandoc/main.c 2017/06/03 12:16:19 1.195 --- src/usr.bin/mandoc/main.c 2017/06/24 14:38:27 1.196 *************** *** 1,4 **** ! /* $OpenBSD: main.c,v 1.195 2017/06/03 12:16:19 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2012, 2014-2017 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: main.c,v 1.196 2017/06/24 14:38:27 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2012, 2014-2017 Ingo Schwarze *************** *** 68,78 **** struct curparse { 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 */ - void *outdata; /* data for output */ - struct manoutput *outopts; /* output options */ }; --- 68,80 ---- struct curparse { struct mparse *mp; ! struct manoutput *outopts; /* output options */ ! void *outdata; /* data for output */ ! char *os_s; /* operating system for display */ int wstop; /* stop after a file with a warning */ + enum mandocerr mmin; /* ignore messages below this */ + enum mandoc_os os_e; /* check base system conventions */ enum outt outtype; /* which output to use */ }; *************** *** 113,119 **** struct manpage *res, *resp; const char *progname, *sec, *thisarg; char *conf_file, *defpaths, *auxpaths; ! char *defos, *oarg; unsigned char *uc; size_t i, sz; int prio, best_prio; --- 115,121 ---- struct manpage *res, *resp; const char *progname, *sec, *thisarg; char *conf_file, *defpaths, *auxpaths; ! char *oarg; unsigned char *uc; size_t i, sz; int prio, best_prio; *************** *** 159,168 **** memset(&curp, 0, sizeof(struct curparse)); curp.outtype = OUTT_LOCALE; ! curp.wlevel = MANDOCLEVEL_BADARG; curp.outopts = &conf.output; options = MPARSE_SO | MPARSE_UTF8 | MPARSE_LATIN1; - defos = NULL; use_pager = 1; tag_files = NULL; --- 161,169 ---- memset(&curp, 0, sizeof(struct curparse)); curp.outtype = OUTT_LOCALE; ! curp.mmin = MANDOCERR_MAX; curp.outopts = &conf.output; options = MPARSE_SO | MPARSE_UTF8 | MPARSE_LATIN1; use_pager = 1; tag_files = NULL; *************** *** 198,208 **** warnx("-I %s: Bad argument", optarg); return (int)MANDOCLEVEL_BADARG; } ! if (defos) { warnx("-I %s: Duplicate argument", optarg); return (int)MANDOCLEVEL_BADARG; } ! defos = mandoc_strdup(optarg + 3); break; case 'K': if ( ! koptions(&options, optarg)) --- 199,209 ---- warnx("-I %s: Bad argument", optarg); return (int)MANDOCLEVEL_BADARG; } ! if (curp.os_s != NULL) { warnx("-I %s: Duplicate argument", optarg); return (int)MANDOCLEVEL_BADARG; } ! curp.os_s = mandoc_strdup(optarg + 3); break; case 'K': if ( ! koptions(&options, optarg)) *************** *** 416,422 **** moptions(&options, auxpaths); mchars_alloc(); ! curp.mp = mparse_alloc(options, curp.wlevel, mmsg, defos); /* * Conditionally start up the lookaside buffer before parsing. --- 417,424 ---- moptions(&options, auxpaths); mchars_alloc(); ! curp.mp = mparse_alloc(options, curp.mmin, mmsg, ! curp.os_e, curp.os_s); /* * Conditionally start up the lookaside buffer before parsing. *************** *** 494,500 **** mansearch_free(res, sz); } ! free(defos); /* * When using a pager, finish writing both temporary files, --- 496,502 ---- mansearch_free(res, sz); } ! free(curp.os_s); /* * When using a pager, finish writing both temporary files, *************** *** 907,913 **** curp->outtype = OUTT_ASCII; else if (0 == strcmp(arg, "lint")) { curp->outtype = OUTT_LINT; ! curp->wlevel = MANDOCLEVEL_STYLE; } else if (0 == strcmp(arg, "tree")) curp->outtype = OUTT_TREE; else if (0 == strcmp(arg, "man")) --- 909,915 ---- curp->outtype = OUTT_ASCII; else if (0 == strcmp(arg, "lint")) { curp->outtype = OUTT_LINT; ! curp->mmin = MANDOCERR_BASE; } else if (0 == strcmp(arg, "tree")) curp->outtype = OUTT_TREE; else if (0 == strcmp(arg, "man")) *************** *** 936,951 **** woptions(struct curparse *curp, char *arg) { char *v, *o; ! const char *toks[8]; toks[0] = "stop"; toks[1] = "all"; ! toks[2] = "style"; ! toks[3] = "warning"; ! toks[4] = "error"; ! toks[5] = "unsupp"; ! toks[6] = "fatal"; ! toks[7] = NULL; while (*arg) { o = arg; --- 938,956 ---- woptions(struct curparse *curp, char *arg) { char *v, *o; ! const char *toks[11]; toks[0] = "stop"; toks[1] = "all"; ! toks[2] = "base"; ! toks[3] = "style"; ! toks[4] = "warning"; ! toks[5] = "error"; ! toks[6] = "unsupp"; ! toks[7] = "fatal"; ! toks[8] = "openbsd"; ! toks[9] = "netbsd"; ! toks[10] = NULL; while (*arg) { o = arg; *************** *** 955,974 **** break; case 1: case 2: ! curp->wlevel = MANDOCLEVEL_STYLE; break; case 3: ! curp->wlevel = MANDOCLEVEL_WARNING; break; case 4: ! curp->wlevel = MANDOCLEVEL_ERROR; break; case 5: ! curp->wlevel = MANDOCLEVEL_UNSUPP; break; case 6: ! curp->wlevel = MANDOCLEVEL_BADARG; break; default: warnx("-W %s: Bad argument", o); return 0; --- 960,990 ---- break; case 1: case 2: ! curp->mmin = MANDOCERR_BASE; break; case 3: ! curp->mmin = MANDOCERR_STYLE; break; case 4: ! curp->mmin = MANDOCERR_WARNING; break; case 5: ! curp->mmin = MANDOCERR_ERROR; break; case 6: ! curp->mmin = MANDOCERR_UNSUPP; break; + case 7: + curp->mmin = MANDOCERR_MAX; + break; + case 8: + curp->mmin = MANDOCERR_BASE; + curp->os_e = MANDOC_OS_OPENBSD; + break; + case 9: + curp->mmin = MANDOCERR_BASE; + curp->os_e = MANDOC_OS_NETBSD; + break; default: warnx("-W %s: Bad argument", o); return 0; *************** *** 989,997 **** if (line) fprintf(stderr, "%d:%d:", line, col + 1); ! fprintf(stderr, " %s", mparse_strlevel(lvl)); ! if (NULL != (mparse_msg = mparse_strerror(t))) fprintf(stderr, ": %s", mparse_msg); if (msg) --- 1005,1014 ---- if (line) fprintf(stderr, "%d:%d:", line, col + 1); ! fprintf(stderr, " %s", ! t < MANDOCERR_STYLE ? "BASE" : mparse_strlevel(lvl)); ! if ((mparse_msg = mparse_strerror(t)) != NULL) fprintf(stderr, ": %s", mparse_msg); if (msg)