Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ZZIP_FOPEN(3)		     zziplib Function List		 ZZIP_FOPEN(3)

       zzip_fopen, zzip_freopen	-

       #include	<zzip/lib.h>

       ZZIP_FILE * zzip_fopen((zzip_char_t * filename, zzip_char_t * mode));

       ZZIP_FILE *
				zzip_freopen((zzip_char_t * filename, zzip_char_t * mode, ZZIP_FILE * stream));

       The zzip_fopen function will fopen(3) a real/zipped file.

       It has some magic functionality builtin - it will first try to open the
       given filename as a normal file.	If it does not exist, the given	path
       to the filename (if any)	is split into its directory-part and the
       file-part. A ".zip" extension is	then added to the directory-part to
       create the name of a zip-archive. That zip-archive (if it exists) is
       being searched for the file-part, and if	found a	zzip-handle is

       Note that if the	file is	found in the normal fs-directory the returned
       structure is mostly empty and the zzip_read call	will use the libc
       read(2) to obtain data. Otherwise a zzip_file_open is performed and any
       error mapped to errno(3).

       unlike the posix-wrapper	zzip_open the mode-argument is a string	which
       allows for more freedom to support the extra zzip modes called
       ZZIP_CASEINSENSITIVE and	ZZIP_IGNOREPATH. Currently, this zzip_fopen
       call will convert the following characters in the mode-string into
       their corrsponding mode-bits:

       o    "r"	: O_RDONLY : read-only

       o    "b"	: O_BINARY : binary (win32 specific)

       o    "f"	: O_NOCTTY : no	char device (unix)

       o    "i"	: ZZIP_CASELESS	: inside zip file

       o    "*"	: ZZIP_NOPATHS : inside	zip file only

       all other modes will be ignored for zip-contained entries but they are
       transferred for compatibility and portability, including	these extra
       sugar bits:

       o    "x"	: O_EXCL : fail	if file	did exist

       o    "s"	: O_SYNC : synchronized	access

       o    "n"	: O_NONBLOCK : nonblocking access

       o    "z#" : compression level : for zlib

       o    "g#" : group access	: unix access bits

       o    "u#" : owner access	: unix access bits

       o    "o#" : world access	: unix access bits

       ... the access bits are in traditional unix bit format with 7 =
       read/write/execute, 6 = read/write, 4 = read-only.

       The default access mode is 0664,	and the	compression level is ignored
       since the lib can not yet write zip files, otherwise it would be	the
       initialisation value for	the zlib deflateInit where 0 = no-compression,
       1 = best-speed, 9 = best-compression.

       The zzip_fopen function returns a new zzip-handle (use zzip_close to
       return it). On error the	zzip_fopen function will return	null setting

       The zzip_freopen	function receives an additional	argument pointing to a
       ZZIP_FILE* being	already	in use.	If this	extra argument is null then
       the zzip_freopen	function is identical with calling zzip_fopen

       Per default, the	old file stream	is closed and only the internal
       structures associated with it are kept. These internal structures may
       be reused for the return	value, and this	is a lot quicker when the
       filename	matches	a zipped file that is incidently in the	very same zip
       arch as the old filename	wrapped	in the stream struct.

       That's simply because the zip arch's central directory does not need to
       be read again. As an extension for the zzip_freopen function, if	the
       mode-string contains a "q" then the old stream is not closed but	left
       untouched, instead it is	only given as a	hint that a new	file handle
       may share/copy the zip arch structures of the old file handle if	that
       is possible, i.e	when they are in the same zip arch.

       The zzip_freopen	function returns a new zzip-handle (use	zzip_close to
       return it). On error the	zzip_freopen function will return null setting

       o   Guido Draheim <> Tomi Ollila <>

       Copyright (c) 1999,2000,2001,2002,2003 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


zziplib				    0.13.62			 ZZIP_FOPEN(3)


Want to link to this manual page? Use this URL:

home | help