usr.bin/man: Update

Change-Id: I0c5d2115ba384687032f7b2af50d99dedc323b7a
This commit is contained in:
Lionel Sambuc 2013-10-08 19:00:16 +02:00
parent 92395e9c3f
commit b9a6a72b65
5 changed files with 161 additions and 30 deletions

View file

@ -1,16 +1,69 @@
_version BSD.2
_subdir man{[1-9],1x}
_suffix .0
_build .[1-9] mandoc %s
_build .tbl tbl %s | mandoc
_default /usr/{,pkg/{,gcc*/}}man
_whatdb /usr/{,pkg/{,gcc*/}}man/whatis.db
1 man1
2 man2
3 man3
4 man4
5 man5
6 man6
7 man7
8 man8
9 man9
# $NetBSD: man.conf,v 1.31 2012/10/06 15:33:59 wiz Exp $
# Sheer, raging paranoia...
_version BSD.2
# The whatis/apropos database.
_mandb /var/db/man.db
# Subdirectories for paths ending in '/', IN SEARCH ORDER.
_subdir cat1 man1 cat8 man8 cat6 man6 cat2 man2 cat3 man3 cat4 man4 cat5 man5 cat7 man7 man3f cat9 man9 catn mann catl manl
# Files typed by suffix and their commands.
# Note the order, .Z must come after .[1-9].Z, or it will match first.
_suffix .0
_build .0.Z /usr/bin/zcat %s
_build .0.bz2 /usr/bin/bzcat %s
_build .0.gz /usr/bin/zcat %s
_build .0.xz /usr/bin/xzcat %s
_build .[1-9ln] /usr/bin/mandoc %s
_build .[1-9ln].Z /usr/bin/zcat %s | /usr/bin/mandoc
_build .[1-9ln].bz2 /usr/bin/bzcat %s | /usr/bin/mandoc
_build .[1-9ln].gz /usr/bin/zcat %s | /usr/bin/mandoc
_build .[1-9ln].xz /usr/bin/xzcat %s | /usr/bin/mandoc
_build .tbl /usr/bin/mandoc %s
_build .tbl.Z /usr/bin/zcat %s | /usr/bin/mandoc
_build .tbl.bz2 /usr/bin/bzcat %s | /usr/bin/mandoc
_build .tbl.gz /usr/bin/zcat %s | /usr/bin/mandoc
_build .tbl.xz /usr/bin/xzcat %s | /usr/bin/mandoc
_build .me /usr/bin/nroff -msafer -me %s 2>/dev/null | cat -s
_crunch .Z /usr/bin/zcat > %s
_crunch .bz /usr/bin/bzcat > %s
_crunch .gz /usr/bin/zcat > %s
_crunch .xz /usr/bin/xzcat > %s
# Sections and their directories.
# All paths ending in '/' are the equivalent of entries specifying that
# directory with all of the subdirectories listed for the keyword _subdir.
# default
# MINIX: Add /usr/man ...
_default /usr/{,share,X11R7,X11R6,pkg,local}/man/
# Other sections that represent complete man subdirectories.
X11R7 /usr/X11R7/man/
X11R6 /usr/X11R6/man/
packages /usr/pkg/man/
local /usr/local/man/
# Specific section/directory combinations.
1 {cat,man}1
2 {cat,man}2
3 {cat,man}3
3F {cat,man}3f
3f {cat,man}3f
4 {cat,man}4
5 {cat,man}5
6 {cat,man}6
7 {cat,man}7
8 {cat,man}8
9 {cat,man}9
l {cat,man}l
n {cat,man}n
# machine classes per machine
_i386 x86
_amd64 x86
_sparc64 sparc

View file

@ -199,7 +199,7 @@
2012/10/17 12:00:00,usr.bin/make
2012/10/17 12:00:00,usr.bin/Makefile
2012/10/17 12:00:00,usr.bin/Makefile.inc
2010/07/07 21:24:34,usr.bin/man
2012/10/17 12:00:00,usr.bin/man
2012/10/17 12:00:00,usr.bin/menuc
2013/10/25 12:00:00,usr.bin/mesg
2010/10/15 05:46:48,usr.bin/mkdep

View file

@ -1,4 +1,4 @@
.\" $NetBSD: man.1,v 1.21 2009/10/07 08:30:31 cegger Exp $
.\" $NetBSD: man.1,v 1.24 2011/10/07 10:52:31 mbalmer Exp $
.\"
.\" Copyright (c) 1989, 1990, 1993
.\" The Regents of the University of California. All rights reserved.
@ -29,7 +29,7 @@
.\"
.\" @(#)man.1 8.2 (Berkeley) 1/2/94
.\"
.Dd October 6, 2009
.Dd October 7, 2011
.Dt MAN 1
.Os
.Sh NAME
@ -49,11 +49,13 @@
.Oc
.Ar name Ar ...
.Nm
.Op Fl k
.Fl k
.Op Fl C Ar file
.Op Fl M Ar path
.Op Fl m Ar path
.Ar keyword Ar ...
.Nm
.Fl p
.Sh DESCRIPTION
The
.Nm
@ -130,6 +132,8 @@ is specified by the
line in the
.Nm
configuration file.
.It Fl p
Print the search path for the manual pages.
.It Fl s
Restrict the directories that
.Nm
@ -220,7 +224,7 @@ will be used.
.Bl -hang -width /etc/man.conf -compact
.It Pa /etc/man.conf
default man configuration file.
.It Pa /usr/{share,X11R6,pkg,local}/man/whatis.db
.It Pa /usr/{share,X11R7,pkg,local}/man/whatis.db
standard whatis/apropos database search path,
set in
.Pa /etc/man.conf .

View file

@ -1,4 +1,4 @@
/* $NetBSD: man.c,v 1.41 2010/07/07 21:24:34 christos Exp $ */
/* $NetBSD: man.c,v 1.44 2012/01/03 17:49:57 joerg Exp $ */
/*
* Copyright (c) 1987, 1993, 1994, 1995
@ -40,12 +40,13 @@ __COPYRIGHT("@(#) Copyright (c) 1987, 1993, 1994, 1995\
#if 0
static char sccsid[] = "@(#)man.c 8.17 (Berkeley) 1/31/95";
#else
__RCSID("$NetBSD: man.c,v 1.41 2010/07/07 21:24:34 christos Exp $");
__RCSID("$NetBSD: man.c,v 1.44 2012/01/03 17:49:57 joerg Exp $");
#endif
#endif /* not lint */
#include <sys/param.h>
#include <sys/queue.h>
#include <sys/stat.h>
#include <sys/utsname.h>
#include <ctype.h>
@ -84,7 +85,8 @@ struct manstate {
char *pathsearch; /* -S: path of man must contain this string */
char *sectionname; /* -s: limit search to a given man section */
int where; /* -w: just show paths of all matching files */
int getpath; /* -p: print the path of directories containing man pages */
/* important tags from the config file */
TAG *defaultpath; /* _default: default MANPATH */
TAG *subdirs; /* _subdir: default subdir search list */
@ -118,6 +120,7 @@ static void onsig(int);
static void usage(void) __attribute__((__noreturn__));
static void addpath(struct manstate *, const char *, size_t, const char *);
static const char *getclass(const char *);
static void printmanpath(struct manstate *);
/*
* main function
@ -137,7 +140,7 @@ main(int argc, char **argv)
/*
* parse command line...
*/
while ((ch = getopt(argc, argv, "-aC:cfhkM:m:P:s:S:w")) != -1)
while ((ch = getopt(argc, argv, "-aC:cfhkM:m:P:ps:S:w")) != -1)
switch (ch) {
case 'a':
m.all = 1;
@ -159,6 +162,9 @@ main(int argc, char **argv)
case 'P': /* -P for backward compatibility */
m.manpath = strdup(optarg);
break;
case 'p':
m.getpath = 1;
break;
/*
* The -f and -k options are backward compatible,
* undocumented ways of calling whatis(1) and apropos(1).
@ -187,7 +193,7 @@ main(int argc, char **argv)
argc -= optind;
argv += optind;
if (!argc)
if (!m.getpath && !argc)
usage();
/*
@ -358,6 +364,9 @@ main(int argc, char **argv)
}
if (m.getpath)
printmanpath(&m);
/*
* now m.mymanpath is complete!
*/
@ -984,5 +993,55 @@ usage(void)
(void)fprintf(stderr,
"Usage: %s -k [-C cfg] [-M path] [-m path] keyword ...\n",
getprogname());
(void)fprintf(stderr, "Usage: %s -p\n", getprogname());
exit(EXIT_FAILURE);
}
/*
* printmanpath --
* Prints a list of directories containing man pages.
*/
static void
printmanpath(struct manstate *m)
{
ENTRY *esubd;
char *defaultpath = NULL; /* _default tag value from man.conf. */
char *buf; /* for storing temporary values */
char **ap;
glob_t pg;
struct stat sb;
TAG *path = m->defaultpath;
TAG *subdirs = m->subdirs;
/* the tail queue is empty if no _default tag is defined in * man.conf */
if (TAILQ_EMPTY(&path->entrylist))
errx(EXIT_FAILURE, "Empty manpath");
defaultpath = TAILQ_LAST(&path->entrylist, tqh)->s;
if (glob(defaultpath, GLOB_BRACE | GLOB_NOSORT, NULL, &pg) != 0)
err(EXIT_FAILURE, "glob failed");
if (pg.gl_matchc == 0) {
warnx("Default path in %s doesn't exist", _PATH_MANCONF);
globfree(&pg);
return;
}
TAILQ_FOREACH(esubd, &subdirs->entrylist, q) {
/* Drop cat page directory, only sources are relevant. */
if (strncmp(esubd->s, "man", 3))
continue;
for (ap = pg.gl_pathv; *ap != NULL; ++ap) {
if (asprintf(&buf, "%s%s", *ap, esubd->s) == -1)
err(EXIT_FAILURE, "memory allocation error");
/* Skip non-directories. */
if (stat(buf, &sb) == 0 && S_ISDIR(sb.st_mode))
printf("%s\n", buf);
free(buf);
}
}
globfree(&pg);
}

View file

@ -1,4 +1,4 @@
.\" $NetBSD: man.conf.5,v 1.20 2007/02/10 19:27:39 reed Exp $
.\" $NetBSD: man.conf.5,v 1.22 2012/04/29 03:46:43 christos Exp $
.\"
.\" Copyright (c) 1989, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@ -29,7 +29,7 @@
.\"
.\" @(#)man.conf.5 8.5 (Berkeley) 1/2/94
.\"
.Dd April 10, 2006
.Dd April 28, 2012
.Dt MAN.CONF 5
.Os
.Sh NAME
@ -98,9 +98,9 @@ The suffix specification may contain the normal shell globbing characters
The rest of the _build line is a shell command line whose standard
output is a formatted manual page that can be directly displayed to
the user.
Any occurrences of the string
There should be exactly one occurrence of the string
.Dq %s
in the shell command line will
in the shell command line, and it will
be replaced by the name of the file which is being formatted.
.It _crunch
used by
@ -110,6 +110,10 @@ which originally were compressed man pages: The first field lists a suffix
which indicates what kind of compression were used to compress the man page.
The rest of the line must be a shell command line, used to compress the
formatted pages.
There should be exactly one occurrence of the string
.Dq %s
in the shell command line, and it will
be replaced by the name of the output file.
.It _default
contains the system-wide default man path used to search for man pages.
.It _subdir
@ -152,6 +156,16 @@ including curly braces
to escape a shell globbing character,
precede it with a backslash
.Pq Dq \e .
.It _\*[Lt]machine\*[Gt]
The defines additional paths to be searched for the particular
.Dv machine
whose literal value is taken from
.Xr uname 1
.Fl m .
For example on an
.Dv amd64 ,
.Dv _amd64
is used.
.El
.Pp
Section configuration lines in
@ -219,6 +233,7 @@ _subdir cat[123]
_suffix .0
_build .[1-9] nroff -man %s
_build .tbl tbl %s | nroff -man
_i386 x86
_default /usr/share/man/
sect3 /usr/share/man/{old/,}cat3
.Ed