added mandoc macro support;
each name now generates a separate whatis data base entry
This commit is contained in:
parent
2aaed01e05
commit
4a5e9a2017
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=178
@ -21,7 +21,6 @@ then
|
||||
echo "usage: makewhatis directory [...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for dir in $*
|
||||
do
|
||||
cd $dir
|
||||
@ -29,50 +28,83 @@ do
|
||||
do
|
||||
if [ -d $subdir ]
|
||||
then
|
||||
for f in `find . -name '*' -print`
|
||||
for f in `find $subdir -name '*' -print`
|
||||
do
|
||||
sed -n '/^\.TH.*$/p
|
||||
/^\.SH[ ]*NAME/,/^\.SH/p' $f |\
|
||||
/^\.Dt.*$/p
|
||||
/^\.S[hH][ ]*NAME/,/^\.S[hH]/p' $f |\
|
||||
sed -e 's/\\[ ]*\-/-/
|
||||
s/^.PP.*$//
|
||||
s/^.P[Pp].*$//
|
||||
s/\\(em//
|
||||
s/\\fI//
|
||||
s/\\fR//' |\
|
||||
awk 'BEGIN {insh = 0} {
|
||||
if ($1 == ".TH")
|
||||
awk 'BEGIN {insh = 0; inSh = 0; Nd = 0} {
|
||||
if ($1 == ".TH" || $1 == ".Dt")
|
||||
sect = $3
|
||||
else if ($1 == ".SH" && insh == 1) {
|
||||
if (i > 0 && name != NULL) {
|
||||
namesect = sprintf("%s (%s)", name, sect)
|
||||
printf("%-20.20s", namesect)
|
||||
else if (($1 == ".br" && insh == 1) || ($1 == ".SH" && insh == 1) || ($1 == ".Sh" && inSh == 1)) {
|
||||
if (i > 0 && nc > 0) {
|
||||
for (k= 1; k <= nc; k++) {
|
||||
namesect = sprintf("%s (%s)", name[k], sect)
|
||||
printf("%s", namesect)
|
||||
printf(" - ")
|
||||
for (j = 0; j < i-1; j++)
|
||||
printf("%s ", desc[j])
|
||||
printf("%s\n", desc[i-1])
|
||||
}
|
||||
}
|
||||
count = 0
|
||||
i = 0
|
||||
nc = 0
|
||||
} else if ($1 == ".SH" && insh == 0) {
|
||||
insh = 1
|
||||
count = 0
|
||||
i = 0
|
||||
nc = 0
|
||||
} else if ($1 == ".Sh" && inSh == 0) {
|
||||
inSh = 1
|
||||
i = 0
|
||||
nc = 0
|
||||
} else if (insh == 1) {
|
||||
count++
|
||||
if (count == 1 && NF > 2) {
|
||||
start = 2
|
||||
if ($2 == "-") start = 3
|
||||
if (NF > start + 1)
|
||||
for (k = 1; k <= NF; k++)
|
||||
if ($k == "-") {
|
||||
start = k + 1
|
||||
break
|
||||
} else {
|
||||
sub(",","",$k)
|
||||
if ($k != "")
|
||||
name[++nc] = $k
|
||||
}
|
||||
if (NF >= start)
|
||||
for (j = start; j <= NF; j++)
|
||||
desc[i++] = $j
|
||||
name = $1
|
||||
} else {
|
||||
for (j = 1; j <= NF; j++)
|
||||
desc[i++] = $j
|
||||
}
|
||||
} else if ($1 == ".Nm" && inSh == 1 && Nd == 0) {
|
||||
for (k = 2; k <= NF; k++) {
|
||||
sub(",","",$k)
|
||||
if ($k != "")
|
||||
name[++nc] = $k
|
||||
}
|
||||
} else if ($1 == ".Nd" && inSh == 1) {
|
||||
Nd = 1
|
||||
for (j = 2; j <= NF; j++)
|
||||
desc[i++] = $j
|
||||
} else if (Nd == 1) {
|
||||
start = 1
|
||||
if ($1 ~ /\..*/)
|
||||
start = 2
|
||||
for (j = start; j <= NF; j++)
|
||||
desc[i++] = $j
|
||||
}
|
||||
}'
|
||||
done
|
||||
cd ..
|
||||
fi
|
||||
done | sort | colrm 80 > $dir/whatis.db.tmp
|
||||
done | sort | colrm 80 | uniq > $dir/whatis.db.tmp
|
||||
mv $dir/whatis.db.tmp $dir/whatis
|
||||
done
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user