home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / os / minix / 5227 < prev    next >
Encoding:
Text File  |  1993-01-21  |  12.8 KB  |  232 lines

  1. Newsgroups: comp.os.minix
  2. Path: sparky!uunet!munnari.oz.au!metro!ipso!runxtsa!bde
  3. From: bde@runx.oz.au (Bruce Evans)
  4. Subject: Re: Check_crc.c revisited
  5. Message-ID: <1993Jan21.061421.20703@runx.oz.au>
  6. Organization: RUNX Un*x Timeshare.  Sydney, Australia.
  7. References: <1993Jan20.014415.2360@crash>
  8. Date: Thu, 21 Jan 93 06:14:21 GMT
  9. Lines: 221
  10.  
  11. In article <1993Jan20.014415.2360@crash> cwr@crash.cts.com (Will Rose) writes:
  12. >
  13. >Wim van Dorst's check_crc is pretty much essential for updating Minix,
  14. >but it's a long time since I've used it and I keep forgetting that the
  15. >script file is on standard input.  This is a repost with minor changes
  16. >to parse the arguments so that the script can be either an ordinary
  17. >argument, or on stdin as before.  This means that a parent directory
  18. >name must be preceeded by -d.
  19.  
  20. Here is a later version of the program (now named checkcrc.c).  The
  21. differences are almost as old as the program but are quite large and
  22. useful.
  23.  
  24. Experience using this program shows that the feature of searching
  25. several directories is harmful.  Someday we will need `checkcksum'.
  26.  
  27.  * Version 2.3 (24 April 1990)
  28.  *    Fixed sscanf trying to read an unsigned short with %u, by
  29.  *    replacing it with smaller, faster strtoul.  Beware that strtoul
  30.  *    is broken in Minix 1.5.10.
  31.  *    Fixed leading digits being stripped from file names.
  32.  *    Fixed calls to the isspace macro so negative characters don't
  33.  *    violate the domain of the macro.
  34.  *    Delimited file names by spaces at the end too, to support
  35.  *    trailing comments.
  36.  *    Changed the output format to the same as the input format:
  37.  *        crc count filename comment
  38.  *    where crc and count are strings of decimal digits (perhaps
  39.  *    with a leading sign), filename is a string of non-spaces, and
  40.  *    comment is the rest.  When this program is used as a filter,
  41.  *    the crc and count are not changed in value (unless they are
  42.  *    out of bounds) and leading directories are stripped from the
  43.  *    file name if that helps to find it.  Input comments are always
  44.  *    discarded and output comments are always made.
  45.  *    Printed usage message to stderr, so all stdout has nice format.
  46.  *     by Bruce Evans (evans@ditsyda.oz.au)
  47.  * Version 2.4 (28 April 1990)
  48.  *    Search distribution subdirectory.
  49.  *    Fixed harmless bugs with cptr < file during file lookup.
  50.  *     by Bruce Evans (evans@ditsyda.oz.au)
  51.  * Version 2.5 (13 May 1990)
  52.  *    Use getopt.
  53.  *    Search /usr/include for include/any and /usr/lib for lib/any.
  54.  *     by Bruce Evans (evans@ditsyda.oz.au)
  55.  
  56. table
  57.  !"#$%&'()*+,-./0123456789:;<=>?
  58. @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
  59. begin 644 checkcrc.sh.Z
  60. M'YV0(T* >"$FC9L7<] H& &""IHT<T! !!$&1,(R;-A0E#/FH9TR+D" D%*Fz
  61. MS9N/%-WDH?/0S1D08LJ8>2.G# B6$]D8+,/B)IHR;D#4<0,GS)@U"R72@9G'y
  62. M8A@[!E^F66J0SAN*(,RD86,SC!LR-_/ B0I"1,*L6\N("-GPZLDR<N[(F6JSx
  63. M#!Z(=*(FU<IU3D\Z8FV:18.6*X@68]:*S/*F#H@Q7BFRF7/53)DR8'%&#!-Qw
  64. M#AVO9,+( 6L03IVE4,,D'9I0=$^:3,..=5GV+ ^^:GN"/..";1(S/B>*[I@&v
  65. MY<0Q;]K X4J')X@\C9/>V:IQSF6?-F=F?#.==ILR<^:$.=-U*<NZ7W4L3)! u
  66. M1)&O(-X OYAQ(_&/+D0D'?+&37/_<^@@4D=E'#4&1RZ,D=05<H0!!QR8Q<;&t
  67. M&Y"Q 41,<RQG5WQ!.>28$I')$ ,(,=R@ PPQZ"###23FD,,,"D 1!!5(]$"0s
  68. M03J\4,<<<MSH1HX[]EC'&&* L ,(=L%!TU(RTJA &L UY]EAP)U H($(CG'"r
  69. M816)0,(>,?0A @@A]% 68F,>>5Y0"HA4(!I7M2:'@%=0!X(;;RPUQH1BQ"0'q
  70. MDG=Y1A9N(' A@I4_83E&@B<8J@!&UCW:49QHB"9@$7C0T> 8>=%F**(%KG'@p
  71. MHEH:6B@*,<A 0PPS/%;IILW),0<7*2A@'5AFO> %%B^\,*8/H"K** @\\'!"o
  72. M$4X0\<431GQA1!),%'&" KRJ0"T(*H P1*)K?#%J@H>UH"VWV#U6AQPU^5>8n
  73. M37/DX5E)%)T1AD%35C2$%$. H)-GUUJ+!;8@5"$>>>K]JT("5XK*$0A;M  6m
  74. M&7C-)<9I:?3G<!IR=,%P"^:]H>%';%R<\<9V:,S#J/O2T6^_2+K 6[\(<SOJl
  75. M80_C==A2.O*(T,(MV$%LSCWR.(:.<)S1(!EEO!"#"S6X$ ,,"7*TLL$-_00"k
  76. MQ)Y)3+'%$/\IVAEU?*=N&-O=$9%67PV:UMER)%<N36F<81#9+&.M:1H3Y]6?j
  77. M1$'9(5K%.UI4AQA=%VC57."Q583++O2$7!MM@#;'"W:_,!FXT]47$\LS#056i
  78. M3#/5]%ARD7\U^>5C@'#'3T&)D2=A=N'EPM0 /W'>GVZ$\=U-#;HQ1^B1Z^U[h
  79. M3W,,21AG%MW](%E<A0$Q;85S2E-3N7^WV5<L(^?&1W)T^I)7><3P@D%[UH'Tg
  80. M"^#+<--50(_O1OGGIY\26."+KY,8Z*NDOE4LMW]__GE0'PM$8Y/((4TH[^L/f
  81. MQ(1'-C;D878&8]D33F.:I50J(N?)"DW:$)^YR"UW&AG5:SPXMQ VQC\](53Ue
  82. MLG-",CB.=$"A P0!MKB71=!@"9B!#&80@Q&)I$0P4-_C2D>&R4%&AJD3B1*7d
  83. MR,0E/F$),*N!%&'0*I'4P 8VR,'H(">Y%XP!8F8P [B:2$8E@M$RZ5H*"F9 c
  84. M S;:0(E7O $,:H5#*=( !U6<@0UB4 ,M#K&+>'(#>(PWQC(NT3K#(8P9YL45b
  85. M,M N6PZQR1/UM9/-B*X_#@0!'.;BGPA-AR7EZAD(4, ]UUDG!?&!@_#8$LDMa
  86. MBDUE5 O=U:"$QABNJS-P,ENYC$*'.I#M,0L#S>B&(D.1.&0BP L#5>; LN)-z
  87. M)0QB,(PL+8,9LHC!*&M8GZM")4)M1FX--ID*DCB3!KAH,V'QFI<;6(;)IF3Py
  88. MC'"Q)6[FP$JKE?(-UHD/!4\CD8CL2"9UT(@LLY:&Y;F$9<U[WDNB=[AR1J0Qx
  89. M2Y$/,%.7,GH^LFHVL<IG-")1S6BR;4;373]! (7!Z21U1$B..MF24M55:BG0w
  90. M<<P=O+*43Q)F*C/,5A+TU)_/T$N3Y1P#>.(#G'OEBS)FH,-,:]*3U:6A(R" v
  91. M$QO XD$T1!0X-?&I&UY)5):%X31PDM5#X%#/,C2%@""0VT>"0H8ZV.1 U93Au
  92. M19] 0A""@'MSJ%A0E@:#4:Z((IO<2HMPD ,Z BP!2>!=.>EW5[CD=6\=?4A$t
  93. MG K5?^)*21!RPYCHU1SG$14KS5$.3423!Y8E #?UG,A,Y^"&$RP%?%GA3*QZs
  94. M(DS*?&=URM07>"*BI.Y!DRLY!4$"B/ 4FY!$7FY@#PIJ@EP@J,$H;Q #/<= r
  95. M3YIXQ@68J8-ALV4%Q^J51$X;)1]!T(1$MB@'<S1MPKRUL F]80UG@TUDH$D9q
  96. M-IRF*_"I2$W8H,SB9"<M*Z1(1 QBVO;]4U8$$4U_7M &@Z0!#Y0;TAHHUQ^Rp
  97. MD0%<PB1#A:>:(/5RB[VIBQN>:A(1%41M##TQJ@NR)4PJ- $**S:M&)I2)PZ>o
  98. M0 CVM8D0%-S:NT8FI;)2H]G(-P8@]!(N8YB!"\ZUJ".[P ULV"X(NBNK[\K n
  99. M!7U%55\=-!>-Q,!%Z:5: EHI8KC11J(9*A"4GGK+D=;$)!^AG[P,$MPQ6VUFm
  100. M9A@*I[X[$?+9%VDNY-N[/"O1'9$E@^UZ5QM0@,H*L2&G"1!"@;Z:S\A.)(.;l
  101. M?$-(.:B]O"*M0=%L2D>\0IX+PXP)E53=5 @SJA[T8,OPP0U77,(25V]9='-8k
  102. M0T$A!!:8H6 .!RHH'2(R8P'3 0C4=8$=ZO!D$_I'G8*#JDX$&=\_,11NX)%Rj
  103. M HI=8Q#<.,<@V'';>NRWH !Y2B@8\ON*?&2.*)G)+G RE*5,Y<<&Y<HC0A6+i
  104. M@A!8+X-YNPF8(!TJJ$$Y!&^D>+J#MQ^GH>;<27=EX (=)&Z]@46\M:=.M4TGh
  105. M:NOYK6O69ZCUJRT"IX!^SB;71APS<0B;FORR)*ILRCPI"<Z!!&EG0_NCZ5Z@g
  106. M*;>Z("$RIG$:;(QCMX:;QULJ-PC.+>2\KMO(;G7WDA$D[RBSK-Y6=H'Z4""#f
  107. MOO*[R^<-,[82$ 0R /HP/B,E7$Q9!E1Z3'BF+?O9*0,'R>;EB!$B%-H4*IDSe
  108. MP(TE'$1!L9WPAC200=O<'KJWBZYCI/O8W-9M.I&ACN1W4]WG\[ZZ=_=VY59Qd
  109. MG08@^+I@OXQ>@!OAP1$*#V3<$"4YY.'05W$Y_8+"&A&G/JPU734(2E"'GLP8c
  110. M9C59CE'((LZ-SR%R&8%+"F5KSJQ9):!LD?12,_K2Y'6O,6R V43$T#9P!L4@b
  111. MY'4P'L#;M*=!^O1XB%!"R0(QN0T;)F4@"T$?E/>V<5"%$+<H#M$?(4=C\"H9a
  112. M!!$98A0%9!1M8Q%7(4CRDA<H,6JPXEA7TQ^N!3-0\0;\Y7#OI%+@%UD%>"!Oz
  113. M &E$@!%#1Q=@@7_6$QL#*%2;81Y6 Q29\09O\!=Q4@</LB0PHRF,1!9#%$/Zy
  114. M-W;;0FH1DD$017#)U#'E(AZ[@SP!2!3\5(0%,W8(LS#(04SK$F [Z!\PLSKQx
  115. M-%$>-X5C@VMWXQ(/!1Q(,P9#]TOM-Q41@0(0(@>5 @<K-W8;5Q'K1QMY=09Nw
  116. MD (I!& 0-U(505!G!AR!U (I"!ZTA3TX=(7+5"XD5DP@< 6L$QR\!5(-PD$3v
  117. M85D"AA5\,5LW>&?!!!]>^%JB@R=Z4BDN$2'@YS?@A@)#T1<8]!-G51,P U&?u
  118. MY3J>,P>H)$QUN% 88SC89DGLHCR\EA7VAQTP8X+A%"75]Q-L (?:M'=*X1M,t
  119. MR%.0PX,;T15L,%/N C-8 QFC$2'"-(3\I(C *!G:&!$&!!(P P6<U!Q@L2/Cs
  120. M44"[%8_:Y!F?)@?$<Q4-E#P:QD\7="=/Q4(&ITQU5FQ"( =#8A-%4&YK6 8,r
  121. M"00+U"ZAX0)OH <N\%7TMGGWY@*@QW4X$'K]%G8 -P5E8%YVHS7"(SB$TXO2q
  122. MXWKGAWI@\2IMX(HP40=G,%FZ-P:J]"<\L"Y7<RYJ8QCNM08T6)!-<9 )"0(+p
  123. MZ14-^9 1F0<369$7J5V:5V6<QS3BU2KEU12D)W8'(S V01Y6H4J01I+FU3Y^o
  124. M9CX"R3?PDS2P)4S^@S<%1TGX SY&&6X(*51*R9"CY)!,"9%J")5A0)$6B9']n
  125. M\@+40BTCD)8'Q .)QG.!04]HX .*R9@VX9CN@A"?(4.369GO\V>7R2F!X0*=m
  126. MB06+^9EJ22SV>#^D29FF:9FJ&8:\49JGV9;$,A1X<6&T"9N.20<0\X&E22UVl
  127. M$2O?IRYB^7:,M@/"F2EP$10.B"UO]S7*B07#V9Q\$U&J9!!D,)V*B31H4P8)k
  128. MP 1)X 1%, 5)H 5%D !/ P.)62W:PA&?4205,@8!I4P14FSE)0?9= 0AT00Nj
  129. MB!$]X01EH%0TD4U3X"ZA%1'\(0>]U5][HP*(B06>T5^I4WMX>'M+,E'QN04Ri
  130. M<$4:8R9[<"U-! -X  ,F"@,]0:)/(R(IB@==1P,RT*(S  ,V, ,M2@,P@ ,Th
  131. MT*(U  -A4 ,M:@,P, 8VT*)R5 8WP (BRD0DB@-/@P,MF@.ID@,M&@8Q0 -Ag
  132. MT*)B$ ,V( 8M.@8Q@ ,H!@(D2@8QX#PM6@8Q(%0M:@8Q(!-*^B\CB@>IPD,Mf
  133. M&D1/(Z,K8J-DZJ(=&J-]6@,R( 9 VJ<PF@,[VJ<W( -FD*1]:@,R0 9%NJ1+e
  134. M1*(O,@-4VJ=X%*9:.@,WX*5]&@8S4 -9VJ=D, .$\Z68.J8D:@8S$$9I.@-(d
  135. M$Z=D1**J JDR2@-M=*<PBJ)]>J4H$J0T4 9%JJ@T, :.2J*Z&@:)2J(U<$= c
  136. M2JE*1*(_:@.E2J*$2@.@VJ2""J5]F@,]FJDD6@8U<!EM6@-C8 9?2JJLB@=Db
  137. M4 ,XX$+2*A(DJD<UP*>V:@.+VJ)<VD-W6J.^2J(W8 -DD*QX@$5F4*S.FD6%a
  138. MJJQ=NJ/SVJ=B< ,UL*UX$ 8W< /7B@<Y< -?UJ(X< ,SX*VM>@-DH*Y]BJ26z
  139. MT:(%FP.!1J+(*@8H%K'**J;-B@?P2JY!B@,XH+!X< ,X@+%WJJ,!2Z<]&P,My
  140. M*@,X$$0RB@,[1*MS.@8Y, ;M2@8Y@!EIF@,XX!RMF@-A@+)-BJ@DR[$YD$55x
  141. MBEX;*P8Y,*A0RZ0X^[4-BP=82@8WJ[$3&Z1A4+;\BK%(VZ<^VJ,R*JKXZJ)6w
  142. M&J,TZZYB8 8OBP=$0@;M:@9] K;II[9<R[$3*ZYX@ .$.K9]@JI5NJ59>K@Vv
  143. M !D^>P-C$+(W*E0WBZYC$+<R, 8R *CU.@94=*=$6K1KNBIM6ZGI%QJ5J[@Xu
  144. M(+E?5" LZ[B+ZSPRD+9D  ,6&Z\V,+8N2P-4>K@W4 8=&Z1E( 8^6Z[O>J,Rt
  145. M<;,SH*:#*P-EH$/\2JY]2Z(P@*0H>KAAE .2*Q,QP;**N[CI:@;MFK@Q8+%?s
  146. M.P,;"[]]!+*-"J6'*Z4\"[)GBKE;"AE5^J86:Z9#^J6ILKAN.JQIRJ7J>KA/r
  147. M6K0F:J4R.J2RZZ+K.[@]"@,WBZ,=:J0F[+-"JJ^[.ZV9BZJ8^R):6Z6O:K%Bq
  148. M(*L;FV2RRK(\U*[E>P.2ZZKE^L+T6J*#FKYT*@/HE;2,.K@Z1 8A#*.CRJ,Bp
  149. M<K.0FK%&VJ&3*J=N2Z@E6:7H:K'@&@9CBP/PBKEF<$652ZXT(+GO^KKK"@/Ro
  150. MZL6\RT9E$,*JDF3\BJ4<?$=*? ,T@$7"2@,&^ZRJ<J,X&JUV#,,82P8X+,0;n
  151. M&[(N$J6?.K9(6@-#G+&5BZPQL+@%.P,SV\A'+ ,$"\4V8 8A3*-2RJ]=6K18m
  152. M5 ,&.[ #>Z-[%+=7Q$9&;*J(VJY22[!MBEYMO+:2ZR*G"[)7J\!:N[%Y"TV[l
  153. M[*PZ>L(]&[= 2Z,[NR+\*J8<O+5*/+).F[1!:Z.'2R0FR[*$"L0Y/,1;6KF:k
  154. M:P8S3#AC"TU]HJ5J&[JD;*@8B\L_BL6B.LM6ZK,^ZJ9[N[Q)"TU0G+>&>\^Mj
  155. M*L5MO+QP+*F^3+>+2SAAP,QDH+E1BC1G[+C3J] _"[LL3+N'3*0G/ 8T$+>Bi
  156. M' 9Z?+J#NZ9EP,%4B[2'*Q,Q,,2NVLEK#,J-VJY?FP,X#+F3K+@S'$8$[-$Vh
  157. MH*:S7+X^.ZQ2Q*-(>K/D^R(RFKVKC!E*_*9FP)Y8T ?<Z9Y5  >.NS"1XX%7g
  158. M Q?^58+%*!IW9QC\ 0=Y4%5J- 2H]&4]"P)3T!QU!Q1VK4P$DA'!!0).\ 14f
  159. M4 0"<GI!MA%@PU5ML"-+$1-\ P*]0QYDJDT=VC0L0T8DJ3WT(P>);4L341.Ue
  160. M]#Y!.!U"E5,LPXZ:5HG?(2L@$#E-03XTT: .!UOR51_(<4!5 8 _@3$?E=JZd
  161. MXQ<LHU9DD6EM"$QQI6HX$12(UA@< 1(B45+1]%0.&A0<V$S,K9=M0S'4-E)Mc
  162. MV&!TX(X(J"_]\3V3Z#'F!%<+-%)J!10L8Q5VC=>1. 5\S8QLT!/R30=]K1%+b
  163. M:5_3?3U@L2T2!@)&8%U^<@:TFBU/(#8-\29X,B%G\$"'V9TRL1-" =:C@@(Za
  164. MZ3@<@4HHH*'0M 4H@.$+XP,^  (X@$HF  *5G0(:XP6C-#/%8N*HY.(Z24?4z
  165. M,J%WYRJB@2V9AH<0U]4XSF9V4'@EJ$QDDYPWOIEL]IPJ@!M?8!0JF%?15 9(y
  166. MC@744A6MK4XH\#5C^C5VD +LD0 OD"T9%#G@YSIDT!02M5XS Z%7[A\)P.4[x
  167. M$.;4XH )H )>O@5=,.?4$J)V;.<JH).:,N?L,>98X8"\9$Y*4A7FY.9V/"$Nw
  168. M@3 TX2TG1 >$;NC(@2Z&XY,@!TJ.OD06*DA@D1 9FND@=NG9DNDUP2G:@B_8v
  169. M$J%+!.EG@##G0NG$A.JZ16O',V E!NM*%.H8VCWF(@>G7NC98E29.!&?KD3/u
  170. M$BUW;@9P0.ABGBV$XCGGW1^>!A?3_>J4"NBX(>V&OI//F!8/MSO@-VTV,3%At
  171. MU.B^/B"OD@#HO@7B29[FB9XK$ -[/NV4)$B?A6C!IDK<;L=8G@!PT3;$WCGPs
  172. M828P,.>&#C%@<0?_E5]!4?"P\0,_$/!+5!7L<4_YI/"XKF&J8Q,SI2X3\GX2r
  173. M)8YT8/$8KT3>GA9?@/#;:>R @A=!:1,!!AM.4 5,P 0K+Q(#/P;@GNJODNA_q
  174. M(DL9-#/S69\IN>PBD35#LA0XGCS*] 7JCNOJCD9S22A1;Q ST?,Z+@=W;C<@p
  175. M8"8YO_,?'S%XLS5!43PKN>J'0SU]R/1?GP GFQ;R/I[E>9Y%<._Y;NC(2!%Do
  176. MH :,G7>P<9)R*?> ?DW6L4*X_O=?&RO6MVOLAS&]WNWOK@*0S!E \>,RK_B;n
  177. MOSN;-.&]&QMB+_<:GP!O%_20/4AL<%5I-:!O%_"4:NBH'>6[Q-EA8XURW^,!m
  178. M9B9Y#@-[3JE.91@A'OMF<IRJM.6<W>6<;0<](0)DH -TH -V( (I@$IEHI3,l
  179. M@DI^G@!S\$D=@0)OQ_W4@C":[VUD< (%DP!+)/9F$IV</9WLKT3<5Y)K(/^0k
  180. MD4^NI?[EG_' @>%HH&N(/U7R-;"?PB-_6( ]0+MV9 9^C6\J>,^O! 0(5]$Uj
  181. MM(D(Z F\#^*D /F7 -J0P1N GX&S;4!*Q1YB!QU %2,P 2Z1/M#_Z)_+N7_Ei
  182. M+__9A!-@!_B?"E0B',\FF(D8(/^62/T+ S P 7JGK]+ZUM\2620;I<K-/Y'Ph
  183. M X-@ F"!=@P*^K]1\G:T$YGP?<N/CIP6(\<&JMP2F7W98L#]B9(D;2@<^/%Wg
  184. M<P'@@;S>T!N\WO"S"2C #(BE.8 "T%U/F'=Y#ST1#]]D$ S@BWL5V *5E#TFf
  185. M@ #+'^UK&[8O@Z [8N0VT*"P"7@) $J,$@PG[LQ$UN@(<J .[H2>T"A:R_6[e
  186. M@G]PQZD 0:CS""$(:($B(=!50F_#!6# "9A.2R02_K]X!_S&GIEH%*X0!/ !d
  187. M/K#ORL 6J(6NQMN,@!. 2E#AZ/ /!L&MX+])-S,LH:9X/EW0#H( $R#H\!&)c
  188. MF"-'(@8RPTHW]JP/-*2$FJ(G4,.=U!.>Q@8\A58N 1JZ(! ><E^Y^'L3 6GHb
  189. M!.]VGYJ"4W$XA:BL<"'<T/^HW0;)+1IFJ) BR3 A%,XN<BETP2(4!;UT!JT&a
  190. M,LI'_9"2?#?#D!/P26.C'GF"('('LE 28H+9B1"P 0=M!;)P#]G%0N0)$5&8z
  191. M+#:H,A'FC*B+#0UD(](&D3AM7@(Y@B#LS]$E@#<X2@3020QQP XL."!4H@HUy
  192. MQ?4SAM5P!:P ^4<HS$0UE'^>K_<]AITD_W@B"BB*?R+[X<(M80)27 CPB00(x
  193. M*/H.VR,47P51K(:?L/M-P:M8#6VAMWD!Q+#\;1O-)Q7;X@H@$3V0Y>TDI2C_w
  194. MH."=:XNWL!6^PO:D[Y@ #,HFLF2^4*W=@C>D25I@"^Q()IB3BF#X\L9W02V0v
  195. MT,G!O&XX".6?)$0!8B_[#4($N 0EPO\#AW]"7. &5'(7L\:L 8UX@362"!!Pu
  196. M%T=$B<LK>J ,2)2ZQQ6TX&D)+/ZA =HC"%@6)*" J(QJSR<%&*MP%63=7)* t
  197. M7$"SQ*DPEP&_PQ[JC7G134P&F]#]$L!W: ,Z*0^ 1MQP'9T#*QJ+%^KPC)*Hs
  198. MV(=48UJX?APP\RV^/F0F>*--N(N"ARZVQW61 MG#)71KH)$]6L=9XAGZH_?3r
  199. M%$=D/*:%Y^<K#.0E5"8*DBOX'OWX'0RD9FPAW=#)03G&..4BI'.0CY^O[61'q
  200. M$. 7_>)GO)">PRV.1F.((A/>NGARBS$\-$8J1QYA H44D?VO_)U(E[<9@^%Hp
  201. M! %[ !V61N!(!QJ@""@!,* &.(828 /LR^YI 6RD,Y0DCJ!(& EFB(X7T!@No
  202. M05/73;ADI2N/_7&)4+R#AR%WX(C4'IU"&98_O]@47R3,ZVKZ;@KH&CB ))0#n
  203. M8+@E1R+7%)19XO9^$23\C%QR803#\WB'7B*IZQZHI*]TQ=%![$*16ZR#XRU1m
  204. MDL:UB./BX(*<ACB.ZM4!,X!*@J&B3'%3X LD@2E !)* %'" 4T_=_1PZ\ 5,l
  205. M M(XB@E0TB%#-Z F$R 4-(3'CFS0IPM$?6R"R]$(R$Z89)!?F>M"#F'@0#Y)k
  206. M)W[&.$@GS<1,R"R64D*6!3E@_3JEF4 !S:X(!$+ 5@HGI1(ADD8222K)W=,Dj
  207. MER24I $1(79X!K]0DY;"L]1KBR0MD $L.1UC(<MCAASAA33*+\D?1^28?'EEi
  208. M$B\BQ9Z2#,M 7XR!M<Y17DM9ATH,"9G"?PES88B$:QD42<Z22)2PD(Q810S7h
  209. M#<72&&"6GS#[%8'M!R218L*L='S19#9*05GAPMK''%/T:66.@1181MCDGL Gg
  210. M-!(.I$!<N>"F1 8)EJ"(&PH3(KGZBD?K&S# 02Z,MS_Y_P)EZLA^,1/$Z$)>f
  211. MZ"6I$-0\F<3$6XH$<(D"CF227)+E\DE&R5FR[M+(*!&78-.^I !Z*1?OI<S4e
  212. ME[8.A:P+QQ$Q82;6] ]A4HG\RQXI,&UE^8,4R6B4Y$"M^5&J0KC\FN3229: d
  213. M<QD1G@B]9)0@!FZ&(C!Y,*,@I<HJYR(HH("]V4)2X*V44$HN=0PYPQ-;DB =c
  214. M\7-'D&L.1W3Q_ 1&/!(0$G!CU Q[A#$T1L/H&&"M=I(,DX$R\ +;O(%;$Z2Lb
  215. M$)JI-^_""8P!GK,]!;G4P>0T9(R4<EPA6CH'ST='FF=:4'TW#S@0"D?'Y#R?a
  216. MZM-"HL.]32AAUXU$ ]]).0XEX/DY0Q>"8D6#X7>2L"(0"N'P/&<D2X$(WHA^z
  217. MH"/8<A!3#MRS'EZ%M^ 3Z)D=BE$&@8?**+<P(V?DWJ 13A$)06 ID$'"\"[@y
  218. M0$^ $NW-:O1/EO3V1HIE>@$](:NX'N1&&!1A23J?''1Z](^;\T'9PA080?Q%x
  219. M#CB0$#J@1NC&B4OX@R(D%7/R/W(*K*-4R_/K"07<</?HG=[C>PR/VI&[ .,\w
  220. M!-^[*$&PH7UX/>'W$(@?\BR9"? S;LCPD!^M0T]H%D_$6I(I+;A$,*<<:!V:v
  221. MSS.>QJSQ/I1#%W4.(N"#7D 9YQ;[RBZT/FT4#KS1Y_<_+B -$*-AAOTMRAI u
  222. M&ZW/:Z2>A71$\ !+F 9R8Z%9C5BT-/Y'\;@I+Z4(:!_6;T0^R!-82:4E]1R1t
  223. M6O1YLJ(:"4:7 "#UC6:4]GR[-:DC_Y_G(Q;.\CT:PU3*+<V>D/1\+: %5,4Js
  224. M"@=?:8DC%(M2!;S1PT B_. )@(MDE/YIOER:,44"%&2!R$)9, MG 2V*P).(r
  225. M$N!A*:2*5=$J6@"_ P-W('4@!F(1+!0&J3@!8$!-L(XVH3<G!<FQ%(7B4"2,q
  226. M;U$JQL106(C@Y.'I'J5IAQII&0@!"D K) 47]%G**3V=%@+U35 *>/H>P *:p
  227. ,H6_VP2.H(Q-(IA0 o
  228.  n
  229. end
  230. -- 
  231. Bruce Evans  (bde@runx.oz.au)
  232.