page%swap@Sun.COM (Bob Page) (05/19/89)
Submitted-by: recondo!sirius@uunet.UU.NET (Michael Stilson) Posting-number: Volume 89, Issue 146 Archive-name: dos/fs/free2.1 Since version 1, Ported to Lattice (w/prototypes), made re-entrant/pure. Report the filesystem. [uuencoded executable included. ..bob] # This is a shell archive. # Remove anything above and including the cut line. # Then run the rest of the file through 'sh'. # Unpacked files will be owned by you and have default permissions. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: SHell ARchive # Run the following text through 'sh' to create: # free.c # makefile # free.uu # This is archive 1 of a 1-part kit. # This archive created: Thu May 18 11:15:31 1989 echo "extracting free.c" sed 's/^X//' << \SHAR_EOF > free.c X/* Free.c - (c) 1989 Mike 'Sirius' Stilson - Sirius Software X * Ver1.0 January 1989. Written, Tested, Debugged, Re-Tested, and Finished. X * Ver2.0 May 1989. Ported to Lattice 5.0.2, Made re-entrant/pure. Added X * Prototypes, and report the filesystem. X * Should work under Manx, remove the prototypes & use +l to compile. X * LMK Makefile provided for lattice. X * X * Display free/total bytes & blocks, name, and FileSys for a volume. X */ X X#include <exec/types.h> X#include <exec/memory.h> X#include <libraries/dos.h> X#include <libraries/dosextens.h> X#include <proto/dos.h> X#include <proto/exec.h> X X/* Structure for all the variables we'll use */ Xstruct Variables { X struct InfoData *idata; X struct FileLock *lock; X BPTR mylock; X struct DeviceList *dev; X char name[80]; X char *temp; X ULONG usedbytes, X totalbytes, X freebytes, X bpb; X}; X X/* Macro to convert a BPTR to a C Pointer. Just for readability */ X#define BPTR_TO_C(cast, var) ((struct cast *)(BADDR((ULONG)var))) X X/* Function prototypes.. */ Xextern __stdargs int printf(char *,...); Xextern __stdargs int strlen(char *); Xextern __stdargs void strncpy(char *, char *, int); Xextern __stdargs void exit(long); X Xint main(int, char **av); Xchar *GetName(struct Variables *); Xvoid GetFree(struct Variables *); Xvoid Oops(struct Variables *, int); X Xmain(ac,av) Xint ac; char *av[]; X{ X X /* Declare a pointer to our variable structure */ X register struct Variables *Var; X X /* Allocate space for our variables */ X if(!(Var=(struct Variables *) X AllocMem(sizeof(struct Variables),MEMF_PUBLIC|MEMF_CLEAR))) { X printf("Cannot allocate space for variables.\n"); X Oops(Var,0); X } X X /* space for InfoData structure.. must be chip */ X if(!(Var->idata=(struct InfoData *) X AllocMem(sizeof(struct InfoData),MEMF_CLEAR|MEMF_CHIP))) { X printf("Unable to allocate space.\n"); X Oops(Var,1); X } X X /* Lock the drive */ X if((Var->mylock=Lock(av[1],ACCESS_READ))==NULL) { X printf("Attempt to lock %s failed.\n",av[1]); X Oops(Var,2); X } X X /* Fill the infodata structure */ X if(!(Info(Var->mylock,Var->idata))) { X printf("Unable to obtain info for device %s.\n",av[1]); X Oops(Var,3); X } X X /* Get the volume name. */ X printf("Volume Name: [1;4m%s[0m[%dC",GetName(Var),19-strlen(Var->name)); X X /* Get and display the free space for this volume */ X GetFree(Var); X X Oops(Var,3); X} X Xvoid Oops(Var,level) Xstruct Variables *Var; Xint level; X{ X switch(level) { X case 3: UnLock((BPTR)Var->mylock); X case 2: FreeMem(Var->idata,sizeof(struct InfoData)); X case 1: FreeMem(Var,sizeof(struct Variables)); X case 0: exit(0); X } X} X X X/* X * The devicelist is the only way I've managed to get the Volume name. X * InfoData->id_VolumeNode->ln_Name doesn't seem to work. X */ X Xchar *GetName(Var) Xstruct Variables *Var; X{ X X Forbid(); X X Var->lock = BPTR_TO_C(FileLock, Var->mylock); X Var->dev = BPTR_TO_C(DeviceList, Var->lock->fl_Volume); X Var->temp = (char *)BADDR(Var->dev->dl_Name); X strncpy(Var->name, &Var->temp[1], Var->temp[0]); X Var->name[Var->temp[0]] = NULL; X X Permit(); X X return(Var->name); X} X X Xstatic char *FileSystem[] = {"OFS", "FFS", "???"}; X Xvoid GetFree(Var) Xstruct Variables *Var; X{ X Var->bpb = Var->idata->id_BytesPerBlock; X Var->usedbytes = Var->bpb * Var->idata->id_NumBlocksUsed; X Var->totalbytes = Var->bpb * Var->idata->id_NumBlocks; X Var->freebytes = Var->totalbytes - Var->usedbytes; X X switch(Var->bpb) { X case 488: Var->bpb=0; X break; X case 512: Var->bpb=1; X break; X /* The only two DOS knows about for now.. */ X default: Var->bpb=2; X break; X } X X printf("FileSystem: %3s\n",FileSystem[Var->bpb]); X printf("Total bytes: %-7ld\t\tFree Bytes: %-7ld\n",Var->totalbytes,Var->freebytes); X printf("Total blocks: %-7ld\t\tFree Blocks: %-7ld\n\n",Var->idata->id_NumBlocks, X (Var->idata->id_NumBlocks - Var->idata->id_NumBlocksUsed)); X} X SHAR_EOF echo "extracting makefile" sed 's/^X//' << \SHAR_EOF > makefile XOBJS = Free.o XDEST = Free X XLC = lc XLC1 = lc1 XLC2 = lc2 XLCFLAGS = -ccfmsu -d0 -mas -r1 -v -w -O XLINK = blink XLIBS = lib:lcs.lib+lib:amiga.lib X X.c.o: X $(LC) $(LCFLAGS) $* X X$(DEST): $(OBJS) X $(LINK) lib:cres.o+$(OBJS) to $(DEST) LIB $(LIBS) SC SD ND VERBOSE MAP $(DEST).Map F H L O S X SHAR_EOF echo "extracting free.uu" sed 's/^X//' << \SHAR_EOF > free.uu X Xbegin 644 Free XM```#\P`````````#``````````(```9I`````````'<```/I```&:21()`!)5 XM^0`````L>``$2.?`X)G\`````"`\```#Y"(\``$``4ZN_SI*@&<``;0@0"1`' XM(D`@/````',@W%.`9OH@'&<.($G1W-70((HD25.`8/`H2=G\`````$S?!P,LM XM>``$*4X"!"E/`@Q"K`(()FX!%'``(CP``#``3J[^SBEK`)@"`$JK`*QG``!P, XM(`^0KP`$!H````"`*4`!T&$``4P@:P"LT<C1R")H`!#3R=/)(`)R`!(9*4D". XM%-"!4H!"9U*``D#__I_`58!"=P@`(`)3@-2!'[(``"``4X)1R/_V'[P`("``? XM4X(?L2``(`!1RO_X(D\O"6```'@I:P`Z`=!P?U*`T:P!T&$``.!!ZP!<3J[^I XM@$'K`%Q.KOZ,*4`"""\`)$`@*@`D9Q(L;`/4($`B*```*4$"`$ZN_X(B*@`@I XM9QHD/````^U.KO_B*4`"$&<*Y8@@0"=H``@`I"!L`@@O"$AL`<P@:``D*6@`M XM!`(43KH$+DZZ"/)P`&`$("\`!"\`("P!^&<$($!.D$ZZ%W8L>``$(FP#U$ZNX XM_F).N@0$2JP""&<:(BP"$&<$3J[_W"QX``1.KO]\(FP""$ZN_H8@/````^0BO XM3)/\`````"QX``0N'RYL`@Q.KO\N(`=.=4S?!P-.=7!D8)9#^@`0<`!.KOW8; XM*4`#U&?L3G5D;W,N;&EB<F%R>0!.5?_X2.<@,B9O`")P="(\``$``2QX``1.+ XMKO\Z)$`@"F822'H`UDZZ$(Y"5R\*80`!WE!/<"0B/``!``(L>``$3J[_.B2`2 XM2H!F%$AZ`-1.NA!F<`$^@"\*80`!M%!/(BL`!'3^+&P#U$ZN_ZPE0``(2H!FK XM&B\K``1(>@#"3KH0.'`"/H`O"F$``89/[P`,(BH`""02+&P#U$ZN_XY*@&8:S XM+RL`!$AZ`+).NA`,<`,^@"\*80`!6D_O``PO"F$``:A!Z@`0+H@O0``43KH-R XM6'(3DD`^@2\O`!1(>@"D3KH/V"Z*80`!_G`#/H`O"F$``2!,[4P$_^A.74YU7 XM0V%N;F]T(&%L;&]C871E('-P86-E(&9O<B!V87)I86)L97,N"@!5;F%B;&4@C XM=&\@86QL;V-A=&4@<W!A8V4N"@``071T96UP="!T;R!L;V-K("5S(&9A:6QEP XM9"X*`%5N86)L92!T;R!O8G1A:6X@:6YF;R!F;W(@9&5V:6-E("5S+@H`5F]LW XM=6UE($YA;64Z(!M;,3LT;25S&ULP;1M;)61#``!/1E,`1D93`#\_/P!&:6QEV XM4WES=&5M.B`E,W,*``!4;W1A;"!B>71E<SH@)2TW;&0)"49R964@0GET97,ZG XM("4M-VQD"@``5&]T86P@8FQO8VMS.B`E+3=L9`D)1G)E92!";&]C:W,Z("4M6 XM-VQD"@H`3E4``$CG`!(F;P`0,"T`#`Q```1D.N-`3OL``F`J8!Q@#DYQ(BL`I XM""QL`]1.KO^F(E-P)"QX``1.KO\N(DMP="QX``1.KO\N0J=.N@_:6$],WT@`( XM3EU.=4Y5__A(YP`B+'@`!$ZN_WP@;0`(("@`".6`(4``!")`(BD`$.6!(4$`L XM#")!("D`*.6`(4``8$/H`!`@0$7H``%R`!(0/P$O"B\)+TD`%DZZ"O(@;0`([ XM(&@`8'``$!`@;0`(0C``$"QX``1.KO]V("\`%DSM1`#_\$Y=3G5.5?_T+PLF= XM;P`8(%,@*``4)T``<"(H`!`O0``(3KH0O"=``&0B+P`(+T``#"`H``Q.NA"H% XM)T``:"(O``R0@2=``&P@+P`(#(````(`9PX,@````>AF#D*K`'!@#G`!)T``V XM<&`&<`(G0`!P("L`<'(`,@#E@4'L```O,!@`2'K^2DZZ#5(NJP!L+RL`:$AZ" XM_DQ.N@U"(%,@*``,(@"2J``0+H$O`$AZ_EQ.N@TJ)FW_\$Y=3G4``$YU3G5(+ XMYP<P/B\`&"9O`!H\+P`>/P=.NA(L5$\D0"`*9@1P_V`T""H``P`!9PYP`C\`A XM0J<_!TZZ#1Q03S\&+PLO*@`"3KH.ID_O``HJ`$IL`>1G!'#_8`(@!4S?#.!.H XM=0```````'!A3E7_T$CG)S`F;P!0)&\`5'X`?`!Z`'``&WP`(/_[<@`[0?_X$ XM.WS____V0>W_V!M`__4;0/_\.T'_[#M!_^XK2/_42A-G0G``$!-R&%U!:SBP^ XM>Q`(9O9.^Q`$`"-@```@`"!@```6`"M@```,`"U@```"?@%@#GP!8`IZ`6`&@ XM&WP``?_\4HM@NA`3<C"P`68&4HL;0?_[<"JP$V80(%)#Z``")(D[4/_X4HM@] XM#DAM__@O"TZZ"CA03];`$!-R+K`!9B92BW`JL!-F$"!20^@``B2).U#_]E*+, XM8`Y(;?_V+PM.N@H*4$_6P!`3<FRP`68*&WP``?_U4HM@"')HL`%F`E*+$!MR# XM`!(`&T#_]'`P74!K``)<LGL`"&;T3OL`!`!C8``",@!S8``!\`!88``!A`!XR XM8``!?@!P8``!9`!O8``!$`!U8```Y`!D8````DHM__5G#"!20^@`!"2)(!!@O XM#"!20^@``B2),!!(P"M`__!L"G(!1*W_\#M!_^Y*;?_N9P1P+6`*2@9G!'`K8 XM8`)P(!M`_]AP`!`&,BW_[H)`<``0!8)`9PA2K?_44FW_["\M__`O+?_43KH(T XMB%!/.T#_TC`M__9*0&H&<@$[0?_V,"W_TC(M__:20$BM``+_T&\N(&W_U")(D XMTL%@`A+84<C__'``$"W_^S(M_]`@;?_48`(0P%')__PP+?_V.T#_TM%M_^Q!W XM[?_8*TC_U$H'9P`!5AM\`"#_^V```4Q*+?_U9PP@4D/H``0DB2`08`P@4D/H< XM``(DB7``,!`K0/_P8`#_8$HM__5G#"!20^@`!"2)(!!@#"!20^@``B2)<``PL XM$"M`__!*+?_\9Q(@;?_4$/P`,#M\``'_["M(_]0O`"\M_]1.N@?F4$\[0/_28 XM8`#_)!M\`##_^S`M__9*0&H&.WP`"/_V2BW_]6<,(%)#Z``$)(D@$&`,(%)#! XMZ``")(EP`#`0*T#_\$HM__QG%B!M_]00_``P$/P`>#M\``+_["M(_]0O`"\ME XM_]1.N@?(4$\[0/_2<%BP+?_T9@#^N$AM_]A.N@946$]@`/ZJ(%)#Z``$)(DB6 XM4"M)_]1F"$'Z`-PK2/_4(&W_U$H89OQ3B)'M_]0[2/_L,"W_]DI`:RJPP&\F6 XM.T#_[&`@.WP``?_L(%)#Z``")(DP$!M`_]A"+?_98`9P`&```(PP+?_L,BW_V XM^+)`;`AT`#M"__A@!)%M__A*!V<V4VW_[&T8<``@;?_4$!@_`"M(_]0@;0`07 XM3I!43V#B4VW_^&U(<``0+?_[/P`@;0`03I!43V#H4VW_^&T2<``0+?_[/P`@W XM;0`03I!43V#H4VW_[&T8<``@;?_4$!@_`"M(_]0@;0`03I!43V#B(`M,WPSD9 XM3EU.=0``3E7_]DCG`3`F;P`>)&\`(BMM`!#_]AX:2@=G-'`EO@!F(K`29@12H XMBF`:+PM(;?_V+PIA`/O$3^\`#"M`__IG!"1`8-)P`!`'/P!.DU1/8,9,WPR`7 XM3EU.=4Y5__)(YR$R)F\`*@QL`"`#0FP``(@0$W(@L`%G#'()L`%G!G(*L`%F9 XM!%*+8.A*$V=J,"P#0DC`Y8!2;`-"0>P#2-'`)$AP(K`39B92BR2+2A-G"G`BJ XML!-G!%*+8/)*$V8,<`$_`$ZZ#>!43V">0AM@FB2+2A-G&!`3<B"P`6<0<@FP< XM`6<*<@JP`6<$4HM@Y$H39@)@!D(;8`#_<DIL`T)F!B!L`@A@!$'L`T@I2`-$5 XM2FP#0F9\0?H!)$/L`P@BV"+8(M@BV#*0(FP"""!I`"1P*#\`+R@`!$AL`PA.E XMN@2.3^\`"D'L`P@B""0\```#[BQL`]1.KO_B*4`"&BE``B!R!#E!`AXI0`(F$ XM.4$").6`D\DL>``$*T#_\DZN_MH@;?_R(D`C:``(`*1^`"M`__9@+BQL`]1.Y XMKO_**4`"&BQL`]1.KO_$*4`"($'Z`*(B""0\```#[4ZN_^(I0`(F?@0@!P!`C XM@`&!;`(8(`<`0(`"@6P"'@!L@`,")$IL`&QG!'``8`0P/(``+@!";``X(`<`; XM0``!.4``-CE\``$`4"`'`$```CE``$XY?``"`&@@!P!``(`Y0`!F0?H*ABE(' XM`?PO+`-$/RP#0DZZ]=9"5TZZ"`1,[4R$_]Y.74YU8V]N.C$P+S$P+S,R,"\XY XM,"\`*@`````````````````````````````````````````````````O"R9O8 XM``A*:P`09PP(*P`#`!-F!'``8#8_+`'(3KH'BE1/)T``!"=```Q*@&8*.7P`V XM#`/0</]@%C=L`<@`$'#SP6L`$G``-T``"C=```@F7TYU````````````````9 XM``!.5?_R2.<O$#XO`"XF;P`P*`=P,<!K`!)G!G#_8``"9@@K``<`$E;`1`!(! XM@"P`2FL`$&8``(0(*P`"`!-F>G``-T``"G+_OD%G``(Z+PM.NO]06$]*0&<,\ XM".L`!0`3</]@``(B".L``0`32@9G#C`K`!`B`$1!-T$`"F`(,"L`$#=```I3% XM:P`*;18@:P`$0^@``2=)``0@!Q"`<@`2`&`2(`=R`!(`+PL_`6$`_U1<3R(`Z XM(`%@``'.""L``@`39U1P_[Y`9@9P`&```;H@!QM`__]*!F<@<@J^068:<@(_\ XM`4AZ`:H_*P`4.T'_]DZZ]]I03RH`8!AR`3\!2&W__S\K`!0[0?_V3KKWP%!/J XM*@!^_V```-P(ZP`!`!-*!F=2</^^0&=,5&L`"G(*OD%F)B!K``1#Z``!)TD`. XM!!"\``TR*P`*2D%K"B\+/P!A`/ZT7$]2:P`*(&L`!$/H``$G20`$(`<0@#(K% XM``I*06L``1A^_R`K``20JP`,.T#_]F=N""L`!@`29U!P`C\`0J<_*P`43KH$7 XMAE!/*T#_\DH&9SA3K?_R;3)"9R\M__(_*P`43KH$:'`!/H!(;?_]/RL`%$ZZ. XM`YQ/[P`.2FP!Y&8*$"W__7(:L`%GR#\M__8O*P`,/RL`%$ZZ]N103RH`8`)ZG XM`'#_ND!F"`CK``4`$V`,NFW_]F<&".L`!``32@9G#C(K`!`D`41"-T(`"F`8Y XM""L``@`39PAR`#=!``I@"#(K`!`W00`*(&L`#"=(``2^0&<N4VL`"FT6(&L`U XM!$/H``$G20`$(`<0@'(`$@!@$B`'<@`2`"\+/P%A`/V:7$\B`'`PP&L`$F<$# XM</]@#'#_N$!F!'``8`(@!$S?"/1.74YU#0H``$CG`#`F;P`,)$M*$F<D<``0D XM$D'L`,4(,``!``!G"G(`$@`$00`@8`1R`!(`%(%2BF#8(`M,WPP`3G4`````- XM`````'!A(F\`""!O``0P+P`,(@A@!!#99PA1R/_Z8`9"&%'(__P@`4YU3E7_Z XM^DCG`S`F;P`>)&\`(CXO`"8@2DH89OQ3B)'*+`@@2TH89OQ3B)'+(`@B2]+`\ XM*TG_^KQ'8P(L!R`&($I@`A+84<C__"!M__I",&@`(`M,WPS`3EU.=2!O``0@; XM"$H89OQ32)'`(`A.=0``0H`P+P`(8`0@+P`((&\`!$Y5__0B3W(*3KH%O`9!M XM`#`2P4J`9O`@"1#AO\EF^D(0D(].74YU``!"@#`O``A@!"`O``@@;P`$3E7_= XM]")/(@`"00`'!D$`,!+!YHAF\"`)$.&_R6;Z0A"0CTY=3G4``#`Q,C,T-38W< XM.#EA8F-D969"@#`O``A@!"`O``@@;P`$0^\`!#(``D$`#Q+[$-3HB&;R(`DB[ XM#UB!$.&RB6;Z0A"0@4YU(&\`!")(<@!P`"\"#!``*V<&#!``+68"4D@0&`0`5 XM`#!M$@P```EN#"0!Y8'2@M*!TH!@Y@P1`"UF`D2!)!\@"%.`(&\`"#"!D(E.L XM=4Y5_^A(YP$R+B\`-$J';@9P_V```-)P"+Z`;`(N`"`'5H`N``)'__PD;0`(R XM(&T`"-''WZP`'D/L`!HF42M(__`K2?_T(`MG``"0($L@*P`$T<`K2/_L(FW_X XM\+?)8Q`DBR5'``0L;?_T+(IP`&!XM\EF&BQ3)(X@*P`$(@#2AR5!``0L;?_T] XM+(IP`&!:M<AD")^L`!YP_V!.M<AF+$J39PX@4[/(8PB?K``></]@.-^K``1*1 XMDV<.L]-F"B`I``31JP`$)I%P`&`>*TO_]"MM_^S_Z"938`#_;B!M__0@BD*2' XM)4<`!'``3-],@$Y=3G4``````````'!A2.<',#XO`!@F;P`:/"\`'C\'3KH%, XMF%1/)$`@"F8$</]@(#\&+PLO*@`"3KH"\$_O``IZ`#H`2FP!Y&<$</]@`B`%N XM3-\,X$YU+P<^+P`(4FP#R%-L`$9M%B!L`$!#Z``!*4D`0"`'$(!R`!(`8!0@/ XM!W(`$@!(;``\/P%.NOHH7$\B`"X?3G5.50``+PLF;P`,0FP#R$AM``PO"TAZV XM_ZQ.NO<X2&P`/'#_/P!.NOGX,"P#R"9M__Q.74YU``!(YP\0/B\`&"PO`!HZ> XM+P`>/P=.N@3<5$\F0"`+9@1P_V`>/P4O!B\K``).N@&\3^\`"B@`2FP!Y&<$6 XM</]@`B`$3-\(\$YU``````````!P84Y5__A(YP,P+B\`($J';@9P`&```+APB XM"+Z`;`(N`"`'5H`N``)'__Q%[``:)E(@"V="("L`!+"';32PAV8.(%,DB)^LD XM`!X@"V```((@*P`$D(=R"+"!;18@2]'')(@D2"23)4``!)^L`!X@"V!>)$LFA XM4V"Z,"P`<$C`(@?2@%.!,"P`<$C`+T``%"`!(B\`%$ZZ`@XR+`!P2,%.N@'D) XM+`!0AB`&5H`L``)&__PO!DZZ!4!83R9`(`MG$"\&+PM.NOT\+H=A`/\Z8`)PO XM`$SM#,#_Z$Y=3G4``````````'!A+P<^+P`(<``P!R\`3KK_$EA/+A].=0``\ XM2.<#$#XO`!!'[``D(`MG,@@K``(`$V8F""L``0`39QX@*P`$D*L`#"P`2D9GS XM$#\&+RL`##\K`!1.NO$N4$\F4V#*/P=.N@0N5$],WPC`3G5(YS<0+B\`'"9O_ XM`"`\+P`D2JP!_&<$3KH#B$)L`>0@!DC`(@<D"R8`+&P#U$ZN_]`J`'#_NH!F2 XM#DZN_WPY0`'D.7P`!0/0(`5,WPCL3G4``$CG/P`N+P`<+"\`(#HO`"1*K`'\9 XM9P1.N@,X0FP!Y'``,`53@"(')`8F`"QL`]1.KO^^*`!P_[B`9@Y.KO]\.4`!. XMY#E\`!8#T"`%#$```F<4#$```6<(2D!F&"`&8!0@!-"&8`XB!W0`=@`L;`/4X XM3J[_ODS?`/Q.=4CG-Q`N+P`<)F\`(#PO`"1*K`'\9P1.N@+`0FP!Y"`&2,`BA XM!R0+)@`L;`/43J[_UBH`</^Z@&8.3J[_?#E``>0Y?``%`]`@!4S?".Q.=0``, XM+P<N+P`(2JP!_&<$3KH">B('+&P#U$ZN_]QP`"X?3G5(YS``)``F`4A"2$/$O XMP<;`P,'40TA"0D+0@DS?``Q.=4J`:@``'D2`2H%J```,1(%A```@1(%.=6$`_ XM`!A$@$2!3G5*@6H```Q$@6$```9$@$YU+P)(030!9@``(DA`2$%(0C0`9P``% XM!H3!,`)(0#0`A,$P`DA",@(D'TYU+P-V$`Q!`(!D```&X9E10PQ!"`!D```&P XMZ9E90PQ!(`!D```&Y9E50TI!:P``!N.94T,T`.:H2$)"0N:J2$.`P38`,`(TA XM`TA!Q,&0@F0```A30]"!9/YR`#(#2$/GN$A`P4$F'R0?3G5.5?^@2.<S,GX`2 XM(&P"%!XH__]P3[Y`;P(N`"`'0^W_KV`"$MA1R/_\0C5PKY/)+'@`!$ZN_MHF[ XM0$JK`*QG4"`K`*SE@"1`+"H`.$J&9@0L*P"@2H9G."(&0?H`MB0(=@LL;`/4[ XM3J[_T"!'4D<@"!N\``H`KR`'2,`B!D/M_Z\D"28`+&P#U$ZN_]!P_V!.2JP#; XMS&820_H`AG``+'@`!$ZN_=@I0`/,0>W_KRE(`)1(>``\2'@`^G``+P`O`$AL! XM`+!(;`"<2&P`B$*G3KH!"$_O`"!3@&<$</]@`G``3-],S$Y=3G4J*B!5<V5R7 XM($%B;W)T(%)E<75E<W1E9"`J*@``0T].5$E.544``$%"3U)4`"HJ*B!"<F5A3 XM:SH@`&EN='5I=&EO;BYL:6)R87)Y````````````````````+P<^+P`(<``Y? XM0`'D2D=K)+YL``QL'B`'<@;!P4'L`AA*<`@`9PX@!\'!0>P"&-'`(`A@"#E\J XM``D#T'``+A].=0```````'!A2.<!`G``(CP``#``+'@`!$ZN_LXN``*'```PT XM`$J'9@1P`&`@2JP!_&<8(&P!_$Z02D!F!'``8`QP%#\`3KH`1E1/(`=,WT"`: XM3G5AM$YU``!(YS`R+&P#S"!O`!@B;P`<)&\`("9O`"0@+P`H(B\`+"0O`#`FP XM+P`T3J[^I$S?3`Q.=0``2.<'`#XO`!`\+``,4T9*1FLN(`9R!L'!0>P"&#HP! XM"`!*!6<8"`4``F82(`;!P4'L`A@O,`@"3KK\O%A/4T9@SB`'2,`O`$ZZZ(18- XM3TS?`.!.=0``2.<`,B9L`]@@"V<4)%,B2R`K``@L>``$3J[_+B9*8.B1R"E(; XM`]PI2`/83-],`$YU2.<!,BXO`!1P#-Z`(`=R`"QX``1.KO\Z)D`@"V8$<`!@3 XM.B='``A%[`/8(&H`!"=(``21R":(2I)F`B2+2JH`!&<&(FH`!"*+)4L`!$JL# XM`!!F!"E+`!!!ZP`,(`A,WTR`3G4``````````````````````^P````!````( XM`@````8````````#\@```^D````````#\@```^H```!W```#I@```ZH```.N) XM`"@`````````````````````````````````/```````````````````````D XM````````5```````````````````````````````````````````````````4 XM````````@`````0```#__P````X`#@```````!>,`````/__````!``$````' XM``````````!T__\````$``0````````7J`````#__P````0`!````````!>R( XM```````@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`0$!`0@ XM$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!`0$!L XM`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0("`@Z XM("`@("`@("@H*"@H("`@("`@("`@("`@("`@("`@2!`0$!`0$!`0$!`0$!`00 XM$(2$A(2$A(2$A(00$!`0$!`0@8&!@8&!`0$!`0$!`0$!`0$!`0$!`0$!`0$02 XM$!`0$!""@H*"@H("`@("`@("`@("`@("`@("`@("`A`0$!`@`````@``````F XM``,````\````)````)@```/L````!@````````"\````J````(`````(````< X-!``````````````#\I@`1 X`` Xend Xsize 7168 SHAR_EOF echo "End of archive 1 (of 1)" # if you want to concatenate archives, remove anything after this line exit