| #!/bin/bash |
| # Script to get the table of contents out of Postscript file |
| # generated by groff from all man pages. |
| |
| if test $# -ne 1; then |
| echo "Usage:" `basename $0` "manfile.ps" 1>&2 |
| exit 0; |
| fi |
| |
| if ! test -f $1; then |
| echo "File not found: $1" 1>&2 |
| exit 1; |
| fi |
| |
| grep -A5 "^%%Page:" $1 | tr '\\' '*' | sed "s/*214/fi/" | |
| awk '/^\/F0 /{printf "%s", $0; next} {print}' | |
| awk ' |
| BEGIN { |
| p=0 |
| prevname="no"; |
| } |
| /^%%Page: / { |
| p=$2; |
| } |
| /\/F0 [0-9.]*\/Times-Roman\@0 SF[]?[0-9.]?/ { |
| i=0; |
| for (n=3; n <= NF; n++) |
| { |
| prev=""; |
| for(x=1; x<=length($n); x++) |
| { |
| c=substr($n, x, 1); |
| if (i==0) |
| { |
| if (c == "(") |
| { |
| i=1; |
| continue; |
| } |
| } |
| else if (i==1) |
| { |
| if (c == ")") |
| { |
| if (prev == "*") |
| { |
| name=name ")" |
| i=2; |
| } |
| else |
| i=0; |
| } |
| } |
| if ((i==1) && (c != "*")) |
| name=name c; |
| prev=c; |
| } |
| } |
| if (name != prevname) |
| { |
| print name " " p+1; |
| print ".br" |
| } |
| prevname=name; |
| name=""; |
| }' |