[comp.graphics] GIF file format responses 2/5

john@cooper.cooper.EDU (John Barkaus) (04/22/89)

This contains C source for decoding GIF
It is uuencoded and zoo'd
--- cut here
begin 644 decoder.zoo
M6D]/(#(N,#`@07)C:&EV92X:``#<I\3]*@```-;___\"``$````````!W*?$
M_0(!I14``'$```!P$FII5C".+@``-!4```$```````````!D96-O9&5R+F,`
M````"@`<PQ\`````I`%`````0"DC*```7Z@`0:3(D"<%70P!T0)$$#<@F&BY
M`H),F3%O+,H!8>;-QB-)C"@`,7#(&SAYY*0Y@X8."!1#4H"(D0/'#18@Q.0!
M,85.&3ME(`9Q`4)(4#=EZ-`9J8(I""AEY+1),V=.FC<0J8(XDP8H1)T@Z*`I
M`R),';$>P[[A**=,&38[VY*A2D>EF+-DP[@A`R*-FS%LZEAT*E8K1HM](>K=
M"4?.FS-RPK0I.P<$&ZQG*(=%8UAN&I=:N7H%<6=LVXIURKA@ZC2)XC$8Y9#1
M.X;LG<]H-N<5\P8HSB2D];JDLW:,9Y<]?Y*]DH8-9Y^DT:R]X]@GX;$@#MOF
M/"9WX<I:QX:QTWRGWSEPTLC-F<>%>]8D08`T4G8OB!-'(L/A7MFU3SG=Z74&
M649XU$88=)Q0UFEUA6'1@7*L41D*=+0ATQMF.&52&W#4,4=4OH'@6FQP>(1@
M&63@I!<(2)@@15&7C;$&"!O"L=AJ)#DEQ5MEA/$A"$Z\X=,<.H!`!6>5F=$<
M61BY04<8YY55T449106"8V?Y159''X74UX$#SN%4:6ETUU=E5DW%1AARX#1'
M776,04<=D;$!%T[$Z0:"1ROY%08;5[Z1)5+L\>034"`PY]QGJK4&VAPX27>'
M<FV",,<;;911&H(@N"%DF6&(`1='/OZ7&`AMO/%F=CZ6,0>.39'T@@(*C.`7
M8(*1)<*;9+B`A@BUWAH88B)$)<>KO]*:1!-0/"$%%486@06T*AQHYQMCH)#"
M#B!TZ^VWX'8KD*%ZS28;C9:E(49D<NST9XP(7@61"K,J,.ZRS3XKHA/0#DC'
M%SKYI"U\`W7;T)%:E8''?V[\^=*!W6EI*1P7I:'D&#*94<=?=,A[)@@*4RPG
MBFI=F12=;CA5!FY6BD464@NS!YT9CDWFLGQ>*LE&&3BE%4:G99P1+Z)NU-&&
M&%&I*&9\%BF)%%]^@5"$%%),X0(2L,Z*K[/0)L'O5DD!G(?`V])Z+[-<[PNM
MH/^RH24*Z>'Q%J3I(K6S&RDX]6T50F1!11$@Q#WW%EWLH+>W7D/KMMU!&9YC
M?`8;B21'&\OI\9-KN"JEQG;631:&@:<A-QL38D56P&11O)'@;,A4KE-SH;=F
M'I6Y/!D*:9'QAN:;'FIE'H*N[AADD@7G9&6WB:5;&^ZYD`)1(BX5WQS2U<$&
M7VW-*0=$>D3U1L\;(25TQXA:7!_(<CBV45J79KJGRQLIY^2>L-&Y]$!DFGF'
MH->;'$<=ZMF-1SKFALS<S"+:"9QC:E.5YG4K2-`1"Z=N=K<SB,4I-JH*R6[3
MN3^E:E5_ND,8:)<3LI3A?P[+$P4E5D'E9?!#?%'A6&!')8U0CF/RPDGRO(.=
M2^T,9'BH#1PZAA7ZC8%.*BE@=()ROJ#,18G:<0JVCGBL4ZTH(WR!PYIJ<ZJ;
MS8<C2W*@B!3CAIV,H54X61R/(,)!0"%-92@$E`Q?9C2DK<\,H1M=95Z(HN8Q
M16MHTU?B]G26+ZA16X:SUT"V)LBOB<%!7]!.)`7E),?%:B`(JXP=_I2:C]T,
M*Z,2DFFV<IE'`JHM_PL@7\!R,P_Y)3.->4QDVJ"BO3A%*[=J2Z:<1+(>F:EC
M[KOB6?:$Q\@4D$E5^EA;'%2H`]8P*K!*U%@@\AT0;#(P9-&*I]S0@NXYIBQF
M,-7/$%@EG`"/3CBCC\ZRN4?'/%)4>7!*;.10AR&>JGVV&:$?9:4`1G;-D9"4
M)$8V1H=$CJ!I$G-"%9C`!&_!@`FU0BBAFA`$+'SA(`69@K=H`(,<U,!L`^E)
MO,9@33:E(50[JPR]%,"$)PPA"`V]@K.(D!TD?L$JW>-6N':ZTW$=B4E(#(I+
M$HA3LJRTI2^-Z4RSLS,VZ92G4`W7N*S`R2WYC*D]VD@"C^I2F"9JJ4Y\Y5.C
M2M:I5I4C5PTK%)/)U:1^50HT1<H=M#.'L9*UIP,Q@GI`N,GFH!29B&FK5V4*
M5[7`X::7*>A=HSHN)*QD+*M*()=JFCZA6BH-W>,G4@>[U#DDUJZ+Y>FXF%`J
MDS%SJ_7R*78Z<JW;*/%-(RVI2OY:&3:1Q4,H<LID/Z2Z>"F1;=FITOUFM5FE
M%K9A?66#V(8$@AZ```:@%>U`1B`SS>TLG*<2%;9F)%CCQE4,GYF#(<N`7>="
M-[3BFFY.PFL9\H(&(E1LR_Q0I]FN-K0*5/!:%G(2@^BB%USC&D)0YSLVHQ+7
MOB#`KWZK"[`ZF,$,6Y!!#6Y0./0&>,`NT:Z,ZNM6!3MAORJ``^KJ^E^I#@0*
M;_"+J?($LPP7.+LQXFZ]BAN1)SCA",&UR!<.-(<U;"$&,^A"<T&PAY%\"P8L
M,+)#\0"#)L<`)S!@<I-GD&1P1;G),+C)<Z4,`R-4^<A2CH&7MSQE+RNY6U?.
M\IC3;`0S6YG)8EXSDV?0YB\O6<UR[G*;SPR"/B12D9+3BL9P6$2_?.:D;NM>
M[;!#3AM.=IE/S,S/Y/JE,`PH:RQ%,&%I:NA_A0P%1<V;MS9]V9PJN<C>BN]-
M,4L6YQ85!"N8B>.Z19S#>E9(0XX!"'C``\K*8=6F3G53-^)<7?.ZU&68-<CV
M\LHA`R:KL):UDF_M$N?*E:Y#5FMF8MU?)2,72LH=\9#=`%XZB/>ZU7ZNLK.'
M,A3`H&S>Z@-(P?:O%D_2(@.+3T/\M>B7*6RHR:09IO3TQ75";T?:<T._<\RS
M/<6/=&5PRJ2#-C0Z'LU*43OCCT"W3O2I[U7OX3!G"^NO+]A;._GN%JJ[1>HT
MX`0/REZHC7&<O41ZRWPH('=XQUM>\XH:7"O_%LZ_W9SE:HX'/N?SMXJL=&^-
MZPG#!)VX,X[AG,3836N!--!BIN$U--U;*X6JB`M<&>>BKL$/5G:X<)[S\8#;
MZ&6GM]&U)9->O_OKWV+W]MJ>7+C#FZ=SRR8>^?[V$?\\JD&'ZF11D(8AG[?Q
MO29ZN,G.K16L(`V'OVOBR<IV/`RYY*BC^ZZ?F_G0ZMT-*,##WQ=[]KL\>`MI
M$+)S88[W<,G[KK?G:>Z_)09=.S?$([:\VKNE<W/S/-TX&#Y#6B!YN"M?WDK.
MWI![#P(?^.`E.&!(I\I];O>NGDP_1(&J7WW]XG<_G*4GLM*'[O:BBQOII,<[
MTZ'Z]*CC<>KPK7K7L6Y:OK38ZMM5>V''4V/'7&978&AG!LIW<X-'>.Y'=I\7
M-J&7`G47?W=U>@XX>4.R>N$2>'TQ>,UG>+6G<B.(5AO!>(['+9#7*>VG@:Y2
M>9>7?E"U>5'5>1'X+Q-8@7=78B:3<*G'@635>@X&8;$W9+2'7KL'54D(+DO(
M7T,&?&0G?$HG?7Q@=L86>=QW?,IG?L<':\Z5?$K7`LS7@LZG=+O'A>C&$,XU
M?JRV;DD!`B:PAE6R8S[B8VS8/843?2>S=RBP:2F``ME#@<H&?8#V4Z9U*6Q$
M%F@P'F3A,C_"6U%Q(GSA-IFS&;BD<#[!3*#C2@4D<98")W)")V1!B8V('7S"
M%0T#*(KR'(!%%G.1(A^#-&>$6Y9X/Y\XA&"#%'4R*K%$!G&B.59Q!FY@,:#B
M)*-B!J5B)0E4&DR$$1RR)+T2<I@T.0DD:-8#**"3)GZU$>CA%KX(!R`'/2A0
M(!OQ,V?P!AF1$^@X(T5$'8?6B?&Q$+M%,223%O,8!EQT$L0Q%7,0+UCA)FXA
M-0]6)FE@60L!%E0P<%`0&+2$074@*E0Q%JNT$PMI-"V`!._B$%6!+2<U),TC
M:MV58/GU89^(CSY&41:%446@4=Q686454D^R8;M%'$D$2Z(S-R)W7R.Y7W,P
MA**S!2AY40BQDM$6`RY)?R'EDY[W)*)B8)G68:36&.3UDT&IDBPY$T<I74_1
M%DKB>8N3.9-(%_P$:*36:%&!`FIT&V0@%B#Y+:26EFFPEFC@7SMU8C=).H%C
M)6I$3)4V((]S2=J723=D.45DEK4%$1)!$6D`)@V'C[$1:25S,YF"%GR!6V1P
M2]2$'5_4C6,`/44`%.U"$G`IEP,A`@$2&2-S+"+P$@5)%*PS!S)AEI<9'VV4
MBY$('3]S1IV3)VQC2&^3`CK$';FA%3^#6]PH,L1(4H-&F"D3'WD2.UHT0E*R
MEZ#SFM!CB,M)1!#!;WV1()6!;0+7!DY1<B=7)=H2'64RG)71%NB!%5;1E";8
M?\W6=94!.K/Q)/4QFP,!B9%!0`8T%I.A8FMQ,[&D.LC&<*_2+7J5BG<B=Q-X
M)M=!%F=02@Z#)034B%G7(S&$'?]'7^%)<#D31@03/1\S(+KX+NZR%>@(-1;Q
M,WFRB(@RFLHS3ZY2(O8Q1V41BG\R)G&I/*#S,WN)`CXR,16C)"03-3>3!(P)
M`N*A$3*1)P=2B>>T/G?0G`.10#]3;I?%(3M3*7<!&H_B!B?@$J'B0W@Q*DC!
M0/W8+K"B(WNH<$4"`Q]H*7&BIIR#$QXH/A4GCE,0D%-3-5<#DG]$*V7Y3'*`
MEEJBEFRI9&^9J#TZEZ>F9$80!%,`+1X&8NB!$RK@>D,D!S&WDR3A>LHVJ97Z
M5C2E'3AA!F/0,ZN:$PXV!I7$J$O5JD6%$S5'*TZW2,/8,7_":O'9:,TV<7?0
MEZH1<F`W*PSX$J#FJ\X%>@4F>G:7?A@8:LJ&<Z_6:S(``GS`!R"0`Z,7:E/X
MIB@@!$%`!$)9$%\P!4F@!46P>IWV!9]&K;B:7F-T:+V:61G7*KJQ$UQRCL.Q
M%AWR7E+R;&S"<#@"=B\AF-3#/V0@IBZQB'!`,6Z`$U]*&F5P`KL9FN4R)=5(
MIF4D0NWA'IDW@/0S9*J:@O,*`N,2!-=R1M"!'OAH51OA3`GD>F80%6=&LFSG
M>D.&`I=*$BE@+3&"J'+UJ$5)@<WE7`K%4-(JKD^`7U_P!$;P!4U0!$W@+%E0
M-DHV+GWJ$O6D)["U826B8E:RL6;IJ@]F)6/+2W*0L\C:+>@Q9&&[!LK&J74Q
M?0Y6MZ\Z/\XEHY"ZM=.(2PMW(%%S&2<!/>0(,OB8&\LHH6\X*8'C(XN&)2RA
M&SE;-V"9+JM2G5PI.@B*$QU"/<UV,S3:GLRF1*:YB*CY'ZO))9?K2XR;3%B!
MHW,+/5<P37KB-JNR3-VA.3]C%07T0ZG+)OC(NI<+N:'+0YQ21#<SMVKQ/?FI
M&Q`!6W+@M9AHDLT&NY=[FL5K)9/%-@';1=A!HW+B<!H!/5.`G`ZSB'NQ.)E!
M%9<K++G"%Y-%NL/&<+6TH=OQ!C]4&$KD1,B#NY#K+Y>[(MIFL&ZK9.!'%B@@
M?C=H<O]V;V4@>B'@7-J6?O,'8(N$1Y"[B'SQ,QUG+!YAJV]*&K@!7,ZH14DQ
MNHSV3$U'LLGJP-$J?WA',VZ!`JX'A'DGKN^V@-T"?28F(GA$NLE$G%A5L*AJ
M,IV&:+Z:D6GJ*FMJ'C[1!J_RPF\K=(-'4CVPAL,F@R0(57?8:@?*;3YL*8DU
M;II"5V5<:XB%:\6V:[T6QC:GE2;A)'[129#6;-A&4,UAL?0F)=O4`@2K554B
M@"_Q$*)D)1M#B@U:L252%>KR0QI7K,XC@%<<+@NLK%HL=^6);TB[Q4<L!U[\
M+7.,5T+LQ_[21*>;&=78!IDR%R<R*F$03F4;R@QGR"B0!6^H%XF\$8N<!IDS
M*I,,G-*;$\O$CO:7N^@(!P?+4S`,+CBGQ1:\RJ/L+>O2(W2;LD&\H"B*$^9#
MQ(BA%4@#/#>*'<;DES_*!I"V$Q\"<!8!*;@LF*;#I,R$-$IA)4[P!-`"L1(K
M1L`!HR^S%G'9(]'!*6UDR.QI/2[QH=]!L<,$'+KSD&!JPIUCN#-RCAGQD<7<
MSMUIR'F"$9>Q$=[T!LU<EY<,S5E<?:Z66-7<+9L,7=H,+MABLIL\!J4<Q`\Q
MB6_H(9V":_WZAGD2OJ2KNHF!HS8+3>[A$+8450-A,3V3F9_S8-G!OK6A0[81
M%2:$!\4;2H3".FPQ<#?C1(8,.BN$%%9-SXB2)Q]2SJ<SA"TSH*982(=4S0-A
MH5JR3U#US-^RJ0[6J9;G;&6,<V+H>K!:;4FG>27(=M+G7+UY2*Z71HXJET@[
MP^A%@XK7%A.<PV4<+A@8B)O-A"5HM\2&MI^-MH4]9'Y;VDT8;TH7>#2,=_>2
MF8:!1MUY`I7A*61JRPGD,Q!QP$E\*8;\&:CB(1F6%PQGL$G-$]/!)"OB*<-Z
MMN"<34[R!H;\NS')CGC$O:F)H$0!$_<[I&T@&+;Z6'3P`W1]TM^20&MXTQK,
M(EB-RFMA:5#"1KBQ)X1"UM*Q<5(=('_A*OYL!D]MN4Q-3-E-U0T7W?#]*"5$
MSOI[)0(2U9NA*GFASAH:3P/.T5^+`H@,/Y:H1/F3&QY<0O>\$?F\SV$0L4&A
MT9!;%V7B=0-.LU6R$0+:X6O0;,)=O'6`HBHZ'-BQ)I&53)!6TN$R$"B`!*[L
M!@Z4!"<P&;A-IZ=1&CM13?L3(>'8+4(P3,*M._XMLI:,=]&<3#ZPTD+2TNIW
M5U^.&-=';63N+9;W2&0@P9-$4*6MWO13VBJ`'G_M7*JJVC']+8WUWI`[!V?T
M%299%I>A1&6=N;KK$IP[E7)#-\G[2H8\%FR@PE4QU<2;FA/2FG0ZD(]^(=,-
MMM>M&9"K.Y9"TET.59DL?F!N;6DL7&1NV>!RYW"0YYW>E5N@'7EX5W0NE;BN
MZWP.VR?F(3PTBJ6EW:;"O#UTW?EK*3L-!WHB5X;LZYZ[L3WIZ<W^S>9\0@"T
M'M36*76$<94!&3WR'Q[-OIO!*>_R!I,RD7H27Y:EI;6:&,;1(S]R,^5FR$4E
MCB4..`V1!!R<%Z>1D9S#!F>M`KKCL/O)B-&N*?JNE-%+[7C@STO>TT,5%4\2
M-=HNN,%567*"U\[<G:A"WB6$*AZ1.HYAH+P)FNX803U^[%4"\B:-=[1NZ]H1
MV(/W[;W&QFI>@K+^+=>.Z]0F>QQ1TU52VA*_!=1F>42/+:4]T^M=@JO=+=9Z
MQF%N6&U,!V0>S39UK3,A`VO^Q:'%\V?,:\56VFR^`G)<@O$&`GV>JT#"[NGN
M$I-R`HB2O"0#XQ;!%V]2DZP)$6T!FALG&U%!U_9-N\S>7N86."<A\AB"1QL;
MOL(]X\'#L84\X$<M!V*4TTL$U9:/&)G_,06O0RJ!F[AM&H:L1C(_Y.CM+:L>
MMVE^W;%>@GQM!GX=:[^'`F*('CJ\=H,WV'MKV!886C_O^\JZV(34-F_SV)ZC
MJ&@PV</_7\7/4S:<V0[6^V35V4F!_5$U]3LEVGBK@&S?+83-M\W_J&C_PU*/
M=TVX>\@/TS%<_BY1P><OV>&:;HV]_`Z&$T2K*4;;$/)/$"F9ZH?#KI\;\D&>
M3<E`GX``W*?$_0(!"!<``.P5``!P$FIIX'1N`0``'`$```$```````````!E
M<G)S+F@`+F,`````"@`<@2$`````I`%`````0"DC*```7Z@`826,G#1OZLP!
M44:.G#=R0(QY0Z;,0H5ER(`0DP=$Q8D5Y2@`,3",&XUM.KZYXP;$PSITTKBQ
MZ*(FB)M)Z)Q8^&9-F#PC!YJ!"")/0A!TWG@L8T9F&1!WT(2A4\9.PZ)'[YBD
MPR(HB#`+V;QQ<^;KPC0Z%\X\,S6-U9HN<-*!FH8-FXUEO,HI0Z>.G)D:9=()
M,V9N'3A(T3RU8Q"A0A!SZHAY&7.F5S95R["9`S?H"P4C*C:=">))%2I?GACY
MTJ1(DR=2LH!H$0,&:-%.00@)0N3+D"=$BGR9DD1+D=DR;(=FFEM*$=Y?BDB1
M`GMVC-O,25^1DH2*<.G4I2#'/OKI$RA%G$2?7KW%#/*YAS@/XGU]^-DT%"@(
M"-RGQ/T"`2<8``!/%P``<!)J:2EK%@$``-@````!````````````<W1D+F@`
M`"YC``````H`'%;H`````*0!0````$`I(R@``%^H`#&%"A$72$"T`-$D#X@W
M=]R`F$,GC!LR8>20`8&F3!@R9>2`,).&31D7*!6`4/%"@8(1($FZ*0."R9,A
M09A,K$@GS9B7,=/,!)&D"90G4JB`*(.'3D@W+F&6D4G32)""(.24.9.&8DB7
M=/+`*1-S(IHW<NB`N(*4R`X%8<>6K>-F3IHS,S?..9L61!6V4MS"%4MV*H@Q
M:#*"H%($"Y6W<0N;`4'7+EZRAQ.+K$(EB9,LD`F79?/&S9F:3YP<"2W7<.6[
M>4&0-NW7IFK6DD$(5>OYL<N`W*?$_0(`````````````````````````````
=````````````````````````````````````_(,`
`
end