Godzil / theunarchiver

Automatically exported from code.google.com/p/theunarchiver
Other
0 stars 0 forks source link

PMARC compression support #691

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago

Pmarc was a compression algorithm used on LHA files that isn't supported by 
theunarchiver yet. A bit more info can be obtained on this Wikipedia article:

http://en.wikipedia.org/wiki/LHA_(file_format)#PMarc_extensions

This format was common on CP/M and also the most used compressed archive format 
in the MSX platform.

There's already a version of the LHA utility upgraded to support the PMARC 
algorithm. You can read more about this on the MSX FAQ:

http://www.faq.msxnet.org/suffix.html

This is the direct link for the upgraded lha:

http://www.msxarchive.nl/pub/msx/utils/othersys/lha-pma-2.tar.bz

Files with the PMARC algorithm can have either the LZH, LHA or PMA extension. 
The  The MSX-archive website also contains tons of PMA files if you need any 
for testing.

Original issue reported on code.google.com by schmid...@gmail.com on 12 Aug 2013 at 10:32

GoogleCodeExporter commented 8 years ago
I think what has kept me from adding it is that I have been unable to find test 
case files.  If you can find some of those, that would help a lot. I think 
there are several PMARC modes, too, so it would be great to find files for all 
of them.

Looking at the code, there are pm0, pm1 and pm2 modes. pm0 is uncompressed and 
should work, and there is code to handle pm2, but it is entirely untested. 
There is no support for pm1.

Original comment by paracel...@gmail.com on 12 Aug 2013 at 10:37

GoogleCodeExporter commented 8 years ago

Well, if the lack of files was the problem, then you hit the PMARC jackpot in 
the MSX community!     :)

You can find tons PMA files in the following folders of the MSX-Archive:

http://www.msxarchive.nl/pub/msx/docs/programming/
http://www.msxarchive.nl/pub/msx/utils/archive
http://www.msxarchive.nl/pub/msx/demos/
http://www.msxarchive.nl/pub/msx/docs/NL   (nearly all folders inside this 
folder)

For even more PMA files you can take a look at the index file. Just search for 
the ".pma" extension.
http://www.msxarchive.nl/pub/msx/allfiles.txt

Many LZH files contained on the MSX-archive website are in fact PMA compressed. 
Some have mixed LZH/PMA compressions (I mean a single archive contains both 
files compressed with LZH and PMA). But the PMA extension will allow you to 
easily find the ones that are PMARC compressed for sure.

Original comment by schmid...@gmail.com on 12 Aug 2013 at 11:11

GoogleCodeExporter commented 8 years ago
Want to do some testing on that? Try grabbing the unar and lsar command-line 
utilities. "lsar -l" or lsar -L" should list the compression format used for 
files. Then you can see if unar will handle them or not. Basically, pm2 might 
work already.

Original comment by paracel...@gmail.com on 12 Aug 2013 at 11:16

GoogleCodeExporter commented 8 years ago

Indeed, it worked fine for pm0 and pm2 files. It seems stable enough so the PMA 
extension can be associated by default with theunarchiver.

Only the pm1 files are still unsupported. I attached one here, if you want to 
check if it's possible to support it.

Original comment by schmid...@gmail.com on 12 Aug 2013 at 11:43

Attachments:

GoogleCodeExporter commented 8 years ago

The correct link for the upgraded lha is:

http://www.msxarchive.nl/pub/msx/utils/othersys/lha-pma-2.tar.bz2

Original comment by schmid...@gmail.com on 12 Aug 2013 at 11:54

GoogleCodeExporter commented 8 years ago
It should probably not be too difficult to do. I'll look at it for the next 
round of updates.

Original comment by paracel...@gmail.com on 12 Aug 2013 at 11:55

GoogleCodeExporter commented 8 years ago
It seems that Lhasa already has support for pm1 files:

http://fragglet.github.io/lhasa/

Original comment by schmid...@gmail.com on 13 Aug 2013 at 12:10

GoogleCodeExporter commented 8 years ago
Damn.

I tried copying the implementation from lhasa and adapting it to The 
Unarchiver, but it didn't work on the first try and failed on that file.

Then I tried lhasa on it, and it couldn't extract it either. That's a bit of a 
problem.

Got any more resources for this to track down? Can you test lhasa to see if it 
unpacks any other files correctly?

Original comment by paracel...@gmail.com on 8 Sep 2013 at 8:40

GoogleCodeExporter commented 8 years ago
Actually... I found some bugs and fixed them until I was failing on the same 
files lhasa was failing on.

Then I looked closer, and found another bug that was only in my code and not in 
lhasa, and fixed that, and now all the files in that archive extract.

So why is lhasa failing on it? A mystery. Either way, seems to work now.

Original comment by paracel...@gmail.com on 9 Sep 2013 at 6:39

GoogleCodeExporter commented 8 years ago
Nice! But is it really decompressing -pm1- compressed files?

These three files contain a lot of other -pm1- .PMA compressed files inside 
them. Would you mind to test those?

http://www.msxarchive.nl/pub/msx/utils/misc/freewar1.pma
http://www.msxarchive.nl/pub/msx/utils/misc/freewar2.pma
http://www.msxarchive.nl/pub/msx/utils/misc/freewar3.pma

Original comment by schmid...@gmail.com on 9 Sep 2013 at 7:10

GoogleCodeExporter commented 8 years ago
They all pass checksum tests, at least.

Original comment by paracel...@gmail.com on 9 Sep 2013 at 7:11

GoogleCodeExporter commented 8 years ago
If you compile a new binary of lsar for Mac OS-X, I can do the extensive 
testing.   :)

Original comment by schmid...@gmail.com on 9 Sep 2013 at 7:21

GoogleCodeExporter commented 8 years ago
No time right now, but the source is in the repo if you can get a build running 
yourself.

Original comment by paracel...@gmail.com on 9 Sep 2013 at 7:22

GoogleCodeExporter commented 8 years ago
The old PMARC 1.24 produces -pm1- archives:
http://smcnet.ddo.jp/mmm/pool/smc/PMARC124.PMA

Original comment by roy...@gmail.com on 11 Sep 2013 at 8:53