summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc/apropos.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/mandoc/apropos.c')
-rw-r--r--usr.bin/mandoc/apropos.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/usr.bin/mandoc/apropos.c b/usr.bin/mandoc/apropos.c
index b1d84a42090..5e309236ca8 100644
--- a/usr.bin/mandoc/apropos.c
+++ b/usr.bin/mandoc/apropos.c
@@ -1,4 +1,4 @@
-/* $Id: apropos.c,v 1.8 2011/11/26 16:41:35 schwarze Exp $ */
+/* $Id: apropos.c,v 1.9 2011/11/28 00:16:38 schwarze Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -34,7 +34,7 @@ static char *progname;
int
apropos(int argc, char *argv[])
{
- int ch, rc;
+ int ch, rc, whatis;
struct manpaths paths;
size_t terms;
struct opts opts;
@@ -49,12 +49,13 @@ apropos(int argc, char *argv[])
else
++progname;
+ whatis = 0 == strncmp(progname, "whatis", 6);
+
memset(&paths, 0, sizeof(struct manpaths));
memset(&opts, 0, sizeof(struct opts));
auxpaths = defpaths = NULL;
e = NULL;
- rc = 0;
while (-1 != (ch = getopt(argc, argv, "M:m:S:s:")))
switch (ch) {
@@ -72,20 +73,23 @@ apropos(int argc, char *argv[])
break;
default:
usage();
- goto out;
+ return(EXIT_FAILURE);
}
argc -= optind;
argv += optind;
- if (0 == argc) {
- rc = 1;
- goto out;
- }
+ if (0 == argc)
+ return(EXIT_SUCCESS);
+
+ rc = 0;
manpath_parse(&paths, defpaths, auxpaths);
- if (NULL == (e = exprcomp(argc, argv, &terms))) {
+ e = whatis ? termcomp(argc, argv, &terms) :
+ exprcomp(argc, argv, &terms);
+
+ if (NULL == e) {
fprintf(stderr, "%s: Bad expression\n", progname);
goto out;
}