🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sources.atari.st
Article #273

v05i004: tr -- Transform characters (UNIX utility clone)

#273
From: Steven Grimm
Date: Tue, 19 Mar 1991 00:48
172 lines
10621 bytes
Submitted-by: david@doe.utoronto.ca (David Megginson)
Posting-number: Volume 5, Issue 4
Archive-name: tr

Here is a version of tr(1v) especially written for the Atari ST.
I use it with the MiNT ksh, but it should work just as well (or
better) with bash. This is the BSD flavour (tr a-z A-Z) rather
than the SYS V flavour (tr [a-z] [A-Z]). Source is here; binaries
are in comp.binaries.atari.st.  You will need an ANSI compiler to
remake the sources. This version is FAST, because it uses my custom
buffering scheme (still portable, though).

David Megginson, 1991

=====CUT HERE=====
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 trsrc.zoo
M6D]/(#(N,# @07)C:&EV92X:  #<I\3]*@   -;___\"  $        !W*?$z
M_0(!Z0(  '$   !G%JQ5AU6R P  > (   $           !-86ME9FEL90  y
M    "@ <E!8     I %     0"DC*   1P@<2+"@P8,($RI4J&!$@B9AUI0Qx
MDX9-&1!FWL@!04<.BAAV4H 8@R:,G#!CZ)39V#&,FSELPM!)\\8-QHHJY31<w
MR+.G3Y\*&B8P$O/,'(P:01 I8D1H"R)"JA@Q4D3*ERE)M!3IX29!@C0OWH 0v
M4\>,F94@VI1IHS$/"!1D)H:IPX8.B!HP\L)(X93($"1!I$PI0N5JUJU=29I$u
MF1/$G#)VYZ31<Q&N7+IV9=2PP=?ATRE+DD#Y,D2*UXYNZ8@MZ8:,11"EF31=t
M:@1$#P5/H%"Q#:+%D]YFQKQI(R:-FS(MY)0Q"GQ.QS)NSM!!D[P,F3IC+K;(s
MV"8-G>TGU;: \\9XSJ CA#Z!,[/FT8P;A;>!4Q&M2S(@V!B7J#/]$"-,!''$r
M%+R1@$)N5(AD(&U\,4$$@ (2V$-O<^ FA!*\=>3"&^@)500>+>67AA@GR9%&q
M&4>I)J(;:X!PAW=HN-"0 DPD(401$O:F'TT=.D2%26= !@(<<KQQ1G@@N!&&p
M6B#<!P(9:2B74EM(;52<DG+D(6-Z4$CQQ!$9RN$"'73 H8 023A!1!)2\%:&o
M#B]<V6,"4!1Y74HTV20'72C.:&"77Z:@ P@&/G$A7PD8.,00(K4@%@E $(J"n
M@Q .J."!ATI:XXU3\*6 AGJ\\<:@?WIYA$@02431:U(4$001310A*:"G*I" m
M'&T 1R@0MH8J5AB[@M#JJ[%R).88(*0Z47VSFNJIAG74\::Q+OAJ*ZZZ0FIKl
MM!>!*FI0QCD7!AMLD(H"K8B. 4>S@4J*IIIL>CJ&12[I<&VNVTEJJ!(B":=<k
M4/.^(888*PTZ;QDNW9OMN<Y2ZRNUW"H0$-RGQ/T" :8*   P P  9Q;54[ Gj
M"0L  '8'   !            4D5!1$U% &4       H '"A7     *0!0   i
M $ I(R@  *E(<4&%"A0="1)0D1/&S1PV8>B4 =&0S(LW<D"0*<.FC$008]"$h
M83A&HIPY+A0H$),'!)$P=M*0 =&DS)DS:1R^<<,"1(P<.6(HD,*Q3)@Y96;Fg
MI/,&!!TT$Z'4$<,FS1B7;]J$R:FRRIPP9\H@I)-Q2XLQ9.9T 3&';,XS,4!Lf
M:2OGK8PN*I,X$?B$2)4A5)(\<:(221DY$]/, =&FI9W#<]+L!/'&C%,Y*&+8e
M20'"#$:G4$$$H3,R#8@I5%Q<!J&8(@@X=1!W3L/&I (X<MZ<8=@&!(HT=$ Vd
M=/,F..DU$\W0+K/X*$4Y9^JT*>.&SAS.=]!810/B#FTVEQL^C#@1HX*-'3^&c
M'!FF).3.N7L#7]RVXDBE;F 'K_@:XIB)3TV$V!QUU$:9&PK,QQ9I;I!Q'V5Ub
MT*&?:F0Y%09RBSV%6'EPT"&90SJH=%8"7@$8VAA9P='1=-519AE=;\6%0AF/a
MR9''4V^!($:$+KB0@@(MD)$ $46I)Q)))BV6TX)UN0$7D',D,$4<=911AA[Ez
M1:@?6TT]%1%C!7JH8F(.,?C?8I6!-M%7TRF0 %GB060D>^YE--)$*+:!&W-(y
MX<>4:Y$YV1%K93;T7TH*4!$:C$XNIE5+*#JD6'!I-@3ID>TEV5,8(##D))EJx
M=H:15L$IP,-Z<L3@0PNG'BF##SU]UA!E)84!GAVV5DEHJ)[)T1L7;@3K6QYOw
MU,%8&"T1%UP=2"GP1JVWYLK<KIQZ&E8*JI4( A=.=7GA1"V 4)5)MK*1AVJ*v
MME8&'F'H.:AW;+"AP!B(D>=:56VYV!U&:5$[6T>QNE&>&R 8%9*X.8FETIL9u
MG=5<"WH$T8(6()S !0PQR' ""#PPEH=R';E !Q[!^;"O'&3@2X?()*LT!11%t
M%$&$2D9\%B!;W^H[!QQ6DM%3$CKF <=1&8:FW1EHM-#18^"E<5%G=;A1TH?-s
M-=BI460D2#!$T.&)1M1KH&D9IR!/].5.__F&HY*+P8$1:50!V%05;J2!!T56r
M-S$%$4],P<)*+=U\![+8@J#H1!N9$4:8.M9AAAF'L94&EJPM5@,,F,,0M$1Sq
M]+1C<,0:.\:LZWV:8'!+WMS$MV4'31$99.38 A%"5&&$$45(\<4426A11 \\p
M9$=>C3Z@&YH8:=P4>8 K.0ZY'#W=K'A;RT/?^'YLS-%E:&U@--%TW=O8W5$2o
MS80"8N"+<5CT4"F 6N6N-5$%$X%1$<042^AUQ+$A)0P"<7?HB?:Z@Z>&G&!9n
M2*%)N9Z%@A;$@ F<^=-NPB &!92+(KBB#04'!3Z,M,12C/%>=X"#AF(%IRYSm
M6$..S "1Z5P'451 0M^*  *8X2\+(!A"$*0@A20$X0@TE$(1J% %*3AA"C3[l
MC/:FHR.&Y"1([0)+4JYVE,F@0&]\\]L0H/"")H D11%) _+&E8>?L48K.!%8k
M"OYVL_<Q:UHBX((<@"6";AU+#FL(%75F4BF$"8Q0U L#'RT31S?4L2K((90"j
MZ&8WU:S.#2U)$[- ()+'7"U/<%C.3'"C&]YDJ"DP>8-,0*,8ST5(3;?)3=QZi
MDR9,AG&,P&E)6[YS-:WD!"4@T-;-9H>_)$#A"T.00F<@<H9=,6]UR&G=GT32h
MH$%93 X;0Y$<$%,2<QDS-#G94NM0 +1*3N0+ROJ"1G92!@6L3509N5GL8/2Yg
M#^DH)R/)0^&*\!B">><I(.!E_GX9S)X$<X3Q @&SZE"N/*QD36Z! \]F8H;Xf
MA,J$VES.IH+3$?)=LS4UBLQ.$'4%) 2!"BYY0A&F8#@D)(&D0^@;%7Z@$B<4e
M1SM.BI5E4!0;I*@F"&8P"0B*4)>K3*$-) 1)O<I'DS3L!6\ST<I&6!.<AEJId
M6^8,#6RH8I6>E/ .7RS03(!6%4O>DSN-00H;+),&RP#-+5/\DU82N38%S.%(c
M91@<8GX  B$P1R;,,>/.J$,I-UAS5B6,#672>8>F3 8XJB%"4R#'$?A8R9Q-b
M<5N^SL"&-WC'28SADQ2;(P839M:.-Q,8'=A7+*3U2#4Z:,&/AE($*YQ4,$X a
M@1.JT 0AY$XE62B6< @6DC*,(8\W0TQ,-$HP-TA'?1E)4^C2*0>12>B=;BC-z
MM)B5(^9)80@DQ6MU,L.9/&FE0:I)@F5"-TXW')"2,)E($%0#!8;0@0XG6,RZy
M_A,OOK[F;2X:"G;1&:K1E.8T5.@)$$&:!"J$H"N\<\+^8DC#*3RAB$,H@DK2x
MU;;<3% ^2B+8S:1"U:LHUI8\ 0$XBR/.J&TDG:$Y@G$1]A]).<F"N[$2BU8Fw
MFN9<C4"UZ0EY'T4H:;K-O8D)SOG*<)84:9(S2WG#O+(R'3F,(0VV>DU[UK#9v
M$3[%LZ@*RZ9J$UBD@0!HA=4JPA+)J7'1H2/S0DSL@K/$N$)%-JD+#1F>)1V^u
MAG&CAEM4L9R<F,5PDY)OX!EGSO"&-V0M"$=,PJ:L1EYX@4=@4YP5HGGW13TMt
MQTY6FW0WL1:YLGU2 =0T\J" XQN@O3%4*C;6$"J=R8Y@>B8\M<II@/J4^!;Us
MJ%41 T-LI(!>@> (0UCU9&[FW[H &%LJ"0C<I\3] @% &@  [0H  &<60U#Pr
M,Z4?  !3#P   0           '1R+F, 10!E       * !PC;0    "D 4  q
M  ! *2,H  !?J!A(L*#!@P@3*ERH\$4#!0(34)$3QLT<-F'HE $Q!DT8BF,Tp
MRID#(HT;$&% F$G#IDR"EPE4.(2H J;-F#,C"LD#@D@8.VG(@&A2YLP9DW/>o
MN&$!(D:.'#%LRGP844J9EF'FE!%JDLX;$'30;(131PR;-&- D'G3)HQ)%S"Gn
MTKP9-V?-(6S;NA%ZULW&-W#HI%$Z1\=-N1$3M!B3H(Y6L&(YLH73LDT9-W1 m
MO#$#>6/'CV%"EAF)DVI-Q602D+E:1F-G$$?M7.;H$:3(.2\1GVZ!>TZ<.F7*l
MZ-DHIPR<,AFWEK1(I^*8,KA+ST4QYDT=S"#*R):3)ZS),R#$\%QM)DP=-G12k
M2+5+-S?[)F'6E%G94G/@P18-KS?]L@41(54884014GPQ11):%-&#&R]9%890j
M)XFG$4D9H016&I9)EYA_0R 1A!13%$&%@0@JR. 0M84F$@A:939'&L-IN!L1i
M4RR1!!1?#"'%2TF<X<8;Q7'TD1QIA'$&<:W5(8=%,C+DY)-0/CG30Z:!0$(2h
M9.@ EAPNC,&"'4VY($-33\7P @PSG%D#"##DH ,,,>@P PYJ_104"$7@ 4>=g
M0 E% @ARF?80H%8R\<896M+!I9=@DC"H"B!8!=2+2H4Y)IE0G9DF#&NRZ2:<f
M<M+)9U"/@H!B14<*!<8<S0F6UG:4NG$"6%^MVBI:M'U$**SXS8H"&76@$4(*e
MCY8J:1JQAAD#")B:B:::S,* @PXU3$L##<R282<9I2;A1AJ"A<$&",5-BE^Qd
M"@ ZI0*L9H3K9W+L.EJR/8 @PI59;MGEEY8VJRFT;;X9YYRC"I7GGMKV::4(c
M.U"IP$,CF#0&&W6L!@(/K)(QF MH^ "QQ!1;C#$=9)#'L<<*1.S&Q!5O-#(9b
M9XEQ\L<KA^SR=<B2/'/*(+=\L1EC8,;&SBJS+/)H2[ZQ<Y541,8JD6Z MQD(a
M+9TAKGV"$:82D+"U!A@==3D\ GDFN?0$%%1,084423AQ1 (BC$'&'"(X+! (z
M36_TXG":<1:69RF*%F^+RX'@6!DN@! $&VR\<<=K\,E'GTNZT:K9=D1:[-T<y
M3*7!V6HO%D<&7&$_S+,9>\V70(<?ACCB@0E"3+9?JWL(HH@D)IB ##78 /%Ex
M&IMA-Z1Y;UG11>Y6VIQ9+NUG.KQ@A<'\%JS?_GJ)731L^MW%5]>&&&4+M?=?w
M?D<F1AUFF#%OXHLW_OC?AFL5KU=JS5>VC) A6SC\D=M?G^?U"]U62.<>L7DNv
M=69( ( $1*#<%4%V]J/= @=4(-@5(0$U@($&8<"$W^W%<\,#014>\[?'G"]]u
M\[+<6EZCJ.-A)&L,*J#IVN6J7,7KA.J30PRV,,$&6O %,LC>0VCXKMJ$!WTYt
ME $/ T1!!P)1B-N#%%[:H!>^E UK^(F.\R"X$MJ=+6UK:]O;XC:WND715'FIs
MB!7]HA*,G$&+I1OBK=+2%8Y\P0QN!$&]8* ](M(1.V2X8Q[WV,<Y+L=%@C22r
M'MFDO2H=R2N!04$*6$0')-(E4 HH QY$<I(Z?LTD9&@D34!@J#%<S0S7"4D6q
MU>4P/X+ #F^X$QP^HI4O/.T[*) ,<VQ(J%M&#00I**2[7A5+H<QR)&6PI:*^p
M,X=<5F>7T(.4+\\0 Q8\DU6\E.8RHS:F8,IQF*\L9G;TI$9E0NT,SB1,9J))o
MR7-:TXB0PN%H@"G,&L+R3FOYPFI:HI%<WE,HWF27(<T AS?,X0N9V6=KDBF&n
MUMPA.&[X@CQ'DDN"&A2ADKE.9@+JRG^JY0T(I8A%7E@&?XJ3HP,MZ$$ST\*1m
M)D>B#H6H1)$XKXJJ%*/5T2@]OVE/<3K&2"4-YYT"ZK"VF"27=0R--=6934C]l
M!)@/V<-#$N#)P(@R 7>SRE%8-4_X?9(PSDO 5+^VR$=^#05*_0D+OJ@VMKDMk
MH FX QI8$E2RAJ!>17B"$8 ) JDJX"5SN .X.I)+LD[2KU--@"D?<X(QG, Pj
M=_,>9<I@&<Q(!R9C2"1XZA4#[<%$#,6)CV<5FY6-G( ,C\4JI!2JD<N^))!Xi
M5"1G1TM5,^3RH+$%SV$3^Q*"0HT.MLT8TE@@@A(4!@0M$(H:D4N29^(1+73@h
M@AM$P +>PN0G6X!!%^ *$TV""P4RX&X"^L!;T")G#:-=K&GGD-J[^08XPJ'<g
M3&""VT$VA;:>RR5L\[C;O\+$MUT)+LF&6]SC)A<E>V&N+I\;$NE2U[HOP:YVf
MQ9L [](!O.(EKW\38%[1)E;#B25KO<P:R;3:8:UH:ZL8X0KBO]XM">7;R(&_e
MVDF2Q.8R3'DH"/RB'*6P(0^7O9M2]+;-,^Q ,W^3@V"UDN.-\%@H=+B#TF0Hd
MUK_F5RV:Y:M?7W+E3R;XKBA)2PN:HF7>_O1(DJ2MA3$\6@V_Y)BUG"9:[; %c
M+Y-ANZ/-)VM+RN+LL.$Q6ZYM8>_SY7J%!KD@Z&9?S3P'H*:9MVL.;YL3"^=Db
M3K.9V+5S%UB0:4*3804QP'-B\]E2Y/63Q0Y+0'$JN21&/J3%ICG(5*% RXVDa
MY$51JX_WJMB"OA#YG"Y(=1#D<(8Z5)8.A5$L4]DYS:E:A=4GL8.X@&.8'_GEz
M(0A95T>+^9!*FQ.7NL0FLXL,505LN8YX8 %Y6#"'XXRA2&SP+#L#(X>KOCC&y
MDFG#9(_=1D7JKT5,R6UVMM.=N48MR) R"0NE5Q]-/B<PKWFF1C!#DJG!;YH[x
M0#B2Q:)D9)4AX'GT,4_@)_'+(+MOKYDF7.1294';4>#]?>U\%MG9Q+:[#.^^w
M&B&GV@<_ WK4,]^Y?V^>\W'-EN>IOML46O,:N;ZA/LN#^E?@1Q[SH(=%K1%,v
MU$C'\JF: 4BYQ,,B^0@"L?/ 5+9SG0./C(<5K*#<+XEZ&;: ARXLDCSVAM3!u
MEGOQ(A.0RE/5Y"SW\NVHH6":+)AH#(CJ8D@Y",I.(W=7IAX9N9>NY5^70R[It
MO4C%'UD%]#XRO=T.]P3(?0N@5Y3=ZT5T>&L/UC21]5]IC4RP2#G?O/9U.YFYs
MM?F)U-3X";;I$C#L8A\[V==<)SQW'[48\#;YV63^&63@["2U6MH4*T.UAXSMr
M@VC;D/_L=JT+_\9T0G/YTZPF],=]SFY&=:KHEO?RZ5U-2-%;!GD?Y^"%(H8Wq
MA$7ZG!,>0"('CO,=KY$&+_ 5$X4;7?=7@E=.<I9^B4=3.@17#TAX$5AD,C"!p
M*"0'DC95]-=Y%%AS?W5_(MB!^)=T"8=ODE49)M=OX/%OK<$4AS-PHU%P!G@^o
M8,-R=T-R@7,;A9-^805_MO5R_+5HPZ=:,/@:)I<&06)YKI58F1=V8\=V%X-Vn
MK8,[%L1VI$<L&W9Z=4=S5Z6$UR%P/@@:@F-C:2 ;,<1R+9< 4P@"GT=_HJ<Hm
M,="%O'5ZJ:=#J^=J2=B#OT=2*,$X,)@J-J0B\^):<2AVA%1V5U@]:K>%9=>%l
M2 @35P:&=A=S,(&)B[2'*;AA+J<"*'!_H#9)7G@3I+@"M.5FXZ6"6)<9=; Gk
M\%-J+X0?T<,\0_A7/7<5/^=?<3B'=EB'.D2)@69Z##=W>QAJG7A_^%6$HDB*j
MBU=Z;Z8H,N!VDZ:+KS95L6804[5W"982NZ9&O79%TW1(7Y$2J$2(*B=LQ&9Li
M)H=\RX9^1?9\RS=1IA<9UD$'9)$9$U5]T/9*TZ9]"6!M9=!]!O%]X!1^F41.h
M&%ADYB=N\NA.[#11Y79NV#$&GC55<D57N:0"Y:B)5R:*TU2*>E0O)] "LV("g
M)@ HAU=D*Q!>9;9A<9@6]>*1179D:<$#-=F2Y_22P<01> B*HCA1;C=)]8*1f
MO%6.*U O,]!F/K<1(5F./6"27, %LZ*)H<B3WT&2/F"2,' "$*:2+#F2T:B3e
M(' "-W"5E8A9G8@";C=-DS1F)_"5J\A;(:F54<.57@F6H)@ 8BF2+EF6)IF6d
M,6D3-,D1A$(G;R>*;UED<7F6=,E;K)B59#E)70F9?'D3?XF79T"29HF6:EF,c
MBK5(:0$IBLF2C7E.CSF7)U"7&S:4%%B4I$E;(ZF*'_:4:QD3*$"4*V"48^F2b
MO7F-K?A7*D"15!F9"@![ B%[JP,8/&$&!-@&E*0Q)T$_&9./3,%:!@@OB#@2a
MPI=MK01^W*8 >L8:I_9^?V51*T4KS<$&7Q!:9, "7M&>7W '1*(15[5"@3:?z
MXO*>R"$4]0*?*  #')A#U=1#%50B0,1=E^A__0F?(. #;"*-_.F>]@DN&U$Oy
M>P934293"X@"%>J?#\)=%]I/U311&QBB)5H&?;:1+9%+(0JA$@H#.Y6<P\.<x
M1L 2*[)GX1%3L[& W^E]X0E.ZHE0#[&A#=6AES%3'=A,*G%3ZV0=V.&%6U:Dw
MF9%N^:A259AJBUB%CGAV.8497/AV_14Q9D >(% C-Y(C4I!8=],_+*(D&Q$6v
M%:)C/ H_7! O60$"#T6(6>%:/1@9TE4X%0$">3JHW@,^;I \;3A?;WAEBD=Wu
MJT>5<I"2*QFI;:>,4WF6TI69,"&6(7!Z)]"IF?A\2J%UP*$](P \ *2F.*(Ct
MB75EH7J,6X"I75"J&X:B=58'^FA0;M>'MNI9;K9J2G(266I0KW>CW/A7> $'s
MSQF=TZEPUDDRV&D\+J5UX,&=:1BD!SFD/44JY E2M)@<DH2>< BE[/F@_RF?r
M#FJA]UD&^?D5^]FN(@J@Y/*? UJ@HW&@3.1#"OJ!_M6@]"FC$WJ*<4>O*[I(q
MXZH1'/I02_JA,?J?)/JN*'"B%)BB"/NN+3I7+YJN[DFP-!I0RHD04Y6CZ-%5p
M@9@</:JD$4*!<\"M!8&0-62E#[&P#.6C$?6A3WI14:I35.IUZ(JEO*JE0D=5o
MV($1K (]0N=U8.>(C6AV&26FDTBF2&BF:.JJ;.JFD )CKS&H^G,&L?1+]--0n
MWJ,W;-$:!@<>O/AQ@ HI.C8':& =;  A_B<9SMJU<G!YCUJ$MEJ2G%JI(""6m
MF IJD\JILF)=8BFJI"J-;6>;*<.JPA.P13BKTV.KF9B;2$L'2GM$';A#=4=;l
MNGJL<_"KBY2Y\.*4:UL215A?BI2XM&JY?FNZ1H25$F<2J7J;J>M75CMS6 NKk
M_G5O?&IK3YBRV&J.AKH4'[5C=?L@J>&&=Y.GO:>\C[.;%'@YHX%'CJ,>,K2Jj
M'\09O=NF&R:[NE(OIV>YH'NQN]JKH[L"?2B^]?9A2/=7Q-IJHINLIK.-!3%Ki
MOV4A9[81EC$'C78D,$L0,HLK"MF_Y6IN0/M; K8:<B 'Q-6_B1(O6[ 8<P,"h
M6Y!^&#Q-072K#B:R#Q$0W*?$_0(                                 g
:                                _(, f
 e
end
Technical Details
Message-ID: <sources.5.4@panarthea.ebay.sun.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
From: koreth@panarthea.ebay.sun.com (Steven Grimm)
Newsgroups: comp.sources.atari.st
Subject: v05i004: tr -- Transform characters (UNIX utility clone)
Message-ID: <sources.5.4@panarthea.ebay.sun.com>
Date: 19 Mar 91 00:48:25 GMT
Approved: koreth@panarthea.ebay.sun.com