[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
oo2c compression channel
I've attached an oo2c compression channel which can be
set up to compress data coming from a rider and goes to
an underlying channel such as a file.
This compression utility is based on the Oberon system
compress utility (using a LZSS algorithm) and should be
compatible with Oberon system compressed routines although
this hasn't been tested (as long as a header is
generated). Of course, for your own use, you can save
space in the output stream if no header is used. I've
checked the compression against gzip and bzip2 and it's
not terribly impressive. It does do somewhat better
than bzip2 for small input files, though.
A simple CLI utility called "compress" is included
which compresses/expands a file passed as an argument.
If the file ends in an ".Arc" extension, the file is
expanded; otherwise the file is compressed. This is
a very stupid utility and doesn't do checks for files
expanding as a result of compression. This is possible
for some bzip2 input files. If there are any problems
or someone adds some nifty features, please let me
know.
If I have time, I may also produce a bzip2 compression
channel.
Enjoy,
Michael Griebling
begin 644 compress.tar.gz
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
M?[_&MH9J9*B_O"D2NEK)0K8[ATS&>4UJ41=/>GE,<M=TJOBMW#BSY6&.U
MZU`RZ+ZISUJ#4J(OI3S'TH?]-=@+%0=*[:WI3L_>JG9QT)=M.[T77?457TSA
MF5HR-;:6JC1%G=_A,<[+SH!UV*TOR;S@#=BOP`H_/F`JU,-'/:=<G];;>58A
M;F_&'2%'+O?ISQ9Q/Y\`@4SMN8"<RP,&B#)T]$"UGP*O85CK;V9VJ_::U^Q)
MD>Q;3EJ1-KSP<8JDC6"I(BEK]I`BR6;;%,F5ATVI(FTJ%<D/9+BZM'E(E_B"
M[^B2^S<\Y*=2JRIU:F-T:L-UJM453B-'ES;;=,E/^?5XMUV7;(JA>PW!;4/;
M6,DHXUE[J/CIM(5J%A51D&3N(OXE!:BCO_T4X2M\";[6NXFRT.6;RVG,T>?Q
M&(_%[I:T9O[0">X>Y#.6Z]647N+T.DI'N-/;W^]ZY7IO0A-G-Q.\V98`QA>8
M)_4&6V]38IXV__3FR1J62O-$2:\'9;:GS,H8CA2#*K83U!HY8U&;.]CE97[L
MP07*'>_]_88@&:T+QEL6`*I0;@>/8@3)F<9B$,ATU<$@%Y8?%'*FWDT/TGL?
M]:<\YC:$K_]LCS)J["]HZ+G653:ZJQI53B/)Q`&Y^O*O>%W3;2C]&IL>FM["
M_DN<Y'^A5V1)D,SCAJLTF833=1K^3J+H.),NEM+KING9T\%]^J,.E0A^R7F)
M9D/I,<:VXPN/-14'&!J\;6!HL=:`@85]YZE\T,R<)6P[E7#TR3TX:WVH]]I_
MDKKA/Z'F'$\88U!L9MX4]=2^!,O">QNLIO@J"L<\PI6JE'#]J$<1GKW^RVN<
M3'A\Z'GW1S1VG]UG]_G'?7;Y?[O\OUW^WR[_;Y?_]RL>3^SR_W;Y?[O\OUW^
MWR[_;Y?_M\O_V^7_[?+_#(MV^7^[_+]=_M\N_V^7_[?+__OR#;;8Y?_M\O]V
I^7_RL\O_V^7_[?+_3-TN_V^7_[?+_]OE_^WR_QZ3__?_B]0;+P"@``#M
`
end