diff --git a/gnu/usr.bin/man/makewhatis/Makefile b/gnu/usr.bin/man/makewhatis/Makefile index 644a3a59b6ed..13f147a08943 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 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 000000000000..5260e89d84e6 --- /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 02f11a36eabb..ca3581683c07 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 # -# $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)"; diff --git a/usr.bin/makewhatis/makewhatis.local.sh b/usr.bin/makewhatis/makewhatis.local.sh new file mode 100644 index 000000000000..5260e89d84e6 --- /dev/null +++ b/usr.bin/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