diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-11-29 10:53:42 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-11-29 10:53:42 +0000 |
commit | 34df86dc46608f2598c87e854a8b4fb6369129d9 (patch) | |
tree | 2134dd9a04b71e7dce49ed05769f493a210fa463 | |
parent | ba260b631b89ba11f9cb1397e777e91f3bb3438d (diff) | |
download | mandoc-34df86dc46608f2598c87e854a8b4fb6369129d9.tar.gz |
Make `-i' only apply to regular expressions. For the equality operator
(and thus the default), always use strcasestr(). Discussed on tech@
with schwarze@. While here, fix the apropos.c usage() message to be
consistent with apropos(1) and clean up the EXAMPLES in apropos(1).
-rw-r--r-- | apropos.1 | 38 | ||||
-rw-r--r-- | apropos.c | 4 | ||||
-rw-r--r-- | apropos_db.c | 13 |
3 files changed, 20 insertions, 35 deletions
@@ -112,11 +112,11 @@ evaluates a substring, while .Li \&~ evaluates a regular expression. .It Fl i Ar term -Same as -.Ar term , -but +If .Ar term +is a regular expression, it is evaluated case-insensitively. +Has no effect on substring terms. .El .Pp By default, @@ -125,7 +125,7 @@ searches for .Xr mandocdb 8 databases in the default paths stipulated by .Xr man 1 , -parses terms as case-insensitive regular expressions +parses terms as case-sensitive regular expressions .Pq the Li \&~ operator over manual names and descriptions .Pq the Li \&Nm No and Li \&Nd No macro keys . @@ -238,25 +238,25 @@ Invalid paths, or paths without manual databases, are ignored. Overridden by .Fl M . .El -.\" .Sh FILES .Sh EXIT STATUS .Ex -std .Sh EXAMPLES Search for .Qq mdoc -within the manual name and description: +as a substring and regular expression +within each manual name and description: .Pp .Dl $ apropos mdoc +.Dl $ apropos ~^mdoc$ .Pp -Two variants of searching for -.Qq mdoc , -.Qq roff , -or +Include matches for +.Qq roff +and .Qq man -within manual names and descriptions: +for the regular expression case: .Pp -.Dl $ apropos mdoc roff man -.Dl $ apropos mdoc \-o roff \-o man +.Dl $ apropos ~^mdoc$ roff man +.Dl $ apropos ~^mdoc$ \-o roff \-o man .Pp Search for .Qq optind @@ -264,17 +264,11 @@ and .Qq optarg as variable names in the library category: .Pp -.Dl $ apropos \-s 3 \(dqVa~^optind$\(dq -a \(dqVa~^optarg$\(dq -.Pp -Search for all manuals referencing -.Qq POSIX -in any letter case: -.Pp -.Dl $ apropos \-\- \-i posix +.Dl $ apropos \-s 3 Va~^optind \-a Va~^optarg$ .Sh SEE ALSO .Xr man 1 , -.Xr mandoc 1 , -.Xr re_format 7 +.Xr re_format 7 , +.Xr mandocdb 8 .Sh AUTHORS The .Nm @@ -142,8 +142,8 @@ usage(void) { fprintf(stderr, "usage: %s " - "[-M path] " - "[-m path] " + "[-M manpath] " + "[-m manpath] " "[-S arch] " "[-s section] " "expression...\n", diff --git a/apropos_db.c b/apropos_db.c index f1adf29c..3e8c71a2 100644 --- a/apropos_db.c +++ b/apropos_db.c @@ -52,7 +52,6 @@ struct expr { int regex; /* is regex? */ int index; /* index in match array */ uint64_t mask; /* type-mask */ - int cs; /* is case-sensitive? */ int and; /* is rhs of logical AND? */ char *v; /* search value */ regex_t re; /* compiled re, if regex */ @@ -694,7 +693,6 @@ exprexpr(int argc, char *argv[], int *pos, int *lvl, size_t *tt) ++(*pos); ++(*lvl); next = mandoc_calloc(1, sizeof(struct expr)); - next->cs = 1; next->subexpr = exprexpr(argc, argv, pos, lvl, tt); if (NULL == next->subexpr) { free(next); @@ -745,8 +743,6 @@ exprterm(char *buf, int cs) memset(&e, 0, sizeof(struct expr)); - e.cs = cs; - /* Choose regex or substring match. */ if (NULL == (e.v = strpbrk(buf, "=~"))) { @@ -818,13 +814,8 @@ exprmark(const struct expr *p, const char *cp, if (p->regex) { if (regexec(&p->re, cp, 0, NULL, 0)) continue; - } else if (p->cs) { - if (NULL == strstr(cp, p->v)) - continue; - } else { - if (NULL == strcasestr(cp, p->v)) - continue; - } + } else if (NULL == strcasestr(cp, p->v)) + continue; if (NULL == ms) return(1); |