zzip_disk_fopen, zzip_disk_entry_fopen, zzip_disk_fread, zzip_disk_fclose, zzip_disk_feof — openening a file part wrapped within a (mmapped) zip archive
zzip_disk_fopen function opens a file found by name, so it does a search into
the zip central directory with
zzip_disk_findfile and whatever
is found first is given to
the ZZIP_DISK_FILE* is rather simple in just encapsulating the
arguments given to the
zzip_disk_entry_fopen function plus a zlib deflate buffer.
Note that the ZZIP_DISK pointer does already contain the full
mmapped file area of a zip disk, so open()ing a file part within
that area happens to be a lookup of its bounds and encoding. That
information is memorized on the ZZIP_DISK_FILE so that subsequent
_read() operations will be able to get the next data portion or
return an eof condition for that file part wrapped in the zip archive.
zzip_disk_fread function reads more bytes into the output buffer specified as
arguments. The return value is null on eof or error, the stdio-like
interface can not distinguish between these so you need to check
zzip_disk_feof for the difference.
zzip_disk_fclose function releases any zlib decoder info needed for decompression
and dumps the ZZIP_DISK_FILE* then.
zzip_disk_feof function allows to distinguish an error from an eof condition.
Actually, if we found an error but we did already reach eof then we
just keep on saying that it was an eof, so the app can just continue.
Copyright (c) 2003,2004,2006 Guido Draheim
All rights reserved,
use under the restrictions of the
Lesser GNU General Public License
or alternatively the restrictions
of the Mozilla Public License 1.1