#file-format #archive #arc #format-file #zoo #bbs #hyp

unarc-rs

Library for handling & extracting ARC, ZOO, SQZ and HYP archives

5 releases (3 breaking)

0.4.1 May 20, 2024
0.4.0 May 20, 2024
0.3.0 May 18, 2024
0.2.0 May 17, 2024
0.1.0 May 16, 2024

#959 in Parser implementations

MIT license

150KB
2K SLoC

unarc-rs

A library for rust which supports reading of ARC, ARJ, ZOO, SQ/SQ2/QQQ, SQZ, .Z (unix compress) and HYP files. This library was written for my bbs project as part of the file analyzation.

This library contains outdated decompression algorithms. I didn't bother to write the compression for those. I don't need them for my project. Nor do I think they're worth implementing - at least for me. I'll take PRs.

(In case I overlook the issues/PRs here contact me on https://github.com/mkrueger/icy_board or per mail)

Out of scope

TODO

As part of my bbs project this is finished for now - got a much bigger extend than planed. However there is always stuff to do:

  • Finish Squeeze It & Hyper compression methods
  • UC2 - The source code of UtraCompressor II is released and available here: http://www.nicodevries.com/professional/ Not sure about the LGPL licensing.
  • Add more obscure formats like StuffIT, maybe Amiga ADF

Archive formats

arc

Supported compression methods:

  • Unpacked
  • Packed
  • Squeezed
  • Crunched
  • Squashed

Not supported: Crushed & Distilled

ARC was #1 in the BBS scene before "the patent thing" and ZIP overtook.

Currently it's enough for me - I tried to find a LZW implementation that works but they need some tweaks to work with ARC. Unfortunately the ARC implementations I found were GPL/LGPL and I want a MIT/Apache library so I can't just port these over.

ARJ

Supported compression methods:

  • STORE
  • Method 1-3
  • Method 4 (fastest)

Notes: That should cover all compressiom methods

This library was written for my bbs project as part of the file analyzation. ARJ was popular in the BBS scene in the 90' before RAR showed up.

All advanced ARJ features are not supported like multiple archives, password protection etc. The scope is limited to what I need. Feel free to add features you need. (In case I overlook the issues/PRs here contact me on https://github.com/mkrueger/icy_board or per mail)

Zoo

Compression method 0, 1 & 2 are supported - should cover all methods.

SQ/SQ2

I wrongly assumed that SQZ == SQ - after implementing squeeze for arc I recognized my error so I threw in the old SQ format even if it's 1 file only. I added support for the SQ2 format as well. These both don't have a real extension it's either Q as 2nd char or .SQ/.SQ2/.QQQ Both formats should be fully supported - there is only one compression method.

Store only

Here are the compression formats where the compression isn't supported (only 'store' methods). But archives can be opened & analyzed.

SQZ - Squeeze It

Only method 0 (Store) supported It's hard do find infos for that but I suppose they use Squeeze compression as ARC does in method 1

HYP - Hyper

Only method 0 (Store) supported It's hard do find infos for that - does anyone know which compression Hyper uses?

Z - Compress

Only contains 1 file. It's a simple LZW compression. Need that as part of a mail exchange standard.

LICENSE

MIT or Apache-2.0 but I don't really care :)

Dependencies

~2MB
~32K SLoC