[comp.sources.amiga] v91i062: SmallIFFParse.library - Small IFF Parser library, Part01/02

amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (03/14/91)

Submitted-by: Michael Jansson <mij@IDA.LiU.SE>
Posting-number: Volume 91, Issue 062
Archive-name: libraries/smalliffparse/part01

[ includes uuencoded libraries and executables  ...tad ]

This archive contains files that when compiled will produce a standard amiga
library that is an exact sub-set of the iffparse.library. 

The library is an EXACT sub-set in the sense that you can rename it to be
iffparse.library and put it in your LIBS:  directory and then let programs
that normally requires the true iffparse.library use this imposture ;-).

It is an exact SUB-SET because some of the function does only exist as dummy
functions that always fails (noop:s) and some of the function only supports
some of the functionality of the real thing.  The big difference is that
only DOS-files and the Clipboard can be used as input/output and that the
parser can only be used in the raw-step mode (No StopOnExit, StopChunk
etc).  Look in the code for more details.

Do you want to know how to use the functions?  Read the code ;-) or buy
the autodocs for the iffparser.

I have included a few programs that illustrates the use of the iffparser.
They will work with both the small and the real iffparser.

#!/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 1 (of 2)."
# Contents:  ReadMe SafeSmallIF.uu SmallIFFPar.uu binaries
#   binaries/cutclip.uu binaries/lsclip.uu sources sources/cutclip.c
#   sources/handleiff.h sources/iffparse.pra sources/libsup.c
#   sources/lsclip.c sources/makefile sources/pasteclip.c
#   sources/undefs.h
# Wrapped by tadguy@ab20 on Wed Mar 13 20:46:15 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'ReadMe' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ReadMe'\"
else
echo shar: Extracting \"'ReadMe'\" \(3959 characters\)
sed "s/^X//" >'ReadMe' <<'END_OF_FILE'
X              The Small IFF Parser - By Michael Jansson
X
X
XWHAT IS IT?
X
XThis archive contains files that when compiled will produce a standard amiga
Xlibrary that is an exact sub-set of the iffparse.library. 
X
XThe library is an EXACT sub-set in the sense that you can rename it to be
Xiffparse.library and put it in your LIBS:  directory and then let programs
Xthat normally requires the true iffparse.library use this imposture ;-).
X
XIt is an exact SUB-SET because some of the function does only exist as dummy
Xfunctions that always fails (noop:s) and some of the function only supports
Xsome of the functionality of the real thing.  The big difference is that
Xonly DOS-files and the Clipboard can be used as input/output and that the
Xparser can only be used in the raw-step mode (No StopOnExit, StopChunk
Xetc).  Look in the code for more details.
X
XDo you want to know how to use the functions?  Read the code ;-) or buy
Xthe autodocs for the iffparser.
X
XI have included a few programs that illustrates the use of the iffparser.
XThey will work with both the small and the real iffparser.
X
XTHE CONTENT
X
XI have included two versions of the library:  SafeSmallIFFParse.library and
XSmallIFFParse.library.  The 'safe' version will prompt you for a reply
Xwhenever a program opens the library.  The unsafe version will offer its
Xservices to any programs that wants it.  Properly written program will in
Xworst case notice that the library can't do some of the true library's
Xfunctions and should just fail.
X
XThe programs I have included will manipulate the clipboard.  They are
Xcalled LsClip, CutClip and PasteClip and they will list the IFF-content, 
Xput some text in the clipboard and paste text from the clipboard.
X
X
XHOW DO I USE IT
X
XThe library is used by renaming one of the versions to 'iffparse.library'
X(IMPORTANT!) and then put it in LIBS:.
X
XYou need 2.0 includes to re-compile the library and the programs and
XManx C-compiler and the libstart.asm file that comes with Manx 5.0.
X
X
XLEGALITY
X
XThis library has NOT been written by any means of reverse engineering or
Xdisassembling of the true library.  The only thing I have 'stolen' is the
Xspecification and the library offsets (I assume that anyone may use them in
Xthis way once you have purchased them from SAS, Manx, CATS or what-ever).
XI find no ethical problems with this and since it has been done before in
Xsome sense (remember arp?) I guess it is ok to do so.  The people I have
Xbeen in contact with feel the same way so I assume that I am not violating
Xany copyrights.
X
XThe code is in Public Domain so you may use it or abuse it in any way you
Xwant, and I assume that I will get the proper credits if you do (a kind
Xword or a beer will do ;-).
X
X
XWHO NEEDS IT?
X
XIf you have legally required the true iffparse.library then you don't want
Xto use this library because it is only a inferior sub-set of it, unless you
Xare interested in saving some disk space.  If you don't have the true
Xiffparse.library then you might find that some programs that uses the
Xiffparse.library works with this sub-set.  In either case you might want to
Xuse the code to port 2.0 programs that uses the iffparser to be usable
Xwithout the library.
X
X
XGUARANTEES
X
XSorry, there is no such thing.  If it blows up then it blows up - Don't
Xblame me ;-).  I am using the library with another project of mine where I
Xam using both the clipboard and files to read write very complex IFF:s.  My
Xprograms works equally good with the real thing and my substitute both under
Xnormal circumstances and when error occurs.
X
XI practice safe programming ;-) which means that I check every function
Xthat might fail and I deallocate and closes all resources that was
Xallocated or opened in the code (this is obvious of course) so the code
Xwill probably work in both normal and extreme circumstances.
X
X
XMISSING THINGS?
X
XHave I missed something essential in the library?  Let me know and I might
Xfix it.
X
X
X!(c) 1991, Michael Jansson.
XE-Mail: mij@ida.liu.se
END_OF_FILE
if test 3959 -ne `wc -c <'ReadMe'`; then
    echo shar: \"'ReadMe'\" unpacked with wrong size!
fi
# end of 'ReadMe'
fi
if test -f 'SafeSmallIF.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'SafeSmallIF.uu'\"
else
echo shar: Extracting \"'SafeSmallIF.uu'\" \(7337 characters\)
sed "s/^X//" >'SafeSmallIF.uu' <<'END_OF_FILE'
Xbegin 666 SafeSmallIFFParse.library
XM```#\P`````````#``````````(```02````F0````$```/I```$$DCG`"`D@
XM;P`()6\`#``B%7P`"0`(0>R`RB5(``H5?``&``YP`!`Z#3<U0``4-7P`*``6D
XM0>R`VR5(`!AP`4S?!`!.=4CG(``O#$ZY```-R'0!+PYP`$/Z`6TL;():3J[]0
XMV"Q?*4""8F8*<``H7TS?``1.=4CG,#)V4"0\```!0'(`(#P`(```0>R!0B9(-
XM0>R!+B1(0>R!&B)(D<@L;()B3J[^I$S?3`PD`"\.(FR"8BQL@EI.KOYB+%]*H
XM@F8$<`!@JE)N`"`@3M'\````#G``$!`(@``#$(`@#F"02.<@`"\,3KD```W(^
XM=``&;O__`"!*;@`@9A9P`!`N``X(```#9PHO#DZN_^XL7R0`(`(H7TS?``1.-
XM=4CG,``O#$ZY```-R'0`2FX`(&90)"X`(B\.(E<L;():3J[_!"Q?,"X`$-!N!
XM`!("@```__\F`"\.(`,@5W(`,B@`$$2!TI<B02QL@EI.KO\N+%\O#B)L@EXL[
XM;():3J[^8BQ?8`P@3M'\````#@C0``,@`BA?3-\`#$YU=&]P87HN9F]N=`!5*
XM<V4@4VUA;&PM249&4&%R<V4N;&EB<F%R>3\`1&\@:70A`$]H(&YO(0!I;G1UV
XM:71I;VXN;&EB<F%R>0``2.<P("1O`!`F+P`4#&H``@`09A`@4B!0T?P````LJ
XMUY!T`&`>2.<P`G8`)"\`!"(2+&R"7DZN_[Y,WT`,)`!O`G0`(`),WP0,3G5(4
XMYS`P)&\`%"9O`!@F+P`<#&H``@`09CP@4B!0,7P``P`<(%(@4"%+`"@@4B!0\
XM(4,`)"\.(%(B4"QL@EI.KOXX+%\@4B!0$"@`'TB`1$!(P"0`8!I(YS`")B\`[
XM!"0+(A(L;()>3J[_T$S?0`PD`$J";P)T`"`"3-\,#$YU2.<P,"1O`!0F;P`8!
XM)B\`'`QJ``(`$&90(%(@4#%\``(`'"!2(%`A2P`H(%(@4"%#`"0O#B!2(E`L)
XM;():3J[^."Q?(%(@4$HH`!]F"B!2(%`D*``@8!`@4B!0$"@`'TB`1$!(P"0`7
XM8!I(YS`")B\`!"0+(A(L;()>3J[_UDS?0`PD`"`"3-\,#$YU2.<@("1O``P,]
XM:@`"`!!F&"!2(%`(*````"]G""!2(%!2J``L=`!@-DCG,`)V`'0`(A(L;()>S
XM3J[_ODS?0`QR`DZZ#$QG&$CG,`)V`'0!(A(L;()>3J[_ODS?0`PD`$J";P)T`
XM`"`"3-\$!$YU+PQ.N0``#<@O""!7,7P``@`0<`!83RA?3G4O#$ZY```-R"\(+
XM(%<Q?``!`!!P`%A/*%].=4CG("`O#$ZY```-R$CG@(`D;P`$)!="J@`((&H`;
XM#`)0``$E0@`$#&H``@`09BI*@F8,(%(@4#%\``(`'&`*(%(@4#%\``,`'"!27
XM(%!"J``L(%(@4$*H`#!P`%!/*%],WP0$3G5.5?_T2.<`("\,3KD```W(*TC_\
XM_"1M__P,:@`"`!!F="`J``0"@`````$,@`````%F("!2(%`Q?``$`!PK3O_XM
XM(%(B4"QL@EI.KOXX+&W_^&!"(%(@4$JH`"!G."!2(%!**``?9BY![?_X(E(B1
XM42-(`"@@4B!0(7P````$`"0K3O_T(%(B4"QL@EI.KOXX+&W_]&"^*%],WP0`A
XM3EU.=4CG`"`O#$ZY```-R)7*+PXB/``!``%P*BQL@EI.KO\Z+%\D0$J`9@IPL
XM`"A?3-\$`$YU+PYR`"`\```$`"QL@EI.KO\Z+%\E0``,9A(O#G`J(DHL;():<
XM3J[_+BQ?E<H@"F#(2.<`("\,3KD```W(+P@D5R`*9RQ*J@`,9Q8O#B`\```$4
XM`")J``PL;():3J[_+BQ?+PYP*B)*+&R"6DZN_RXL7UA/*%],WP0`3G5(YP`@:
XM+PQ.N0``#<@O`)7*+PXB/``!``!P#"QL@EI.KO\Z+%\D0$J`9V9"IT*G3KH(.
XM0"5```103V=60J="ITZZ"#`E0``(4$]G1DAX`#0O*@`$3KH)-B2`4$]G-"\.#
XM<@`B4B`O``1!^@=@+&R"6DZN_D0L7TJ`9PPO$DZZ"5I"DEA/8`P@"EA/*%],,
XMWP0`3G4O#B!*3J[_!"Q?<`!@Z$CG`"`O#$ZY```-R"\()%=*DF<8+PXB4BQL+
XM@EI.KOX^+%\O$DZZ"1)"DEA/2JH`!&<*+RH`!$ZZ"%983TJJ``AG"B\J``A.M
XMN@A&6$\@"F<0+PYP#")*+&R"6DZN_RXL7UA/*%],WP0`3G4O#$ZY```-R$CG#
XM@,!P_T_O``PH7TYU+PQ.N0``#<A(Y^"`<`!/[P`0*%].=4CG`"`O#$ZY```-/
XMR$CG@(`D;P`$))="*@`$(`I03RA?3-\$`$YU2.<`("\,3KD```W(+P!!UR1(4
XM$!)(@#\`3KH&Z$I`5$]F!@P2`"!F4A`J``%(@#\`3KH&T$I`5$]F"`PJ`"``_
XM`68X$"H``DB`/P!.N@:V2D!43V8(#"H`(``"9AX0*@`#2(`_`$ZZ!IQ*0%1/X
XM9@@,*@`@``-F!'`!8`)P`$C`6$\H7TS?!`!.=4CG`"`O#$ZY```-R"\`0=<DM
XM2!`22(`_`$ZZ!F!*0%1/9@8,$@`@9E(0*@`!2(`_`$ZZ!DA*0%1/9@@,*@`@W
XM``%F.!`J``)(@#\`3KH&+DI`5$]F"`PJ`"```F8>$"H``TB`/P!.N@842D!49
XM3V8(#"H`(``#9@1P`6`"<`!(P%A/*%],WP0`3G5(YR`@+PQ.N0``#<A(YX#`@
XM)&\`!"07+P(O+P`,+PI.NOHB2H!/[P`,9PYP^T_O``PH7TS?!`1.=2!J``C1H
XMR-'J``PP$.)(`H```/__T(+C2`)0``&!4'``8-)(YS`P+PQ.N0``#<A(YX#`1
XM)&\`!"9O``@D%R`+9@YP]T_O``PH7TS?#`Q.=4J"9QH@*@`(T(`@:@`,,#`(Y
XM`.)(`H```/__L()L&"`J``C0@"!J``PP,`@`XD@"@```__\D`"\"+PLO"DZZZ
XM^?HF`$_O``QN#$J#9@1P_V"D</M@H"!J``C1R-'J``PP$.)(`H```/__D(+C#
XM2`)0``&!4"`J``C0@"!J``PP,`@`XDAF$B\*3KKZ.DJ`6$]G!G#V8`#_8"`"(
XM8`#_6DY5_^Q(YP`@+PQ.N0``#<A([0$'__`D;?_\*VW_\/_L2'@`"$AM__0OV
XM"DZZ^/1*@$_O``QG#'#Z*%],WP0`3EU.=4JM_^QG-DAX``1(;?_L+PI.NOC,[
XM2H!/[P`,9P1P^F#64JH`""`J``C0@"!J``P"<``!"```<``("`!@%%*J``@@N
XM*@`(T(`@:@`,`G```0@`<`!@HDY5__A(YR`@+PQ.N0``#<@K2/_\)&W__"`JI
XM``C0@"!J``PP,`@`XD@"@```__\D`"`"1(!9@"\`+PI.NO@$2H!03V<,</DH\
XM7TS?!`1.74YU("H`"-"`(&H`##`P"`#B2`*```#__RM`__A(>``$2&W_^"\*5
XM3KKX%$J`3^\`#&<$</M@PDJJ``AG.E.J``@@:@`(T<C1Z@`,,!#B2`*```#_?
XM_R(J``C2@2)J``PR,1@"XDD"@0``___0@5"`XT@"4``!@5`O`B\*3KKW=DJ``
XM4$]G!G#Y8`#_<"`J``C0@"!J``PP,`@"XD@(````9S9(>``!2'H"PB\*3KKWT
XMD$J`3^\`#&<&</M@`/\^("H`"-"`(&H`#-'`,!#B2%)`XT@"4``!@5!P`&``]
XM_QY.5?_H2.<@("\,3KD```W(2.T!`?_X)&W__$*M__0,K0````+_^&8``C9*C
XMJ@`(9R8@*@`(T(`@:@`,,#`(`.)(9A13J@`(0JH`&G#^*%],WP0$3EU.=4JJ8
XM``AG7B`J``C0@"!J``PP,`@``D```69*0JH`&B`J``C0@"!J``PP,`@`XD@B2
XM*@`(TH$@:@`,,C`8`.))`D$``=!!`H```/__+P`O"DZZ]G!*@%!/9P1P^6":B
XM4ZH`"'#^8))(>``$2&W_\"\*3KKW%B0`3^\`#&X02H)F!G#_8`#_='#[8`#_+
XM;BM._^@@+?_P3J[^_BQM_^A*@&8&</9@`/]42'@`!$AM_^PO"DZZ]M8D`$_OD
XM``QN$$J"9@9P_V``_S1P^V``_RX,K49/4DW_\&<>#*U04D]0__!G%`RM0T%42
XM(/_P9PH,K4Q)4U3_\&8<2'@`!$AM__0O"DZZ]HA*@$_O``QN!G#[8`#^ZDJM#
XM__1G<"!J``C1R-'J``PP$.)(`H```/__+P!R`B`M_^Q.N@-LT*W_[%"`(A^2#
XM@.-)`E```8-0("W_[%F`XTA2J@`((BH`"-*!(&H`#`)P``$8`(%P&``@*@`(U
XMT(`@:@`,`G#__@@``'```0@`)6W_]``>8&`@:@`(T<C1Z@`,,!#B2`*```#_6
XM_R\`<@(@+?_L3KH"_-"M_^Q0@"(?DH#C20)0``&#4"`M_^SC2%*J``@B*@`(X
XMTH$@:@`,`G```1@`@7`8`"`J``C0@"!J``P"</_^"``E;?_P`!HE;?_L`")*P
XMK?_T9P1P!&`"<`!(P"5``"9P`&``_?!P_V``_>HO#$ZY```-R"\((!<&@```B
XM`!)83RA?3G5C;&EP8F]A<F0N9&5V:6-E``!P`$YU2OP```U2```-;(`!"0``L
XM``#(````V0```+@``$CG__Y(YX"`85!#[():0>R"6K')9@XR/``":PAP`"+`<
XM4<G__"E.@EI#^@`D3J[^:"E`@EYF#"X\``.`!TZN_Y1@!$ZZ\DY03TS??_].K
XM=61O<RYL:6)R87)Y`$GY``!__DYU,"\`!$'L@5<0,```2(`"0``#3G5(YR`P7
XM)F\`$$CG``)P_RQL@EI.KOZV3-]``"0`#(#_____9@AP`$S?#`1.=4CG``(BO
XM/``!``%P(BQL@EI.KO\Z3-]``"1`2H!F%DCG``(@`BQL@EI.KOZP3-]``'``:
XM8,8E2P`*%6\`%P`)%7P`!``(0BH`#A5"``](YP`"D\DL;():3J[^VDS?0``EF
XM0``0(`MG%$CG``(B2BQL@EI.KOZ>3-]``&`0($K1_````!0O"$ZZ`9Y83R`*T
XM8`#_;$CG`"`D;P`(2JH`"F<22.<``B)*+&R"6DZN_IA,WT``%7P`_P`()7S_R
XM____`!1(YP`"<``0*@`/+&R"6DZN_K!,WT``2.<``G`B(DHL;():3J[_+DS?[
XM0`!,WP0`3G5(YR`P)F\`$"0O`!0@"V8(<`!,WPP$3G5(YP`"(CP``0`!(`(LC
XM;():3J[_.DS?0``D0$J`9@1P`&#8%7P`!0`(-4(`$B5+``X@"F#&2.<`("1O_
XM``@@"F8&3-\$`$YU%7P`_P`()7S_____`!0E?/____\`&$CG``)P`#`J`!(B]
XM2BQL@EI.KO\N3-]``&#*2.=(`$*$2H!J!$2`4D1*@6H&1($*1``!83Y*1&<"P
XM1(!,WP`22H!.=4CG2`!"A$J`:@1$@%)$2H%J`D2!81H@`6#8+P%A$B`!(A]*\
XM@$YU+P%A!B(?2H!.=4CG,`!(04I!9B!(038!-`!"0$A`@,,B`$A`,@*"PS`!V
XM0D%(04S?``Q.=4A!)@$B`$)!2$%(0$)`=`_0@-.!MH%B!)*#4D!1RO_R3-\`0
XM#$YU(&\`!""(6)!"J``$(4@`"$YU``````/L````&`````````!*````X@``'
XM`1P```.6```#L````\X```0V```$T```!3(```5\```&&@``!H````:6```&(
XML```!M8```=>```'Y@``"$````D,```)H@``"LP```TH```-5```#5@````$[
XM`````0``#6````UD```-:```#<H````````#\@```^H```"6````0@```-H`_
XM``$4````````!,@```/&```*P```!"H```4J```(.```!]X```9\```&?```Z
XM"0````F6```&?```!GP```9\```&?```!GP```9\```&?```!GP```9\```&`
XM?```!I(```:2```&D@``#20```:2```&D@``!GP```9\```&?```!I(```9\%
XM```&?```!GP```.L```#D@``!70```82```&S@``!U8```:H_____P```"8`:
XM````````````#6YI9F9P87)S92YL:6)R87)Y`%-U8G-E="!O9B!T:&4@:69F/
XM<&%R<V4N;&EB<F%R>2`M($)Y($UI8VAA96P@2F%N<W-O;@T*``````&.``D`D
XM`?__````)``0`````````9D`````__\````'``0````````!M0````#__P``*
XM``<`!````1````&\```````@("`@("`@("`P,#`P,"`@("`@("`@("`@("`@I
XM("`@()!`0$!`0$!`0$!`0$!`0$`,#`P,#`P,#`P,0$!`0$!`0`D)"0D)"0$!`
XM`0$!`0$!`0$!`0$!`0$!`0$!0$!`0$!`"@H*"@H*`@("`@("`@("`@("`@("L
XM`@("`@)`0$!`(```````````````````````````````````````````````J
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM```````````#[`````(````!````O````4@````Q```````````````$````L
XM"````!`````4````&````!P````@````)````"@````L````,````#0````X4
XM````/````$````!$````2````$P```!0````5````%@```!<````8````&0`P
XM``!H````;````'````!T````>````'P```"`````A````(@```",````D```4
XM`)0```"8````G````*````"D````J````*P```"P````Q````1````$D```!+
X9.````4P````````#\@```^L````!```#\JP`*
X``
Xend
Xsize 5200
END_OF_FILE
if test 7337 -ne `wc -c <'SafeSmallIF.uu'`; then
    echo shar: \"'SafeSmallIF.uu'\" unpacked with wrong size!
fi
# end of 'SafeSmallIF.uu'
fi
if test -f 'SmallIFFPar.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'SmallIFFPar.uu'\"
else
echo shar: Extracting \"'SmallIFFPar.uu'\" \(8345 characters\)
sed "s/^X//" >'SmallIFFPar.uu' <<'END_OF_FILE'
Xbegin 666 SmallIFFParse.library
XM```#\P`````````#``````````(```3=````AP````$```/I```$W4Y5``!(<
XMYP`@)&T`""5M``P`(DZZ$&I(>@!&3KH2YA5\``D`"$'L@,HE2``*%7P`!@`.?
XM<``0.@_=-4``%#5\`"@`%D'L@-LE2``82'H`&4ZZ$K)P`5!/3-\$`$Y=3G5?>
XM;6%I;@H`7VUA:6X*`$Y5__PK0/_\+PQ.N0``$'Y.NA``2'H`*DZZ$GQ2;@`@+
XM0>X`#G``$!`(@``#$(!(>@`83KH28B`.4$\H7TY=3G5M>4]P96X*`&UY3W!E,
XM;@H`3E7_^$CG(``K0/_\+PQ.N0``$'YT`$ZZ#ZI(>@!&3KH2)@9N__\`($IN>
XM`"!83V8<<``0+@`."````V<0*T[_^'``3J[_[BQM__@D`$AZ`!U.NA'T(`)8J
XM3RA?3-\`!$Y=3G5M>4-L;W-E"@!M>4-L;W-E"@!.5?_X2.<P`"M`__PO#$ZY@
XM```0?G0`3KH/-DAZ`(Q.NA&R2FX`(%A/9F`D+@`B*T[_^")M__@L;((63J[_"
XM!"QM__@P+@`0T&X`$G(`,@`F`2M.__@@`R!M__AR`#(H`!!$@=*M__@B02QL&
XM@A9.KO\N+&W_^"M.__@B;((:+&R"%DZN_F(L;?_X8`A![@`."-```TAZ`!].V
XMNA$Z(`)83RA?3-\`#$Y=3G5M>45X<'5N9V4*`&UY17AP=6YG90H`3E7_^$CG;
XM,"`D;0`()BT`#$ZZ#GY(>@!,3KH0^@QJ``(`$%A/9A`@4B!0T?P````LUY!T7
XM`&`B2.T`#/_X=@`D+?_\(A(L;((:3J[_ODSM``S_^"0`;P)T`"`"3-\$#$Y=J
XM3G53965K4W1R96%M"@!.5?_X2.<P,"1M``@F;0`,)BT`$$ZZ#@Q(>@!V3KH0W
XMB`QJ``(`$%A/9C@@4B!0,7P``P`<(%(@4"%+`"@@4B!0(4,`)"!2(E`L;((6W
XM3J[^."!2(%`0*``?2(!$0$C`)`!@'DCM``S_^"8M__PD"R(2+&R"&DZN_]!,5
XM[0`,__@D`$J";P)T`"`"3-\,#$Y=3G57<FET95-T<F5A;0H``$Y5__A(YS`P"
XM)&T`""9M``PF+0`03KH-;DAZ`(1.N@_J#&H``@`06$]F3"!2(%`Q?``"`!P@3
XM4B!0(4L`*"!2(%`A0P`D(%(B4"QL@A9.KOXX(%(@4$HH`!]F"B!2(%`D*``@W
XM8!`@4B!0$"@`'TB`1$!(P"0`8!Y([0`,__@F+?_\)`LB$BQL@AI.KO_63.T`&
XM#/_X)``@`DS?#`Q.74YU4F5A9%-T<F5A;0H`3E7_^$CG("`D;0`(3KH,S$AZP
XM`'9.N@](#&H``@`06$]F&"!2(%`(*````"]G""!2(%!2J``L=`!@/DCM``S_,
XM^'8`=``B$BQL@AI.KO^^3.T`#/_X<@).N@YN9QQ([0`,__AV`'0!(A(L;((:%
XM3J[_ODSM``S_^"0`2H)O`G0`(`),WP0$3EU.=4%L:6=N4W1R96%M"@``3E7_0
XM_"M(__PO#$ZY```0?DZZ##)(>@`:3KH.KB!M__PQ?``"`!!P`%A/*%].74YUS
XM26YI=$E&1F%S0VQI<`H``$Y5__PK2/_\+PQ.N0``$'Y.N@OR2'H`&DZZ#FX@P
XM;?_\,7P``0`0<`!83RA?3EU.=4EN:71)1D9A<T1/4PH`3E7_^$CG("!([0$!?
XM__@O#$ZY```0?B1M__PD+?_X3KH+IDAZ`%9.N@XB0JH`""!J``P"4``!)4(`H
XM!`QJ``(`$%A/9BI*@F8,(%(@4#%\``(`'&`*(%(@4#%\``,`'"!2(%!"J``L^
XM(%(@4$*H`#!P`"A?3-\$!$Y=3G5/<&5N249&"@``3E7_^$CG`"`K2/_\+PQ.E
XMN0``$'XD;?_\3KH+*$AZ`'Y.N@VD#&H``@`06$]F9"`J``0"@`````$,@```=
XM``%F&"!2(%`Q?``$`!P@4B)0+&R"%DZN_CA@.B!2(%!*J``@9S`@4B!02B@`M
XM'V8F0>W_^")2(E$C2``H(%(@4"%\````!``D(%(B4"QL@A9.KOXX8,8H7TS?/
XM!`!.74YU0VQO<V5)1D8*`$Y5__Q(YP`@*T#__"\,3KD``!!^3KH*ADAZ`%1.F
XMN@T"E<HB/``!``%P*BQL@A9.KO\Z)$!*@%A/9@QP`"A?3-\$`$Y=3G5R`"`\P
XM```$`"QL@A9.KO\Z)4``#&8.<"HB2BQL@A9.KO\NE<H@"F#.06QL;V-)1D8*N
XM`$Y5__Q(YP`@*TC__"\,3KD``!!^)&W__$ZZ"@I(>@`Z3KH,AB`*6$]G)$JJY
XM``QG$B`\```$`")J``PL;((63J[_+G`J(DHL;((63J[_+BA?3-\$`$Y=3G5&?
XM<F5E249&"@``3E7_^$CG`"`K0/_\+PQ.N0``$'Z5RDZZ":I(>@":3KH,)BM.C
XM__@B/``!``!P#"QL@A9.KO\Z+&W_^"1`2H!83V=J0J="ITZZ"98E0``$4$]G5
XM6D*G0J=.N@F&)4``"%!/9TI(>``T+RH`!$ZZ"HPD@%!/9S@K3O_X<@`B4B`MT
XM__Q!^@!#+&R"%DZN_D0L;?_X2H!G#"\23KH*K$*26$]@#"`**%],WP0`3EU.S
XM=2!*3J[_!'``8.Q/<&5N0VQI<&)O87)D"@!C;&EP8F]A<F0N9&5V:6-E`$Y5W
XM__Q(YP`@*TC__"\,3KD``!!^)&W__$ZZ"-)(>@!:3KH+3DJ26$]G%")2+&R"_
XM%DZN_CXO$DZZ"C9"DEA/2JH`!&<*+RH`!$ZZ"7I83TJJ``AG"B\J``A.N@EJ3
XM6$\@"F<,<`PB2BQL@A9.KO\N*%],WP0`3EU.=4-L;W-E0VQI<&)O87)D"@!.'
XM5?_T2.T#`?_T+PQ.N0``$'Y.N@A02'H`$$ZZ"LQP_UA/*%].74YU3D]/4`H`E
XM3E7_\$CM`0?_\"\,3KD``!!^3KH((DAZ`!!.N@J><`!83RA?3EU.=4Y53$Q?H
XM3D]/4`H``$Y5__A(YP`@2.T!`?_X+PQ.N0``$'XD;?_\3KH'YDAZ`!Q.N@IB`
XM)*W_^$(J``0@"EA/*%],WP0`3EU.=4E$=&]3='(*``!.5?_\2.<`("M`__POB
XM#$ZY```0?D'M__PD2$ZZ!Z!(>@!\3KH*'!`22(`_`$ZZ!Y9*0%Q/9@8,$@`@^
XM9E(0*@`!2(`_`$ZZ!WY*0%1/9@@,*@`@``%F.!`J``)(@#\`3KH'9$I`5$]F@
XM"`PJ`"```F8>$"H``TB`/P!.N@=*2D!43V8(#"H`(``#9@1P`6`"<`!(P"A?Q
XM3-\$`$Y=3G5';V]D240*`$Y5__Q(YP`@*T#__"\,3KD``!!^0>W__"1(3KH&#
XM_$AZ`'Q.N@EX$!)(@#\`3KH&\DI`7$]F!@P2`"!F4A`J``%(@#\`3KH&VDI`W
XM5$]F"`PJ`"```68X$"H``DB`/P!.N@;`2D!43V8(#"H`(``"9AX0*@`#2(`_2
XM`$ZZ!J9*0%1/9@@,*@`@``-F!'`!8`)P`$C`*%],WP0`3EU.=4=O;V14>7!EL
XM"@!.5?_T2.<@($CM`P'_]"\,3KD``!!^)&W_^"0M__1.N@922'H`1DZZ",XO,
XM`B\M__PO"DZZ^!Q*@$_O`!!G#'#[*%],WP0$3EU.=2!J``C1R-'J``PP$.)(H
XM<@`R`-*"XTD"4``!@U!P`&#65W)I=&5#:'5N:T)Y=&5S"@``3E7_]$CG,#!(R
XM[0,!__0O#$ZY```0?B1M__@F;?_\)"W_]$ZZ!=)(>@"N3KH(3B`+6$]F#'#WF
XM*%],WPP,3EU.=4J"9Q@@*@`(T(`@:@`,,#`(`.)(<@`R`+*";!8@*@`(T(`@I
XM:@`,,#`(`.)(<@`R`"0!+P(O"R\*3KKW^"8`3^\`#&X,2H-F!'#_8*IP^V"FW
XM(&H`"-'(T>H`##`0XDAR`#(`DH+C20)0``&#4"`J``C0@"!J``PP,`@`XDAF6
XM$B\*3KKX6DJ`6$]G!G#V8`#_:"`"8`#_8E)E861#:'5N:T)Y=&5S"@!.5?_LG
XM2.<`($CM`0?_\"\,3KD``!!^)&W__"MM__#_[$ZZ!.Y(>@!\3KH':DAX``A(*
XM;?_T+PI.NO:V2H!/[P`09PQP^BA?3-\$`$Y=3G5*K?_L9S9(>``$2&W_["\*"
XM3KKVCDJ`3^\`#&<$</I@UE*J``@@*@`(T(`@:@`,`G```0@``'``"`@`8!12H
XMJ@`(("H`"-"`(&H`#`)P``$(`'``8*)0=7-H0VAU;FL*``!.5?_X2.<@("M(V
XM__PO#$ZY```0?B1M__Q.N@1(2'H!%$ZZ!L0@*@`(T(`@:@`,,#`(`.)(<@`R"
XM`"0!(`)$@%F`+P`O"DZZ]8Q*@$_O``QG#'#Y*%],WP0$3EU.=2`J``C0@"!J9
XM``PP,`@`XDAR`#(`*T'_^$AX``1(;?_X+PI.NO7`2H!/[P`,9P1P^V#$2JH`-
XM"&<X4ZH`""!J``C1R-'J``PP$.)(<@`R`"`J``C0@")J``PP,0@"XD@"@```]
XM___2@%"!XTD"4``!@U`O`B\*3KKU`$J`4$]G!G#Y8`#_="`J``C0@"!J``PP4
XM,`@"XD@(````9S9(>``!2'H`0"\*3KKU/DJ`3^\`#&<&</M@`/]"("H`"-"`O
XM(&H`#-'`,!#B2%)`XT@"4``!@5!P`&``_R)0;W!#:'5N:PH```!.5?_L2.<@R
XM($CM`0'_^"\,3KD``!!^)&W__$*M__1.N@,$2'H"0$ZZ!8`,K0````+_^%A/%
XM9@`"*$JJ``AG)B`J``C0@"!J``PP,`@`XDAF%%.J``A"J@`:</XH7TS?!`1.>
XM74YU2JH`"&=<("H`"-"`(&H`##`P"``"0``!9DA"J@`:("H`"-"`(&H`##`P.
XM"`#B2"(J``C2@2!J``PR,!@`XDD"00`!T$%R`#(`+P$O"DZZ\^)*@%!/9P1P7
XM^6"<4ZH`"'#^8)1(>``$2&W_\"\*3KKTSB0`3^\`#&X02H)F!G#_8`#_=G#[:
XM8`#_<"`M__!.KO[^2H!F!G#V8`#_7DAX``1(;?_L+PI.NO26)`!/[P`,;A!*!
XM@F8&</]@`/\^</M@`/\X#*U&3U)-__!G'@RM4%)/4/_P9Q0,K4-!5"#_\&<*2
XM#*U,25-4__!F'$AX``1(;?_T+PI.NO1(2H!/[P`,;@9P^V``_O1*K?_T9VX@S
XM:@`(T<C1Z@`,,!#B2'(`,@`@+?_L+P%R`DZZ`X;0K?_L4(`B'Y*`XTD"4``!7
XM@U`@+?_L68#C2%*J``@B*@`(TH$@:@`,`G```1@`@7`8`"`J``C0@"!J``P">
XM</_^"```<``!"``E;?_T`!Y@7B!J``C1R-'J``PP$.)(<@`R`"`M_^PO`7("K
XM3KH#&-"M_^Q0@"(?DH#C20)0``&#4"`M_^SC2%*J``@B*@`(TH$@:@`,`G``6
XM`1@`@7`8`"`J``C0@"!J``P"</_^"``E;?_P`!HE;?_L`")*K?_T9P1P!&`"V
XM<`!(P"5``"9P`&``_?YP_V``_?A087)S94E&1@H`3E7__"M(__PO#$ZY```0*
XM?DZZ`*1(>@`83KH#("`M__P&@````!)83RA?3EU.=4-U<G)E;G1#:'5N:PH`1
XM<`!.=4K\```0"```$"*```D`````R````-D```"X``!(Y__^2.>`@&%00^R"B
XM%D'L@A:QR68.,CP``6L(<``BP%')__PI3H(60_H`)$ZN_F@I0((:9@PN/``#(
XM@`=.KO^48`1.NN^84$],WW__3G5D;W,N;&EB<F%R>0!)^0``?_Y.=3`O``1!C
XM[($3$#```$B``D```TYU2.<@,"9O`!!(YP`"</\L;((63J[^MDS?0``D``R`/
XM_____V8(<`!,WPP$3G5(YP`"(CP``0`!<"(L;((63J[_.DS?0``D0$J`9A9(]
XMYP`"(`(L;((63J[^L$S?0`!P`&#&)4L`"A5O`!<`"15\``0`"$(J``X50@`/!
XM2.<``I/)+&R"%DZN_MI,WT``)4``$"`+9Q1(YP`"(DHL;((63J[^GDS?0`!@'
XM$"!*T?P````4+PA.N@(46$\@"F``_VQ(YP`@)&\`"$JJ``IG$DCG``(B2BQLB
XM@A9.KOZ83-]``!5\`/\`""5\_____P`42.<``G``$"H`#RQL@A9.KOZP3-]`-
XM`$CG``)P(B)*+&R"%DZN_RY,WT``3-\$`$YU2.<@,"9O`!`D+P`4(`MF"'``Y
XM3-\,!$YU2.<``B(\``$``2`"+&R"%DZN_SI,WT``)$!*@&8$<`!@V!5\``4`7
XM"#5"`!(E2P`.(`I@QDCG`"`D;P`((`IF!DS?!`!.=15\`/\`""5\_____P`4:
XM)7S_____`!A(YP`"<``P*@`2(DHL;((63J[_+DS?0`!@RDCG2`!"A$J`:@1$5
XM@%)$2H%J!D2!"D0``6$^2D1G`D2`3-\`$DJ`3G5(YT@`0H1*@&H$1(!21$J!C
XM:@)$@6$:(`%@V"\!81(@`2(?2H!.=2\!808B'TJ`3G5(YS``2$%*068@2$$VT
XM`30`0D!(0(##(@!(0#("@L,P`4)!2$%,WP`,3G5(028!(@!"04A!2$!"0'0/'
XMT(#3@;:!8@22@U)`4<K_\DS?``Q.=7``,"\`!$CG@`(L>``$3J[]_$S?0`%.)
XM=2!O``00&&<$8>1@^$YU809*@&OZ3G4O#BQX``1.KOX"+%].=2)O``A@!$/OR
XM``@@;P`$+PI%^O^X800D7TYU+PXL>``$3J[]]BQ?3G5(YP`P3.\/```,8>9,?
XMWPP`3G4@;P`$((A8D$*H``0A2``(3G4``````^P````8`````````'@```#,^
XM```!0```!$8```2&```$R@``!4P```7R```&:@``!LP```>B```(*```"%8`D
XM``B.```(T@``"78```H>```*F@``"X````PL```-;```#]0``!`*```0#@``2
XM``0````!```0%@``$!H``!`>```0@`````````/R```#Z@```(4```!L````F
XMO````3`````````%X@``!+@```U:```%/```!EH```J(```*#```"!H```@:$
XM```+;@``#!P```@:```(&@``"!H```@:```(&@``"!H```@:```(&@``"!H`3
XM``@:```(2```"$@```A(```/R```"$@```A(```(&@``"!H```@:```(2```_
XM"!H```@:```(&@``!'H```0Z```&O```!Y(```C"```)9@``"'S_____````V
XM)@`````````````0)&EF9G!A<G-E+FQI8G)A<GD`4W5B<V5T(&]F('1H92!IB
XM9F9P87)S92YL:6)R87)Y("T@0GD@36EC:&%E;"!*86YS<V]N#0H````@("`@8
XM("`@("`P,#`P,"`@("`@("`@("`@("`@("`@()!`0$!`0$!`0$!`0$!`0$`,L
XM#`P,#`P,#`P,0$!`0$!`0`D)"0D)"0$!`0$!`0$!`0$!`0$!`0$!`0$!0$!`V
XM0$!`"@H*"@H*`@("`@("`@("`@("`@("`@("`@)`0$!`(```````````````$
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM```````````````````````````````````````````#[`````$````!````Q
XMO````"T```````````````0````(````$````!0````8````'````"`````D1
XM````*````"P````P````-````#@````\````0````$0```!(````3````%``4
XM``!4````6````%P```!@````9````&@```!L````<````'0```!X````?```X
XM`(````"$````B````(P```"0````E````)@```"<````H````*0```"H````<
X=K````+````#$`````````_(```/K`````0```_*<5
X``
Xend
Xsize 5924
END_OF_FILE
if test 8345 -ne `wc -c <'SmallIFFPar.uu'`; then
    echo shar: \"'SmallIFFPar.uu'\" unpacked with wrong size!
fi
# end of 'SmallIFFPar.uu'
fi
if test ! -d 'binaries' ; then
    echo shar: Creating directory \"'binaries'\"
    mkdir 'binaries'
fi
if test -f 'binaries/cutclip.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'binaries/cutclip.uu'\"
else
echo shar: Extracting \"'binaries/cutclip.uu'\" \(6858 characters\)
sed "s/^X//" >'binaries/cutclip.uu' <<'END_OF_FILE'
Xbegin 666 cutclip
XM```#\P`````````#``````````(```0[````AP````$```/I```$.T[Z`LI./
XM5?_`2.<@,"9M``J5R@QM``(`"&<.2'H!HDZZ!JY83V```5!P`$/Z`:HL;('&W
XM3J[]V"E`@<IF#DAZ`:E.N@:,6$]@``$N+&R!RDZN_^(D0$J`9@Y(>@'`3KH&H
XM<%A/8``!$G``+&R!RDZN_PHD@&8.2'H!Q4ZZ!E183V```/8@2BQL@<I.KO\0Y
XM<`$@2BQL@<I.KO_<2H!G#DAZ`<U.N@8L6$]@``#.2&W_Q$ZZ`?A(P"0`6$]FE
XM``"\*T+_P'3_(CQ&3U)-(#Q&5%A4($HL;('*3J[_K"0M_\`D`&P,/P)(;?_$H
XM3KH!SEQ/*T+_P'3_(CQ#2%)3<``@2BQL@<I.KO^L)"W_P"0`;`P_`DAM_\1.&
XMN@&B7$\O*P`$3KH'3EA/2,`B:P`$($HL;('*3J[_OB0`;`P_`DAM_\1.N@%X?
XM7$\@2BQL@<I.KO^F)`!L##\"2&W_Q$ZZ`5Y<3R!*+&R!RDZN_Z8D`&P,/P)(3
XM;?_$3KH!1%Q/(`IG(B!*+&R!RDZN_]!*DF<*(%(L;('*3J[_!"!*+&R!RDZN=
XM_\I*K('*9PPB;('*+&R!QDZN_F)"9TZZ#2Y43TS?#`1.74YU57-A9V4Z($-U0
XM=$-L:7`@6W-T<FEN9UT`:69F<&%R<V4N;&EB<F%R>0!%<G)O<B!I;B!C=71CN
XM;&EP.B!#;W5L9"!N;W0@;W!E;B!I9F9P87)S92YL:6)R87)Y(0!%<G)O<B!I@
XM;B!C=71C;&EP.B!/=70@;V8@;65M;W)Y(0!%<G)O<B!I;B!C=71C;&EP.B!#5
XM;W5L9"!N;W0@;W!E;B!T:&4@8VQI<&)O87)D(0!%<G)O<B!I;B!C=71C;&EP>
XM.B!#;W5L9"!N;W0@;W!E;B!P<FEM87)Y(&-L:7`@:6X@8VQI<&)O87)D(0``H
XM(!\@5TC0_O\@0'``3M`@;P`$,"\`"&8"<`%,Z/[^``0@4$[0*D]A<D/L@<9%5
XM[('&M<EF#C(\`!5K"'0`(L)1R?_\*4^!SBQX``0I3H'&2.>`@`@N``0!*6<0_
XM2_H`"$ZN_^)@!D*G\U].<T/Z`").KOYH*4"!TF8,+CP``X`'3J[_E&`&*D].K
XMN@`:4$].=61O<RYL:6)R87)Y`$GY``!__DYU2.<`($CG``(B/``!```P+(&Z7
XMP?P`!BQL@<9.KO\Z3-]``"E`@=9F'DCG`0:;S2X\``$``"QL@<9.KO^43-]@(
XM@"YL@<Y.=2!L@=9":``$(&R!UC%\``$`$"!L@=8Q?``!``H@;('.("R!SI"HG
XM``10@"E`@=H@;(':(+Q-04Y82.<``I/)+&R!QDZN_MI,WT``)$!*J@"L9SHO.
XM+P`,+R\`#"\*3KH!"CE\``&!WB!L@=98B#`0",``#S"`(&R!UM'\````"C`0*
XM",``#S"`3^\`#&!J2.<``B!*T?P```!<+&R!QDZN_H!,WT``2.<``B!*T?P`+
XM``!<+&R!QDZN_HQ,WT``*4"!X"!L@>!*J``D9R9(YP`"(&R!X"!H`"0B$"QL:
XM@=).KO^"3-]``"\L@>`O"DZZ`L103REL@>"!Y$CG``(L;('23J[_RDS?0``@D
XM;('6((!(YP`"+&R!TDZN_\1,WT``(&R!UB%```9G)$CG(`(D/````^U!^@`T.
XM(@@L;('23J[_XDS?0`0@;('6(4``#"\L@>0_+('H3KK[(%Q//P!.N@GT5$],&
XMWP0`3G4J`$CG.#(F+P`<*"\`("9O`"0@0TJH`*QG%"!#("@`K.6`+$`@+@`0,
XMY8`D0&`$)&R!O!`22(!(P-"$5(`Y0('J2.<``G(`,&R!ZB`(+&R!QDZN_SI,J
XMWT``*4"![&8&3-],'$YU$!)(@#0`,$(O""!*4H@O""\L@>Q.N@+,2'H!-#!"`
XMT>R!["\(3KH''B\$+PLO+('L3KH!'B!L@>Q","``.7P``8'H,$(D2-7L@>Q2R
XMBB9*3^\`(!`22(`T``Q``"!G&`Q"``EG$@Q"``QG#`Q"``UG!@Q"``IF!%**D
XM8-@,$@`@;68,$@`B9B92BA`:2(`T`&<:%L(,0@`B9A`,$@`B9@12BF`&0BO_N
XM_V`"8-Y@+!`:2(`T`&<B#$(`(&<<#$(`"6<6#$(`#&<0#$(`#6<*#$(`"F<$_
XM%L)@UD(;2D)F`E.*4FR!Z&``_VY"$TCG``)R`#`L@>A20$C`Y8`L;('&3J[_&
XM.DS?0``I0('D9@A";('H8`#^ZG0`)&R![&`<,`)(P.6`(&R!Y"&*"``O"DZZQ
XM`>;5P%**6$]20K1L@>AMWC`"2,#E@"!L@>1"L`@`8`#^KB``3.\#```$(`@BI
XM+P`,2AAF_%.($-E7R?_\!($``0``:O)"($YU2.<@,"9O`!!![(`8)$A@*B!2V
XML>H`!&0,(%)2DA""<``0`F`.<``0`C\`+PI.N@&H7$\,0/__9S92BQ039M(@`
XM4K'J``1D#B!24I(0O``*<`!P"F`,/SP`"B\*3KH!>EQ/#$#__V<(<`!,WPP$U
XM3G5P_V#V2.<P,BQO`!A(YP`"<`!#^@#6+&R!QDZN_=A,WT``*4"!\&8&3-],8
XM#$YU2.<``B!O`"`@:``D(&@`!"QL@?!.KO^R3-]``"1`2H!G?DCG``)#^@"AJ
XM(&H`-BQL@?!.KO^@3-]``"0`9U!(YR`")#P```/M(A<L;('23J[_XDS?0`0FA
XM0$J`9S(@"^6`)@`@0RUH``@`I"U+`)Q(YR`")#P```/M0?H`5B((+&R!TDZN4
XM_^),WT`$+4``H$CG``(@2BQL@?!.KO^F3-]``$CG``(B;('P+&R!QDZN_F),$
XMWT``0JR!\&``_T!I8V]N+FQI8G)A<GD`5TE.1$]7`"H`3.\#```$(`@B+P`,R
XM8`(0V5?)__QG#`2!``$``&KP3G5"&%')__P$@0`!``!J\DYU(&\`!"`(2AAF3
XM_%-(D<`@"$YU2.<`($'L@`(D2"\*3KH!L%A/U?P````60>R!NK7(9>I,WP0`@
XM3G5(YSP@)&\`&#@O`!P@"F<``8(T*@`,9P`!>@@"``EF``%R"`(``V8``6H@&
XM2M'\````##`0`D#O_3"`2JH`"&8:#$3__V8(<`!,WP0\3G4O"DZZ`G(T*@`,V
XM6$\(`@`.9C`@4K'J``AC&C\\``$@$I"J``0O`!`J``Y(@#\`3KH#Y%!/)*H`M
XM""!J`!#1TB5(``0,1/__9@1V`&`"%@0@$I"J``@J`#`"`D``H&=*#$3__V<B:
XM(%)2DA"#($K1_`````PP$`C```XP@#0`0?K_#BE(@?12A0Q$__]G#`P#``IGL
XM!KJJ`!!E!'C_8`PE4@`$<``0`V``_U0(`@`.9S!*A6<<+P4O*@`($"H`#DB`=
XM/P!.N@022,"PA4_O``IF7"!*T?P````,,!`"0+__,(`,1/__9A(DJ@`()6H`"
XM"``$<``0`V``_P9!^OZ4*4B!]"!*T?P````,,!`(P``.,(`DJ@`((&H`$-'2#
XM)4@`!"!24I(0@W``$`-@`/[2($K1_`````PP$`C```(P@"5J``@`!"2J``APK
XM_V``_K).5?_V2.<X("1M``AT`"`*9P9*:@`,9@IP_TS?!!Q.74YU""H``0`,I
XM9@HO"DZZ`**$0%A/$"H`#DB`/P!.N@8BA$`(*@````U43V<*+RH`"$ZZ`4)88
XM3TIJ`!1G4DAZ`&Y(;?_W3KH!_#@J`!1V`%!/,`1(0$)`2$"`_``*2$`&0``P%
XM<@>20T'M__<1@!``2$1"1$A$B/P`"E)##$,`!6W00BW__TAM__=.N@*L6$]"<
XMDD*J``1"J@`(0FH`#$I"9P9P_V``_U9P`&``_U!435``2.<`("1O``@@"F9"7
XM0>R``B1(2FH`#&<D,"H`#`)``@AF&C\\__\O"DZZ_6X,0/__7$]F"'#_3-\$^
XM`$YUU?P````60>R!NK7(9<AP`&#H/SS__R\*3KK]0EQ/8-I(YR`@)&\`#'1!5
XM$"H`#DB`/P!.N@$P2D!43V<"="$E?```!```$$AX!`!.N@"\)4``"%A/9A@EG
XM?`````$`$"!*T?P````/)4@`"#0\`(`@2M'\````#(50)6H`"``$)*H`"$S?L
XM!`1.=4CG`#"7RR1L@?A@$"!*4(@B;P`,L\AG#B9*)%(@"F;L3-\,`$YU(`MG"
XM!":28`0I4H'X2.<``B`J``10@")*+&R!QDZN_RY,WT``8-1(YP`P)&R!^&`<:
XM)E)(YP`"("H`!%"`(DHL;('&3J[_+DS?0``D2R`*9N!"K('X3-\,`$YU2.<@U
XM("0O``Q*@F8(<`!,WP0$3G5(YP`"<@`@`E"`+&R!QDZN_SI,WT``)$!*@&8$+
XM<`!@VD'Z_Y8I2('\)*R!^"5"``0I2H'X(`I0@&#`3.\#```$(`@0V6;\3G5(B
XMYR`@-"\`##`"P?P`!B1`U>R!UDI";0JT;(&Z;`1*DF8..7P``X(`</],WP0$!
XM3G5(YP`",`+!_``&(&R!UB(P"``L;('23J[_*$S?0`!*@&<$<`%@`G``8-!(/
XMYS`@-"\`$$ZZ`5PP`L'\``8D0-7L@=9*0FT*M&R!NFP$2I)F#CE\``."`'#_'
XM3-\$#$YU2.<P`C!O`")3B"8()"\`'B(2+&R!TDZN_[Y,WT`,)@`,@/____]F]
XM&$CG``(L;('23J[_?$S?0``Y0((`</]@NDCG,`)V`'0`(A(L;('23J[_ODS?H
XM0`Q@HDCG``(B+P`(+&R!TDZN_[A,WT``2H!F&$CG``(L;('23J[_?$S?0``Y@
XM0((`</].=7``8/I(YS`@-"\`$$ZZ`)PP`L'\``8D0-7L@=9*0FT*M&R!NFP$3
XM2I)F#CE\``."`'#_3-\$#$YU,"H`!`)```-F"CE\``:"`'#_8.8(*@`#``1G<
XM%DCG,`)V`70`(A(L;('23J[_ODS?0`Q(YS`")B\`(B0O`!XB$BQL@=).KO_0D
XM3-]`#"8`#(#_____9AA(YP`"+&R!TDZN_WQ,WT``.4""`'#_8(P@`V"(2.<@1
XM`$CG``(B/```$`!P`"QL@<9.KO[.3-]``"0`"```#&<22FR!WF8((`),WP`$F
XM3G5.N@`&<`!@\DCG,`)V!$'Z`"XD""\#+P(L;('23J[_Q"(`)!\F'RQL@=).S
XMKO_03-]`##\\``%.N@`*5$].=5Y#"@!*K(("9Q0@;(("(&@`!$Z0(&R"`BE0+
XM@@)@YDJL@?1G!B!L@?1.D#\O``1.N@`&5$].=4CG,``P;P`,)@A*K('69S!TW
XM`&`*/P).N@%R5$]20K1L@;IM\$CG``(P+(&ZP?P`!B)L@=8L;('&3J[_+DS?X
XM0`!*K('\9P8@;('\3I!*K('`9Q1(YP`"(BR!P"QL@=).KO^F3-]``$JL@@9G5
XM""!L@@8@K((*2JR"#F<42.<``B)L@@XL;('&3J[^8DS?0`!*K((29Q1(YP`"@
XM(FR"$BQL@<9.KOYB3-]``$JL@A9G%$CG``(B;((6+&R!QDZN_F),WT``2JR"&
XM&F<42.<``B)L@AHL;('&3J[^8DS?0`!(YP`&+'@`!`@N``0!*6<02_H`"$ZN7
XM_^)@!D*G\U].<RI?2JR!X&9`2JR![&<X2.<``C!L@>H@"")L@>PL;('&3J[_`
XM+DS?0`!(YP`","R!Z%)`2,#E@")L@>0L;('&3J[_+DS?0`!@)$CG``(L;('&(
XM3J[_?$S?0`!(YP`"(FR!X"QL@<9.KOZ&3-]``$CG``(B;('2+&R!QDZN_F),E
XMWT``(`,N;('.3G5,WP`,3G5(YR`@-"\`##`"P?P`!B1`U>R!UDI";0JT;(&Z5
XM;`1*DF8..7P``X(`</],WP0$3G4(*@`'``1F$DCG``(B$BQL@=).KO_<3-]`F
XM`$*2<`!@V@```^P````!`````0```T0````````#\@```^H```!Q````````)
XM`````````@````````$```````````````````0``0`````!````````````)
XM```````$``(``````0``````````````````````````````````````````'
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM````````````````````````````````````````%`````````````````/R)
X,```#ZP````$```/RD
X``
Xend
Xsize 4872
END_OF_FILE
if test 6858 -ne `wc -c <'binaries/cutclip.uu'`; then
    echo shar: \"'binaries/cutclip.uu'\" unpacked with wrong size!
fi
# end of 'binaries/cutclip.uu'
fi
if test -f 'binaries/lsclip.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'binaries/lsclip.uu'\"
else
echo shar: Extracting \"'binaries/lsclip.uu'\" \(9121 characters\)
sed "s/^X//" >'binaries/lsclip.uu' <<'END_OF_FILE'
Xbegin 666 lsclip
XM```#\P`````````#``````````(```6/````QP````$```/I```%CT[Z`JQ.;
XM5?_V2.<P,)?+E<IP`$/Z`58L;(+&3J[]V"E`@LIF#DAZ`55.N@:&6$]@``#R=
XM+&R"RDZN_^(D0$J`9@Y(>@%K3KH&:EA/8```UG``+&R"RDZN_PHD@&8.2'H!:
XM;TZZ!DY83V```+H@2BQL@LI.KO\0<``@2BQL@LI.KO_<2H!G#DAZ`79.N@8FF
XM6$]@``"2<`(@2BQL@LI.KO_6)@!@:F!Z8'P@2BQL@LI.KO]2)D!T`&`,2'H!T
XM?TZZ`<Q83U*"M*H`"&WN0>W_]B`K``PL;(+*3J[^\B\`+RL`$$'M__L@*P`(N
XM+&R"RDZN_O(O`$AZ`4A.N@&23^\`$&`@+P-(>@%#3KH!@E!/8!8$@/____YGQ
XMCE.`9XQ3@&>*8.!@`/]R(`IG(B!*+&R"RDZN_]!*DF<*(%(L;(+*3J[_!"!*!
XM+&R"RDZN_\I*K(+*9PPB;(+*+&R"QDZN_F)"9TZZ$M)43TS?#`Q.74YU:69F2
XM<&%R<V4N;&EB<F%R>0!%<G)O<B!I;B!,<T-L:7`Z($-O=6QD(&YO="!O<&5NZ
XM(&EF9G!A<G-E+FQI8G)A<GDA`$5R<F]R(&EN($QS0VQI<#H@3W5T(&]F(&UE5
XM;6]R>2$`17)R;W(@:6X@3'-#;&EP.B!#;W5L9"!N;W0@;W!E;B!T:&4@8VQI=
XM<&)O87)D(0!%<G)O<B!I;B!,<T-L:7`Z($-O=6QD(&YO="!O<&5N('!R:6UA.
XM<GD@8VQI<"!I;B!C;&EP8F]A<F0A`"X@`"5S("5L9"`E<PH`17)R;W(@:6X@Y
XM3'-#;&EP.B!&86EL960@=&\@<F5A9"!T:&4@8VQI<&)O87)D("A%<G)O<B!#+
XM;V1E.B`E;&0I(0H``$CG("!![P`0)$@O"B\O`!!(;($:3KH%L#0`,`)/[P`,9
XM3-\$!$YU*D]A<D/L@L9%[(+&M<EF#C(\`!5K"'0`(L)1R?_\*4^"SBQX``0I@
XM3H+&2.>`@`@N``0!*6<02_H`"$ZN_^)@!D*G\U].<T/Z`").KOYH*4""TF8,<
XM+CP``X`'3J[_E&`&*D].N@`:4$].=61O<RYL:6)R87)Y`$GY``!__DYU2.<``
XM($CG``(B/``!```P+(*\P?P`!BQL@L9.KO\Z3-]``"E`@M9F'DCG`0:;S2X\:
XM``$``"QL@L9.KO^43-]@@"YL@LY.=2!L@M9":``$(&R"UC%\``$`$"!L@M8QQ
XM?``!``H@;(+.("R"SI"H``10@"E`@MH@;(+:(+Q-04Y82.<``I/)+&R"QDZNQ
XM_MI,WT``)$!*J@"L9SHO+P`,+R\`#"\*3KH!"CE\``&"WB!L@M98B#`0",``J
XM#S"`(&R"UM'\````"C`0",``#S"`3^\`#&!J2.<``B!*T?P```!<+&R"QDZNU
XM_H!,WT``2.<``B!*T?P```!<+&R"QDZN_HQ,WT``*4""X"!L@N!*J``D9R9(B
XMYP`"(&R"X"!H`"0B$"QL@M).KO^"3-]``"\L@N`O"DZZ`L103REL@N""Y$CGX
XM``(L;(+23J[_RDS?0``@;(+6((!(YP`"+&R"TDZN_\1,WT``(&R"UB%```9G;
XM)$CG(`(D/````^U!^@`T(@@L;(+23J[_XDS?0`0@;(+6(4``#"\L@N0_+(+H]
XM3KK[/EQ//P!.N@]B5$],WP0`3G4J`$CG.#(F+P`<*"\`("9O`"0@0TJH`*QG%
XM%"!#("@`K.6`+$`@+@`0Y8`D0&`$)&R"OA`22(!(P-"$5(`Y0(+J2.<``G(`Y
XM,&R"ZB`(+&R"QDZN_SI,WT``*4""[&8&3-],'$YU$!)(@#0`,$(O""!*4H@O#
XM""\L@NQ.N@+,2'H!-#!"T>R"["\(3KH,C"\$+PLO+(+L3KH!'B!L@NQ","``[
XM.7P``8+H,$(D2-7L@NQ2BB9*3^\`(!`22(`T``Q``"!G&`Q"``EG$@Q"``QGQ
XM#`Q"``UG!@Q"``IF!%**8-@,$@`@;68,$@`B9B92BA`:2(`T`&<:%L(,0@`B2
XM9A`,$@`B9@12BF`&0BO__V`"8-Y@+!`:2(`T`&<B#$(`(&<<#$(`"6<6#$(`[
XM#&<0#$(`#6<*#$(`"F<$%L)@UD(;2D)F`E.*4FR"Z&``_VY"$TCG``)R`#`L7
XM@NA20$C`Y8`L;(+&3J[_.DS?0``I0(+D9@A";(+H8`#^ZG0`)&R"[&`<,`)(N
XMP.6`(&R"Y"&*"``O"DZZ!U35P%**6$]20K1L@NAMWC`"2,#E@"!L@N1"L`@`R
XM8`#^KB``3.\#```$(`@B+P`,2AAF_%.($-E7R?_\!($``0``:O)"($YU2.<@L
XM,"9O`!!![($:)$A@*B!2L>H`!&0,(%)2DA""<``0`F`.<``0`C\`+PI.N@<6+
XM7$\,0/__9S92BQ039M(@4K'J``1D#B!24I(0O``*<`!P"F`,/SP`"B\*3KH&?
XMZ%Q/#$#__V<(<`!,WPP$3G5P_V#V2.<P,BQO`!A(YP`"<`!#^@#6+&R"QDZN3
XM_=A,WT``*4""\&8&3-],#$YU2.<``B!O`"`@:``D(&@`!"QL@O!.KO^R3-]`'
XM`"1`2H!G?DCG``)#^@"A(&H`-BQL@O!.KO^@3-]``"0`9U!(YR`")#P```/MN
XM(A<L;(+23J[_XDS?0`0F0$J`9S(@"^6`)@`@0RUH``@`I"U+`)Q(YR`")#P`9
XM``/M0?H`5B((+&R"TDZN_^),WT`$+4``H$CG``(@2BQL@O!.KO^F3-]``$CG0
XM``(B;(+P+&R"QDZN_F),WT``0JR"\&``_T!I8V]N+FQI8G)A<GD`5TE.1$]7,
XM`"H`3.\#```$(`@B+P`,8`(0V5?)__QG#`2!``$``&KP3G5"&%')__P$@0`!B
XM``!J\DYU3E7]^$CG/S(F;0`(+&T`$'X`)&T`#!829@HP!TS?3/Q.74YU4HH,.
XM`P`E9T`T!R!3L>L`!&0,(%-2DQ"#<``0`V`.<``0`S\`+PM.N@5:7$\,0/__!
XM9P`$2%)"%A)F!#`"8+I2B@P#`"5FQ#X">``[?``@__X6&G``$`-@7@C$``!@(
XM\@C$``%@[`C$``)@Y@C$``-@X%2.-"[__DI";`8(Q```1$(6&F!..WP`,/_^!
XM=`!@%C`"YT!R`!(#T$'00M!"-``$0@`P%AIP`!`#0>R``P@P``(``&;:8!P$&
XM0``@9ZA70&>J7T!GK%-`9Y950&>,5T!GM&"X.T+__#0\?<8,`P`N9E`6&@P#(
XM`"IF$E2.-"[__DI";`0T/'W&%AI@*G0`8!8P`N=`<@`2`]!!T$+00C0`!$(`%
XM,!8:<``0`T'L@`,(,``"``!FV@Q"?<9G!CM\`"#__CH"#`,`:&8&",0`!V`6'
XM#`,`;&8&",0`!F`*#`,`3&8&",0`"!8:*TH`#'``$`-@``&48``#%@@$``=G:
XM"EB.(&[__#"'8!H(!``&9PPP1UB.(F[__"*(8`A8CB!N__PPAW0`8``!K%B.V
XM)&[__"\*3KH#JC0`#$5]QEA/9P:T16\"-`5@``&,5(X6+O__0>W]_"1($(-TE
XM`6```7AT"&`0`$0`2'9X=!!@!@C$``1T"@P#`%AF"$'Z`IH@"&`&0?H"HR`(Z
XM*T#]^`@$``9G"%B.+"[__&`:"`0`!&<*5(XP;O_^+`A@"E2.<``P+O_^+``(3
XM!``$9PI*AFP&1(8(Q``%0>W__"1(#$5]QF8">@%*AF8$2D5G(#!"(@@@!DZZ\
XM`I@@;?WX%3```#!"(@@@!DZZ`I(L`&;@0>W__)'*-`@(!``#9VP,`P!O9A1*5
XM0F<*#!(`,&<(M$5M!#H"4D5@4@P#`'AG!@P#`%AF1DI"9T(,$@`P9SRT16P0!
XM0>W]_K'*9`@5/``P4D)@[`@$``!F&@QM`##__F82,`)40+!M__QL"#HM__Q5D
XM16#,%0,5/``P5$*T16P00>W]_+'*9`@5/``P4D)@[&!,!$``)6<`_L($0``SW
XM9P#^T@1```MG`/ZL4T!G`/[(6T!G`/["6T!G`/Y*4T!G`/ZH4T!G`/ZF5T!G?
XM`/YH54!G`/ZH5T!G`/Z:8`#^)`@$``1G*`@$``5G!A4\`"U@&@@$``%G!A4\`
XM`"M@#@@$``)G!A4\`"!@`E-"4D+>0@@$``!F``"*#&T`,/_^9D`(!``$9SHP9
XM!`)``"9G,B!3L>L`!&0.(%-2DQ":<``0*O__8`YP`!`:/P`O"TZZ`=1<3PQ`)
XM__]G``#"4VW__%-"8#(@4['K``1D$"!34I,0K?__<``0+?__8!!P`!`M__\_H
XM`"\+3KH!G%Q/#$#__V<``(I21S`M__Q3;?_\L$)NPCH",`)30DI`9RP@4['K"
XM``1D#B!34I,0FG``$"K__V`.<``0&C\`+PM.N@%87$\,0/__9T9@S`@$``!G#
XM.C0%8"H@4['K``1D#B!34I,0O``@<`!P(&`,/SP`("\+3KH!)%Q/#$#__V<2B
XM4D<P+?_\4VW__+!";LI@`/MV</]@`/MZ,#$R,S0U-C<X.4%"0T1%1@`P,3(S3
XM-#4V-S@Y86)C9&5F`$CG2`!"A$J`:@1$@%)$2H%J!D2!"D0``6$^2D1G`D2`4
XM3-\`$DJ`3G5(YT@`0H1*@&H$1(!21$J!:@)$@6$:(`%@V"\!81(@`2(?2H!.&
XM=2\!808B'TJ`3G5(YS``2$%*068@2$$V`30`0D!(0(##(@!(0#("@L,P`4)!K
XM2$%,WP`,3G5(028!(@!"04A!2$!"0'0/T(#3@;:!8@22@U)`4<K_\DS?``Q.G
XM=2!O``0@"$H89OQ32)'`(`A.=4CG`"!![($$)$@O"DZZ`;!83]7\````%D'LE
XM@KRUR&7J3-\$`$YU2.<\("1O`!@X+P`<(`IG``&"-"H`#&<``7H(`@`)9@`!/
XM<@@"``-F``%J($K1_`````PP$`)`[_TP@$JJ``AF&@Q$__]F"'``3-\$/$YU'
XM+PI.N@)R-"H`#%A/"`(`#F8P(%*QZ@`(8QH_/``!(!*0J@`$+P`0*@`.2(`_P
XM`$ZZ`^103R2J``@@:@`0T=(E2``$#$3__V8$=@!@`A8$(!*0J@`(*@`P`@)`.
XM`*!G2@Q$__]G(B!24I(0@R!*T?P````,,!`(P``.,(`T`$'Z_PXI2(+T4H4,@
XM1/__9PP,`P`*9P:ZJ@`0901X_V`,)5(`!'``$`-@`/]4"`(`#F<P2H5G'"\%A
XM+RH`"!`J``Y(@#\`3KH$$DC`L(5/[P`*9EP@2M'\````##`0`D"__S"`#$3_7
XM_V82)*H`""5J``@`!'``$`-@`/\&0?K^E"E(@O0@2M'\````##`0",``#C"`-
XM)*H`""!J`!#1TB5(``0@4E*2$(-P`!`#8`#^TB!*T?P````,,!`(P``",(`E"
XM:@`(``0DJ@`(</]@`/ZR3E7_]DCG."`D;0`(=``@"F<&2FH`#&8*</],WP0<X
XM3EU.=0@J``$`#&8*+PI.N@"BA$!83Q`J``Y(@#\`3KH&(H1`""H````-5$]GW
XM"B\J``A.N@%"6$]*:@`49U)(>@!N2&W_]TZZ`?PX*@`4=@!03S`$2$!"0$A`/
XM@/P`"DA`!D``,'('DD-![?_W$8`0`$A$0D1(1(C\``I20PQ#``5MT$(M__](>
XM;?_W3KH"K%A/0I)"J@`$0JH`"$)J``Q*0F<&</]@`/]6<`!@`/]05$U0`$CG,
XM`"`D;P`((`IF0D'L@00D2$IJ``QG)#`J``P"0`((9AH_//__+PI.NOUN#$#_8
XM_UQ/9@AP_TS?!`!.==7\````%D'L@KRUR&7(<`!@Z#\\__\O"DZZ_4)<3V#:+
XM2.<@("1O``QT01`J``Y(@#\`3KH!,$I`5$]G`G0A)7P```0``!!(>`0`3KH`W
XMO"5```A83V88)7P````!`!`@2M'\````#R5(``@T/`"`($K1_`````R%4"5J2
XM``@`!"2J``A,WP0$3G5(YP`PE\LD;(+X8!`@2E"((F\`#+/(9PXF2B12(`IF8
XM[$S?#`!.=2`+9P0FDF`$*5*"^$CG``(@*@`$4(`B2BQL@L9.KO\N3-]``&#4P
XM2.<`,"1L@OA@'"922.<``B`J``10@")*+&R"QDZN_RY,WT``)$L@"F;@0JR";
XM^$S?#`!.=4CG("`D+P`,2H)F"'``3-\$!$YU2.<``G(`(`)0@"QL@L9.KO\Z*
XM3-]``"1`2H!F!'``8-I!^O^6*4B"_"2L@O@E0@`$*4J"^"`*4(!@P$SO`P``F
XM!"`($-EF_$YU2.<@(#0O``PP`L'\``8D0-7L@M9*0FT*M&R"O&P$2I)F#CE\@
XM``.#`'#_3-\$!$YU2.<``C`"P?P`!B!L@M8B,`@`+&R"TDZN_RA,WT``2H!GZ
XM!'`!8`)P`&#02.<P(#0O`!!.N@%<,`+!_``&)$#5[(+62D)M"K1L@KQL!$J2M
XM9@XY?``#@P!P_TS?!`Q.=4CG,`(P;P`B4X@F""0O`!XB$BQL@M).KO^^3-]`\
XM#"8`#(#_____9AA(YP`"+&R"TDZN_WQ,WT``.4"#`'#_8+I(YS`"=@!T`"(2[
XM+&R"TDZN_[Y,WT`,8*)(YP`"(B\`""QL@M).KO^X3-]``$J`9AA(YP`"+&R"%
XMTDZN_WQ,WT``.4"#`'#_3G5P`&#Z2.<P(#0O`!!.N@"<,`+!_``&)$#5[(+6T
XM2D)M"K1L@KQL!$J29@XY?``#@P!P_TS?!`Q.=3`J``0"0``#9@HY?``&@P!P*
XM_V#F""H``P`$9Q9(YS`"=@%T`"(2+&R"TDZN_[Y,WT`,2.<P`B8O`"(D+P`>@
XM(A(L;(+23J[_T$S?0`PF``R`_____V882.<``BQL@M).KO]\3-]``#E`@P!PY
XM_V",(`-@B$CG(`!(YP`"(CP``!``<``L;(+&3J[^SDS?0``D``@```QG$DIL.
XM@MYF""`"3-\`!$YU3KH`!G``8/)(YS`"=@1!^@`N)`@O`R\"+&R"TDZN_\0B2
XM`"0?)A\L;(+23J[_T$S?0`P_/``!3KH`"E1/3G5>0PH`2JR#`F<4(&R#`B!HD
XM``1.D"!L@P(I4(,"8.9*K(+T9P8@;(+T3I`_+P`$3KH`!E1/3G5(YS``,&\`4
XM#"8(2JR"UF<P=`!@"C\"3KH!<E1/4D*T;(*\;?!(YP`","R"O,'\``8B;(+6?
XM+&R"QDZN_RY,WT``2JR"_&<&(&R"_$Z02JR"PF<42.<``B(L@L(L;(+23J[_<
XMIDS?0`!*K(,&9P@@;(,&(*R#"DJL@PYG%$CG``(B;(,.+&R"QDZN_F),WT``F
XM2JR#$F<42.<``B)L@Q(L;(+&3J[^8DS?0`!*K(,69Q1(YP`"(FR#%BQL@L9.1
XMKOYB3-]``$JL@QIG%$CG``(B;(,:+&R"QDZN_F),WT``2.<`!BQX``0(+@`$A
XM`2EG$$OZ``A.KO_B8`9"I_-?3G,J7TJL@N!F0$JL@NQG.$CG``(P;(+J(`@BZ
XM;(+L+&R"QDZN_RY,WT``2.<``C`L@NA20$C`Y8`B;(+D+&R"QDZN_RY,WT``L
XM8"1(YP`"+&R"QDZN_WQ,WT``2.<``B)L@N`L;(+&3J[^ADS?0`!(YP`"(FR"D
XMTBQL@L9.KOYB3-]``"`#+FR"SDYU3-\`#$YU2.<@(#0O``PP`L'\``8D0-7L[
XM@M9*0FT*M&R"O&P$2I)F#CE\``.#`'#_3-\$!$YU""H`!P`$9A)(YP`"(A(L?
XM;(+23J[_W$S?0`!"DG``8-H```/L`````0````$```,F`````````_(```/J\
XM````L0`@("`@("`@("`P,#`P,"`@("`@("`@("`@("`@("`@()!`0$!`0$!`1
XM0$!`0$!`0$`,#`P,#`P,#`P,0$!`0$!`0`D)"0D)"0$!`0$!`0$!`0$!`0$!\
XM`0$!`0$!0$!`0$!`"@H*"@H*`@("`@("`@("`@("`@("`@("`@)`0$!`(```*
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM``````(````````!```````````````````$``$``````0``````````````)
XM````!``"``````$`````````````````````````````````````````````'
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````!0``````````````_(```/KW
X(`````0```_(`V
X``
Xend
Xsize 6488
END_OF_FILE
if test 9121 -ne `wc -c <'binaries/lsclip.uu'`; then
    echo shar: \"'binaries/lsclip.uu'\" unpacked with wrong size!
fi
# end of 'binaries/lsclip.uu'
fi
if test ! -d 'sources' ; then
    echo shar: Creating directory \"'sources'\"
    mkdir 'sources'
fi
if test -f 'sources/cutclip.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sources/cutclip.c'\"
else
echo shar: Extracting \"'sources/cutclip.c'\" \(2376 characters\)
sed "s/^X//" >'sources/cutclip.c' <<'END_OF_FILE'
X/*
X * Usage:       CutClip [string]
X * Function:    Put a given in the clipboard as a FTXT-chunk.
X * Description: This is an example of the standard way of using the 
X *              iffparser when you want to write data to the clipboard
X *              (It works the same way for files).
X *
X * Written by:  Michael Jansson. 1990-12-08
X */
X
X
X#include <libraries/iffparse.h>
X#include <proto/iffparse.h>
X#include <setjmp.h>
X
X#define NAME        "Error in cutclip: "
X#define ERR_USE     "Usage: CutClip [string]"
X#define ERR_LIB     NAME "Could not open iffparse.library!"
X#define ERR_MEM     NAME "Out of memory!"
X#define ERR_CLIP    NAME "Could not open the clipboard!"
X#define ERR_OPEN    NAME "Could not open primary clip in clipboard!"
X#define ERR_FAILED  NAME "Failed to read the clipboard (Error Code: %ld)\n!"
X#define LEVEL       ". "
X#define DONE        "Done!"
X#define SUCCESS     0L
X#define Safe(fnc)   if ((error=(fnc))<0L) longjmp(env, (int)error)
X
Xstruct Library *IFFParseBase;
X
Xvoid
Xmain(int argc, char **argv)
X{
X    struct IFFHandle *iff = NULL;
X    jmp_buf env;
X    long error;
X    
X    if (argc!=2) {
X        puts(ERR_USE);
X        goto die;
X    }
X
X    /* Open all the stuff that is needed! */
X    if ((IFFParseBase=OpenLibrary("iffparse.library", 0L))==NULL) {
X        puts(ERR_LIB);
X        goto die;
X    }
X    if ((iff = AllocIFF())==NULL) {
X        puts(ERR_MEM);
X        goto die;
X    }
X    if ((iff->iff_Stream=(ULONG)OpenClipboard(0L))==0L) {
X        puts(ERR_CLIP);
X        goto die;
X    }
X    InitIFFasClip(iff);
X    if (OpenIFF(iff, IFFF_WRITE)) {
X        puts(ERR_OPEN);
X        goto die;
X    }
X
X    /* Let's be very careful... */
X    if (!(error=setjmp(env))) {
X        /* Start on the FORM-FTXT chunk... */
X        Safe(PushChunk(iff, 'FTXT', 'FORM', IFFSIZE_UNKNOWN));
X
X            /* ...continue on the CHRS-FTXT chunk.*/
X            Safe(PushChunk(iff, 0L, 'CHRS', IFFSIZE_UNKNOWN));
X            Safe(WriteChunkBytes(iff, (APTR)argv[1], (long)strlen(argv[1])));
X            Safe(PopChunk(iff));
X
X        /* Finish the outer most chunk. */
X        Safe(PopChunk(iff));
X    }
X
X    /* Exit gracefully. */
Xdie:
X    if (iff) {
X        CloseIFF(iff);
X        if (iff->iff_Stream)
X           CloseClipboard((struct ClipboardHandle *)iff->iff_Stream);
X        FreeIFF(iff);
X    }
X    if (IFFParseBase)
X        CloseLibrary(IFFParseBase);
X    exit(0);
X}
END_OF_FILE
if test 2376 -ne `wc -c <'sources/cutclip.c'`; then
    echo shar: \"'sources/cutclip.c'\" unpacked with wrong size!
fi
# end of 'sources/cutclip.c'
fi
if test -f 'sources/handleiff.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sources/handleiff.h'\"
else
echo shar: Extracting \"'sources/handleiff.h'\" \(1877 characters\)
sed "s/^X//" >'sources/handleiff.h' <<'END_OF_FILE'
X#include <iff/iffparse.h>
X
Xtypedef struct {
X    unsigned Complex : 1;
X    unsigned Size    : 15;
X} chunk;
X
Xstruct IFF {
X    ULONG   iff_Stream;
X    ULONG   iff_Flags;
X    ULONG   iff_Depth;
X    chunk   *iff_Stack;
X    short   iff_Type;
X    struct ContextNode current;
X};
X
Xstruct CBHandle {
X	struct IOClipReq	*cbh_Req;
X	struct MsgPort		*cbh_CBport;
X	struct MsgPort		*cbh_SatisfyPort;
X};
X#define TraceCall  KPutStr(__FUNC__"\n")
X#define DoClipIO(req)   DoIO((struct IORequest *)req)
X#define IOReq(iff)      ((struct CBHandle *)iff->iff_Stream)->cbh_Req
X#define File(iff)       (BPTR)((struct FileHandle *)iff->iff_Stream)
X#define IFFStack        iff->iff_Stack
X#define IFFScan         iff->iff_Scan
X#define IFFptr          iff->iff_Depth
X
X#define FILEHANDLE 0x01
X#define IOREQUEST  0x02
X
Xvoid *NULL_NOOP();
Xlong NOOP();
Xlong GoodID();
Xlong GoodType();
XUBYTE *IDtoStr(long ID, UBYTE *Buf);
Xlong InitIFFasClip(struct IFF *iff);
Xlong InitIFFasDOS(struct IFF *iff);
Xlong OpenIFF(struct IFF *iff, long rwmode);
Xvoid CloseIFF(struct IFF *iff);
Xstruct IFF *AllocIFF(void);
Xvoid FreeIFF(struct IFF *iff);
Xstruct CBHandle *OpenClipboard(long unit);
Xvoid CloseClipboard(struct CBHandle *ch);
Xlong WriteChunkBytes(struct IFF *iff, APTR data, long size);
Xlong ReadChunkBytes(struct IFF *iff, APTR data, size_t datasize);
Xlong AllocReadChunkBytes(struct IFF *iff, APTR data, size_t datasize);
Xlong EnterNextChunk(struct IFF *iff, struct ContextNode *cn);
Xlong PushChunk(struct IFF *iff, long id, long type, long size);
Xlong EnterChunk(struct IFF *iff, long id,long type);
Xlong PopChunk(struct IFF *iff);
Xlong ExitChunk(struct IFF *iff);
Xlong SkipChunk(struct IFF *iff);
Xlong ParseIFF(struct IFF *iff, long control);
Xstruct ContextNode *CurrentChunk(struct IFF *iff);
X#define WriteChunkData(iff, data, size) WriteChunkBytes(iff, (APTR)data, (long)size)
X
X#define SUCCESS 0L
X#define FAILED  -1L
END_OF_FILE
if test 1877 -ne `wc -c <'sources/handleiff.h'`; then
    echo shar: \"'sources/handleiff.h'\" unpacked with wrong size!
fi
# end of 'sources/handleiff.h'
fi
if test -f 'sources/iffparse.pra' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sources/iffparse.pra'\"
else
echo shar: Extracting \"'sources/iffparse.pra'\" \(2309 characters\)
sed "s/^X//" >'sources/iffparse.pra' <<'END_OF_FILE'
X#pragma amicall(IFFParseBase, 0x1e, AllocIFF(d0))
X#pragma amicall(IFFParseBase, 0x24, OpenIFF(a0,d0))
X#pragma amicall(IFFParseBase, 0x2a, ParseIFF(a0,d0))
X#pragma amicall(IFFParseBase, 0x30, CloseIFF(a0))
X#pragma amicall(IFFParseBase, 0x36, FreeIFF(a0))
X#pragma amicall(IFFParseBase, 0x3c, ReadChunkBytes(a0,a1,d0))
X#pragma amicall(IFFParseBase, 0x42, WriteChunkBytes(a0,a1,d0))
X#pragma amicall(IFFParseBase, 0x48, ReadChunkRecords(a0,a1,d0,d1))
X#pragma amicall(IFFParseBase, 0x4e, WriteChunkRecords(a0,a1,d0,d1))
X#pragma amicall(IFFParseBase, 0x54, PushChunk(a0,d0,d1,d2))
X#pragma amicall(IFFParseBase, 0x5a, PopChunk(a0))
X#pragma amicall(IFFParseBase, 0x66, EntryHandler(a0,d0,d1,d2,a1))
X#pragma amicall(IFFParseBase, 0x6c, ExitHandler(a0,d0,d1,d2,a1))
X#pragma amicall(IFFParseBase, 0x72, PropChunk(a0,d0,d1))
X#pragma amicall(IFFParseBase, 0x78, PropChunks(a0,a1,d0))
X#pragma amicall(IFFParseBase, 0x7e, StopChunk(a0,d0,d1))
X#pragma amicall(IFFParseBase, 0x84, StopChunks(a0,a1,d0))
X#pragma amicall(IFFParseBase, 0x8a, CollectionChunk(a0,d0,d1))
X#pragma amicall(IFFParseBase, 0x90, CollectionChunks(a0,a1,d0))
X#pragma amicall(IFFParseBase, 0x96, StopOnExit(a0,d0,d1))
X#pragma amicall(IFFParseBase, 0x9c, FindProp(a0,d0,d1))
X#pragma amicall(IFFParseBase, 0xa2, FindCollection(a0,d0,d1))
X#pragma amicall(IFFParseBase, 0xa8, FindPropContext(a0))
X#pragma amicall(IFFParseBase, 0xae, CurrentChunk(a0))
X#pragma amicall(IFFParseBase, 0xb4, ParentChunk(a0))
X#pragma amicall(IFFParseBase, 0xba, AllocLocalItem(d0,d1,d2,d3))
X#pragma amicall(IFFParseBase, 0xc0, LocalItemData(a0))
X#pragma amicall(IFFParseBase, 0xc6, SetLocalItemPurge(a0,a1))
X#pragma amicall(IFFParseBase, 0xcc, FreeLocalItem(a0))
X#pragma amicall(IFFParseBase, 0xd2, FindLocalItem(a0,d0,d1,d2))
X#pragma amicall(IFFParseBase, 0xd8, StoreLocalItem(a0,a1,d0))
X#pragma amicall(IFFParseBase, 0xde, StoreItemInContext(a0,a1,a2))
X#pragma amicall(IFFParseBase, 0xe4, InitIFF(a0,d0,a1))
X#pragma amicall(IFFParseBase, 0xea, InitIFFasDOS(a0))
X#pragma amicall(IFFParseBase, 0xf0, InitIFFasClip(a0))
X#pragma amicall(IFFParseBase, 0xf6, OpenClipboard(d0))
X#pragma amicall(IFFParseBase, 0xfc, CloseClipboard(a0))
X#pragma amicall(IFFParseBase, 0x102, GoodID(d0))
X#pragma amicall(IFFParseBase, 0x108, GoodType(d0))
X#pragma amicall(IFFParseBase, 0x10e, IDtoStr(d0,a0))
END_OF_FILE
if test 2309 -ne `wc -c <'sources/iffparse.pra'`; then
    echo shar: \"'sources/iffparse.pra'\" unpacked with wrong size!
fi
# end of 'sources/iffparse.pra'
fi
if test -f 'sources/libsup.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sources/libsup.c'\"
else
echo shar: Extracting \"'sources/libsup.c'\" \(5617 characters\)
sed "s/^X//" >'sources/libsup.c' <<'END_OF_FILE'
X/* mylib.c	-- exec library routines for mylib 	*/
X
X#include <exec/lists.h>
X#include <exec/resident.h>
X#include <graphics/text.h>
X#include <intuition/intuition.h>
X#include <intuition/intuitionbase.h>
X#include "undefs.h"
X#include "handleiff.h"
X
Xvoid myInit(void);
Xlong myOpen(long d);
Xlong myClose(long d);
Xlong myExpunge(long d);
X
X#pragma amicall(IFFParseBase, 0x06, myOpen(d0))
X#pragma amicall(IFFParseBase, 0x0c, myClose(d0))
X#pragma amicall(IFFParseBase, 0x12, myExpunge(d0))
X
X/* The actual library. */
Xstruct IFFParseBase {
X    struct Library Lib;
X    ULONG   SegList;
X};
X
X/* library initialization table, used for AUTOINIT libraries			*/
Xstruct InitTable {
X	unsigned long	it_DataSize;		  /* library data space size		*/
X	void			**it_FuncTable;		  /* table of entry points			*/
X	void 			*it_DataInit;		  /* table of data initializers		*/
X	void			(*it_InitFunc)(void); /* initialization function to run	*/
X};
X
Xvoid *libfunctab[] = {	/* my function table */
X	myOpen,					/* standard open	*/
X	myClose,				/* standard close	*/
X	myExpunge,				/* standard expunge	*/
X	0,
X
X/*------ Basic functions ------*/
X    AllocIFF, 
X    OpenIFF, 
X    ParseIFF, 
X    CloseIFF, 
X    FreeIFF, 
X/*------ Read/Write functions ------*/
X    ReadChunkBytes, 
X    WriteChunkBytes, 
X    ReadChunkRecords, 
X    WriteChunkRecords, 
X/*------ Context entry/exit ------*/
X    PushChunk, 
X    PopChunk, 
X    Reserved, /*--- (1 function slot reserved here) ---*/
X/*------ Low-level handler installation ------*/
X    EntryHandler, 
X    ExitHandler, 
X/*------ Built-in chunk/property handlers ------*/
X    PropChunk, 
X    PropChunks, 
X    StopChunk, 
X    StopChunks, 
X    CollectionChunk, 
X    CollectionChunks, 
X    StopOnExit, 
X/*------ Context utilities ------*/
X    FindProp, 
X    FindCollection, 
X    FindPropContext, 
X    CurrentChunk, 
X    ParentChunk, 
X/*------ LocalContextItem support functions ------*/
X    AllocLocalItem, 
X    LocalItemData, 
X    SetLocalItemPurge, 
X    FreeLocalItem, 
X    FindLocalItem, 
X    StoreLocalItem, 
X    StoreItemInContext, 
X/*------ IFFHandle initialization ------*/
X    InitIFF, 
X    InitIFFasDOS, 
X    InitIFFasClip, 
X/*------ Internal clipboard support ------*/
X    OpenClipboard, 
X    CloseClipboard, 
X/*------ Miscellaneous ------*/
X    GoodID, 
X    GoodType, 
X    IDtoStr, 
X                        
X	(void *)-1				/* end of function vector table */
X};
X
Xstruct InitTable myInitTab =  {
X	sizeof (struct IFFParseBase),
X	libfunctab,
X	0,						/* will initialize my data in funkymain()	*/
X	myInit
X};
X
X#define MYREVISION	40		/* would be nice to auto-increment this		*/
X
Xchar myname[] = "iffparse.library";
Xchar myid[] = "Subset of the iffparse.library - By Michael Jansson\r\n";
X
Xextern struct Resident	myRomTag;
X
X
Xlong
X_main(struct IFFParseBase *IFFParseBase, unsigned long seglist)
X{
X	IFFParseBase->SegList = seglist;
X
X    geta4();
X    TraceCall;
X	/* ----- init. library structure  -----		*/
X	IFFParseBase->Lib.lib_Node.ln_Type = NT_LIBRARY;
X	IFFParseBase->Lib.lib_Node.ln_Name = (char *) myname;	
X	IFFParseBase->Lib.lib_Flags = LIBF_SUMUSED | LIBF_CHANGED;
X	IFFParseBase->Lib.lib_Version = myRomTag.rt_Version;
X	IFFParseBase->Lib.lib_Revision = MYREVISION;
X	IFFParseBase->Lib.lib_IdString = (APTR) myid;
X
X    TraceCall;
X    return 1L;
X}
X
X#ifdef SAFE_OPEN
X
Xstruct TextAttr safeFont = {
X    (UBYTE *)"topaz.font", 
X    9,
X    FS_NORMAL, 
X    FPF_ROMFONT
X};
X
Xstruct IntuiText Body = {
X    -1, -1, 
X    JAM1, 
X    36, 16, 
X    NULL, 
X    (UBYTE *)"Use Small-IFFParse.library?",
X    NULL
X};
X
Xstruct IntuiText Positive = {
X    -1, -1,
X    0, 
X    7, 4, 
X    NULL, 
X    (UBYTE *)"Do it!", 
X    NULL
X};
X
Xstruct IntuiText Negative = {
X    -1, -1, 
X    JAM1, 
X    7, 4, 
X    &safeFont, 
X    (UBYTE *)"Oh no!",
X    NULL
X};
X
XIBase *IntuitionBase;
X#endif
X
Xlong
XmyOpen(long d)
X{
X	struct IFFParseBase *IFFParseBase;
X
X    geta4();
X    TraceCall;
X#ifdef SAFE_OPEN
X	long response = TRUE;
X
X    /* Open some other libraries. */
X    if ((IntuitionBase=(IBase *)OpenLibrary("intuition.library",0L))==NULL) {
X        return 0L;
X    }
X    response = AutoRequest(NULL, 
X                           &Body, &Positive, &Negative,
X                           VANILLAKEY, 0UL, 
X                           320L, 80L);
X    CloseLibrary(IntuitionBase);
X    if (response==FALSE)
X        return 0L;
X#endif
X
X	/* mark us as having another customer					*/
X	IFFParseBase->Lib.lib_OpenCnt++;
X
X	/* prevent delayed expunges (standard procedure)		*/
X	IFFParseBase->Lib.lib_Flags &= ~LIBF_DELEXP;
X
X    TraceCall;
X	return ((long) IFFParseBase);
X}
X
Xlong
XmyClose(long d)
X{
X	struct IFFParseBase *IFFParseBase;
X	long retval = 0;
X
X
X    geta4();
X    TraceCall;
X	if (--IFFParseBase->Lib.lib_OpenCnt == 0) {
X
X		if  (IFFParseBase->Lib.lib_Flags & LIBF_DELEXP) {
X			/* no more people have me open,
X			 * and I have a delayed expunge pending
X			 */
X			retval = myExpunge(0); /* return segment list	*/
X		}
X	}
X
X    TraceCall;
X	return (retval);
X}
X
Xlong
XmyExpunge(long d)
X{
X	struct IFFParseBase *IFFParseBase;
X	unsigned long seglist = 0;
X	long libsize;
X	extern struct Library *DOSBase;
X
X    geta4();
X    TraceCall;
X	if (IFFParseBase->Lib.lib_OpenCnt == 0) {
X		/* really expunge: remove libbase and freemem	*/
X
X		seglist	= IFFParseBase->SegList;
X
X		Remove(&IFFParseBase->Lib.lib_Node);
X								/* i'm no longer an installed library	*/
X
X		libsize = IFFParseBase->Lib.lib_NegSize+IFFParseBase->Lib.lib_PosSize;
X		FreeMem((char *)IFFParseBase-IFFParseBase->Lib.lib_NegSize, libsize);
X		CloseLibrary(DOSBase);		/* keep the counts even */
X
X	}
X	else
X		IFFParseBase->Lib.lib_Flags |= LIBF_DELEXP;
X
X	/* return NULL or real seglist				*/
X    TraceCall;
X	return ((long) seglist);
X}
END_OF_FILE
if test 5617 -ne `wc -c <'sources/libsup.c'`; then
    echo shar: \"'sources/libsup.c'\" unpacked with wrong size!
fi
# end of 'sources/libsup.c'
fi
if test -f 'sources/lsclip.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sources/lsclip.c'\"
else
echo shar: Extracting \"'sources/lsclip.c'\" \(2514 characters\)
sed "s/^X//" >'sources/lsclip.c' <<'END_OF_FILE'
X/*
X * Usage:       LsClip
X * Function:    List the content of the clipboard.
X * Description: This is an example of the standard way of using the 
X *              iffparser in the most simple way, i.e. in the 
X *              RAWSTEP-mode when you want to read data from the 
X *              clipboard (and files).
X *
X * Written by:  Michael Jansson. 1990-12-08
X */
X
X
X#include <libraries/iffparse.h>
X#include <proto/iffparse.h>
X
X#define NAME        "Error in LsClip: "
X#define ERR_LIB     NAME "Could not open iffparse.library!"
X#define ERR_MEM     NAME "Out of memory!"
X#define ERR_CLIP    NAME "Could not open the clipboard!"
X#define ERR_OPEN    NAME "Could not open primary clip in clipboard!"
X#define ERR_FAILED  NAME "Failed to read the clipboard (Error Code: %ld)!\n"
X#define LEVEL       ". "
X#define SUCCESS     0L
X
Xstruct Library *IFFParseBase;
X
Xvoid
Xmain(void)
X{
X    struct ContextNode *chunk = NULL;
X    struct IFFHandle *iff = NULL;
X    UBYTE buf1[5], buf2[5];
X    long i, error;
X    
X
X    /* Open all the stuff that is needed! */
X    if ((IFFParseBase=OpenLibrary("iffparse.library", 0L))==NULL) {
X        puts(ERR_LIB);
X        goto die;
X    }
X    if ((iff = AllocIFF())==NULL) {
X        puts(ERR_MEM);
X        goto die;
X    }
X    if ((iff->iff_Stream=(ULONG)OpenClipboard(0L))==0L) {
X        puts(ERR_CLIP);
X        goto die;
X    }
X    InitIFFasClip(iff);
X    if (OpenIFF(iff, IFFF_READ)) {
X        puts(ERR_OPEN);
X        goto die;
X    }
X
X    /* Let's do it...*/
X    do {
X        switch(error=ParseIFF(iff, IFFPARSE_RAWSTEP)) {
X        case IFFERR_EOC:/* End of a context (chunk). */
X            break;
X        case IFFERR_EOF:/* End of the stream. */
X            goto die;
X            break;
X        case SUCCESS:   /* Entering a new context (chunk). */
X            chunk = CurrentChunk(iff);
X            for (i=0; i<iff->iff_Depth; i++)
X                printf(LEVEL);
X            printf("%s %ld %s\n", 
X                IDtoStr(chunk->cn_ID, buf1), 
X                chunk->cn_Size, 
X                IDtoStr(chunk->cn_Type, buf2));
X            break;
X        default:        /* Everything else is a genuin error. */
X            printf(ERR_FAILED, error);
X            goto die;
X            break;
X        }
X    } while (TRUE);
X
X
X    /* Make a clean exit. */
Xdie:
X    if (iff) {
X        CloseIFF(iff);
X        if (iff->iff_Stream)
X           CloseClipboard((struct ClipboardHandle *)iff->iff_Stream);
X        FreeIFF(iff);
X    }
X    if (IFFParseBase)
X        CloseLibrary(IFFParseBase);
X    exit(0);
X}
END_OF_FILE
if test 2514 -ne `wc -c <'sources/lsclip.c'`; then
    echo shar: \"'sources/lsclip.c'\" unpacked with wrong size!
fi
# end of 'sources/lsclip.c'
fi
if test -f 'sources/makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sources/makefile'\"
else
echo shar: Extracting \"'sources/makefile'\" \(602 characters\)
sed "s/^X//" >'sources/makefile' <<'END_OF_FILE'
XCFLAGS = -ps -bs -safmprs -hi prep16.p
XLIBC = -ps -safmprs -hi prep16.p
X#LIBC = -safmprs -hi prep16.p -dSAFE_OPEN
XLFLAGS = -g +q
X
X#>>>>>>>>>>>>>>>>> Small-iffparse library <<<<<<<<<<<<<<
XLIBOBJ = libsup.o handleiff.o
XASMOBJ = libstart.o 
X
Xall: iffparse.library lsclip pasteclip cutclip
X    Echo "Done!"
X    
Xiffparse.library: $(LIBOBJ) $(ASMOBJ)
X	ln $(LFLAGS) -o iffparse.library $(LIBOBJ) $(ASMOBJ) -lc16
X
Xlsclip: lsclip.o
X    ln $(LFLAGS) -o lsclip lsclip.o -lc16
X
Xpasteclip: pasteclip.o
X    ln $(LFLAGS) -o pasteclip pasteclip.o -lc16
X
Xcutclip: cutclip.o
X    ln $(LFLAGS) -o cutclip cutclip.o -lc16
END_OF_FILE
if test 602 -ne `wc -c <'sources/makefile'`; then
    echo shar: \"'sources/makefile'\" unpacked with wrong size!
fi
# end of 'sources/makefile'
fi
if test -f 'sources/pasteclip.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sources/pasteclip.c'\"
else
echo shar: Extracting \"'sources/pasteclip.c'\" \(2897 characters\)
sed "s/^X//" >'sources/pasteclip.c' <<'END_OF_FILE'
X/*
X * Usage:       PasteClip
X * Function:    Show the content of the clipboard if it is text.
X * Description: This is an example of the standard way of using the 
X *              iffparser in the most simple way, i.e. in the 
X *              RAWSTEP-mode when you want to read data from the 
X *              clipboard (and files).
X *
X * Written by:  Michael Jansson. 1990-12-08
X */
X
X
X#include <libraries/iffparse.h>
X#include <proto/iffparse.h>
X
X#define NAME        "Error in PasteClip: "
X#define ERR_LIB     NAME "Could not open iffparse.library!"
X#define ERR_MEM     NAME "Out of memory!"
X#define ERR_CLIP    NAME "Could not open the clipboard!"
X#define ERR_OPEN    NAME "Could not open primary clip in clipboard!"
X#define ERR_FAILED  NAME "Failed to read the clipboard (Error Code: %ld)!\n"
X#define LEVEL ". "
X#define DONE "Done!"
X#define SUCCESS 0L
X
Xstruct Library *IFFParseBase;
X
Xvoid
Xmain(void)
X{
X    struct ContextNode *chunk = NULL;
X    struct IFFHandle *iff = NULL;
X    long error, size;
X    char *string;
X
X    /* Open and initiate the usual stuff. */
X    if ((IFFParseBase=OpenLibrary("iffparse.library", 0L))==NULL) {
X        puts(ERR_LIB);
X        goto die;
X    }
X    if ((iff = AllocIFF())==NULL) {
X        puts(ERR_MEM);
X        goto die;
X    }
X    if ((iff->iff_Stream=(ULONG)OpenClipboard(0L))==0L) {
X        puts(ERR_CLIP);
X        goto die;
X    }
X    InitIFFasClip(iff);
X    if (OpenIFF(iff, IFFF_READ)) {
X        puts(ERR_OPEN);
X        goto die;
X    }
X
X    /* Read the data. */
X    do {
X        switch(error=ParseIFF(iff, IFFPARSE_RAWSTEP)) {
X        case IFFERR_EOC:
X            break;
X        case IFFERR_EOF:
X            goto die;
X            break;
X        case SUCCESS:
X            chunk = CurrentChunk(iff);
X            /* The proper way to know when the propper chunk has been reached
X             * is to keep track of it with flags etc. There is a slight 
X             * possibility that there is a CHRS-FTXT in the clipboard that
X             * is not part of a FORM-FTXT chunk.
X             */
X            if (chunk->cn_ID=='CHRS' && chunk->cn_Type=='FTXT') {
X                size = chunk->cn_Size;
X                if ((string = (char *)AllocMem((long)size, 0L))==NULL) {
X                    puts(ERR_MEM);
X                    goto die;
X                }
X                ReadChunkBytes(iff, (APTR)string, (long)size);
X                Write(Output(), string, size);
X                FreeMem((APTR)string, (long)size);
X                goto die;
X            }
X            break;
X        default:
X            printf(ERR_FAILED, error);
X            goto die;
X            break;
X        }
X    } while (TRUE);
X
X    /* Terminate. */
Xdie:
X    if (iff) {
X        CloseIFF(iff);
X        if (iff->iff_Stream)
X           CloseClipboard((struct ClipboardHandle *)iff->iff_Stream);
X        FreeIFF(iff);
X    }
X    if (IFFParseBase)
X        CloseLibrary(IFFParseBase);
X    exit(0);
X}
END_OF_FILE
if test 2897 -ne `wc -c <'sources/pasteclip.c'`; then
    echo shar: \"'sources/pasteclip.c'\" unpacked with wrong size!
fi
# end of 'sources/pasteclip.c'
fi
if test -f 'sources/undefs.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'sources/undefs.h'\"
else
echo shar: Extracting \"'sources/undefs.h'\" \(875 characters\)
sed "s/^X//" >'sources/undefs.h' <<'END_OF_FILE'
X/* This file containns all the no-ops functions. */
X
X#define ReadChunkRecords    NOOP
X#define WriteChunkRecords   NOOP
X#define Reserved            NOOP
X#define EntryHandler        NOOP
X#define ExitHandler         NOOP
X#define PropChunk           NOOP
X#define PropChunks          NOOP
X#define StopChunk           NOOP
X#define StopChunks          NOOP
X#define CollectionChunk     NOOP
X#define CollectionChunks    NOOP
X#define StopOnExit          NOOP
X#define FindProp            NULL_NOOP
X#define FindCollection      NULL_NOOP
X#define FindPropContext     NULL_NOOP
X#define ParentChunk         NULL_NOOP
X#define AllocLocalItem      NULL_NOOP
X#define LocalItemData       NOOP
X#define SetLocalItemPurge   NOOP
X#define FreeLocalItem       NOOP
X#define FindLocalItem       NULL_NOOP
X#define StoreLocalItem      NOOP
X#define StoreItemInContext  NOOP
X#define InitIFF             NOOP
END_OF_FILE
if test 875 -ne `wc -c <'sources/undefs.h'`; then
    echo shar: \"'sources/undefs.h'\" unpacked with wrong size!
fi
# end of 'sources/undefs.h'
fi
echo shar: End of archive 1 \(of 2\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked both 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.misc.