[comp.sources.amiga] v90i260: requester.library 1.2 - requester library, Part02/03

amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (09/29/90)

Submitted-by: Paul-Erik Raue <peraue@cs.vu.nl>
Posting-number: Volume 90, Issue 260
Archive-name: libraries/reqlib-1.2/part02

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 2 (of 3)."
# Contents:  req.library.uu reqbase.i showoffreq.c
# Wrapped by tadguy@abcfd20 on Fri Sep 28 14:45:30 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'req.library.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'req.library.uu'\"
else
echo shar: Extracting \"'req.library.uu'\" \(20030 characters\)
sed "s/^X//" >'req.library.uu' <<'END_OF_FILE'
Xbegin 666 req.library
XM```#\P`````````#``````````(```V?``````````$```/I```-GW``3G5*]
XM_`````0```\R@`$)`````!X````J````@')E<2YL:6)R87)Y`%)E<2`Q+C(@W
XM*$IU;"`Q,R`Q.3@Y*0T*`&1O<RYL:6)R87)Y`&EN='5I=&EO;BYL:6)R87)Y!
XM`&=R87!H:6-S+FQI8G)A<GD`8V]N<V]L92YD979I8V4`````1````)````$4N
XM```!0````FX```)\```"D````L````+$```#2@```W8```.@```'O@``!]H`8
XM``@"```!Z@```>H``"::```KA@``"_@```=4```,/@``$8@```UT```&Q```=
XM"!P```B>```-F@``#:@```VV```)7```-1````/6```)"```#<P`````____3
XM_^````P)`,````H````>X```#@8`T```%``!T```%@`"P```&````"H`````?
XM2.<!!"I`*TX`(BM(`#)"K0`F0JT`*D*M`"Y"K0`V0JT`/$/Z_MYP`$ZN_=@K^
XM0``F9P``BD/Z_MAP(4ZN_=@K0``J9WA#^O[:<`!.KOW8*T``+F=H(#P```#$>
XM<@).KO\Z*T``-F=.($!#^@RN,CP`PQ#94<G__'`P(CP``0``3J[_.BM``$!G+
XM+")`0?K^I7#_<@!.KOY$2H!F$B!M`$`K:``4`#P@#4S?((!.=2X\@`2`$6`.E
XM+CP``0``8`8N/``#```O#9O-3J[_E"I?801P`&#42.<@"$GM`"9T`B)<(`EGZ
XM!$ZN_F)1RO_T3-\0!")M`$`@"6<$3J[^/B)M`$`@"6<&<#!.KO\N(FT`-B`)D
XM9PH@/````,1.KO\N<``B33`M`!"3P-!M`!).KO\N3G52;@`@"*X``P`.(`Y.W
XM=7``4VX`(&8*""X``P`.9P)A`DYU2.<@!BI.+'@`!$IM`"!G"@CM``,`#G``_
XM8!`D+0`R(DU.KO\$80#_7"`"3-]@!$YU<`!.=4CG__Z>_``4+&X`*DCGP(!P!
XM%#(H`"XB:``>0>\`#$ZN_E9,WP$#2D!F!C`H``3B2&X$T&@`!#0O`!*40&P"@
XM0D(P+P`,D&@`!+1`8P(T`#""2D%F!C(H``;B26X$TF@`!C8O`!"606P"0D,R/
XM+P`.DF@`!K9!8P(V`3%#``+>_``43-]__TYU2.=@`$J`9R#"_/__8`3BB.*)U
XM)`!(0$I`9O0P`H+`<``P`4S?``9.=7#_8/9(YS``2H)G'I"!8`3BB.**)@!('
XM0TI#9O1(0H3`(`)3@$S?``Q.=7``8/9(YQP`0H520"@`F(%O(#H"2$3*Q#8"O
XM2$3&Q$I#:@K6O``!``!F`E*%0D-(0]J#(`5,WP`X3G5(YW_^GOP!E"A.(D\P3
XM/`#)0EE1R/_\0]=P%C+84<C__"!)1>\`#$?O`6)P!70"(EHJ"6<>3KH)CC%"E
XM`"8R*``*5D$W00`&1$$Q00`&`&@`"``,T/P`9%'*_]:;S4ZZ"4`_00&2(#P`@
XM`!.(<@%(02QX``1.KO\Z+T`!6BX`9P`!I"!7(F\`!"1`(`EG!F$``UI@!!38,
XM9OP@1RQ,80`!^-!\``S4?``2-B\`FM9O`/[6;P`VUGP`&+9`8P(P`S=```35:
XM:P`&,@"2;P#^6T$_00#ZD&\`-I!O`/[0;P":XD@_0``R(&\`"")+3KHEJ!`OV
XM`"$70``($B\`(Q=!``F"`&8&%WP``0`))WP```9```HG?``"$`8`#B=O`!@`Z
XM&B)K`!(@"68.`*L````(``YP$'($8!HP*0`(XDC0:0`$,BD`"N))TFD`!M)K=
XM``9302!+80#]GBQN`"H@2TZN_S0J0$J`9P1A``#:("\!6F<0(D`@/```$X@L?
XM>``$3J[_+B`-9P``HB!M`%9.KOZ`(&T`5DZN_HPB0"0I`!0V*0`8."D`&B1IC
XM`!Q.KOZ&<``(`@`)9G((`@`&9P8P*@`F8&9*`VO"#&___P`<9P;(;P`<9[2V:
XM/`!%9T[!0S($PGS_^"!*+$Q.KO]&P4.V/`!N9S:V/`!Q9S"V/`!B9RJV/`!L&
XM9R1P`;8\`'EG'+8\`'9G%K8\`')G$'`"MCP`;6<(+&P`(F``_V(O`"`-9PH@2
XM32QL`"I.KO^X(!_>_`&43-]__DYU2.<?_BQL`"YP`#`O`%)F`G`!(FT`,DZND
XM_JH@1R)M`#)Z%&%H2.>`P$CG@,!P!B(%3J[_$$S?`P%21=IO`=)*0&<$3J[__
XMQ$S?`P'0P$H89M),WW_X3G5(YQP`=@!X`'H`(@AG(F$^T,)21+9`8@(V`$H8A
XM9O!A``;J.@3*[P&BVD0P`S($-`5,WP`X3G5(YT"`</]20`P0``IG!$H89O1,P
XMWP$"3G5AYC0`80`&ML#"3G5(Y_SX*$@F23E```0Y00`&($MAX#E```@Y00`*R
XM.7P````,.7P``0`..7P``0`00>P`+"E(`!+0_``0*4@`-!E\``4`,QE\``,`-
XM,'#^.4``+#E``"XP+``(5D`R+``*5D%A'"E(`!HA2P`,$+P``4(H``$1?``!I
XM``),WQ\_3G5"F##`0E@PP##!0E@PP4*83G5(Y_CX1^@`+"%+`!(G20`*,7P`:
XM`0`0,7P`!``,,7P``0`.,4``"#%!``IV`"@*9R!V`BA+V/P`%"%,`!8I2@`*!
XM.4``!#E!``8Y0@`(4.P`#H=H``PW0``$-T$`!C="``A0ZP`.3-\?'TYU2.<`C
XM\B9*1?H`$"QX``1.KOWV3-]/`$YU%L!.=4CG`,(L>``$D\E.KO[:($!P``PHK
XM``T`"&8(("@`N&X"<`!,WT,`3G4O#BQX``0O")/)3J[^VB)`(%\C2`"X+%].]
XM=4CG^/`Q0``(,4$`-B%)`"PA2@`P,4(`!#%#``9A``4Z,4$`"C%\````##%\1
XM``$`#D/H`"PA20`B0^@`4"%)`!(Q?``$`!`B2$'H`%!'Z``0(4L`"!%\``4`2
XM!Q%\``,`!'#^,(`Q0``","D`"%9`,BD`"EA!T/P`$&$`_JQ,WP\?3G5(Y^#`S
XM(D@Q0``(,4$`"C%"``PQ?``"``[2_``L(4D`(M+\`!8A20`2,7P``P`03-\#O
XM!TYU)6QD`%1O;R!S;6%L;"$`5&]O(&QA<F=E(0!'970@82!N=6UB97(`1V5TS
XM('-O;64@=&5X=```2.=__BI.*$@@/````A9R`4A!+&T`(DZN_SHF0$J`9U90J
XMZP%X0?K_I$/L``1%ZP%Z""P````=9@1A`/Y\0?K_IB=(`;I!ZP%Z(E1P#'(,7
XM)&P`%&`B2.=__DCGP,`J3B`\```"%G(!2$$L;0`B3J[_.B9`3-\#`W@`)`MG^
XM``)L+$TG2@(22JL!NF8(1?K_92=*`;HW00%V-T$!<M-K`7(G20`:)T@!;$BGY
XMP`!.N@/`P-\R'T'K`/AT"'8080`#Y#=\``$!'C=\`"T`!C`K`0#0?``0-T``1
XM!!=\``(`"!=\``$`"2=\``0#2``*)WP``A`.``XW?``!`"Y!ZP`P0_H%%B1+0
XM<`5R*9)K`0)A``.&-WP``0!60>L`E$/Z!0%A``-T2FL!>&<2`&L(``$&)VP`3
XM!`%`!FL`<P`$,"L`G-!K`#C0?``0L&L`!&,$-T``!#`K`)Q:0$1`T&L`!#=`_
XM`)@@:P(2(DI.NA_Z<.-R^"!+80#X3"`K`7!R`4A!+&T`(DZN_SHG0`$D9P`!M
XM5")`T*L!="=``2@@:P%L$MAF_$'Z!@Y#ZP&^<`XRV%'(__PG:P&Z`<Q#ZP'<W
XM1>L!T$)`<EI!^@7F=$Q.NA_>+&T`*B!+3J[_-$J`9P``]B1`($!#ZP&^3J[^I
XM^"\*0>L`^")*+$U.N@,<)%\L;0`B(&H`5DZN_H`@:@!63J[^C"!`<AE#ZP&&_
XM,MA1R?_\(D!.KOZ&("L!F@@```EF>`@```AG#C`K`9[J2,!\`#]G9F"J"```A
XM!F>D(&L!HC@H`"9G5$IK`7AG4"!K`21*$&=&+&T`+B)J`#)P?UR`<A#2:0`^G
XM3J[_$$'Z_5XB*P%`LJP`"&T*LJP`#&\>0?K]52)J`#)P"DZN_\0L;0`JD<A.Q
XMKO^@8`#_2$)$($HL;0`J3J[_RB!*3J[_N$I$9Q@@:P$D(FL!;!+89OQ*:P%XZ
XM9P8I:P%``!`L;0`B("L!<")K`21.KO\N(#P```(6(DM.KO\N(`1,WW_^3G5(%
XMY__^*DXF23X#/`(Z`3@`+&T`+DZN_Q`P!C(%(DM.KO\*,`8R!R)+3J[_"C`$#
XM,@<B2TZN_PHP!#(%(DM.KO\*3-]__TYU2.?_\"@`.@$\`CX#)D@B;@`V"`0`T
XM$&8$TOP`*)7*<!!R"G84"`0`$&8&<`IR"782=`%.KO^:`&L``@`.%WP``0`ZM
XM0BL`.T'K`$#2PTZN_YH`:P`"`$X7?``!`'I"*P![0>L`@`@$`!!G"C(%DGP`M
XM%'`08`@P!9!\`!1R"70`3J[_=@!K``(`CD'K`$`FB$'K`(`G2`!`0I!P!0@$T
XM`!!F`G`#-T``K'#_-T``LC=``+0P!(%K`(S`?/^?@6L`#(%K`$PW1@`$-T<`&
XM!C=&`$0W1P!&"`0`$&8LVVL`1`1K``H`1#=&`(0&:P`*`(0W1P"&,`3`?``@4
XM9S@`:P`0`$R!:P",8"S;:P!&!&L`"@!&-T<`A@9K``H`AC=&`(0P!,!\`$!G2
XM#`!K``@`3`!K`$``C$S?#_].=4CG/_Y53R!/<`(L;@`J3J[_?$)!$A]P"+)\$
XM``EF`G`*3-]__$YU80#Y*""K`!(G2``23G5A`/IR(*L`$B=(`!).=6$`^N8@&
XMJP`2)T@`$C%#``0Q1``&3G5(YV#N3E3_ZBI.)$@B3W0*0EE1RO_\($\1?``!]
XM``0Q0``&,4$`""%*``I53R)/<@&5RBQM`#Q.KO_0<``0%U1/3EQ,WW<&3G5((
XMY__^*DY^`F`<+&T`+DZN_O).KO[R3J[^\DZN_O).KO[R3J[^\I7*+&T`*DCGX
XM`,!.KOXR3-\#`$J`5L__SDS??_].=?Y__#_YG_//X8?]O_V__;_]O_P__#_]?
XMO_V__;_]O^&'\\_YG_P__G_WP.?`Q\"0`#^`D`#'P.?`]\#[P/G`^,`"0'\`#
XM`D#XP/G`^\#___@_^9_YG_F?^#_Y/_F?^9_______#_YG_F?^?_Y'_D?^9_\M
XM/______X/_F?^9_X/_@_^9_YG_@_______F?^9_YG_@?^!_YG_F?^9______M
XM_#_YG_G__#__G_F?^9_\/______SS_//\\_[W_F?^9_]O_Y___\@($]K("``,
XM0V%N8V5L`%)E<W5M90``1')A=V5R($9I;&4@2&ED95-H;W=&;VYT(&YA;653B
XM:7IE($]K(2``1V5T($1I<@!&;W)G970@:70`4&%R96YT`"!(:61E("YI;F9OD
XM(&9I;&5S("``1&ES<&QA>2`N:6YF;R!F:6QE<P!3=&]P(&1I<B!R96%D`"AD#
XM:7(I`"HN:6YF;P`J+F9O;G0`+BX@("`@`"!$;VYE+@`E9"!F;VYT<R!S:&]W[
XM;BX@("``)60@<VAO=VXL("5D(&AI9&1E;BXE<R`@("`@`$-O=6QD;B=T(')E2
XM860@9&ER96-T;W)Y+B`@("`@`$-/3@!005(`4%)4`%)!32!$25-+`%9$,`!2(
XM05<`4T52`%-014%+``!0871C:"!A<F5A(&9O<B!F:6QT97)I;F<@9&5V:6-EZ
XM(&YA;65S+@!:97)O('1E<FUI;F%T92!S=')I;F=S(&%N9"!T:&4@;&ES="X`3
XM1FEL92!R97%U97-T97(`4&%R96YT`%1O9V=L92`N:6YF;P!,96%V90``````S
XM``,```!^``H``0`````````````````````O"4'M!0PB2$H09RI*&&;\4T@,#
XM*``Z__]G'`PH`"___V8"4TBSR&<.#"@`.O__9P8,(``O9NXB7TYU+&T!;"(M8
XM!HAG]$*M!HA.[O^F2.?__BQX``0B4B`)9Q(P*0`$T'P`#4C`))%.KO\N8.A,A
XMWW__3G5%[``<8=1%[``@8<Y%[``(8<A![``<*4@`)$*43G5(Y__^1>@`R&&RO
XM1>@`S&&L1>@`=&&F2^CZ2"QN`"9ACDS??_].=4CG__YAU"QX``0@/````00B*
XM:`%80J@!6"()9P1.KO\N3-]__TYU+&T!<$'L`+0B;0:,E<IP!7(`=`!V`'C_B
XM>@%.[OXL2.?__B)M!HR5RG`!+&T!<$ZN_E!,WW__3G5(Y__^+&T!=")M!K!PM
XM`$ZN_JI,K``/`"@B;0:P3J[^SDS??_].=4CG__YAG$*L``Q"K``00FP`&&'&:
XM3KK_(DZZ_N9.N@:"+&T!;$'M!0PB"'3^3J[_K"M`!HAG9"(`)!5.KO^:2H!G2
XM6"!50^@`A$7M`&0DV239)-E*J``$:PY![04,0^T`V!+89OQ@;DZZ_EY*$&8$!
XM0>T%#`P0`"]F`D(8)$A#[060$MAF_$(20>T#L$ZZ_S1![0,\3KK_+&``_WQ."
XMNOYD+&T!=")M!K`P+0:@2,!.KOZJ<``B;0:P3J[^I'`&<A0B;0:P3J[_$$'ZX
XM_25P'2)M!K!.KO_$3-]__TYU0>T#L"QM`7@B;0:,8`#[(`@M``,`)6;H0>T#*
XM/&#F0>T$F&#@0>T$)&#:2,!(P4C"2,-(Y_``(DI.KO\0(DH@+P`((B\`!$ZNL
XM_PHB2B`O``@B+P`,3J[_"B)*(!<B+P`,3J[_"B)*(!<B+P`$3J[_"DS?``].X
XM=55`54%40E)#8*HB`$)!2$&"_``*-``P`3("2$""_``*,`%(0=)\`#`3`4J`*
XM9MQ.=4CG__XD2"QM`70B`-)L`"HP+``H2,`B;0:PTFD`/DZN_Q`P+0:22FH`S
XM"FL.,"T&E$IJ``IG!#`M!I`(+0`#`"5G$#`M!I9#[0;4N<EG!#`M!IA(P")ML
XM!K!.KOZJ<``B;0:P3J[^I")L``@@"6<*L>D`"&<*(E%@\K'L``QF"G`%(FT&8
XML$ZN_IY'Z@`,0^T*IB!)$MMF_%-))DC6[``P2FH`"F<*""T``P`E9@)=2[?)U
XM90(F22)(TNP`,!;\`""SRV+X""T``P`E9B!*:@`*:PYG&%M)1_K[1A+;9OQ@F
XM#"`J``9.NO[V$SP`(#`L`#!(P")M!K!.KO_$<`$B;0:P3J[^GDS??_].=2\)1
XM<``B;``<8`JR_```9PPB45)`L<EF\B)?3G5P_R)?3G5AW)!L`!AK\+!L`#)D1
XMZL#M!JY@`/["L&T&=&X6M&T&=&T0LFT&=FX*MFT&=FT$<`%.=7``3G5(Y_#`'
XM("P`$"(L`!0D+09X)BT&?"QM`7!.KO^:2D!,WP,/3G5*$&<:%-AF_%.*#"H`'
XM.O__9PP,*@`O__]G!!3\`"\4V6;\3G5(Y__^2>T'WDZZ_`9![04,(FT&X-+\=
XM``Q%[0JF)DIAO$'Z^F!3BA389OPL;0%L(@LD/````^U.KO_B+@!G``"2(@<D/
XM"W8$3J[_UK!\``1F=@Q3#P!F<#PK``(L;0%L(@<D"R8\```!!$ZN_]:P?`$$6
XM9E1P`'`-T&P`,'(!2$$L>``$3J[_.DJ`9SP@0#%L`#``!#%\__\`"E)4(*P`Q
XM'"E(`!Q#Z``,,"P`,&`$$OP`(%'(__HA:P$```9P`#`K`0!.NOUP8)0L;0%L>
XM(@=.KO_<3KH$A$S??_].=4CG__X,;0!H!FQF``&R3*T`#P;\3KK^J&823*T`]
XM#P@&3KK^G&<``9A)[0?>,"T&=I!L`"J`[0:N/@#0;``8L%1D``%\3KH"/DIHK
XM``IK``$&)D@D;0:P.#SP\#`L`"@R!\+M!J[2;``J-"P`+#8!UFT&K$BG\`#B&
XM7#5$`"(@;0:,.V@`#@9T.V@`#`9V3)<`#TZZ_BQF""!+3KK^#F`B+&T!=$ZN)
XM_O(B2G`#3J[^JB)*<`%.KOZD3)<`#U-#3KK\1$ZZ#KAF"@@Y``8`O^`!9Z8@0
XM2TZZ_=1,GP`/3KK]XF<``-Y!ZP`,0^T%##`\`()*:P`*9C1#^OA4""T``P`EP
XM9R@@;``,(`AG"$*L``Q.NOV:*4L`#"!+3KK]D$*M!^IA`/X&3-]__TYUP4E%7
XM[0JF3KK]TD'M"J9"*`""0^T%#!+89OQ![0.P3KKZ=DGM!M1.NOJN8&HB;``,(
XM""T``0`E9PH\+09NS'P``V9>1>P`"$J29PA.NOF<3KH!JK/(9@A.NOU>9@`1/
XMAB`)9PS!24*L``Q.NOT6P4DI;09X`!`I;09\`!0I2``,3KK]`-#\``Q#[060Z
XM$MAF_$'M`SQ.NOH"3KK[*$S??_].=2`)9PI"K``,PTAA.L-((FP`""`)9PJQZ
XMZ0`(9Q0B46#R820I;09X`!`I;09\`!1@QDZZ_.1F`!$,*6T&>``0*6T&?``4G
XM8+!(Y__^)$@P+0`:1^P`""(39PA30&=:)D%@]'``,"@`!-!\``UR`4A!+'@`2
XM!$ZN_SI*@&<\($`Q:@`$``0A2@`(0^@`#$WJ``P2WF;\3>T%D$H69A1#Z``,(
XM'-EF_"\(0>T#/$ZZ^4P@7R:(($I.NOPL3-]__TYU+P`@;``<8`(@4%'(__P@8
XM'TYU8>PP`6``^N)(Y__^+&T!<$'M":Q#[0FP3J[_K$'Z]OI*K0:(9@1!^O;W'
XM*T@&V'0=0?KW!P@M``,`)6<&0?KVZ'010^T&U$7M"J8L;0%X3KKNRBQM`70BQ
XM;0:P,"T&H$C`3J[^JG``(FT&L$ZN_J1P!G(4(FT&L$ZN_Q`@2B`"(FT&L$ZN^
XM_\1,WW__3G5(Y__^,A2R;``R;00R+``R,"P`&$ZZ_TQP`&`*3KKZ/M!M!JX@D
XM4%')__1.NO]03-]__TYU(D@D4"12(`IG#"12(E$@"F<$)%)@\"110I$B2DYU,
XM.BD`"KIH``IF''C?1^@`#$WI``P2&Q0>%@*&`6<(P@3$!+0!9^Y.=2`(8=1M!
XM!B1((%!@!"1)(E$@"B((9Q@B"6<48;QM""2()$@@4&`&)(DD22)18.0B"&8$$
XM)(E@`B2(3G4O"2`(9Q)*D&<.3KK_=&'PP4EA[&&P($`B7TYU2.?__DIL`!IF@
XM,`@M``D`)&8H(&P`'&',*4@`'%#L`!I.NO\.1>P`'"E*`"0P%&<*4T!.NOY>]
XM*4@`)$S??_].=4CG__YX_W0`-A0R+``RLD-D,C@!2$1"1(C#ED$T+``82$)"N
XM0H3#:`)T_RQM`7!![`"T(FT&C)7*<`5R`'8`>@%.KOXL3-]__TYU,!20;``RM
XM:@)"0+!L`!AL!#E``!A*0&X(3KKW0DZZ]P9";``:3KK_4$ZZ_GQ@B"!?<`%.P
XM=0@M``,`)6<F+PA*:``*:EQ":``*T/P`#$/Z]-U.NAF>9TH@7S`H``1",``'V
XM8,Y*:``*:L@O"-#\``P(+0```"5F"D/Z]*Q.NAET9B!#[0"<3KH9:F<60^T`Q
XM?$H19YQ.NAE<"$```$I`(%].=7``(%].=2`+9_HF4R!`881G#""L`!PI2``</
XM4E1@Z""L`"`I2``@4FP``F#:2.?__B1L`"`F;``<0JP`($*L`!Q"E&'")DIA1
XMODZZ_Q9,WW__3G5(Y__^(D@D2$H99OR3R"`)4X`D`-!\``TL>``$<@%(04ZN"
XM_SI*@&<``*0@0#%"``0B52%I`'P`!C%\``$`"DII``1J!$1H``I#Z``,$MIF$
XM_$ZZ_O!F#B"L`"`I2``@4FP``F`D)&P`)"2(*4@`)#`4L&P`,F0(P.T&KDZZ#
XM]Y125$)L`!IT`6`"=``L;0%P0>T)M$/M";A.KO^L("T)M"(M";B0K0FLDJT)E
XML&P(TKP`F):`4X!*@&X(LKP``8:@;0Q*0F<$3KK]_DZZ_&9,WW__3G5(Y__^]
XM+&T!;"(M!H@D%4ZN_Y1*@&8.3KKTIDZZ_=9.NOP^8`@@55!(3KK_!$S??_].?
XM=4ZZ]%!*$&8(3KKU7&``_?Q"$$'M`[!.NO4T8`#U<`@M``0`)6?80?KRW@AM!
XM````)6<$0?KROBM(!DQ![07P3KKU#$ZZ]C)@`/Z.2.?__C`M!FSJ2,!\`#]3#
XM0&P$8:)@#E-`;`1AN&`&4T!M``PF3-]__TYU.6T!A@`83KKTZF``_#!*K0:(]
XM9R`Y;0&&`!@O#$GM!M1.NO\X*%]![0&$,6P`&``",50`!DYU2.?__DBG\`!P0
XM`"("3*P`/``H+&T!=")M!K!.KOYT3)\`#U-#:Q1.NOM`,`%.NO8T(%#0;0:N7
XM4<O_]$S??_].=4'M`80Q;``8``(Q5``&,6T&K@`(,6P`,@`,0^P`M"%)``Y##
XM^O]F(4D`$D/Z_VPA20`60_K_C"%)`!HL;0%X3KH79CEM`88`&$YU0>T%L$/M!
XM`'RS"&8:2BC__V;V0>T%T$/M`)RS"&8(2BC__V;V3G5![06P0^T`?!+89OQ!F
XM[0700^T`G!+89OQ@`/UB(&T&<#`H`"910&8,3KK[_&$`_V)@`/3J4T!F%$ZZQ
XM^^Q)[0?>3KK_3DGM!M1@`/32L'P``VT&2>T'WE5`T$!70$ZZ^\A";0;*,BP`N
XM&-)`;3S2;``RLE1N--%L`!A.NOOLD6P`&#\`80#_#'(!2FT&RF8&4.T&RG(';
XM+&T!;$ZN_SHP'R!M!G!**``-:[Q)[0;48`#T;B!M!G`P*``F4T!M``J"4T!L1
XM"$ZZ\VY@`/144T!M``IJ4T!L"$ZZ_=!@`/1"4T!L*#`M!F[`?``S9@A.NO-&5
XM8`#T+,!\`#!G`/0D""T`!0`E9@#T&F``]"I30&PB,"T&;L!\`#-G``HHP'P`R
XM,&<`\^X(+0`%`"5F`//D8`#S_E-`;`AA`/V08`#SY%-`;!QA`/KF,"T&;L!\Z
XM`#-G`//0P'P`,&8`\[A@`//24T!L'&$`^L8P+09NP'P`,V<`\[#`?``P9@#S*
XMJ&``\[A.=4CG__X(+0`#`"5F``"J2>T'WDZZ\=I'[0?Z(&T!;"!H`"(@:``8V
XMT<C1R"AH``39S-G,)&P`*-7*U<IP`!`:0_KP@4H19RP@2C8`+PE@$!(8PCP`L
XMWQ09Q#P`W[0!9@Q1R__N2A%F!")?8$0B7TH99OQ@T%)`-`#0?``-+'@`!'(!U
XM2$%.KO\Z2H!G+"!`,4(`!$)H``K0_``,$-I1RO_\$7P`.O_^0B`F@"9`4FT'V
XMWBA4(`QF`/]Z*TL(`DGM!]Y.NOIT3-]__TYU,"P`,F8"<`ZP?``$;`)P!#M`C
XM!P8[0`@0,"P`,&8"<!ZP?``,;`)P##E``#!'[0F\)VT`!@`:$"T`,1=```@2Y
XM+0`S%T$`"8(`9@87?``!``DG?``$AV@`"B=\```0#@`.""T`"@`D9P@G?```P
XM$`@`#C(M!JPP05!(.T@&O$'P$`,[2`:^0?`0!CM(!L`P+0:NP.P`,D'P``4[`
XM2`;"""T``P`E9@A!\!`&.T@&Q$'P$`<[2`;&0?`0!3=(``8[2`:Z,BT&JC!\/
XM``<[2`;,,`'`[0<$0?```CM(!LY!Z``2.T@&T#`!P.T(#D'P``([2`;20>@`.
XM%3=(``0[2`:X.VT&S`;\.VT&P`;^.VT&S@<`5VT'`#MM!L('`EUM!P([;0;`/
XM"`@[;0;0"`8[;0;2"`I7;0@*.VT'`@@,+&T!>$'M`:Q#^NWS,"T&S#(M!L9.[
XMN@F8,7P````F0>T"=$/Z[>=P]\'M!JI?0-!K``0R+0;&3KH)=C%\``(`)G#ZW
XM""T``P`E9@P(+0`%`"5F!-!\__7![0:JT'S_[`@M``4`)68$T'S_\-!M!KA(T
XMP(#M!JH[0`;(P.T&JD'M`[!#[04,1>T)['0&,CP`@\3M!JK4;0;,5D(V+0;"N
XM3KH)!#%\``0`)@@M``,`)68``/Y![0+80_KM7S`M!LPR+0:^3KH([#%\``,`\
XM)D'M`SQ#[0601>T)[#`M!LBP?``?8P)P'\#M!JIR'S0M`[0V+0;$3KH(L#%\)
XM``4`)D'M`A!#^NT#</7![0:JT&T&N.)(,BT&QDZZ")HQ?``!`"8(+0`%`"5FN
XM4D'M!"1#[06P1>T)['`'P.T&JG(?-`!$0E]"U&T&N#8M!L).N@A:,7P`!P`FB
XM0>T$F$/M!=!%[0GL<`?`[0:J<A\T+00H-BT&Q$ZZ"#0Q?``(`"8(+0`$`"5GY
XM+D'M!?!#^NR8""T````E9P1#^NR@<.W![0:J7T#0:P`$,BT&ODZZ"`HQ?``&I
XM`"9![0<((#P``0``,BP`,L+M!JY6030M!LXV+0;`54-.NND<.WP``@>6*VL`Y
XM$@>(0>T'""=(`!([?``(!ZX[?``*!RX[?``+!VY![0@2(#P``0``,BP`,L+MD
XM!JY6030M!M(V+0;`54-.NNC4.WP``@B@*VL`$@B20>T($B=(`!([?``)"+@[P
XM?``,"#@[?``-"'@@;0`6(DM.N@;.,"T`<#(M`'(@2RQM`7A.NM\8""T`!@`ER
XM9PHVK0!P-VT`<@`"+&T!<"!+3J[_-$J`9DQ"JP`24VP`,@QL``4`,F46#&L`-
XM`0`N9R`@:P`>,"@`#+!K``1N$E-L`#!?;0@.;`1";0@.7&T(#C`L`#+0;``P!
XML'P`$&P`_`I@``3P*T`&C"!`*V@`,@:P*V@`5@:T0^T([$[N_O@D;0:P+&T!T
XM=")*,"T&IDC`3J[^JDRM``\&_$ZZ[PQ,K0`/"`9.NN\"(DHP+0:B2,!.KOZJ.
XM(DIP!3(M`[;2:0`^2,%.KO\0(DI!^NJT<`9.KO_$""T``P`E9GHB2G`%,BT#`
XM0M)I`#Y(P4ZN_Q`B2D'ZZI1P!DZN_\0(+0`%`"5F``"6(DIP_,'M!JK0;00HC
XM6T`R+0.VTFD`/DC!3J[_$")*0?KJ:'`$3J[_Q")*</S![0:JT&T$G%M`,BT#\
XM0M)I`#Y(P4ZN_Q`B2D'ZZD1P!$ZN_\1@0B)*<`4R+0;^DFD`/E5!2,%.KO\0@
XM(DI!^NHF<`E.KO_$(DHP+0@&,BT("))I`#Y504C!3J[_$")*0?KJ#7`$3J[_E
XMQ$ZZ[:I.NOH&*VT`U`:(1>T`>$ZZZ\`K;0#,!O`K;0#0!O1F!DJM`,QG$"MM\
XM`6`&U#MM`60&[&``]0A@`.R&+'@`!'``0>T*<$IM"J1F#B!M!K1.KOZ,2H!G`
XM3"!`0^T&5'(S$MA1R?_\2D!G!B)`3J[^AD)M"J0@;0:T3J[^C$J`9R`@0$/M^
XM"G!R,Q+84<G__")`3J[^A@@M``D*BF;84.T*I'`!3G5P`$YU89)G``"(("T&7
XM:`@```-G!F$`\`A@Z@@```AG"DZZ]KA.NNS@8-H(```)9@`"\@@```IG)@QM+
XM`&`&;&3$#&T`1`9L9A`P+09NP'P``V<&3KKLHF"L3KKLK&"F"```!F<*80#W[
XM7F$`^#!@E@@```5G"F$`]TYA`/>,8(8(```/9PA.NOC@8`#_>F``_W9*K0:(D
XM9@P@;0:T3J[^@&``_V1.NO6Z8`#_7$CG?_XF2`@K``(`(6<:(F@`!B`)9Q)%0
XMZ`#42A%G!K4)9_A@!$H29P1.NNK$F\TD3BQX``0@/```"ZYR`4A!3J[_.DJ`4
XM9R8J0"`K`5AF+B`\```!!'(!2$%.KO\Z2H!F'")-(#P```NN3J[_+BQJ`"J1+
XMR$ZN_Z!P`&```TXJ@$GM!M1![``<*4@`)"M/".@K:@`F`6PK:@`J`7`K:@`NA
XM`70K2@%X+$I.NN8R.T`&JCM!!JQ203M!!JXK2P%H0>T`!#`\`6,0VU'(__Q!V
XM[0`F0^T&D'`(,MAF!C-\``'__E'(__1P`S+89@8S?``#__Y1R/_T.VT!9@?VP
XM(&T`"D/M!0P@"&<$$MAF_`@M``<`)6<``)9*K0#,9@A*K0#09P``B"QX``0@$
XM/````01R`4A!3J[_.BM``8!G/BQM`6Q![04,(@AT_DZN_ZPK0`%\9R@B`"0MU
XM`8!.KO^:2H!G&B!M`8#0_`"$0^T`9+.(9@JSB&8&LXAF`F`,0>T`!"QM`7A.&
XMNNE(+&T!;"(M`7QG!$ZN_Z8L>``$(FT!@"`)9PH@/````01.KO\N(&T`#D/MP
XM!9`@"&<$$MAF_$'M`'Q#[06P$MAF_$'M`)Q#[070$MAF_$7M`+Q![0-P<`,P<
XMFC%:``30_`!T4<C_]#MM`!X'!#MM`"`(#F82.WP`#`@.""T``P`E9P1=;0@.=
XM.VT`'`<&.VT`'`@00?KH!D/M".QP#C+84<C__$'ZY\TK2`CZ0^T)"D7M"/Y"W
XM0#(\`*!!^N?&=%!.N@'20?KGPW1)""T`!``E9@21R'0`3KH!O$'ZY[IT3$ZZU
XM`;).NO<@3KK[,DZZ_.XL;0%PD<A.KO^@0BT%D&`V""T``P`E9S)#[060(&T'@
XMZB`(9R(K:``&`'0@;0;@(`AG%-#\``P2V&;\0?KF<E.)$MAF_&`$0BT%D"YM@
XM".A)[0?>3KKGZ$GM!M0(+0`"`"5G#@@M``@`)&<@2JT&B&<:3KKGRDZZYXXL3
XM>``$(E4@/````01.KO\N0I4K50%<*VT&B`#4*VT&U`%@.VT&[`%D*VT&\`#,7
XM*VT&]`#0*VT&W`!X.VT']@%F1>T`O$'M`W!P`S30-.@`!-#\`'11R/_T("T&E
XMC&<2+&T!<"!`3J[_RB!M!HQ.KO^X<`!*+0609@Y%[``(3KKG($*M`'A@-D'MI
XM!0PB;0`*(`EG!!+89OQ![060(FT`#B`)9P02V&;\0>T%#$/M!9`D;0`2(`IG"
XM!$ZZZMAP`2\`0>T`!")M`6@P/`%C$MA1R/_\+'@`!")-(#P```NN3J[_+B`?Z
XM3-]__DYU2.?`0B`(9B@L>``$D\E.KO[:($`,*``-``AF""!H`+@@"&X,3-]"0
XM`S-\``$`+DYU3-]"`S-\``\`+B!H`"XC2``>3G5(YW^>?@$S1P`F,T<`*#-!#
XM``@S?``*``HS?`!2``P30@`:9P8`:0`$``PS0``&T'P`"B2)1=$C2``N0>D`"
XM(B-(`!+2_``V3-]Y_DYU3KKBKA%M!J4`5$YU3KKBE!%M!JD`,!%M!I\`4$YUQ
XM`'0`$``Z`!``'0`0``X`$``.``@``0`"``(``@`$``(`"``"``@`!"`M(%!AP
XM;&5T=&4@+2``($-O<'D@`"!3=V%P(`!3<')E860`(%5N9&\@`"`@3VL@(`!#S
XM86YC96P`4B`@1R`@0@!(("!3("!6`)[\`!P@3R)/<@U"65')__P@@&$&WOP`U
XM'$YU2.=__BX0+"@`!"I.(#P```1F<@%(02QM`").KO\Z*$!*@&<``G0L34'L`
XM`#!T`'8$>`!Z`B"L`!(I2``2<!AR.$ZN_W8Q?``$`"PQ?/__`#`Q?!$1`#0Q"
XM0P`$,7P`+0`&,40`)C%\``$`2C%\`!``1C%\``H`2!%\``$`4#%\3B``5M#\7
XM`%C6?``:4D11S?^F(&T`-D/H`$PI20!\0^@`8"E)`-1#Z`!T*4D!+$'L`3A#]
XM^O[Z1]1P5G(O=`5V`TZN_W`Q0P`F4D->2=#\`&11RO_N<%S0;`%`.4`!H#E`[
XM`F@Y0`,P<#70;`%".4`"!CE``FIP]'((.4`"SH-L`M0Y0`,R@VP#.'!JT&P![
XM0-!L`4`W0``$-WP`9P`&%WP``P`(%WP``@`)0?K^=B=(`!HG?``#$`8`#B=\Y
XM```$>``*($8B2TZZ_80@2W``<@!.KO_B+&T`*DZN_S0F0$J`9P`!&"!K`"YP7
XM`!`H`+VP?``%8P)P!7(!X6G00-!`.4`$6$C!*4$$5+Y!900^`5-')`!#^OWZ6
XMY$I30M1"U$(Y<2``!%)#Z``L*4D$6B!H`#`I2`1B(&@`!"E(!%Y#[`/$1>P$/
XM!&`$,M`TV%')__IA``7^?/]A``1X>@`L;0`B(&L`5DZN_H`@:P!63J[^C")`>
XM($!%[`.0<!DTV%'(__PD24ZN_H8@+`.D"````V<Z2@5F:&$``KQ*0&O`/@`@H
XM+`1$(BP$2"0L`[0F+`.X*4($1"E#!$@L;0`J3J[_FDI`9YJ^1F:64,5@D@@`_
XM``9G"F$``=)*`&LD8(((```%9PAA``(.8`#_=@@```IG"F%&2@!K"&``_V9@T
XM`/]B($L@"&<(+&T`*DZN_[@B3"`)9PX@/```!&8L;0`B3J[_+C`'3-]__DYUQ
XM(&P$6B`L!%0L;0`N3N[_0'``,"P#J`B```=F'D'Z`#9A'#`L`Z@R+`.J(&P#I
XMK"Q-3J[_1D'Z`%)A!'``3G4B&&L0LD!G!%A(8/1/[P`$(%!.T$YU````10``I
XM+SP```!$```O2@```$P``"].````30``+UX```!/```O<@```$X``"^`____U
XM_P```%(``"^<````<@``+YX```!'```OH````&<``"^B````0@``+Z0```!B@
XM```OI@```&,``"^H````0P``+Z@```!U```OJ@```%4``"^J````>```+[H`&
XM``!8```ON@```',``"^\````4P``+[S_____0^P#Q&$`_OYP_W[_3G5P_TYU-
XM,`=(P)!L!%)J.-"L!%1@,C`'2,#0;`12L*P$5&TDD*P$5&`>,`=(P%-`:A;0C
XMK`148!`P!TC`4D"PK`14;020K`14/`<^`&$``E1P`$YU3G5.=4YU3G5.=4YU[
XM3G5#[`0$80#^D&$``KIP`$YU3G5.=4CG`,(@;`.L,B@`)K)\``=F!'#_8#"R[
XM?``(9A)#[`/$80#^8&$``HIP_W[_8!BR?``&9@Q#[`0$80#^2&$``G(Y001,E
XM<`!,WT,`3G5(Y__^)&P#K'``,"H`,(#\$1$*0``/L&H`5F<D-4``5B!*3KH!V
XMYC`',BP`AC0L`-XV+`$V(&P$6BQM`"Y.KO[@+&T`+DZN_O)**@`-:[I,WW__E
XM3G4P!B!L!&(L;0`N3N[]NDCG?/X,;`!H`ZAF``#V3*P``P.PD'P`4FT``.BP&
XM?`!N;@``X))\``QM``#8LGP`'FX``-`T+`180?KZ;(#P(`""\"`"0?KZ=,+P]
XM(`#003P'/@`P+`1,9P``FF$``H2P?``%9T"P?``#9@QAAC(`,`=A``#`8'RP\
XM?``$9G9A`/]T.4`$3C`'80#_;#E`!%`R+`1.,`=A``"<,BP$4#`&80``DF!.X
XM2.?__KQ';0+/1C\&GD8Z!R1L!%[<1M3&WD='\G``.`5@(B!/74\\$CX383IA.
XM.&$V3)\`#C`7T$0@;`1:+&T`+DZN_N!1S/_<5$],WW__0FP$3&$``(8P!TS?Y
XM?SY.=7#_3-]_/DYU,`8R!\!\``_"?``/DD##Q-)!:P3216`"DD7B08/%TD`QZ
XM`>A&Z$=.=4CG\,`T`38!X$GH2B!L!%HL;0`N3J[^X$S?`P].=0`$``P`30`A0
XM2.?PPB)K`#(L;0`N3J[^JD'Z_^9,D``/(FL`,DZN_LY,WT,/3G5(Y__^OD9GT
XM'$I&:P8P!F$``,0P![!\`"!E`G``8;QA``"T86!,WW__3G5(Y\+J*$A"IR1/8
XM0?H!KC\`(D\L34ZN_\HB:P`R,"P`!%A`,BP`!EE!+&T`+DZN_Q`B:P`R<`%.=
XMKOZ>(FL`,G`!3J[^JD'O``)P`B)K`#).KO_$7$],WU=#3G4@;`1>,`?00#`P(
XM``!R`D'L`.!A#.A(D/P`6%')__9.=4CG__[`?``/,4``5DZZ_W@*0``/P/P1W
XM$3%``#`L;0`J(DN5RG`!3J[^4$S??_].=4CG__X^`"QM`"XB:P`R'"D`''`#L
XM3J[^GCHL!%A!^OA*.#!0`'``,`>`Q#(`-`3$P#`'D$)!^O@>P/!0`,+P4`+06
XM?`!1TGP`"R)K`#(8*0`@`&D``0`@-``V`=1P4`#6<%`"+$U.KO^@4D!205-"U
XM4T-.KO^@(FL`,A-$`"!P`!`&+&T`+DZN_IY,WW__3G5(Y\#"(BP$5"!L!%Y#`
XM[`0$8`(RV%')__Q,WT,#3G5(Y__^/"P$6$7Z][+4QCXJ``)Z#'8`+&T`+F`^F
XM>%(\$F`P,`,B:P`R3J[^JB\#,`0R!30$-@74:O_LUFK_[E5"54,B:P`R3J[^,
XMSB8?V&K_[%)#4<[_SMIJ_^Y1S__`3-]__TYU)3)D`$CG?_X2$&<``)*R`F<`:
XM`(P,$``C9@P,*``_``%F!%1(8`@,$``J9BI22`P0`"IG^`P0`"-F"`PH`#\`4
XM`6?@$A!G5+("9U!*$6=(8;1F2%))8/0,$``_9@I*&6<V4DAAH&!`#!``(V88/
XM4D@2&&<DPCP`WV&,9B`0&<`\`-^R`&?R$!@2&<`\`-_"/`#?L@!G`/]T<`!@5
XM#'`!8`A*$5?`1$!(@$S??_Y.=4CG?_[!21(09Q9T?+("9Q!A`/]&9@H2&&<.S
XML@)F^&#F<`%,WW_^3G5P`&#V2.<__C0!Q,`F`$A#*`%(1,#$PL/&Q$A`2$$@)
XM0]#`T,%"0$)!U(!D`E*(U(%D`E*((@@@`DS??_Q.=6'$/P`P`4A`2E]J`E*`+
XM3G5(YW_^)`!"0DA"A,%(0$A",`)(0(#!-``@`DS??_Y.=4CG__XF2"`3,BL`>
XM"$C!888N`"P'("L`!)"K``IO``$0(&L`#B!H`")R`#(H``1AH"0`,BL`"$C!3
XM3KK_7"('DH`F`6<``.I$@6L"4(%9@2`!;`)$@"H!<@5AAB(`2H5L`D2!."L`6
XM",CK``PJ!.2-F(4Z*P`(2,68A;*$;@9$@;*$;Q8F@IZ#(&L`$DCG__Y.D$S??
XM?_]@`/]\1('>@2\!)`<F!DJ7:@PR*P`(4T%(P=2!UH$@`C(K``A.NO\F(@`O.
XM`#`K``A(P$ZZ_LXB`"`?DH=(Y\``(`(R*P`(3KK_!"0`(`-.NO[\)@!,WP`#7
XMEH)L(D2#)"L`"I2#T()(Y\``(`(R*P`(2,%.NOZ.)`!,WP`#TH(D'TCG__Y(?
XMY_``(&L`&DZ0WOP`$$S??_]@`/[F(`<R*P`(3KK^JB:`(&L`%B0(9PI(Y__^]
XM3I!,WW__+PXL;@`N3J[^\BQ?(&L`#DHH``UK`/ZP3-]__TYU``````/L````/
XM/0`````````&````"@```!(````6````&@```(0```"(````C````)````"4+
XM````F````)P```"@````I````*@```"L````L````+0```"X````O````,``D
XM``#$````R````,P```#0````U````-@```#<````X````.0```#H````[```(
XM`/````#T````^````/P```$````!!````0@```$>```!.```+I@``"Z@```N!
XMJ```+K```"ZX```NP```+LP``"[4```NW```+N0``"[L```N]```+OP``"\$+
XM```O#```+Q0``"\<```O)```+RP``"\T`````````_(```/J`````````_(`Q
X+``/K`````0```_(<`
X``
Xend
Xsize 14276
END_OF_FILE
if test 20030 -ne `wc -c <'req.library.uu'`; then
    echo shar: \"'req.library.uu'\" unpacked with wrong size!
fi
# end of 'req.library.uu'
fi
if test -f 'reqbase.i' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'reqbase.i'\"
else
echo shar: Extracting \"'reqbase.i'\" \(15673 characters\)
sed "s/^X//" >'reqbase.i' <<'END_OF_FILE'
X
X; reqlibrary.i (c) 1988/1989 reserved by Colin Fox and Bruce Dawson */
X
X	IFND	REQ_LIBRARY_I
X
XREQ_LIBRARY_I	SET	1
X
X		INCLUDE	"intuition/intuition.i"
X
X		INCLUDE	"libraries/dos.i"
X		INCLUDE	"libraries/dosextens.i"
X
X		INCLUDE	"exec/memory.i"
X		INCLUDE	"exec/initializers.i"
X		INCLUDE	"exec/alerts.i"
X
XReqVersion	EQU	1
X
X
XPairsSize	EQU	20
X
X STRUCTURE	GadgetBlock.,0		;a boolean button style text gadget
X	STRUCT	gb_Gadget,gg_SIZEOF
X	STRUCT	gb_Border,bd_SIZEOF
X	STRUCT	gb_Pairs,PairsSize
X	STRUCT	gb_Text,it_SIZEOF
X	LABEL	gb_SIZEOF
X
X STRUCTURE	StringBlock.,0		;a string gadget
X	STRUCT	sb_Gadget,gg_SIZEOF
X	STRUCT	sb_Info,si_SIZEOF
X	STRUCT	sb_Border,bd_SIZEOF
X	STRUCT	sb_Pairs,PairsSize
X	LABEL	sb_SIZEOF
X
X STRUCTURE	PropBlock.,0		;a prop gadget
X	STRUCT	pb_Gadget,gg_SIZEOF
X	STRUCT	pb_Info,pi_SIZEOF
X	STRUCT	pb_Image,ig_SIZEOF
X	LABEL	pb_SIZEOF
X
X STRUCTURE	SliderBlock.,0		;a slider (two arrows & a prop)
X	STRUCT	slb_ArrowUpLt,gg_SIZEOF
X	STRUCT	slb_ImageUpLt,ig_SIZEOF
X	STRUCT	slb_ArrowDnRt,gg_SIZEOF
X	STRUCT	slb_ImageDnRt,ig_SIZEOF
X	STRUCT	slb_Prop,pb_SIZEOF	;this is at the end for REFRESH GLIST purposes
X	LABEL	slb_SIZEOF
X
X STRUCTURE	TwoImageBlock,0
X	STRUCT	tib_Gadget,gg_SIZEOF
X	STRUCT	tib_Image1,ig_SIZEOF
X	STRUCT	tib_Image2,ig_SIZEOF
X	LABEL	tib_SIZEOF
X
XATTITUDEB	EQU	16	;Bit# of the attitude bit.
X
XHorizSlider	EQU	0<<ATTITUDEB	;which way the slider stands
XVertSlider	EQU	1<<ATTITUDEB	;This is so that it bypasses all gadget flags.
X
X
X
X;         This structure is use with the TextRequester function.
X
X STRUCTURE TRStructure,0
X	APTR	TR_Text			;This is the message text, including printf() style formatting if desired.
X	APTR	TR_Controls		;This is the address of the parameter list, if printf() style formatting is used.
X	APTR	TR_Window		;This is an optional (zero if not used) pointer to a window on the screen you 
X					;would like the requester to show up on.
X	APTR	TR_MiddleText		;If non-zero, this is the text for the gadget in the lower middle (returns 2).
X	APTR	TR_PositiveText		;If non-zero, this is the text for the gadget in the lower left hand corner (returns 1).
X	APTR	TR_NegativeText		;If non-zero, this is the text for the gadget in the lower right (returns 0).
X	APTR	TR_Title		;This is the title for the window.
X	WORD	TR_KeyMask		;This is the qualifier mask for the keyboard shortcuts.
X					;Use $FFFF to allow any qualifiers (or none).
X					;Zero means that no keyboard shortcuts are allowed.
X	WORD	TR_textcolor		;Color of the text.  Uses Color 1 if no Color specified.
X	WORD	TR_detailcolor		;Detail and block color, as in a NewWindow structure.  If
X	WORD	TR_blockcolor		;both are left zero, block pen will be set to 1.
X	WORD	TR_versionnumber	;Make SURE this is set to zero.
X	LONG	TR_rfu1			;Make SURE you leave these two zeroed also.
X	LONG	TR_rfu2			;Make SURE you leave these two zeroed also.
X	LABEL	TR_SIZEOF
X
X;/* NOTE:
X;
X;    The  control  values  mentioned above are used if you choose to insert
X;printf  style directives in your strings and should contain the address of
X;a list of control parameters, usually on the stack.
X;    */
X
X
X
X;         This structure is for use with the GetLong function.
X
XGLNODEFAULTB	EQU	0	;Set this bit in the flags if you don't want a default
X				;value to show up in the get long string gadget.  For
X				;some things this is much better than having a zero
X				;show up.
X
XGLNODEFAULTM	EQU	1<<GLNODEFAULTB
X
X STRUCTURE	GetLongStruct,0
X	APTR	gl_titlebar
X	LONG	gl_defaultval
X	LONG	gl_minlimit
X	LONG	gl_maxlimit
X	LONG	gl_result
X	APTR	gl_window
X	WORD	gl_versionnumber;	;Make SURE this is set to zero.
X	LONG	gl_flags;		;Some, uh flags.  See above for bit definitions.
X	LONG	gl_rfu2;		;Make SURE you leave these two zeroed also.
X	LABEl	gl_SIZEOF
X
X
X
X;         Remember,   if  you  don't  want  to  go  through  the  hassle  of
X; initializing a ExtendedColorRequester structure, you can always just call
X; ColorRequester  (as opposed to ExtendedColorRequester).  ColorRequester
X; just  takes  a  single  parameter, in D0, the color that should start out
X; being highlit.  It returns a single value, the color that was selected at
X; the end.
X
X;         This structure is for use with the ExtendedColorRequester (_not_,
X; the ColorRequester) function.
X
X STRUCTURE	ExtendedColorRequesterStruct,0
X	LONG	ecr_defcolor		;The color that is initially highlit.
X	APTR	ecr_window		;The window the 'requester' opens up in (zero normally).
X	LONG	ecr_rfu1			;Who knows what these will be used for,
X	LONG	ecr_rfu2			;but I'm sure we'll think of something.
X	LONG	ecr_rfu3			;Until then, just keep these zeroed.
X	LONG	ecr_rfu4			;Okay?
X	LONG	ecr_rfu5
X	LABEL	ecr_SIZEOF
X
X
X
X	IFND	DSIZE
XDSIZE		EQU	130
XFCHARS		EQU	30
X	ENDC
XWILDLENGTH	EQU	30
X
XFRQSHOWINFOB	EQU	0	;Set this in Flags if you want .info files to show.  They default to hidden.
XFRQEXTSELECTB	EQU	1	;Set this in Flags if you want extended select.  Default is not.
XFRQCACHINGB	EQU	2	;Set this in Flags if you want directory caching.  Default is not.
XFRQGETFONTSB	EQU	3	;Set this in Flags if you want a font requester rather than a file requester.
XFRQINFOGADGETB	EQU	4	;Set this in Flags if you want a hide-info files gadget.
XFRQHIDEWILDSB	EQU	5	;Set this in Flags if you DON'T want 'show' and 'hide' string gadgets.
XFRQABSOLUTEXYB	EQU	6	;Use absolute x,y positions rather than centering on mouse.
XFRQCACHEPURGEB	EQU	7	;Purge the cache whenever the directory date stamp changes if this is set.
XFRQNOHALFCACHEB	EQU	8	;Don't cache a directory unless it is completely read in when this is set.
XFRQNOSORTB	EQU	9	;Set this in Flags if you DON'T want sorted directories.
XFRQNODRAGB	EQU	10	;Set this in Flags if you DON'T want a drag bar and depth gadgets.
XFRQSAVINGB	EQU	11	;Set this bit if you are selecting a file to save to.
XFRQLOADINGB	EQU	12	;Set this bit if you are selecting a file(s) to load from.
X				;These two bits (save and load) aren't currently used for
X				;anything, but they may be in the future, so you should
X				;remember to set them.  Also, these bits make it easier if
X				;somebody wants to customize the file requester for their
X				;machine.  They can make it behave differently for loading
X				;vs saving.
X
XFRQSHOWINFOM	EQU	1<<FRQSHOWINFOB
XFRQEXTSELECTM	EQU	1<<FRQEXTSELECTB
XFRQCACHINGM	EQU	1<<FRQCACHINGB
XFRQGETFONTSM	EQU	1<<FRQGETFONTSB
XFRQINFOGADGETM	EQU	1<<FRQINFOGADGETB
XFRQHIDEWILDSM	EQU	1<<FRQHIDEWILDSB
XFRQABSOLUTEXYM	EQU	1<<FRQABSOLUTEXYB
XFRQCACHEPURGEM	EQU	1<<FRQCACHEPURGEB
XFRQNOHALFCACHEM	EQU	1<<FRQNOHALFCACHEB
XFRQNOSORTM	EQU	1<<FRQNOSORTB
XFRQNODRAGM	EQU	1<<FRQNODRAGB
XFRQSAVINGM	EQU	1<<FRQSAVINGB
XFRQLOADINGM	EQU	1<<FRQLOADINGB
X
X
X STRUCTURE	ESStructure,0		;ExtendedSelectStructure
X		LONG	es_NextFile	;This must be the first element!
X		WORD	es_NameLength	;File name length, not including the terminating zero.
X		WORD	es_Pad
X		APTR	es_Node		;Node that the user has extended selected.
X		LABEL	es_SIZEOF
X
X;         When  using  extended  select,  the  directory pointer is required
X; since  only  the  file  names  are stored in the frq_ExtendedSelect linked
X; list.   When  not  using  extended select, you can either have frq_Dir and
X; frq_File  point  be initialized, or you can have frq_PathName initialized,
X; or  both.   frq_PathName will contain the concatenation of the file and
X; directory chosen.
X
X STRUCTURE	.FileRequester,0
X	UWORD	frq_VersionNumber		;MUST BE ZERO!!!!!!!!!!!!!!!!!!
X
X	;You will probably want to initialize these three variables.
X	APTR	frq_Title			; Hailing text
X	APTR	frq_Dir				; Directory array (must be DSIZE+1 characters long)
X	APTR	frq_File			; Filename array (must be FCHARS+1 characters long)
X	;If you initialize this variable then the file requester will place the complete path name in here on exit.
X	APTR	frq_PathName			; Complete path name array - (must be DSIZE+FCHARS+2 long)
X	;If you want the file requester to pop up on your custom screen, put one of your window pointers here.
X	;Or better yet, you can leave this field zeroed and put a pointer to one of your windows in the
X	;pr_WindowPtr field in your process structure.
X	APTR	frq_Window			; Window requesting or NULL
X	;Initialize these to the number of lines and columns you want to appear in the inner window that
X	;displays the file names.  If you leave these set to zero then default values will be used.
X	UWORD	frq_MaxExtendedSelect		; Zero implies a maximum of 65535, as long as FRQEXTSELECT is set.
X	UWORD	frq_numlines			; Number of lines in file window.
X	UWORD	frq_numcolumns			; Number of columns in file window.
X	UWORD	frq_devcolumns			; Number of columns in device window.
X	ULONG	frq_Flags			; Various - umm - flags.  See above for more info.
X	UWORD	frq_dirnamescolor	;These five colors will all default
X	UWORD	frq_filenamescolor	;to color one if you don't specify
X	UWORD	frq_devicenamescolor	;a color (ie; if you specify color zero).
X	UWORD	frq_fontnamescolor	;If you want color zero to be used, specify
X	UWORD	frq_fontsizescolor	;color 32, or some other too large number
X					;which mods down to zero.
X
X	UWORD	frq_detailcolor		;If both of these colors are specified as
X	UWORD	frq_blockcolor		;zero then the block pen will be set to one.
X
X	UWORD	frq_gadgettextcolor	;The color for the text of the five boolean gadgets.  Defaults to 1.
X	UWORD	frq_textmessagecolor	;The color for the message at the screen top.  Defaults to 1.
X	UWORD	frq_stringnamecolor	;The color for the words Drawer, File, Hide and Show.  Defaults to 3.
X	UWORD	frq_stringgadgetcolor	;The color for the borders of the string gadgets.  Defaults to 3.
X					;Unfortunately it is not possible to specify
X					;the color of the actual text in an Intuition
X					;string gadget.
X	UWORD	frq_boxbordercolor	;The color for the boxes around the file and directory areas.  Defaults to 3.
X	UWORD	frq_gadgetboxcolor	;The color for the boxes around the five boolean gadgets.  Defaults to 3.
X
X	STRUCT	frq_RFU_Stuff,36		;This area, which is reserved for
X						;future use, should all be zero.
X
X	STRUCT	frq_DirDateStamp,ds_SIZEOF	; A copy of the cached directories date stamp.
X						; There should never be any need to change this.
X
X	UWORD	frq_WindowLeftEdge;		;These two fields are only used when the
X	UWORD	frq_WindowTopEdge;		;FRQABSOLUTEXY flag is set.  They specify
X						;the location of the upper left hand
X						;corner of the window.
X
X	UWORD	frq_FontYSize			;These fields are used to return the selected
X	UWORD	frq_FontStyle			;font size and style, only applicable when the
X						;font bit is set.
X
X	;If you set the extended select bit and the user extended selects, the list of filenames will start from here.
X	APTR	frq_ExtendedSelect		; Linked list of ESStructures if more than one filename is chosen.
X	;All of the following variables you shouldn't need to touch.  They contain fields that the file
X	;requester sets and likes to preserve over calls, just to make life easier for the user.
X	STRUCT	frq_Hide,WILDLENGTH+2		; Wildcards for files to hide.
X	STRUCT	frq_Show,WILDLENGTH+2		; Wildcards for files to show.
X	WORD	frq_FileBufferPos		; Cursor's  position  and first
X	WORD	frq_FileDispPos			; displayed character number in
X	WORD	frq_DirBufferPos		; the three string gadgets.  No
X	WORD	frq_DirDispPos			; need  to initialized these if
X	WORD	frq_HideBufferPos		; you don't want to.
X	WORD	frq_HideDispPos
X	WORD	frq_ShowBufferPos
X	WORD	frq_ShowDispPos
X
X;         The  following  fields are PRIVATE!  Don't go messing with them or
X; wierd  things may/will happen.  If this isn't enough of a warning, go read
X; the one in intuition.h, that should scare you off.
X
X	APTR	frq_Memory			; Memory allocated for dir entries.
X	APTR	frq_Memory2			; Used for currently hidden files.
X	APTR	frq_Lock			; Contains lock on directories being read across calls.
X	STRUCT	frq_PrivateDirBuffer,DSIZE+2	; Used for keeping a record of which
X						; directory we have file names for.
X	APTR	frq_FileInfoBlock
X	WORD	frq_NumEntries
X	WORD	frq_NumHiddenEntries
X	WORD	frq_filestartnumber
X	WORD	frq_devicestartnumber
X	LABEL	frq_SIZEOF
X
X
X
X
X
X
X
X;         This is used with the RealTimeScroll function.
X
X STRUCTURE	ScrollStruct,0
X	ULONG	ss_TopEntryNumber	;This is the ordinal number of the first
X					;displayed entry.
X	ULONG	ss_NumEntries		;This is the total number of entries in
X					;the list.
X	UWORD	ss_LineSpacing		;This is how many pixels high each entry is.
X	ULONG	ss_NumLines		;This is how many entries can be displayed simultaneously.
X	APTR	ss_PropGadget		;This is a pointer to the prop gadget being monitored.
X
X	APTR	ss_RedrawAll		;This routine is used to redraw all of the
X					;entries when the user moves far enough
X					;that scrolling will take too long.
X
X	APTR	ss_ReadMore		;An optional routine that is called when
X					;the scroll routine is waiting for movement.
X					;This allows reading of new data while real
X					;time scrolling.
X	APTR	ss_ScrollAndDraw	;This routine is called when the data needs
X					;to be scrolled and updated.  This routine is
X					;passed four long parameters (on the stack and
X					;in D0-D3) which are, respectively:
X					;D0 - entry number of first line to be drawn.
X					;D1 - pixel offset to draw first line at.
X					;D2 - amount to scroll before doing any drawing.
X					;D3 - number of lines of data to draw.
X	WORD	versionnumber		;Make SURE this is set to zero.
X	LONG	rfu1			;Make SURE you leave these two zeroed also.
X	LONG	rfu2			;Make SURE you leave these two zeroed also.
X	LABEL	ss_SIZEOF
X
X
X
X
X
X STRUCTURE	Arrows,0
X	STRUCT	ArrowUp,20
X	STRUCT	ArrowDown,20
X	STRUCT	ArrowLeft,18
X	STRUCT	ArrowRight,18
X	STRUCT	Letter_R,20
X	STRUCT	Letter_G,20
X	STRUCT	Letter_B,20
X	STRUCT	Letter_H,20
X	STRUCT	Letter_S,20
X	STRUCT	Letter_V,20
X	LABEL	chipstuff_SIZEOF
X
X; These are the positions relative to the rl_Images pointer.
X;ie
X;	MOVE.L	rl_Images(A6),A0
X;	ADD.L	#ArrowLeft,A0		;A0 now points at the left arrow.
X
X
X STRUCTURE	ReqLib,LIB_SIZE
X	APTR	rl_SysLib
X	APTR	rl_DosLib		;These must be kept in the same order,
X	APTR	rl_IntuiLib		;the library expunge code depends on it.
X	APTR	rl_GfxLib		;
X	APTR	rl_SegList
X	APTR	rl_Images		;pointer to the arrow images.
X	BYTE	rl_Flags
X	BYTE	rl_Pad
X	APTR	rl_ConsoleDev		;for RawKeyToAscii
X	APTR	rl_ConsoleHandle	;so we can close the device later
X	LABEL	MyLib_Sizeof
X
X
X
X
X
X
X	LIBINIT
X	LIBDEF	_LVOCenter
X
X	LIBDEF	_LVOSetSize
X	LIBDEF	_LVOSetLocation
X	LIBDEF	_LVOReadLocation
X
X	LIBDEF	_LVOFormat
X
X	LIBDEF	_LVOFakeFunction1	;Old function.  Don't use.
X	LIBDEF	_LVOFakeFunction2	;Old function.  Don't use.
X
X	LIBDEF	_LVOFakeFunction3	;Old function.  Don't use.
X	LIBDEF	_LVOFakeFunction4	;Old function.  Don't use.
X
X	LIBDEF	_LVOFileRequester
X
X	LIBDEF	_LVOColorRequester
X
X	LIBDEF	_LVODrawBox
X
X	LIBDEF	_LVOMakeButton
X	LIBDEF	_LVOMakeScrollBar
X
X	LIBDEF	_LVOPurgeFiles
X
X	LIBDEF	_LVOGetFontHeightAndWidth
X
X	LIBDEF	_LVOMakeGadget
X	LIBDEF	_LVOMakeString
X	LIBDEF	_LVOMakeProp
X
X	LIBDEF	_LVOLinkGadget
X	LIBDEF	_LVOLinkStringGadget
X	LIBDEF	_LVOLinkPropGadget
X
X	LIBDEF	_LVOGetString
X
X	LIBDEF	_LVORealTimeScroll
X
X	LIBDEF	_LVOTextRequest
X
X	LIBDEF	_LVOGetLong
X
X	LIBDEF	_LVORawKeyToAscii
X
X	LIBDEF	_LVOExtendedColorRequester
X
X
X
XREQNAME	MACRO
X	DC.B	'req.library',0
X	ENDM
X
X; This macro will open the RequesterLibrary for you. At the end, A6 will
X;contain the library and D0/A0 will be correct. (What dos passed you)
X
XOpenReq	MACRO
X	BRA.S	opnrq
X
Xdname	DC.B	'dos.library',0
Xrlibmsg	DC.B	'You need V1+ of '
XReqName	REQNAME
X	DC.B	10,13,0
X;;;rliblng	EQU	*-rlibmsg
Xrliblng	EQU	30
X	DS.W	0
X	EVEN
X
Xopnrq:
X	MOVEM.L	d0/a0,-(sp)
X	MOVE.L	4,A6
X	LEA.L	ReqName,a1
X	MOVEQ.L	#ReqVersion,d0
X	SYS	OpenLibrary
X	TST.L	d0
X	BNE.S	itsokay
X	LEA	dname,A1
X	SYS	OpenLibrary
X	TST.L	D0
X	BEQ.S	1$
X	MOVE.L	D0,A6
X	SYS	Output
X	MOVE.L	d0,d1
X	BEQ.S	1$			;No output. Phooey.
X	MOVE.L	#rlibmsg,d2		;Tell user he needs to find library.
X	MOVE.L	#rliblng,D3
X	SYS	Write
X1$:	ADDQ	#8,sp
X	RTS
X
Xitsokay:
X	MOVE.L	D0,A6
X	MOVEM.L	(SP)+,D0/A0
X	ENDM
X
X
X
X	ENDC
END_OF_FILE
if test 15673 -ne `wc -c <'reqbase.i'`; then
    echo shar: \"'reqbase.i'\" unpacked with wrong size!
fi
# end of 'reqbase.i'
fi
if test -f 'showoffreq.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'showoffreq.c'\"
else
echo shar: Extracting \"'showoffreq.c'\" \(13729 characters\)
sed "s/^X//" >'showoffreq.c' <<'END_OF_FILE'
X
X#include	<intuition/intuition.h>
X#include	<exec/libraries.h>
X#include	<libraries/dosextens.h>		/* For the process structure definition. */
X
X
X#include	<libraries/dos.h>
X
X#include	<libraries/reqbase.h>
X
X#ifdef	LATTICE
X#include	<proto/all.h>
X#else
Xstruct Library *		OpenLibrary();
Xstruct Screen *			OpenScreen();
Xstruct Window *			OpenWindow();
Xstruct Task *			FindTask();
Xstruct Message *		GetMsg();
X#endif
X
X
X#define	WIDTH  640
X#define	HEIGHT 200
X#define	DEPTH  3
X
X#define	GADGETSTARTX	20
X#define	GADGETSTARTY	60
X
X#define	IDCMP	(GADGETUP)
X#define	FLAGS	(BACKDROP|SMART_REFRESH|ACTIVATE|BORDERLESS)
X
Xstruct IntuitionBase	*IntuitionBase;
Xstruct GfxBase			*GfxBase;
Xstruct ReqBase			*ReqBase;
Xstruct Window			*window;
Xstruct Screen			*screen;
X
Xstruct NewScreen ns =
X	{
X	0, 0,					/* LeftEdge, TopEdge */
X	WIDTH, HEIGHT, DEPTH,	/* Width, Height, Depth */
X	0, 1,					/* DetailPen, BlockPen */
X	HIRES,					/* ViewModes */
X	CUSTOMSCREEN,			/* Type */
X	NULL,					/* Font */
X	(UBYTE *)"Show off requester library.",	/* Title */
X	NULL,					/* Gadgets */
X	NULL					/* Bitmap */
X	};
X
Xstruct NewWindow nw =
X	{
X	0,0,					/* LeftEdge, TopEdge */
X	WIDTH,HEIGHT,			/* Width, Height */
X	-1,-1,					/* DetailPen, BlockPen */
X	IDCMP,					/* IDCMPFlags */
X	FLAGS,					/* Flags */
X	NULL,					/* FirstGadget */
X	NULL,					/* CheckMark */
X	NULL,					/* Title */
X	NULL,					/* Screen */
X	NULL,					/* BitMap */
X	79, 30,					/* MinWidth, MinHeight */
X	640, 200,				/* MaxWidth, MaxHeight */
X	CUSTOMSCREEN			/* Type (of screen) */
X	};
X
X
Xstruct Process	*myprocess;
XAPTR	olderrorwindow;
X
X
X
X	/* I declared this variable as global, rather than just declaring it as */
X	/* a regular local variable because I need to make sure that all of the */
X	/* fields are initialized to zero. */
X	/* Also, the quit_cleanup routine needs to be able to access it to purge */
X	/* the directory buffers which I have chosen to use (by setting the */
X	/* FRQCACHINM flag. */
X
Xstruct FileRequester	MyFileReqStruct;
Xchar filename[FCHARS];
Xchar directoryname[DSIZE];
X
Xvoid ShowFileRequester()
X	{
X	char	answerarray[DSIZE+FCHARS];
X
X	answerarray[0] = 0;
X
X		/* Initialize the 'PathName' field so that the file requester will */
X		/* construct a complete path name for me.  It will also put the two */
X		/* parts of the answer (directory and file name) into the directory */
X		/* file name which I also decided to supply it with.  Since the */
X		/* directory and file name arrays are present, it will use their */
X		/* initial contents as the initial file and directory.  If they aren't */
X		/* present it will leave both blank to start. */
X	MyFileReqStruct.PathName = answerarray;
X	MyFileReqStruct.Dir = directoryname;
X	MyFileReqStruct.File = filename;
X
X		/* The directory caching of this file requester is one of its nice */
X		/* features, so I decided to show it off.  It is completely optional */
X		/* though, so if you don't want it, don't set this flag.  If you do */
X		/* want it, don't forget to call PurgeFiles() when you are done. */
X	MyFileReqStruct.Flags = FRQCACHINGM;
X
X		/* Initialize a few colour fields.  Not strictly necessary, but */
X		/* personally, I like having my files a different colour from my */
X		/* directories. */
X	MyFileReqStruct.dirnamescolor = 2;
X	MyFileReqStruct.devicenamescolor = 2;
X		/* I could also make it larger, pass it a file and/or directory */
X		/* name, set the window title, set various flags and customize */
X		/* in many other ways, but I wanted to show that it can be easily */
X		/* used without having to fill in a lot of fields. */
X	if (FileRequester(&MyFileReqStruct))
X		SimpleRequest("You selected the file '%s'.", answerarray);
X	else
X		SimpleRequest("You didn't select a file.");
X	}
X
X
X
Xvoid ShowColorRequester()
X	{
X	ColorRequester(1L);		/* Pass it the color you want to start out being highlit. */
X							/* It actually returns the colour that the user chose, but */
X							/* I'm not interested in that value. */
X
X		/* If you want to give more parameters to the colour requester, you can */
X		/* call ExtendedColorRequester with the address of an ExtendedColorRequest */
X		/* structure.  Currently the only additional parameter this lets you pass */
X		/* is the address of the window the requester should appear in.  This can */
X		/* normally be done more easily by specifying it in the pr_WindowPtr field */
X		/* of your task structure. */
X	}
X
X
X
Xvoid ShowSimpleText()
X	{
X	SimpleRequest(
X"     SimpleRequest()  is  a  tiny bit of\n"
X"glue  code  which  passes  a single text\n"
X"string  (with  optional  printf()  style\n"
X"formatting) to the TextRequest() routine\n"
X"in  the  library.   The  SimpleRequest()\n"
X"routine  can  be  easily modified to fit\n"
X"your own peculiar purposes.");
X	}
X
X
X
Xchar *yesno[] =
X	{
X	"no",
X	"yes",
X	};
X
Xvoid ShowTwoGadText()
X	{
X	short	result;
X
X	result = TwoGadRequest("Just testing the two gadget requester.");
X	SimpleRequest("You responded with a '%s' to this requester.", yesno[result]);
X	}
X
X
X
Xchar *response[] =
X	{
X	"You really should use it.",
X	"Excellent choice.  You have good taste.",
X	"Oh come one, make up your mind.\nYou won't regret choosing 'yes'.",
X	};
X
Xvoid ShowThreeGadText()
X	{
X	struct TRStructure	MyTextStruct;
X	short	result;
X
X	MyTextStruct.Text = "     Would you use the requester library\n"
X						"in your programs?";
X		/* The Controls field doesn't actually have to be initialized, unless you */
X		/* are using printf() style formatting of the Text string. */
X	MyTextStruct.Window = 0;	/* This must be zero or a valid window pointer. */
X	MyTextStruct.MiddleText = "Perhaps...";
X	MyTextStruct.PositiveText = "Oh yeah, for sure!";
X	MyTextStruct.NegativeText = "Methinks not.";
X	MyTextStruct.Title = "Show off text requester.";
X	MyTextStruct.KeyMask = AMIGAKEYS;		/* Allow only keys together with the amiga */
X											/*  qualifiers to be used for keyboard shortcuts. */
X	MyTextStruct.textcolor = 1;
X	MyTextStruct.detailcolor = 0;
X	MyTextStruct.blockcolor = 1;
X	MyTextStruct.versionnumber = 0;
X	MyTextStruct.rfu1 = 0;
X	MyTextStruct.rfu2 = 0;
X	result = TextRequest(&MyTextStruct);
X	SimpleRequest(response[result]);
X	}
X
X
X
X	/* I declared this variable globally, rather than just declaring it as */
X	/* a regular local variable because I need to make sure that all of the */
X	/* fields are initialized to zero. */
X	/* Also, the quit_cleanup routine needs to be able to access it to purge */
X	/* the directory buffers which I have chosen to use (by setting the */
X	/* FRQCACHINM flag. */
X	/* I could have used the same structure I used for the file requester, */
X	/* but I decided not to, so that the two requesters could have separate */
X	/* directory caches. */
X
Xstruct FileRequester	MyFontReqStruct;
X
Xvoid ShowFontRequester()
X	{
X	char	fontname[FCHARS];
X	char	dirname[DSIZE];
X
X		/* You do have to tell the font requester what directory to look */
X		/* in, usually fonts:. */
X
X	strcpy(dirname, "fonts:");
X	fontname[0] = 0;
X
X		/* Tell the file requester to be a font requester. */
X		/* The directory caching of this file requester is one of its nice */
X		/* features, so I decided to show it off.  It is completely optional */
X		/* though, so if you don't want it, don't set the caching flag.  If you do */
X		/* want it, don't forget to call PurgeFiles() when you are done. */
X	MyFontReqStruct.Flags |= FRQGETFONTSM | FRQCACHINGM;
X
X	MyFontReqStruct.Dir = dirname;
X	MyFontReqStruct.File = fontname;
X		/* Initialize a colour field.  Not strictly necessary, but */
X		/* personally, I like having my fonts a different colour */
X		/* from the font size list. */
X	MyFontReqStruct.fontnamescolor = 2;
X	if (FileRequester(&MyFontReqStruct))
X		SimpleRequest("You selected the font '%s',\n"
X					  "size %d, style %d.", fontname, MyFontReqStruct.FontYSize, MyFontReqStruct.FontStyle);
X	else
X		SimpleRequest("You didn't select a font.");
X	}
X
X
X
X#define	TEXTLENGTH	75
X
Xvoid ShowGetText()
X	{
X	char	mybuffer[TEXTLENGTH];
X
X		/* Note that the buffer you pass to GetString must be initialized.  */
X		/* If you don't want any text to appear by default, just put a zero */
X		/* at the beginning of the array. */
X
X	strcpy(mybuffer, "The default text.");
X	if (GetString(mybuffer, "Type anything, then hit return.", (struct Window *)0L, 50L, (long)TEXTLENGTH))
X		SimpleRequest("I'll bet you typed:\n"
X					  "'%s'.", mybuffer);
X	else
X		SimpleRequest("You didn't enter anything!");
X	}
X
X
X
Xvoid ShowGetLong()
X	{
X	struct GetLongStruct	mygetlongstruct;
X
X	mygetlongstruct.titlebar = "Enter a number.";
X	mygetlongstruct.defaultval = 1234;
X	mygetlongstruct.minlimit = -100000;
X	mygetlongstruct.maxlimit = 100000;
X	mygetlongstruct.window = 0;			/* Must be zeroed or req.lib will use it as a window pointer. */
X	mygetlongstruct.versionnumber = 0;
X	mygetlongstruct.flags = 0;
X	mygetlongstruct.rfu2 = 0;
X	if (GetLong(&mygetlongstruct))
X		SimpleRequest("You entered the number '%ld'.", mygetlongstruct.result);
X	else
X		SimpleRequest("You didn't enter a number.");
X	}
X
X
X
Xvoid quit_cleanup(message)
Xchar *message;
X	{
X	if (window)
X		CloseWindow(window);
X	if (screen)
X		CloseScreen(screen);
X	if (ReqBase)
X		{
X		PurgeFiles(&MyFileReqStruct);	/* Only necessary if the FRQCACHINGM flag */
X		PurgeFiles(&MyFontReqStruct);	/* is set in the file requester structure. */
X		CloseLibrary(ReqBase);
X		}
X	if (GfxBase)
X		CloseLibrary(GfxBase);
X	if (IntuitionBase)
X		CloseLibrary(IntuitionBase);
X	if (message)
X		puts(message);
X	exit(0);
X	}
X
X
X
Xvoid _abort()
X	{
X	quit_cleanup("User abort requested.");
X	}
X
X
X
Xvoid bye()
X	{
X	myprocess->pr_WindowPtr = olderrorwindow;
X	quit_cleanup((char *)0);
X	}
X
X
X
Xstruct gadgetandfunction
X	{
X	char	*gadgettext;
X	void	(*functionpointer)();
X	};
X
Xstruct gadgetandfunction gadgetlist[] =
X	{
X		{
X		"Show the file requester.",
X		ShowFileRequester,
X		},
X		{
X		"Show the color requester.",
X		ShowColorRequester,
X		},
X		{
X		"Show a simple text requester.",
X		ShowSimpleText,
X		},
X		{
X		"Show a two gadget requester.",
X		ShowTwoGadText,
X		},
X		{
X		"Show a three gadget requester.",
X		ShowThreeGadText,
X		},
X		{
X		"Show the font requester.",
X		ShowFontRequester,
X		},
X		{
X		"Show the 'get text' requester.",
X		ShowGetText,
X		},
X		{
X		"Show the 'get number' requester.",
X		ShowGetLong,
X		},
X
X		{
X		"Exit the demo.",
X		bye,
X		},
X	};
X
X#define	NUMGADGETS	(sizeof(gadgetlist) / sizeof(struct gadgetandfunction))
X
Xstruct GadgetBlock	gadgetblocks[NUMGADGETS];
X
Xvoid main()
X	{
X	short	x, y, gadgetnum;
X	struct IntuiMessage	messagecopy, *message;
X	struct Gadget		*gadgetpointer;
X
X		/* First we do the usual opening up of libraries, pretty standard stuff. */
X
X	if (!(IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 33L)))
X		quit_cleanup("Requires 1.2 operating system.");
X
X	if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 33L)))
X		quit_cleanup("Couldn't open graphics.");
X
X	if (!(ReqBase = (struct ReqBase *)OpenLibrary("req.library", 0L)))
X		quit_cleanup("Couldn't open the req library.");
X
X		/* Then we open up a nice 640 by 200, three bitplane screen.  This demo */
X		/* can be easily modified to work on the workbench screen.  Simply */
X		/* take out the open screen command, and change the NewWindow Type field */
X		/* to WBENCHSCREEN.  All of the requesters will then open on the */
X		/* workbench screen. */
X
X	if (!(screen = (struct Screen *)OpenScreen(&ns)))
X		quit_cleanup("Couldn't open screen.");
X
X	for (gadgetnum = 0; gadgetnum < NUMGADGETS; gadgetnum++)
X		{
X		x = GADGETSTARTX + (gadgetnum & 1) * (WIDTH / 2);
X		y = GADGETSTARTY + (gadgetnum / 2) * 20;
X		LinkGadget(&gadgetblocks[gadgetnum], gadgetlist[gadgetnum].gadgettext, &nw, (long)x, (long)y);
X		gadgetblocks[gadgetnum].Gadget.GadgetID = gadgetnum;
X		}
X
X		/* Find the address of the last gadget added, the 'goodbye' gadget */
X		/* and adjust it so that it appears in the middle at the top. */
X	gadgetpointer = &gadgetblocks[NUMGADGETS-1].Gadget;
X	gadgetpointer->TopEdge = 20;
X	gadgetpointer->LeftEdge = (WIDTH - gadgetpointer->Width) / 2;
X
X	nw.Screen = screen;
X	if (!(window = (struct Window *)OpenWindow(&nw)))
X		quit_cleanup("Couldn't open window.");
X
X		/* Now we set the pr_WindowPtr field in our process structure to */
X		/* point at our window so that DOS requesters and requester library */
X		/* requestes will open up on our custom screen, instead of on the */
X		/* workbench screen. NOTE!!!!!  It is VERY important that you restore */
X		/* this variable before the program exits.  This is why I make a copy */
X		/* of the previous value before I change it.  IF YOU DON'T RESTORE IT */
X		/* when you exit, NASTY THINGS WILL HAPPEN!! (but only sometimes).  */
X		/* If you execute a program WITHOUT using the 'run' command and it */
X		/* sets the pr_WindowPtr to point at it's window, and then exits */
X		/* without restoring it, the next DOS requester for that process will */
X		/* try to come up on a screen that NO LONGER EXISTS - which will probably */
X		/* BLOW UP YOUR MACHINE!  The pr_WindowPtr is restored in the bye() */
X		/* routine. */
X
X	myprocess = (struct Process *)FindTask((char *)0);
X	olderrorwindow = myprocess->pr_WindowPtr;
X	myprocess->pr_WindowPtr = (APTR)window;
X
X		/* Now we enter our main processing loop.  All we do is wait for */
X		/* GADGETUP messages (the only kind the IDCMP port is set to */
X		/* receive) and call the function associated with each gadget */
X		/* that the user presses.  One of those gadgets is an exit */
X		/* gadget which calls the 'bye' routine, which frees up all */
X		/* resources and exits.  This is how this loop, which seems to */
X		/* never terminate, terminates. */
X
X	while (TRUE)
X		{
X		WaitPort(window->UserPort);
X		message = (struct IntuiMessage *)GetMsg(window->UserPort);
X		messagecopy = *message;
X		ReplyMsg((struct Message *)message);
X		gadgetnum = ((struct Gadget *)(messagecopy.IAddress))->GadgetID;
X
X		gadgetlist[gadgetnum].functionpointer();
X		}
X	}
END_OF_FILE
if test 13729 -ne `wc -c <'showoffreq.c'`; then
    echo shar: \"'showoffreq.c'\" unpacked with wrong size!
fi
# end of 'showoffreq.c'
fi
echo shar: End of archive 2 \(of 3\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 3 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 3 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
Mail comments to the moderator at <amiga-request@uunet.uu.net>.
Post requests for sources, and general discussion to comp.sys.amiga.