FreeBSD Manual Pages
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 be- ing 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 al- lows for more freedom to support the extra zzip modes called ZZIP_CASEIN- SENSITIVE 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 ini- tialisation 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 re- turn it). On error the zzip_fopen function will return null setting er- rno(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 struc- tures 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 file- name 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 re- turn it). On error the zzip_freopen function will return null setting er- rno(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.80 zzip_fopen(3)
NAME | SYNOPSIS | DESCRIPTION | AUTHOR | COPYRIGHT | SEE ALSO
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+15.1.quarterly>
