Bzip2 shared library for Atari (MiNT/MagiC)
=================================================

This is an attempt to make BZip2 available as a shared libary for Atari.

The goal here was to make it as easy as possible to switch from linking a
static version, to use the shared version instead. Remember though that
neither the OS nor the compilers in use have direct support for that,
and that the application needs to support it.


How to use it:
==============

for GCC:
Install the header files from the include directory to /usr/include (or
to your cross installation directory), the libraries to /usr/lib, and
the executables from /mint/slb to a directory where Slbopen can find them
(usually also /mint/slb, or c:/gemsys/slb)

In your application:
- Define -DBZIP2_SLB before including bzlib.h, or include slb/bzip2.h instead
  (both should have the same effect)
- add a call to slb_bzip2_open() before using any function from libbz2. Optionally,
  you can pass in a library search path that is passed along to Slbopen().
- for completeness, you can also add a call to slb_bzip2_close() before your
  application terminates.
- link to libbz2.slb.a instead of the normal libbz2.a
- use any function from bzlib.h as usual. No need to pass any extra parameters.

For Pure-C:
Same as for GCC, except:
- You can use the header files from the purec/include directory instead. They
  are identical to the ones for GCC, just converted to have CR/LF endings.
- the static library is named bz2.lib, the import library for the
  shared library is bz2slb.lib.

That's all!

Note that slb_bzip2_open() contains fallback code for systems lacking Slbopen(),
so this should work even on SingleTOS.



Files in the archive:
=====================

usr/include/bzlib.h
    Slightly modified versions from the files of the bzip2 distribution,
    intended to be usable for both static and shared linking.
usr/include/slb/bzip2.h
    Include file for using the shared library, with declarations of the above
    mentioned functions.
usr/lib/libbz2.a
    Static version of the library
usr/lib/libbz2.slb.a
    Import library for using the shared library instead
usr/lib/m68020-60/libbz2.a
    Static version of the library, compiled for 68020 or better
usr/lib/m68020-60/libbz2.slb.a
    Import library for using the shared library instead,
    compiled for 68020 or better
usr/lib/m5475/libbz2.a
    Static version of the library, compiled for coldfire
usr/lib/m5475/libbz2.slb.a
    Import library for using the shared library instead,
    compiled for coldfire
usr/bin/*
    
    The command tool bzip2 from the original distribution,
    recompiled for using the shared library instead.

purec/include:
    Header files for Pure-C. Same as for GCC, just converted to have CR/LF endings.
purec/lib/000/bz2.lib
    Static version of the library (not yet available)
purec/lib/000/bz2slb.lib
    Import library for using the shared library instead
purec/lib/020/bz2.lib
    Static version of the library, compiled for 68020 or better (not yet available)
purec/lib/020/bz2slb.lib
    Import library for using the shared library instead,
    compiled for 68020 or better
    
mint/slb
    The shared library itself. Use the one appropiate for your system.
    Those were compiled by GCC, but can be used also by Pure-C.


Exported functions:
===================

#0: long bzip2_slb_control(long fn, void *arg)
    - used internally by slb_bzip2_open() to check that
      the correct version of the library was loaded

everything else:
    - all functions publicitly available from bzlib.h.
      Consult that header file, or the documentation
      in the original archive on how to use them.


Known bugs:
===========

- Although the handle of the shared library and its corresponding exec
  function are available to the application, the exec function
  should not be directly called. Always use the import functions
  (they cover all available functions, anyway).

- When using the library with Pure-C, you may have to change some variables
  from plain "int" to "bz_int_t". This is because the library was
  compiled by gcc, and sizeof(int) differs between the two.
