Name
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
Synopsis
#include <zzip/mmapped.h>
zzip__new__ ZZIP_DISK_FILE*
zzip_disk_fopen( | ) ; | |
zzip__new__ ZZIP_DISK_FILE*
zzip_disk_entry_fopen( | ) ; | |
zzip_size_t
zzip_disk_fread( | ) ; | |
Description
The 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 zzip_disk_entry_fopen
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.
The 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
with zzip_disk_feof
for the difference.
The zzip_disk_fclose
function releases any zlib decoder info needed for decompression
and dumps the ZZIP_DISK_FILE* then.
The 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
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