aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/apropos.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-11-27 18:54:01 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-11-27 18:54:01 +0000
commit7f0964d6bed1077435683bcb011c0c605f6a0255 (patch)
tree546ec179ee4d7b7a9fa2be1d9b8d222d47bf09c3 /apropos.c
parent70b854a8e664254f12bc43f940791a2514b10cfc (diff)
downloadmandoc-7f0964d6bed1077435683bcb011c0c605f6a0255.tar.gz
mandoc-7f0964d6bed1077435683bcb011c0c605f6a0255.tar.zst
mandoc-7f0964d6bed1077435683bcb011c0c605f6a0255.zip
Get us a whatis(1) mode for apropos(1).
This is from a patch to tech@ as critiqued by schwarze@, checked in to get the ball rolling.
Diffstat (limited to 'apropos.c')
-rw-r--r--apropos.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/apropos.c b/apropos.c
index cf8fec63..4bfdbf04 100644
--- a/apropos.c
+++ b/apropos.c
@@ -1,4 +1,4 @@
-/* $Id: apropos.c,v 1.19 2011/11/26 22:38:11 schwarze Exp $ */
+/* $Id: apropos.c,v 1.20 2011/11/27 18:54:01 kristaps Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -38,7 +38,7 @@ static char *progname;
int
main(int argc, char *argv[])
{
- int ch, rc;
+ int ch, rc, whatis;
struct manpaths paths;
size_t terms;
struct opts opts;
@@ -53,12 +53,13 @@ main(int argc, char *argv[])
else
++progname;
+ whatis = 0 == strcmp(progname, "whatis");
+
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) {
@@ -76,20 +77,23 @@ main(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;
}