19. Aug 2001
## SDL rwops
Example to make an SDL_rwops interface.
some MSVC help in
README.MSVC6 and
README.SDL
### Source
The example sources of the [zziplib library](zziplib.html)
are usually put under the [ZLIB license](COPYING.ZLIB) so
that you can reuse the code freely in your own projects. Here we talk
about the example that might be most useful for
[SDL](http://libsdl.org) based programs.
Just copy the two files
[SDL_rwops_zzip.h](SDL_rwops_zzip.h)
and
[SDL_rwops_zzip.c](SDL_rwops_zzip.c)
to the directory with your other project sources, and make sure
to link it somehow to your programs. I did not make the effort to
create a separate library out of it - it would just export one
single function `SDL_RWFromZZIP` that has the same call-synopsis
like `SDL_RWFromFile` (but it can not (yet) write a zip-file).
The source file [SDL_rwops_zzip.c](SDL_rwops_zzip.c) is
quite short - it just stores a ZZIP_FILE handle in the userdata
field of the `SDL_rwops` structure. The SDL'rwop calls will then
fetch that pointer and call the corresponding functions from the
[zziplib library](zziplib.html). Most of the glue code
is in the `SDL_RWFromZZIP` function that allocates an
`SDL_rwops` structure and fills the handler-functions
into the callback fields.
### Usage
If you link this file to your project, remember that your executables
do now have additional dependencies - not only -lzzip to link with
the [zziplib library](zziplib.html) - do not forget to
link with zlib library via -lz. Of course, there is a lib-config
script that you can use: `zzip-config --libs` will return these
linker-infos (unless you have a native-windows system - it is
shell-script).
As an example, replace that `SDL_RWFromFile` that accesses your
game-graphic files - these files are stored in shared/myapp
of course where they belong. When you've done that
then go to X/share/myapp and \
`(cd graphics/ && zip -9r ../graphics.zip .)` \
and rename the graphics/ subfolder - and still all your files
are found: a filepath like X/shared/graphics/game/greetings.bmp
will open X/shared/graphics.zip and return the zipped file
game/greetings.bmp in the zip-archive (for reading that is).
### Test
The [zziplib](zziplib.html) configure script does not
look for [SDL](http://libsdl.org). If you know that
you have [SDL](http://libsdl.org) installed
then you can check this `SDL_rwops` example by using
`make testsdl`. This will compile the
two source files [SDL_rwops_zzip.c](SDL_rwops_zzip.c)
and [SDL_rwops_zzcat.c](SDL_rwops_zzcat.c) to be linked
together into an executable called `zzcatsdl`. The test
will continue with a `zzcatsdl test/README`
- just like it is done for `make test3`.
The corresponding section in the [Makefile.am](Makefile.am)
is also an example how to use lib-config scripts to build files. Here
there is no build-processing that had been tweaked much by automake/autoconf.
Just use sdl-config and zzip-config to add the needed flags.