#! /usr/bin/gawk -f # Last edited on 2004-01-15 04:05:34 by stolfi BEGIN { maxlen = 6000000; FS = "\n"; } function rejoin_lines( nx) { # While $0 has a continuation mark, delete the mark and append # the next line: nx = $0; while ((nx != "") && (sub(/=$/, "", $0)) && (getline nx)) { $0 = ( $0 nx ); if (length($0) > maxlen) { printf "line too long\n" > "/dev/stderr"; exit(1); } } } // { rejoin_lines(); if ($0 ~ /[=]/) { # Shoud write this in C... gsub(/=04/,"\004"); gsub(/=07/,"\007"); gsub(/=08/,"\010"); gsub(/=09/,"\011"); gsub(/=0A/,"\012"); gsub(/=0C/,"\014"); gsub(/=0D/,"\015"); gsub(/=1B/,"\033"); gsub(/=20/," "); gsub(/=26/,"\\&"); # !!!! GAWK BUG !!!! gsub(/=2B/,"\053"); gsub(/=2E/,"\056"); gsub(/=3C/,"\074"); gsub(/=3E/,"\076"); gsub(/=7F/,"\177"); gsub(/=A0/,"\240"); gsub(/=A1/,"\241"); gsub(/=A2/,"\242"); gsub(/=A3/,"\243"); gsub(/=A4/,"\244"); gsub(/=A5/,"\245"); gsub(/=A6/,"\246"); gsub(/=A7/,"\247"); gsub(/=A8/,"\250"); gsub(/=A9/,"\251"); gsub(/=AA/,"\252"); gsub(/=AB/,"\253"); gsub(/=AC/,"\254"); gsub(/=AD/,"\255"); gsub(/=AE/,"\256"); gsub(/=AF/,"\257"); gsub(/=B0/,"\260"); gsub(/=B1/,"\261"); gsub(/=B2/,"\262"); gsub(/=B3/,"\263"); gsub(/=B4/,"\264"); gsub(/=B5/,"\265"); gsub(/=B6/,"\266"); gsub(/=B7/,"\267"); gsub(/=B8/,"\270"); gsub(/=B9/,"\271"); gsub(/=BA/,"\272"); gsub(/=BB/,"\273"); gsub(/=BC/,"\274"); gsub(/=BD/,"\275"); gsub(/=BE/,"\276"); gsub(/=BF/,"\277"); gsub(/=C0/,"\300"); gsub(/=C1/,"\301"); gsub(/=C2/,"\302"); gsub(/=C3/,"\303"); gsub(/=C4/,"\304"); gsub(/=C5/,"\305"); gsub(/=C6/,"\306"); gsub(/=C7/,"\307"); gsub(/=C8/,"\310"); gsub(/=C9/,"\311"); gsub(/=CA/,"\312"); gsub(/=CB/,"\313"); gsub(/=CC/,"\314"); gsub(/=CD/,"\315"); gsub(/=CE/,"\316"); gsub(/=CF/,"\317"); gsub(/=D0/,"\320"); gsub(/=D1/,"\321"); gsub(/=D2/,"\322"); gsub(/=D3/,"\323"); gsub(/=D4/,"\324"); gsub(/=D5/,"\325"); gsub(/=D6/,"\326"); gsub(/=D7/,"\327"); gsub(/=D8/,"\330"); gsub(/=D9/,"\331"); gsub(/=DA/,"\332"); gsub(/=DB/,"\333"); gsub(/=DC/,"\334"); gsub(/=DD/,"\335"); gsub(/=DE/,"\336"); gsub(/=DF/,"\337"); gsub(/=E0/,"\340"); gsub(/=E1/,"\341"); gsub(/=E2/,"\342"); gsub(/=E3/,"\343"); gsub(/=E4/,"\344"); gsub(/=E5/,"\345"); gsub(/=E6/,"\346"); gsub(/=E7/,"\347"); gsub(/=E8/,"\350"); gsub(/=E9/,"\351"); gsub(/=EA/,"\352"); gsub(/=EB/,"\353"); gsub(/=EC/,"\354"); gsub(/=ED/,"\355"); gsub(/=EE/,"\356"); gsub(/=EF/,"\357"); gsub(/=F0/,"\360"); gsub(/=F1/,"\361"); gsub(/=F2/,"\362"); gsub(/=F3/,"\363"); gsub(/=F4/,"\364"); gsub(/=F5/,"\365"); gsub(/=F6/,"\366"); gsub(/=F7/,"\367"); gsub(/=F8/,"\370"); gsub(/=F9/,"\371"); gsub(/=FA/,"\372"); gsub(/=FB/,"\373"); gsub(/=FC/,"\374"); gsub(/=FD/,"\375"); gsub(/=FE/,"\376"); gsub(/=FF/,"\377"); gsub(/=3D/,"="); } print; }