#!/bin/sh export LC_ALL=C sed 's/&/\&/g;s/\</g;s/>/\>/g' | awk ' BEGIN { getline print "
" print while (getline == 1) { if ($0 ~ /^Contents/) break print } print "Contents" while (getline == 1) { id = $1 if (id ~ /Annex/) id = $2 if (id ~ /^([1-9A-Z]|Index|Foreword|Introduction|Bibliography)/) { if (match($0, /<[a-zA-Z0-9_]*\.h>/)) { h=substr($0,RSTART,RLENGTH) if (!(h in header)) header[h] = id } if (id ~ /\.$/) id = substr(id,1,length(id)-1) s = "" $0 if ($(NF-1) == ".") print s "" else{ print s getline print $0 "" } if (id == "Index") break } else print } note = 1 } !seenindex && /^ *([1-9A-Z]\.|Annex|Index|Foreword|Introduction|Bibliography)/ { id = $1 if (id ~ /Annex/) id = $2 if (($0 ~ /^ [1-9]\./ || id ~ /^([A-Z]|[1-9A-Z]\.[1-9][0-9.]*|Index|Foreword|Introduction|Bibliography)$/) && (NF==1 || $2 ~ /^[A-Zv]/) && ($0 !~ /^ *[0-9.]+[^0-9]$/)) { if (id ~ /\.$/) id = substr(id,1,length(id)-1) print "" $0 "" if (id == "Index") seenindex=1 next } } /^\[page / { p = substr($2,1,length($2)-1) print "[page " p "] (Contents)" next } /^ *(Syntax|Semantics|Description|Constraints|Synopsis|Returns)$/ { print "" $0 "" next } { s = $0 p = "" if (seenindex) r = "[ (][A-Z1-9][0-9.]*" else r = "[ (][A-Z1-9]\\.[0-9.]*[0-9]" while (match(s, r)) { p = p substr(s,1,RSTART) m = substr(s,RSTART+1,RLENGTH-1) if (m ~ /\.0$/ || m ~ /[4-9][0-9]/ || m ~ /[0-3][0-9][0-9]/ || substr(s,RSTART+RLENGTH,1) ~ /[a-zA-Z\-]/) p = p m else p = p "" m "" s = substr(s,RSTART+RLENGTH) } s = p s p = "" while (match(s, /[Aa]nnex [A-Z]/)) { p = p substr(s,1,RSTART-1) m = substr(s,RSTART,RLENGTH) p = p "" m "" s = substr(s,RSTART+RLENGTH) } s = p s p = "" while (match(s, /<[a-zA-Z0-9_]*\.h>/)) { p = p substr(s,1,RSTART-1) m = substr(s,RSTART,RLENGTH) if (m in header) p = p "" m "" else p = p m s = substr(s,RSTART+RLENGTH) } s = p s p = "" while (match(s, note "\\)")) { if (note==1 && s !~ /\.1\)/) break p = p substr(s,1,RSTART-1) p = p "" note ")" note++ s = substr(s,RSTART+RLENGTH) } s = p s if (s ~ /^ *[1-9][0-9]*\) /) { sub(/\)/,"",s) sub(/[0-9]+/,"&)",s) } print s } END { print "" }'