|
|
1.1 ! root 1: BEGIN { ! 2: longest = 0 ! 3: overf = 0 ! 4: i = 1 ! 5: } ! 6: (/^\.sh/&& NF == 1)|| ! 7: /^\.(([NS]H)|(TL)|(TI))/ { ! 8: place[i] = total ! 9: if($0 ~ /SH/ && NF > 1|| $0 ~ /NH/ && (NF > 2 || $2 ~ /[A-Za-z]/)){ ! 10: if($0 ~ /"/){ ! 11: n = split($0,x,"\"") ! 12: heading = x[2] ! 13: } ! 14: else heading = $2 ! 15: hsize += length(heading) + 1 ! 16: } ! 17: else { ! 18: total += length($0) + 1 ! 19: nlines = 0 ! 20: while(getline){ ! 21: if(nlines++ > 3){ ! 22: print "too many lines in heading:" heading |"cat 1>&2" ! 23: break ! 24: } ! 25: total += length($0) +1 ! 26: hsize += length($0) +1 ! 27: if($0 ~ /^\.UX/){ ! 28: nlines-- ! 29: heading = heading " UNIX" ! 30: hsize += 1 ! 31: } ! 32: else if($0 ~ /^\./){ ! 33: if($1 ~ /^\.P/ || $1 ~ /^\.LP/|| $1 ~ /^\.[AT]/)break ! 34: if(heading == "")heading = $2 ! 35: else heading = heading " " $2 ! 36: if(NF > 2)for(n=3;n<=NF;n++) ! 37: heading = heading " " $n ! 38: } ! 39: else if(heading == "") ! 40: heading = $0 ! 41: else ! 42: heading = heading " " $0 ! 43: } ! 44: } ! 45: total += length($0) +1 ! 46: text[i] = heading ! 47: l = length(heading) ! 48: if(longest < l+1) ! 49: longest = l + 1 ! 50: if(l > 23){ ! 51: while(l>=23){ ! 52: overf++; ! 53: l -= 23 ! 54: } ! 55: } ! 56: heading = "" ! 57: i++ ! 58: next ! 59: } ! 60: /^\.(H[U ]|[su]h)/ { ! 61: place[i] = total ! 62: total += length($0) + 1 ! 63: if($0 ~ /"/){ ! 64: n = split($0, hd, "\"") ! 65: if(n == 3) ! 66: heading = hd[2] ! 67: else{ ! 68: heading = hd[2] ! 69: print "unbalanced quotes: " $0 >"err.hd" ! 70: } ! 71: } ! 72: else if($1 ~ /HU|uh/)heading = $2 ! 73: else heading = $3 ! 74: text[i] = heading ! 75: l = length(heading) ! 76: hsize += l + 1 ! 77: if(longest < l+1) ! 78: longest = l + 1 ! 79: if(l > 23){ ! 80: while(l>=23){ ! 81: overf++; ! 82: l -= 23 ! 83: } ! 84: } ! 85: heading = "" ! 86: i++ ! 87: next ! 88: } ! 89: /^\.de/ { ! 90: total += length($0) +1 ! 91: while(getline && $0 !~ /^\.\.$/){ ! 92: total += length($0) +1 ! 93: } ! 94: total += length($0) +1 ! 95: next ! 96: } ! 97: /.*/ { ! 98: total += length($0) + 1 ! 99: } ! 100: END { ! 101: if(i > 1){ ! 102: # print hsize " " longest " " i-1 " " overf ! 103: for(n=1;n<i;n++){ ! 104: # print place[n] ! 105: print text[n] ! 106: } ! 107: } ! 108: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.