summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc/apropos.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2011-11-28 00:16:39 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2011-11-28 00:16:39 +0000
commitadf8e52397d054f53e2b84b8c7877f5afd501330 (patch)
treee6077026f2e9407105ec6752e7098e386975c381 /usr.bin/mandoc/apropos.c
parentea1f56550f295cb0aa4c79760b677980b73d3cfc (diff)
Implement whatis(1) as a special apropos(1) mode as a part of
the mandoc(1) binary; not yet enabled for the general public. Intended to replace src/usr.bin/whatis at a later time. Coded by kristaps@, with a few tweaks by me. To test this: $ mandocdb # unless you have already done so earlier $ sudo ln -s /usr/bin/mandoc /usr/bin/whatis.m $ whatis.m mandoc apropos whatis $ whatis.m man
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;
}