|
|
researchv10 Dan Cross
BEGIN {
longest = 0
overf = 0
i = 1
}
(/^\.sh/&& NF == 1)||
/^\.(([NS]H)|(TL)|(TI))/ {
place[i] = total
if($0 ~ /SH/ && NF > 1|| $0 ~ /NH/ && (NF > 2 || $2 ~ /[A-Za-z]/)){
if($0 ~ /"/){
n = split($0,x,"\"")
heading = x[2]
}
else heading = $2
hsize += length(heading) + 1
}
else {
total += length($0) + 1
nlines = 0
while(getline){
if(nlines++ > 3){
print "too many lines in heading:" heading |"cat 1>&2"
break
}
total += length($0) +1
hsize += length($0) +1
if($0 ~ /^\.UX/){
nlines--
heading = heading " UNIX"
hsize += 1
}
else if($0 ~ /^\./){
if($1 ~ /^\.P/ || $1 ~ /^\.LP/|| $1 ~ /^\.[AT]/)break
if(heading == "")heading = $2
else heading = heading " " $2
if(NF > 2)for(n=3;n<=NF;n++)
heading = heading " " $n
}
else if(heading == "")
heading = $0
else
heading = heading " " $0
}
}
total += length($0) +1
text[i] = heading
l = length(heading)
if(longest < l+1)
longest = l + 1
if(l > 23){
while(l>=23){
overf++;
l -= 23
}
}
heading = ""
i++
next
}
/^\.(H[U ]|[su]h)/ {
place[i] = total
total += length($0) + 1
if($0 ~ /"/){
n = split($0, hd, "\"")
if(n == 3)
heading = hd[2]
else{
heading = hd[2]
print "unbalanced quotes: " $0 >"err.hd"
}
}
else if($1 ~ /HU|uh/)heading = $2
else heading = $3
text[i] = heading
l = length(heading)
hsize += l + 1
if(longest < l+1)
longest = l + 1
if(l > 23){
while(l>=23){
overf++;
l -= 23
}
}
heading = ""
i++
next
}
/^\.de/ {
total += length($0) +1
while(getline && $0 !~ /^\.\.$/){
total += length($0) +1
}
total += length($0) +1
next
}
/.*/ {
total += length($0) + 1
}
END {
if(i > 1){
# print hsize " " longest " " i-1 " " overf
for(n=1;n<i;n++){
# print place[n]
print text[n]
}
}
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.