* Copyright (c) 1987 Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* PATCHES MAGIC LEVEL PATCH THAT GOT US HERE
* -------------------- ----- ----------------------
* CURRENT PATCH LEVEL: 1 00005
* -------------------- ----- ----------------------
* 20 Aug 92 Andrew Moore Fixed core dump from uninited pointers
"@(#) Copyright (c) 1987 Regents of the University of California.\n\
static char sccsid
[] = "@(#)whatis.c 5.6 (Berkeley) 6/1/90";
#include "../man/pathnames.h"
#define MAXLINELEN 256 /* max line handled */
static int *found
, foundman
;
char *p_augment
, *p_path
, **getdb();
p_augment
= p_path
= NULL
; /* 20 Aug 92*/
while ((ch
= getopt(argc
, argv
, "M:m:P:")) != EOF
)
case 'P': /* backward compatible */
if (!(found
= (int *)malloc((u_int
)argc
)))
bzero((char *)found
, argc
* sizeof(int));
for (p
= argv
; *p
; ++p
) /* trim full paths */
if (beg
= rindex(*p
, '/'))
whatis(argv
, p_augment
, 1);
if (p_path
|| (p_path
= getenv("MANPATH")))
for (p
= getdb(); *p
; ++p
)
fprintf(stderr
, "whatis: no %s file found.\n", _PATH_WHATIS
);
printf("%s: not found\n", *p
);
whatis(argv
, path
, buildpath
)
register char *end
, *name
, **p
;
char buf
[MAXLINELEN
+ 1], wbuf
[MAXLINELEN
+ 1];
for (name
= path
; name
; name
= end
) { /* through name list */
if (end
= index(name
, ':'))
char hold
[MAXPATHLEN
+ 1];
(void)sprintf(hold
, "%s/%s", name
, _PATH_WHATIS
);
if (!freopen(name
, "r", stdin
))
/* for each file found */
while (fgets(buf
, sizeof(buf
), stdin
)) {
/* only print line once */
for (len
= strlen(str
);;) {
for (; *bp
&& !isdigit(*bp
) && !isalpha(*bp
); ++bp
);
*bp
&& (*bp
== '_' || isdigit(*bp
) || isalpha(*bp
)); ++bp
);
if (bp
- start
== len
&& !strncasecmp(start
, str
, len
))
* truncate a string at " - "
register char *from
, *to
;
for (; (ch
= *from
) && ch
!= '\n' &&
(ch
!= ' ' || from
[1] != '-' || from
[2] != ' '); ++from
)
* print usage message and die
"usage: whatis [-M path] [-m path] command ...\n");