LZX archive support

I'd really love to see LZX archive support in Opus.
I understand that you're currently re-using code from 7-zip, which doesn't officially support LZX. However, I found that they do have an LZXDecoder in the source files.

Check the CPP\7zip\Compress folder of the 7-zip sources archive, and you'll find:

  • Lzx.h
  • LzxDecoder.cpp
  • LzxDecoder.h

I'm not sure why 7-zip doesn't seem to use that on the front-end, or indeed open LZX archives, but perhaps the code can be re-used to implement LZX support in Opus anyway?

If that doesn't help for some reason, I can offer an alternative also: I'm using this piece of code to support LZX archives in Amiberry, an Amiga emulator for ARM devices:

I could try to implement it in Opus myself, but since I haven't written anything for Opus before, it will take me some time to understand how plugins work. I was hoping that the information above would be enough to get it officially added, but if all else fails, I'll have to take the time to develop it myself...

LZX seems to be in 7-Zip to handle CAB archives. I don't know if that code is compatible with LZX/LHA archives from the Amiga or not.

If there was LZX/LHA code that provided an API similar to UnRAR.dll (or to 7z.dll, but that's more complex), we could probably integrate that.

How about the sources from http://aminet.net/package/util/arc/UnLZX2

They contain a Windows binary as well...

One more potentially helpful source:
https://totalcmd.net/plugring/UnLZX.html

It also includes sources for their UnLZX plugin for Total Commander