=================================================================== RCS file: /cvs/mandoc/main.c,v retrieving revision 1.174 retrieving revision 1.179 diff -u -p -r1.174 -r1.179 --- mandoc/main.c 2014/06/20 16:11:42 1.174 +++ mandoc/main.c 2014/08/16 23:04:25 1.179 @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.174 2014/06/20 16:11:42 schwarze Exp $ */ +/* $Id: main.c,v 1.179 2014/08/16 23:04:25 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2011, 2012, 2014 Ingo Schwarze @@ -16,10 +16,10 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif +#include + #include #include #include @@ -68,6 +68,10 @@ struct curparse { char outopts[BUFSIZ]; /* buf of output opts */ }; +#if HAVE_SQLITE3 +int apropos(int, char**); +#endif + static int moptions(int *, char *); static void mmsg(enum mandocerr, enum mandoclevel, const char *, int, int, const char *); @@ -96,6 +100,12 @@ main(int argc, char *argv[]) else ++progname; +#if HAVE_SQLITE3 + if (0 == strncmp(progname, "apropos", 7) || + 0 == strncmp(progname, "whatis", 6)) + return(apropos(argc, argv)); +#endif + memset(&curp, 0, sizeof(struct curparse)); options = MPARSE_SO; @@ -108,13 +118,14 @@ main(int argc, char *argv[]) case 'I': if (strncmp(optarg, "os=", 3)) { fprintf(stderr, - "-I%s: Bad argument\n", optarg); + "%s: -I%s: Bad argument\n", + progname, optarg); return((int)MANDOCLEVEL_BADARG); } if (defos) { fprintf(stderr, - "-I%s: Duplicate argument\n", - optarg); + "%s: -I%s: Duplicate argument\n", + progname, optarg); return((int)MANDOCLEVEL_BADARG); } defos = mandoc_strdup(optarg + 3); @@ -324,7 +335,8 @@ moptions(int *options, char *arg) else if (0 == strcmp(arg, "an")) *options |= MPARSE_MAN; else { - fprintf(stderr, "%s: Bad argument\n", arg); + fprintf(stderr, "%s: -m%s: Bad argument\n", + progname, arg); return(0); } @@ -357,7 +369,8 @@ toptions(struct curparse *curp, char *arg) else if (0 == strcmp(arg, "pdf")) curp->outtype = OUTT_PDF; else { - fprintf(stderr, "%s: Bad argument\n", arg); + fprintf(stderr, "%s: -T%s: Bad argument\n", + progname, arg); return(0); } @@ -395,7 +408,8 @@ woptions(struct curparse *curp, char *arg) curp->wlevel = MANDOCLEVEL_FATAL; break; default: - fprintf(stderr, "-W%s: Bad argument\n", o); + fprintf(stderr, "%s: -W%s: Bad argument\n", + progname, o); return(0); } } @@ -407,10 +421,17 @@ static void mmsg(enum mandocerr t, enum mandoclevel lvl, const char *file, int line, int col, const char *msg) { + const char *mparse_msg; - fprintf(stderr, "%s: %s:%d:%d: %s: %s", progname, - file, line, col + 1, - mparse_strlevel(lvl), mparse_strerror(t)); + fprintf(stderr, "%s: %s:", progname, file); + + 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) fprintf(stderr, ": %s", msg);