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 [...]"
|
echo "usage: makewhatis directory [...]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for dir in $*
|
for dir in $*
|
||||||
do
|
do
|
||||||
cd $dir
|
cd $dir
|
||||||
@ -29,50 +28,83 @@ do
|
|||||||
do
|
do
|
||||||
if [ -d $subdir ]
|
if [ -d $subdir ]
|
||||||
then
|
then
|
||||||
for f in `find . -name '*' -print`
|
for f in `find $subdir -name '*' -print`
|
||||||
do
|
do
|
||||||
sed -n '/^\.TH.*$/p
|
sed -n '/^\.TH.*$/p
|
||||||
/^\.SH[ ]*NAME/,/^\.SH/p' $f |\
|
/^\.Dt.*$/p
|
||||||
|
/^\.S[hH][ ]*NAME/,/^\.S[hH]/p' $f |\
|
||||||
sed -e 's/\\[ ]*\-/-/
|
sed -e 's/\\[ ]*\-/-/
|
||||||
s/^.PP.*$//
|
s/^.P[Pp].*$//
|
||||||
s/\\(em//
|
s/\\(em//
|
||||||
s/\\fI//
|
s/\\fI//
|
||||||
s/\\fR//' |\
|
s/\\fR//' |\
|
||||||
awk 'BEGIN {insh = 0} {
|
awk 'BEGIN {insh = 0; inSh = 0; Nd = 0} {
|
||||||
if ($1 == ".TH")
|
if ($1 == ".TH" || $1 == ".Dt")
|
||||||
sect = $3
|
sect = $3
|
||||||
else if ($1 == ".SH" && insh == 1) {
|
else if (($1 == ".br" && insh == 1) || ($1 == ".SH" && insh == 1) || ($1 == ".Sh" && inSh == 1)) {
|
||||||
if (i > 0 && name != NULL) {
|
if (i > 0 && nc > 0) {
|
||||||
namesect = sprintf("%s (%s)", name, sect)
|
for (k= 1; k <= nc; k++) {
|
||||||
printf("%-20.20s", namesect)
|
namesect = sprintf("%s (%s)", name[k], sect)
|
||||||
printf(" - ")
|
printf("%s", namesect)
|
||||||
for (j = 0; j < i-1; j++)
|
printf(" - ")
|
||||||
printf("%s ", desc[j])
|
for (j = 0; j < i-1; j++)
|
||||||
printf("%s\n", desc[i-1])
|
printf("%s ", desc[j])
|
||||||
|
printf("%s\n", desc[i-1])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
count = 0
|
||||||
|
i = 0
|
||||||
|
nc = 0
|
||||||
} else if ($1 == ".SH" && insh == 0) {
|
} else if ($1 == ".SH" && insh == 0) {
|
||||||
insh = 1
|
insh = 1
|
||||||
count = 0
|
count = 0
|
||||||
i = 0
|
i = 0
|
||||||
|
nc = 0
|
||||||
|
} else if ($1 == ".Sh" && inSh == 0) {
|
||||||
|
inSh = 1
|
||||||
|
i = 0
|
||||||
|
nc = 0
|
||||||
} else if (insh == 1) {
|
} else if (insh == 1) {
|
||||||
count++
|
count++
|
||||||
if (count == 1 && NF > 2) {
|
if (count == 1 && NF > 2) {
|
||||||
start = 2
|
start = 2
|
||||||
if ($2 == "-") start = 3
|
for (k = 1; k <= NF; k++)
|
||||||
if (NF > start + 1)
|
if ($k == "-") {
|
||||||
|
start = k + 1
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
sub(",","",$k)
|
||||||
|
if ($k != "")
|
||||||
|
name[++nc] = $k
|
||||||
|
}
|
||||||
|
if (NF >= start)
|
||||||
for (j = start; j <= NF; j++)
|
for (j = start; j <= NF; j++)
|
||||||
desc[i++] = $j
|
desc[i++] = $j
|
||||||
name = $1
|
|
||||||
} else {
|
} else {
|
||||||
for (j = 1; j <= NF; j++)
|
for (j = 1; j <= NF; j++)
|
||||||
desc[i++] = $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
|
done
|
||||||
cd ..
|
|
||||||
fi
|
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
|
mv $dir/whatis.db.tmp $dir/whatis
|
||||||
done
|
done
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user