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

FreeBSD Manual Pages

  
 
  

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

NAME
       zzip_fopen, zzip_freopen	-  start usage.

SYNOPSIS
       #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)

DESCRIPTION
	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 <emphasis>filename</emphasis> 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 returned.

	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:

	 "r" : O_RDONLY	:  read-only

	 "b" : O_BINARY	:  binary (win32 specific)

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

	 "i" : ZZIP_CASELESS :	inside zip file

	 "*" : 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:

	 "x" : O_EXCL :	fail if	file did exist

	 "s" : O_SYNC :	synchronized access

	 "n" : O_NONBLOCK : nonblocking	access

	 "z#" :	compression level : for	zlib

	 "g#" :	group access : unix access bits

	 "u#" :	owner access : unix access bits

	 "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
       errno(3).

	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 incidentally 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
       errno(3).

AUTHOR
	Guido Draheim <guidod@gmx.de> Tomi Ollila <Tomi.Ollila@iki.fi>

COPYRIGHT
	Copyright (c) Guido Draheim, use under copyleft	(LGPL,MPL)

SEE ALSO
	fopen(2)

zziplib				    0.13.78			 zzip_fopen(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zzip_freopen&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help