manweb (1675B)
1 #!/usr/local/plan9/bin/rc 2 3 verbose=no 4 if(~ $1 -v) 5 verbose=yes 6 7 fn silencer { 8 switch($verbose){ 9 case no 10 cat >/dev/null 11 case yes 12 cat 13 } 14 } 15 16 . 9.rc 17 cd $PLAN9/man 18 # rm -f */*.html 19 20 for(i in */INDEX) @{ 21 n=`{echo $i | sed 's/man//;s!/INDEX!!'} 22 cat $PLAN9/dist/manindextop.html | sed 's/NNN/'$n'/g' 23 cd `{basename -d $i} 24 # complicated sort order: want 9p.3, 9p-cmdbuf.3, 9pclient.3 25 for (j in `{ls [a-z0-9:]*.[0-9]* >[2]/dev/null | sed 's/[.\-]/ &/g;s/\./ &/g' | sort | tr -d ' '}){ 26 n=`{grep '^\.TH' $j | sed 1q | awk '{print $3}'} 27 name=`{echo $j | sed 's/\..*//'} 28 if(~ $name 0intro) 29 name=intro 30 if not{ 31 echo '<tr height=1><td>' 32 echo '<tr height=1><td colspan=2 bgcolor=#cccccc>' 33 echo '<tr height=1><td>' 34 } 35 if(~ $#name 0) 36 name=XXX-name-$j-XXX 37 if(~ $#n 0) 38 n=XXX-n-$j-XXX 39 echo -n '<tr><td valign=top><a href="'$name'.html">'$name'('$n')</a><td>' 40 sed -n ' 41 /SH *NAM/,/SH/{ 42 /SH/d 43 s/, *$// 44 ty 45 :y 46 s/ *\\*-.*/&/ 47 tx 48 s/ *\\\(mi.*/&/ 49 tx 50 s/\n\\n/\ 51 /g 52 p 53 } 54 /SH *DES/q 55 d 56 :x 57 /^$/d 58 s/\n\n/\ 59 /g 60 s/\\-/\–/ 61 p 62 q' $j 63 } 64 cat $PLAN9/dist/manindexbottom.html 65 } >$i.html && mv $i.html `{echo $i.html | tr A-Z a-z} 66 67 for (i in */[~.]*.[0-9]*){ 68 j=`{echo $i | 9 sed 's/\..*//'} 69 p=`{basename $j} 70 d=`{basename -d $j} 71 if(~ $p 0intro) 72 p=intro 73 if(~ $verbose yes) echo $d/$p 74 troff -manhtml $i | troff2html -t 'Plan 9 from User Space'>/tmp/manweb.html |[2] silencer 75 { 76 sed '/<!-- TRAILER -->/q' /tmp/manweb.html 77 cat $PLAN9/dist/mantrailer.html 78 sed -n '/<!-- TRAILER -->/,$p' /tmp/manweb.html 79 } | $PLAN9/dist/addsrclinks >$d/$p.html 80 } 81 rm /tmp/manweb.html 82 cd $PLAN9/dist 83 ./fixurls $PLAN9/man/man*/*.html