zzip_disk_mmap, zzip_disk_init, zzip_disk_new, zzip_disk_munmap, zzip_disk_open, zzip_disk_close — turn a filehandle into a mmapped zip disk archive handle
#include <zzip/mmapped.h>
zzip__new__ ZZIP_DISK*
zzip_disk_mmap( | ) ; |
; |
int
zzip_disk_init( | ) ; |
; |
zzip__new__ ZZIP_DISK*
zzip_disk_new( | ) ; |
; |
int
zzip_disk_munmap(
)
;
(ZZIP_DISK* disk)
;
ZZIP_DISK* zzip__new__
zzip_disk_open( | ) ; |
; |
int
zzip_disk_close(
)
;
(ZZIP_DISK* disk)
;
The zzip_disk_mmap
function uses the given file-descriptor to detect the length of the
file and calls the system mmap(2)
to put it in main memory. If it is
successful then a newly allocated ZZIP_DISK* is returned with
disk->buffer pointing to the mapview of the zipdisk content.
The zzip_disk_init
function does primary initialization of a disk-buffer struct.
The zzip_disk_new
function allocates a new disk-buffer with malloc(3)
The zzip_disk_munmap
function is the inverse of zzip_disk_mmap
and using the system
munmap(2) on the buffer area and free(3)
on the ZZIP_DISK structure.
The zzip_disk_open
function opens the given archive by name and turn the filehandle
to zzip_disk_mmap
for bringing it to main memory. If it can not
be mmap(2)
'ed then we slurp the whole file into a newly malloc(2)
'ed
memory block. Only if that fails too then we return null. Since handling
of disk->buffer is ambigous it should not be snatched away please.
The zzip_disk_close
function will release all data needed to access a (mmapped)
zip archive, including any malloc()ed blocks, sharedmem mappings
and it dumps the handle struct as well.