[comp.sources.amiga] v89i146: free - show available disk space v2

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