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.


  • Guido Draheim <>


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