From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (kristaps@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id pATArg8j003061 for ; Tue, 29 Nov 2011 05:53:43 -0500 (EST) Received: (from kristaps@localhost) by krisdoz.my.domain (8.14.3/8.14.3/Submit) id pATArg4D005293; Tue, 29 Nov 2011 05:53:42 -0500 (EST) Date: Tue, 29 Nov 2011 05:53:42 -0500 (EST) Message-Id: <201111291053.pATArg4D005293@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: kristaps@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Make `-i' only apply to regular expressions. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- 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). Modified Files: -------------- mdocml: apropos.1 apropos_db.c apropos.c Revision Data ------------- Index: apropos_db.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/apropos_db.c,v retrieving revision 1.15 retrieving revision 1.16 diff -Lapropos_db.c -Lapropos_db.c -u -p -r1.15 -r1.16 --- apropos_db.c +++ 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 *po ++(*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 cha 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); Index: apropos.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/apropos.c,v retrieving revision 1.21 retrieving revision 1.22 diff -Lapropos.c -Lapropos.c -u -p -r1.21 -r1.22 --- apropos.c +++ apropos.c @@ -142,8 +142,8 @@ usage(void) { fprintf(stderr, "usage: %s " - "[-M path] " - "[-m path] " + "[-M manpath] " + "[-m manpath] " "[-S arch] " "[-s section] " "expression...\n", Index: apropos.1 =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/apropos.1,v retrieving revision 1.10 retrieving revision 1.11 diff -Lapropos.1 -Lapropos.1 -u -p -r1.10 -r1.11 --- apropos.1 +++ apropos.1 @@ -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 d 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 -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv