1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
#!/bin/sh
# makewhatis 4 PTM
### HQ: 1999-10-10, dodano test, czy zwyky plik; zmieniono skrypt awk
### HQ: 1999-10-21, dodano w nawiasach sekcj, w ktrej ley plik
### HQ: 1999-10-26, drobne popr., zmiana formatowania dla opisw wielu f.
DIRS="man1 man2 man3 man4 man5 man6 man7 man8 man9 mann"
echo -n >whatis
for i in $DIRS
do
echo Zwiedzamy katalog $i
cd $i
rm -f *~
for k in *.*
do
### HQ: Nie cierpi, gdy narzeka na CVS:
if [ -f $k ]; then
gawk -v sekcja=$i 'BEGIN {
i=0; nazwa="";
sub(/^man/,"",sekcja);
whatis="../whatis";
opis="";
}
/^\.so / {
plik=FILENAME; sub(/\.[1-9n]$/,"",plik);
sub(/^\.so/,"",$0);
so=split($0,aso,"/");
so=aso[so]; split(so,aso,".");
opis=plik " - zobacz " aso[1] " (" aso[2] ")";
i=i+1; wpis();
exit
}
/^\.Sh [ "]*NAZWA/ {
while ((getline)>0) {
if ($0~/^\.Nm/) {
sub(/^\.Nm/,"",$0);
nazwa=$0 " - ";
}
if ((nazwa!="")&&($0~/^\.Nd/)) {
sub(/^\.Nd/,"",$0);
opis=nazwa $0;
i=i+1; wpis();
exit
}
} }
/^\.SH [ "]*NAZWA/ {
while ((getline)>0) {
gsub(/\\f[BRI]/,"",$0);
gsub(/\.[BRI]+ /,"",$0);
if ($0~/^\.br/) {
i=i+1; opis=""; continue;
}
if ($0~/\.S[HhSs]/) {
wpis();
exit;
}
if (($0!~/^[ \t]*$/)&&($0!~/^\./))
{
opis=opis " " $0;
i=i+1;
}
} }
END {
if (i==0) {
print FILENAME " - nieudany wpis do whatis"
}
}
function wpis() {
if (opis !="") {
gsub(/^[ ]+/,"",opis); gsub(/[ ]+$/,"",opis);
gsub(/\\-/,"-",opis); gsub(/--/,"-",opis);
gsub(/\\f[BRI]/,"",opis);
gsub(/\.[BRI]+ /,"",opis);
j=index(opis," -");
opis1=substr(opis,j+3);
hasla=substr(opis,1,j-1);
split(hasla,ah,",");
plik=FILENAME; sub(/\.[1-9n]$/,"",plik);
for (k in ah) {
gsub(/^[ ]+/,"",ah[k]); gsub(/[ ]+$/,"",ah[k]);
if (ah[k]==plik) {plus=""}
else {plus=" [" plik "] "};
opis=ah[k] plus " - " opis1;
opis=gensub(/([^-]+) -(.+)/, "\\1 (" sekcja ") - \\2", 1,opis);
opis=gensub(/[ ]+/," ","g",opis);
print opis>>whatis;
opis="";
}
}
}' $k
fi
done
cd ..
done
# koniec skryptu
|