diff options
author | wosch <wosch@FreeBSD.org> | 1996-05-12 21:02:04 +0000 |
---|---|---|
committer | wosch <wosch@FreeBSD.org> | 1996-05-12 21:02:04 +0000 |
commit | 1474db4aa46ad6f5df45b58dfd95c8e5a83695b1 (patch) | |
tree | 9cff49ef17301e095986d7862ba84279961e0b20 /gnu | |
parent | 716641bdae47d54927443ba5501780528d499c88 (diff) | |
download | FreeBSD-src-1474db4aa46ad6f5df45b58dfd95c8e5a83695b1.zip FreeBSD-src-1474db4aa46ad6f5df45b58dfd95c8e5a83695b1.tar.gz |
Bugfix: nested *?+ in regexp at /usr/bin/makewhatis line 286
Submitted by: invalid opcode <coredump@nervosa.com>
makewhatis.local - start makewhatis(1) only for file systems
physically mounted on the system
Running makewhatis from /etc/weekly for rw nfs-mounted /usr may kill
your NFS server -- all clients start makewhatis at the same time!
So use this wrapper instead calling makewhatis directly.
Pointed out by: Bruce
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/usr.bin/man/makewhatis/Makefile | 8 | ||||
-rw-r--r-- | gnu/usr.bin/man/makewhatis/makewhatis.local.sh | 35 | ||||
-rw-r--r-- | gnu/usr.bin/man/makewhatis/makewhatis.perl | 10 |
3 files changed, 49 insertions, 4 deletions
diff --git a/gnu/usr.bin/man/makewhatis/Makefile b/gnu/usr.bin/man/makewhatis/Makefile index 644a3a5..13f147a 100644 --- a/gnu/usr.bin/man/makewhatis/Makefile +++ b/gnu/usr.bin/man/makewhatis/Makefile @@ -1,7 +1,15 @@ MAN1= makewhatis.1 +# MAN8= makewhatis.local.8 + +libexecdir=/usr/libexec +LINKS=${libexecdir}/makewhatis.local ${libexecdir}/catman.local beforeinstall: ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ ${.CURDIR}/makewhatis.perl ${DESTDIR}${BINDIR}/makewhatis + ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ + ${.CURDIR}/makewhatis.local.sh \ + ${DESTDIR}${libexecdir}/makewhatis.local + .include <bsd.prog.mk> diff --git a/gnu/usr.bin/man/makewhatis/makewhatis.local.sh b/gnu/usr.bin/man/makewhatis/makewhatis.local.sh new file mode 100644 index 0000000..5260e89 --- /dev/null +++ b/gnu/usr.bin/man/makewhatis/makewhatis.local.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# (c) Wolfram Schneider, Berlin. April 1996. Public Domain. +# +# makewhatis.local - start makewhatis(1) only for file systems +# physically mounted on the system +# +# Running makewhatis from /etc/weekly for rw nfs-mounted /usr may kill +# your NFS server -- all clients start makewhatis at the same time! +# So use this wrapper instead calling makewhatis directly. +# +# PS: this wrapper works also for catman(1) +# +# $Id: makewhatis.local.sh,v 1.2 1996/04/27 12:17:01 wosch Exp $ + +PATH=/bin:/usr/bin:$PATH; export PATH +opt= dirs= localdirs= + +for arg +do + case "$arg" in + -*) opt="$opt $arg";; + *) dirs="$dirs $arg";; + esac +done + +dirs=`echo $dirs | sed 's/:/ /g'` +case X"$dirs" in X) echo "usage: $0 [options] directories ..."; exit 1;; esac + +localdirs=`find -H $dirs -fstype local -type d -prune -print` + +case X"$localdirs" in + X) echo "$0: no local-mounted manual directories found: $dirs" + exit 1;; + *) exec `basename $0 .local` $opt $localdirs;; +esac diff --git a/gnu/usr.bin/man/makewhatis/makewhatis.perl b/gnu/usr.bin/man/makewhatis/makewhatis.perl index 02f11a3..ca35816 100644 --- a/gnu/usr.bin/man/makewhatis/makewhatis.perl +++ b/gnu/usr.bin/man/makewhatis/makewhatis.perl @@ -35,7 +35,7 @@ # # E-Mail: Wolfram Schneider <wosch@cs.tu-berlin.de> # -# $Id: makewhatis.perl,v 1.6 1995/04/01 11:43:09 joerg Exp $ +# $Id: makewhatis.perl,v 1.7 1995/09/10 13:05:52 joerg Exp $ # sub usage { @@ -280,12 +280,14 @@ sub manpagename { return if $name eq $_; } - $name =~ s=\[=\\\[=g; # shit '[' + local($f) = $file; + $f =~ s%/*[^/]+$%%; + foreach (split(/,\s+/, $man)) { s/\(.+//; - ($f = $file) =~ s/$name/$_/; + # a keyword exist as file - return if -e "$f"; + return if -e "$f/$_"; } $man .= ", $name($extension)"; |