lbrate 1.1 - extract/decompress CP/M LBR archives.
Copyright (C) 2001 Russell Marks.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


Description
-----------

lbrate extracts/decompresses files from the CP/M LBR format. (It can
also list and test such archives.) It does this in an `unzip'-like
manner, mostly hiding the details of individually compressed and
renamed files, and transparently deals with the required
decompression/renaming.

(It can also work on CP/M-ish compressed files (`squeezed', etc.)
outside of such archives, treating them as if they were really
single-member LBRs.)

For more on how lbrate works and how to use it, do `man lbrate' once
it's installed. You might also want to check the "FILENAME ISSUES"
section if the description sounded a bit confusing... :-)


Installation
------------

Check the Makefile is ok (it should be), then do `make' and (as root)
`make install'.


Why not just use `lar', `xusq', and `uncr'?
-------------------------------------------

Firstly, all previous decompressors that I'm aware of for the CP/M
"Q", "Z", and "Y" compression types (including both the original CP/M
tools and `xusq'/`uncr') have been non-Free. This is less than ideal
IMHO.

That apart, here are some practical reasons:

- lbrate does the whole process in one. Admittedly you could script up
  something similar which used lar/xusq/uncr (I used to use something
  like this myself), but it wouldn't really work as well.

- lbrate can extract "Y" type (LZH) compressed files, both 1.x and 2.x
  versions. I believe it's the first non-CP/M program to support this
  format.

- lbrate supports extracting version 1.x crunched files, which `uncr'
  doesn't.

- lar doesn't check LBR CRCs, and therefore can't test the integrity
  of LBRs.


Who uses LBR files, anyway?
---------------------------

Even if no-one were ever to create a new LBR file, there's still a
*lot* of existing CP/M software that is only available in this format.
If you're going to use CP/M stuff, you pretty much have to be able to
read LBRs (and .arc/.ark files, which are extractable with `nomarch').
For example, the Walnut Creek CP/M CD contains well over 4000 LBR
archives.


What about Unisys?
------------------

lbrate is capable of reading LZW-compressed files (`crunched' files
use LZW), so it has the same legal status as a GIF decoder. Even in
their current set-lawyers-to-kill state, I don't think Unisys have a
problem with programs which only *read* LZW. Their patent expires soon
anyway, and once that happens we can all just point at them and laugh.
I know I will. :-)

As for other patents, LZH compression is covered by US patent no.
4,906,991 (which seems to claim all tree-using LZ77), but the patent
does not claim any form of decompression. Since lbrate only
decompresses, it should be ok.


Is readlzh.c really GPL?
------------------------

Yes - the original author gave explicit permission for me to do this.
For the background, read the comment at the top of readlzh.c, and see
lzhuf-post.txt.


Contacting me
-------------

You can email me at rus@svgalib.org.


Share and enjoy!

-Rus.
