83 lines
3.4 KiB
Bash
Executable File
83 lines
3.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# makewhatis: create the whatis database
|
|
# Created: Sun Jun 14 10:49:37 1992
|
|
# Revised: Sun Jun 14 10:51:54 1992 by faith
|
|
# Copyright 1992 Rickard E. Faith (faith@cs.unc.edu)
|
|
# May be freely distributed and modified as long as copyright is retained.
|
|
#
|
|
mandir=${1-/usr/man}
|
|
cd $mandir
|
|
for i in 1 2 3 4 5 6 7 8 n l
|
|
do
|
|
if [ -d man$i ]
|
|
then
|
|
cd man$i
|
|
section=$i
|
|
export section
|
|
for j in `find . -name '*' -print`
|
|
do
|
|
cat $j |\
|
|
gawk 'BEGIN {after = 0; insh = 0; section = ENVIRON["section"]} {
|
|
if ($1 ~ /^\.[Ss][Hh]/ && $2 ~ /NAME/) {
|
|
if (!insh)
|
|
insh = 1
|
|
else {
|
|
printf "\n"
|
|
exit
|
|
}
|
|
} else if (insh) {
|
|
if ($1 ~ /^\.[Ss][HhYS]/) {
|
|
printf "\n"
|
|
exit
|
|
} else { # Substitutions after Tom Christiansen perl script
|
|
gsub(/ /, " ") # Translate tabs to spaces
|
|
gsub(/ /, " ") # Collapse spaces
|
|
sub(/^.[IB] /, "") # Kill bold and italics
|
|
gsub(/\\f[PRIB0123]/, "") # Kill font changes
|
|
gsub(/\\s[-+0-9]*/, "") # Kill size changes
|
|
gsub(/\\&/, "") # Kill \&
|
|
gsub(/\\\((ru|ul)/, "_") # Translate
|
|
gsub(/\\\((mi|hy|em)/, "-") # Translate
|
|
gsub(/\\\*\(../, "") # Kill troff strings
|
|
sub(/^\.\\\"/, "") # Kill comments
|
|
gsub(/\\/, "") # Kill all backslashes
|
|
if ($0 !~ / - / && $0 !~ / -$/ && $0 !~ /^- /) {
|
|
if (after) {
|
|
if ($1 !~ /^\.../ && $1 != "")
|
|
printf " %s", $0
|
|
else {
|
|
printf "\n"
|
|
after = 0
|
|
}
|
|
} else {
|
|
if ($1 !~ /^\.../ && $1 != "")
|
|
printf "%s ", $0
|
|
else
|
|
printf "\n"
|
|
}
|
|
} else {
|
|
after = 1
|
|
if ($0 ~ / - /) {
|
|
printf "%-20s", sprintf( "%s (%s)",
|
|
substr( $0, 0, match( $0, / - / )-1 ),
|
|
section )
|
|
printf "%s", substr( $0, match( $0, / - / ) )
|
|
} else if ($0 ~ / -$/) {
|
|
printf "%-20s", sprintf( "%s (%s) -",
|
|
substr( $0, 0, match( $0, / -$/ )-1 ),
|
|
section )
|
|
} else {
|
|
printf "(%s) %s", section, $0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
done
|
|
cd ..
|
|
fi
|
|
done > /tmp/whatis$$
|
|
sed '/^$/d' < /tmp/whatis$$ | sort | uniq > ${mandir}/whatis
|
|
chmod 644 ${mandir}/whatis
|
|
rm /tmp/whatis$$
|