]> git.cameronkatri.com Git - mandoc.git/blobdiff - apropos.1
Do not read past the end of the buffer if an "f" layout font modifier
[mandoc.git] / apropos.1
index 10eb3d5eb7039873c127279883af63ae06d0f8e3..e2075349f553b01f809a562935225081ccc7e6f5 100644 (file)
--- a/apropos.1
+++ b/apropos.1
@@ -1,6 +1,7 @@
-.\"    $Id: apropos.1,v 1.23 2014/03/17 09:43:56 schwarze Exp $
+.\"    $Id: apropos.1,v 1.36 2014/10/25 01:03:52 schwarze Exp $
 .\"
 .\" Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
+.\" Copyright (c) 2011, 2012, 2014 Ingo Schwarze <schwarze@openbsd.org>
 .\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
@@ -14,7 +15,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: March 17 2014 $
+.Dd $Mdocdate: October 25 2014 $
 .Dt APROPOS 1
 .Os
 .Sh NAME
 .Nd search manual page databases
 .Sh SYNOPSIS
 .Nm
+.Op Fl acfhklVw
 .Op Fl C Ar file
 .Op Fl M Ar path
 .Op Fl m Ar path
+.Op Fl O Ar outkey
 .Op Fl S Ar arch
 .Op Fl s Ar section
 .Ar expression ...
@@ -35,46 +38,117 @@ The
 and
 .Nm whatis
 utilities query manual page databases generated by
-.Xr mandocdb 8 ,
-evaluating on
+.Xr makewhatis 8 ,
+evaluating
 .Ar expression
 for each file in each database.
+By default, they display the names, section numbers, and description lines
+of all matching manuals.
 .Pp
 By default,
 .Nm
 searches for
-.Xr mandocdb 8
+.Xr makewhatis 8
 databases in the default paths stipulated by
-.Xr man 1 ,
-parses terms as case-sensitive regular expressions
-.Pq the Li \&~ operator
+.Xr man 1
+and uses case-insensitive substring matching
+.Pq the Cm = No operator
 over manual names and descriptions
 .Pq the Li \&Nm No and Li \&Nd No macro keys .
 Multiple terms imply pairwise
 .Fl o .
+.Pp
 .Nm whatis
-maps terms only to case-sensitive manual names.
+is a synonym for
+.Nm
+.Fl f .
 .Pp
-Its arguments are as follows:
+The options are as follows:
 .Bl -tag -width Ds
+.It Fl a
+Instead of showing only the title lines, show the complete manual pages,
+just like
+.Xr man 1
+.Fl a
+would.
+If the standard output is a terminal device and
+.Fl c
+is not specified, use
+.Xr more 1
+to paginate them.
+In
+.Fl a
+mode, the options
+.Fl IKOTW
+described in the
+.Xr mandoc 1
+manual are also available.
 .It Fl C Ar file
 Specify an alternative configuration
 .Ar file
 in
 .Xr man.conf 5
 format.
+.It Fl c
+In
+.Fl a
+mode, copy the formatted manual pages to the standard output without using
+.Xr more 1
+to paginate them.
+.It Fl f
+Search for all words in
+.Ar expression
+in manual page names only.
+The search is case insensitive and matches whole words only.
+In this mode, macro keys, comparison operators, and logical operators
+are not available.
+This overrides any earlier
+.Fl k
+and
+.Fl l
+options.
+.It Fl h
+Instead of showing the title lines, show the SYNOPSIS sections, just like
+.Xr man 1
+.Fl h
+would.
+.It Fl k
+Support the full
+.Ar expression
+syntax.
+This overrides any earlier
+.Fl f
+and
+.Fl l
+options.
+It is the default for
+.Nm .
+.It Fl l
+An alias for
+.Xr mandoc 1
+.Fl a .
+This overrides any earlier
+.Fl f ,
+.Fl k ,
+and
+.Fl w
+options.
 .It Fl M Ar path
 Use the colon-separated path instead of the default list of paths
 searched for
-.Xr mandocdb 8
+.Xr makewhatis 8
 databases.
 Invalid paths, or paths without manual databases, are ignored.
 .It Fl m Ar path
 Prepend the colon-separated paths to the list of paths searched
 for
-.Xr mandocdb 8
+.Xr makewhatis 8
 databases.
 Invalid paths, or paths without manual databases, are ignored.
+.It Fl O Ar outkey
+Show the values associated with the key
+.Ar outkey
+instead of the manual descriptions.
 .It Fl S Ar arch
 Restrict the search to pages for the specified
 .Xr machine 1
@@ -88,6 +162,14 @@ By default, pages from all sections are shown.
 See
 .Xr man 1
 for a listing of sections.
+.It Fl V
+Print version and exit.
+.It Fl w
+Instead of showing title lines, show the pathnames of the matching
+manual pages, just like
+.Xr man 1
+.Fl w
+would.
 .El
 .Pp
 An
@@ -114,34 +196,40 @@ True if both
 and
 .Ar expr2
 are true (logical
-.Qq and ) .
+.Sq and ) .
 .It Ar expr1 Oo Fl o Oc Ar expr2
 True if
 .Ar expr1
 and/or
 .Ar expr2
 evaluate to true (logical
-.Qq or ) .
+.Sq or ) .
 .It Ar term
 True if
 .Ar term
 is satisfied.
 This has syntax
-.Li [key[,key]*(=~)]?val ,
-where operand
-.Cm key
+.Sm off
+.Oo
+.Op Ar key Op , Ar key ...
+.Pq Cm = | ~
+.Oc
+.Ar val ,
+.Sm on
+where
+.Ar key
 is an
 .Xr mdoc 7
 macro to query and
-.Cm val
+.Ar val
 is its value.
 See
 .Sx Macro Keys
 for a list of available keys.
 Operator
-.Li \&=
+.Cm =
 evaluates a substring, while
-.Li \&~
+.Cm ~
 evaluates a regular expression.
 .It Fl i Ar term
 If
@@ -151,39 +239,33 @@ is evaluated case-insensitively.
 Has no effect on substring terms.
 .El
 .Pp
-.Nm whatis
-considers an
-.Ar expression
-to consist of an opaque keyword.
-.Pp
-Results are sorted by manual title, with output formatted as
+Results are sorted by manual sections and names, with output formatted as
 .Pp
-.D1 title(sec) \- description
+.D1 name[, name...](sec) \- description
 .Pp
 Where
-.Qq title
-is the manual's title (note multiple manual names may exist for one
-title),
-.Qq sec
+.Dq name
+is the manual's name,
+.Dq sec
 is the manual section, and
-.Qq description
+.Dq description
 is the manual's short description.
 If an architecture is specified for the manual, it is displayed as
 .Pp
-.D1 title(cat/arch) \- description
+.D1 name(sec/arch) \- description
 .Pp
 Resulting manuals may be accessed as
 .Pp
-.Dl $ man \-s sec title
+.Dl $ man \-s sec name
 .Pp
 If an architecture is specified in the output, use
 .Pp
-.Dl $ man \-s sec \-S arch title
+.Dl $ man \-s sec \-S arch name
 .Ss Macro Keys
 Queries evaluate over a subset of
 .Xr mdoc 7
 macros indexed by
-.Xr mandocdb 8 .
+.Xr makewhatis 8 .
 In addition to the macro keys listed below, the special key
 .Cm any
 may be used to match any available macro key.
@@ -192,6 +274,8 @@ Names and description:
 .Bl -column "xLix" description -offset indent -compact
 .It Li \&Nm Ta manual name
 .It Li \&Nd Ta one-line manual description
+.It Li arch Ta machine architecture (case-insensitive)
+.It Li sec  Ta manual section number
 .El
 .Pp
 Sections and cross references:
@@ -255,7 +339,12 @@ Text production:
 .It Li \&Dx Ta Dx No version reference
 .El
 .Sh ENVIRONMENT
-.Bl -tag -width MANPATH
+.Bl -tag -width MANPAGER
+.It Ev MANPAGER
+Any non-empty value of the environment variable
+.Ev MANPAGER
+will be used instead of the standard pagination program,
+.Xr more 1 .
 .It Ev MANPATH
 The standard search path used by
 .Xr man 1
@@ -273,12 +362,19 @@ or if it contains two adjacent colons,
 the standard search path is inserted between the colons.
 If none of these conditions are met, it overrides the
 standard search path.
+.It Ev PAGER
+Specifies the pagination program to use when
+.Ev MANPAGER
+is not defined.
+If neither PAGER nor MANPAGER is defined,
+.Pa /usr/bin/more Fl s
+will be used.
 .El
 .Sh FILES
 .Bl -tag -width "/etc/man.conf" -compact
 .It Pa mandoc.db
 name of the
-.Xr mandocdb 8
+.Xr makewhatis 8
 keyword database
 .It Pa /etc/man.conf
 default
@@ -306,7 +402,7 @@ Search in names and descriptions using a regular expression:
 .Pp
 .Dl $ apropos '~set.?[ug]id'
 .Pp
-Search for manuals in the library category mentioning both the
+Search for manuals in the library section mentioning both the
 .Qq optind
 and the
 .Qq optarg
@@ -320,17 +416,34 @@ with the argument
 .Qq ssh :
 .Pp
 .Dl $ apropos \-\- \-i 'Nm~[[:<:]]ssh[[:>:]]'
+.Pp
+The following two invocations are equivalent:
+.Pp
+.D1 Li $ apropos -S Ar arch Li -s Ar section expression
+.Bd -ragged -offset indent
+.Li $ apropos \e( Ar expression Li \e)
+.Li -a arch~^( Ns Ar arch Ns Li |any)$
+.Li -a sec~^ Ns Ar section Ns Li $
+.Ed
 .Sh SEE ALSO
 .Xr man 1 ,
 .Xr re_format 7 ,
-.Xr mandocdb 8
+.Xr makewhatis 8
 .Sh HISTORY
-An
+Part of the functionality of
+.Nm whatis
+was already provided by the former
+.Nm manwhere
+utility in
+.Bx 1 .
+The
 .Nm
-utility first appeared in
+and
+.Nm whatis
+utilities first appeared in
 .Bx 2 .
-It was rewritten from scratch for
-.Ox 5.1 .
+They were rewritten from scratch for
+.Ox 5.6 .
 .Pp
 The
 .Fl M
@@ -349,13 +462,25 @@ and
 and
 .Fl s
 in
-.Ox 4.5 .
+.Ox 4.5
+for
+.Nm
+and in
+.Ox 5.6
+for
+.Nm whatis .
 .Sh AUTHORS
 .An -nosplit
 .An Bill Joy
-wrote the original
+wrote
+.Nm manwhere
+in 1977 and the original
 .Bx
 .Nm
+and
+.Nm whatis
 in February 1979.
 The current version was written by
-.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .
+.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
+and
+.An Ingo Schwarze Aq Mt schwarze@openbsd.org .