6 zzip_dir_alloc_ext_io.3/
9 zzip_dir_creat_ext_io.3/
11 zzip_dir_fdopen_ext_io.3/
13 zzip_dir_open_ext_io.3/
22 __zzip_find_disk_trailer.3/
23 zzip_get_default_io.3/
25 zzip_opendir_ext_io.3/
27 zzip_open_shared_io.3/
28 __zzip_parse_root_directory.3/
33 zzip_close.3/ 1071214812 500 0 100664 23 `
34 .so man3/zzip_fclose.3
36 zzip_closedir.3/1071214812 500 0 100664 965 `
37 .\"Generated by db2man.xsl. Don't modify this, modify the source.
46 .de Sp \" Vertical space (when we can't use .PP)
52 .ie \\n(.$>=3 .ne \\$3
56 .TH "ZZIP_CLOSEDIR" 3 "0.13.24" "zziplib" "zzip_closedir"
58 zzip_closedir \- (zzip/dir.c)
66 #include <zzip/lib\&.h>
70 int \ \fBzzip_closedir\fR\ (ZZIP_DIR*\ dir);
77 \fBThe zzip_closedir function\fR is the equivalent of \fBclosedir\fR(3) for a realdir or zipfile\&.
80 \fBThe zzip_closedir function\fR is magic \- if the given arg\-ZZIP_DIR is a real directory, it will call the real \fBclosedir\fR(3) and then free the wrapping ZZIP_DIR structure\&. Otherwise it will divert to \fBzzip_dir_close\fR which will free the ZZIP_DIR structure\&.
86 Guido Draheim <guidod@gmx\&.de>
90 /0 1071214812 500 0 100664 692 `
91 .\"Generated by db2man.xsl. Don't modify this, modify the source.
100 .de Sp \" Vertical space (when we can't use .PP)
106 .ie \\n(.$>=3 .ne \\$3
110 .TH "ZZIP_COMPR_STR" 3 "0.13.24" "zziplib" "zzip_compr_str"
112 zzip_compr_str \- (zzip/info.c)
120 #include <zzip/lib\&.h>
124 zzip_char_t* \ \fBzzip_compr_str\fR\ (int\ compr);
131 return static const string of the known compression methods, otherwise just "zipped" is returned
137 Guido Draheim <guidod@gmx\&.de>
140 zzip_creat.3/ 1071214812 500 0 100664 22 `
141 .so man3/zzip_mkdir.3
142 /18 1071214812 500 0 100664 2362 `
143 .\"Generated by db2man.xsl. Don't modify this, modify the source.
152 .de Sp \" Vertical space (when we can't use .PP)
158 .ie \\n(.$>=3 .ne \\$3
162 .TH "ZZIP_CREATEDIR" 3 "0.13.24" "zziplib" "zzip_createdir"
164 zzip_createdir \- create a new archive area for writing
170 #include <zziplib\&.h>
174 ZZIP_DIR* \ \fBzzip_createdir\fR\ (zzip_char_t*\ name, int\ o_mode);
184 \fBThe zzip_createdir function\fR will create a new archive area\&. This may either be a a new zip archive or a new directory in the filesystem\&. The returned parameter is a new "zzip dir" handle that should be saved to a variable so it can be used a base argument for \fBzzip_file_mkdir\fR and \fBzzip_file_creat\fR calls\&. The returned handle wraps both possibilities, it can be representing a zip central directory that must be saved to disk using \fBzzip_closedir\fR or it is just a handle for the name of the real directory that still must be run through \fBzzip_closedir\fR to release the wrapper around the directory name\&.
187 The magic is pushed through the o_mode argument\&. Using a mode that has no group\-write bit set (S_IWGRP = 0040) then the file is created as a zip directory\&. Note that this is unabridged of any umask value in the system where the argument to \fBthe zzip_createdir function\fR could be 0775 but with an umask of 0755 it turns out as 0755 for a real directory\&. Using 0755 directly would not create it as a real directory but as a zip archive handle\&.
190 \fBThe zzip_createdir function\fR is not yet implemented, check for #def ZZIP_NO_CREAT Write\-support will extend \fBzzip_closedir\fR with semantics to finalize the zip\-archive by writing the zip\-trailer and closing the archive file\&.
193 Returns null on error and sets errno\&. Remember, according to posix the \fBcreat\fR(2) call is equivalent to
197 open (path, O_WRONLY | O_CREAT | O_TRUNC, o_mode)
199 so any previous zip\-archive will be overwritten unconditionally and EEXIST errors from \fBmkdir\fR(2) are suppressed\&. (fixme: delete the given subtree? like suggested by O_TRUNC? not done so far!)
205 Guido Draheim <guidod@gmx\&.de>
208 /36 1071214812 500 0 100664 33 `
209 .so man3/zzip_dir_alloc_ext_io.3
211 /54 1071214812 500 0 100664 1418 `
212 .\"Generated by db2man.xsl. Don't modify this, modify the source.
221 .de Sp \" Vertical space (when we can't use .PP)
227 .ie \\n(.$>=3 .ne \\$3
231 .TH "ZZIP_DIR_ALLOC_EXT" 3 "0.13.24" "zziplib" "zzip_dir_alloc_ext_io"
233 zzip_dir_alloc_ext_io, zzip_dir_alloc \- (zzip/zip.c)
241 #include <zzip/lib\&.h>
245 ZZIP_DIR* \ \fBzzip_dir_alloc_ext_io\fR\ (zzip_strings_t*\ ext, const\ zzip_plugin_io_t\ io);
247 ZZIP_DIR* \ \fBzzip_dir_alloc\fR\ (zzip_strings_t*\ fileext);
254 allocate a new ZZIP_DIR handle and do basic initializations before usage by \fBzzip_dir_fdopen\fR \fBzzip_dir_open\fR \fBzzip_file_open\fR or through \fBzzip_open\fR (ext==null flags uses { "\&.zip" , "\&.ZIP" } ) (io ==null flags use of posix io defaults)
257 \fBthe zzip_dir_alloc function\fR is obsolete \- it was generally used for implementation and exported to let other code build on it\&. It is now advised to use \fBzzip_dir_alloc_ext_io\fR now on explicitly, just set that second argument to zero to achieve the same functionality as the old style\&.
263 Guido Draheim <guidod@gmx\&.de>
266 Tomi Ollila <too@iki\&.fi>
269 Guido Draheim <guidod@gmx\&.de>
272 Tomi Ollila <too@iki\&.fi>
275 /79 1071214812 500 0 100664 25 `
276 .so man3/zzip_dir_free.3
278 /97 1071214812 500 0 100664 2275 `
279 .\"Generated by db2man.xsl. Don't modify this, modify the source.
288 .de Sp \" Vertical space (when we can't use .PP)
294 .ie \\n(.$>=3 .ne \\$3
298 .TH "ZZIP_DIR_CREAT" 3 "0.13.24" "zziplib" "zzip_dir_creat"
300 zzip_dir_creat, zzip_dir_creat_ext_io \- create a new zip archive for writing
306 #include <zziplib\&.h>
310 ZZIP_DIR* \ \fBzzip_dir_creat\fR\ (zzip_char_t*\ name, int\ o_mode);
312 ZZIP_DIR* \ \fBzzip_dir_creat_ext_io\fR\ (zzip_char_t*\ name, int\ o_mode, zzip_strings_t*\ ext, zzip_plugin_io_t\ io);
322 \fBThe zzip_dir_creat function\fR will create a new zip archive\&. The returned parameter is a new "zzip dir" handle that should be saved to a variable so it can be used a base argument for \fBzzip_mkdir\fR and \fBzzip_creat\fR calls\&. The returned handle represents a zip central directory that must be saved to disk using \fBzzip_closedir\fR\&.
325 Returns null on error and sets errno\&. Remember, according to posix the \fBcreat\fR(2) call is equivalent to
329 open (path, O_WRONLY | O_CREAT | O_TRUNC, o_mode)
331 so any previous zip\-archive will be overwritten unconditionally and EEXIST errors from \fBmkdir\fR(2) are suppressed\&. (fixme: delete the given subtree? like suggested by O_TRUNC? not done so far!)
337 If the third argument "ext" has another special meaning here, as it is used to ensure that a given zip\-file is created with the first entry of the ext\-list appended as an extension unless the file\-path already ends with a file\-extension registered in the list\&. Therefore {"",0} matches all files and creates them as zip\-archives under the given nonmodified name\&. (Some magic here? If the path ends in the path separator then make a real directory even in the presence of ext\-list?)
340 \fBThe zzip_dir_creat_ext_io function\fR is not yet implemented, check for #def ZZIP_NO_CREAT Write\-support will extend \fBzzip_closedir\fR with semantics to finalize the zip\-archive by writing the zip\-trailer and closing the archive file\&.
346 Guido Draheim <guidod@gmx\&.de>
350 /115 1071214812 500 0 100664 26 `
351 .so man3/zzip_dir_creat.3
352 zzip_dirfd.3/ 1071214812 500 0 100664 26 `
353 .so man3/zzip_dirhandle.3
354 /140 1071214812 500 0 100664 1396 `
355 .\"Generated by db2man.xsl. Don't modify this, modify the source.
364 .de Sp \" Vertical space (when we can't use .PP)
370 .ie \\n(.$>=3 .ne \\$3
374 .TH "ZZIP_DIR_FDOPEN" 3 "0.13.24" "zziplib" "zzip_dir_fdopen"
376 zzip_dir_fdopen, zzip_dir_fdopen_ext_io \- (zzip/zip.c)
384 #include <zzip/lib\&.h>
388 ZZIP_DIR\ *\ \ \fBzzip_dir_fdopen\fR\ (int\ fd, zzip_error_t\ *\ errcode_p);
390 ZZIP_DIR\ *\ \ \fBzzip_dir_fdopen_ext_io\fR\ (int\ fd, zzip_error_t\ *\ errcode_p, zzip_strings_t*\ ext, const\ zzip_plugin_io_t\ io);
397 used by the \fBzzip_dir_open\fR and zzip_opendir(2) call\&. Opens the zip\-archive as specified with the fd which points to an already openend file\&. \fBThe zzip_dir_fdopen function\fR then search and parse the zip's central directory\&.
400 NOTE: refcount is zero, so an _open/_close pair will also delete this _dirhandle
403 \fBthe zzip_dir_fdopen_ext_io function\fR uses explicit ext and io instead of the internal defaults, setting these to zero is equivalent to \fBzzip_dir_fdopen\fR
409 Guido Draheim <guidod@gmx\&.de>
412 Tomi Ollila <too@iki\&.fi>
415 Guido Draheim <guidod@gmx\&.de>
418 Tomi Ollila <too@iki\&.fi>
421 /159 1071214812 500 0 100664 27 `
422 .so man3/zzip_dir_fdopen.3
424 zzip_dir_free.3/1071214812 500 0 100664 1249 `
425 .\"Generated by db2man.xsl. Don't modify this, modify the source.
434 .de Sp \" Vertical space (when we can't use .PP)
440 .ie \\n(.$>=3 .ne \\$3
444 .TH "ZZIP_DIR_FREE" 3 "0.13.24" "zziplib" "zzip_dir_free"
446 zzip_dir_free, zzip_dir_close \- (zzip/zip.c)
454 #include <zzip/lib\&.h>
458 int\ \ \fBzzip_dir_free\fR\ (ZZIP_DIR\ *\ dir);
460 int\ \ \fBzzip_dir_close\fR\ (ZZIP_DIR\ *\ dir);
467 will free the zzip_dir handle unless there are still zzip_files attached (that may use its cache buffer)\&. This is the inverse of \fBzzip_dir_alloc\fR , and both are helper functions used implicitly in other zzipcalls e\&.g\&. \fBzzip_dir_close\fR = zzip_close
470 returns zero on sucess returns the refcount when files are attached\&.
473 It will also \fBfree\fR(2) the \fBZZIP_DIR\fR\-handle given\&. the counterpart for \fBzzip_dir_open\fR see also \fBzzip_dir_free\fR
479 Guido Draheim <guidod@gmx\&.de>
482 Tomi Ollila <too@iki\&.fi>
485 Guido Draheim <guidod@gmx\&.de>
488 Tomi Ollila <too@iki\&.fi>
492 /185 1071214812 500 0 100664 1150 `
493 .\"Generated by db2man.xsl. Don't modify this, modify the source.
502 .de Sp \" Vertical space (when we can't use .PP)
508 .ie \\n(.$>=3 .ne \\$3
512 .TH "ZZIP_DIRHANDLE" 3 "0.13.24" "zziplib" "zzip_dirhandle"
514 zzip_dirhandle, zzip_dirfd \- (zzip/info.c)
522 #include <zzip/lib\&.h>
526 ZZIP_DIR\ *\ \ \fBzzip_dirhandle\fR\ (ZZIP_FILE\ *\ fp);
528 int\ \ \fBzzip_dirfd\fR\ (ZZIP_DIR*\ dir);
535 \fBThe zzip_dirhandle function\fR will just return fp\->dir
538 If a ZZIP_FILE is contained within a zip\-file that one will be a valid pointer, otherwise a NULL is returned and the ZZIP_FILE wraps a real file\&.
541 \fBThe zzip_dirfd function\fR will just return dir\->fd
544 If a ZZIP_DIR does point to a zipfile then the file\-descriptor of that zipfile is returned, otherwise a NULL is returned and the ZZIP_DIR wraps a real directory DIR (if you have dirent on your system)\&.
550 Guido Draheim <guidod@gmx\&.de>
553 zzip_dir_open.3/1071214812 500 0 100664 1538 `
554 .\"Generated by db2man.xsl. Don't modify this, modify the source.
563 .de Sp \" Vertical space (when we can't use .PP)
569 .ie \\n(.$>=3 .ne \\$3
573 .TH "ZZIP_DIR_OPEN" 3 "0.13.24" "zziplib" "zzip_dir_open"
575 zzip_dir_open, zzip_dir_open_ext_io, zzip_dir_read \- (zzip/zip.c)
583 #include <zzip/lib\&.h>
587 ZZIP_DIR*\ \ \fBzzip_dir_open\fR\ (zzip_char_t*\ filename, zzip_error_t*\ e);
589 ZZIP_DIR*\ \ \fBzzip_dir_open_ext_io\fR\ (zzip_char_t*\ filename, zzip_error_t*\ e, zzip_strings_t*\ ext, zzip_plugin_io_t\ io);
591 int \ \fBzzip_dir_read\fR\ (ZZIP_DIR\ *\ dir, ZZIP_DIRENT\ *\ d);
598 Opens the zip\-archive (if available)\&. the two ext_io arguments will default to use posix io and a set of default fileext that can atleast add \&.zip ext itself\&.
601 \fBthe zzip_dir_open_ext_io function\fR uses explicit ext and io instead of the internal defaults\&. Setting these to zero is equivalent to \fBzzip_dir_open\fR
604 fills the dirent\-argument with the values and increments the read\-pointer of the dir\-argument\&.
607 returns 0 if there no entry (anymore)\&.
613 Guido Draheim <guidod@gmx\&.de>
616 Tomi Ollila <too@iki\&.fi>
619 Guido Draheim <guidod@gmx\&.de>
622 Tomi Ollila <too@iki\&.fi>
625 Guido Draheim <guidod@gmx\&.de>
628 Tomi Ollila <too@iki\&.fi>
631 /203 1071214812 500 0 100664 25 `
632 .so man3/zzip_dir_open.3
634 zzip_dir_read.3/1071214812 500 0 100664 25 `
635 .so man3/zzip_dir_open.3
637 zzip_dir_real.3/1071214812 500 0 100664 26 `
638 .so man3/zzip_file_real.3
639 zzip_dir_stat.3/1071214812 500 0 100664 1876 `
640 .\"Generated by db2man.xsl. Don't modify this, modify the source.
649 .de Sp \" Vertical space (when we can't use .PP)
655 .ie \\n(.$>=3 .ne \\$3
659 .TH "ZZIP_DIR_STAT" 3 "0.13.24" "zziplib" "zzip_dir_stat"
661 zzip_dir_stat, zzip_file_stat, zzip_fstat \- (zzip/stat.c)
669 #include <zzip/lib\&.h>
673 int\ \ \fBzzip_dir_stat\fR\ (ZZIP_DIR\ *\ dir, zzip_char_t*\ name, ZZIP_STAT\ *\ zs, int\ flags);
675 int\ \ \fBzzip_file_stat\fR\ (ZZIP_FILE*\ file, ZZIP_STAT*\ zs);
677 int\ \ \fBzzip_fstat\fR\ (ZZIP_FILE*\ file, ZZIP_STAT*\ zs);
684 obtain information about a filename in an opened zip\-archive without opening that file first\&. Mostly used to obtain the uncompressed size of a file inside a zip\-archive\&. see \fBzzip_dir_open\fR\&.
687 \fBThe zzip_file_stat function\fR will obtain information about a opened file _within_ a zip\-archive\&. The file is supposed to be open (otherwise \-1 is returned)\&. The st_size stat\-member contains the uncompressed size\&. The optional d_name is never set here\&.
690 \fBThe zzip_fstat function\fR will obtain information about a opened file which may be either real/zipped\&. The file is supposed to be open (otherwise \-1 is returned)\&. The st_size stat\-member contains the uncompressed size\&. The optional d_name is never set here\&. For a real file, we do set the d_csize := st_size and d_compr := 0 for meaningful defaults\&.
696 Guido Draheim <guidod@gmx\&.de>
699 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
702 Guido Draheim <guidod@gmx\&.de>
705 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
708 Guido Draheim <guidod@gmx\&.de>
711 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
714 zzip_errno.3/ 1071214812 500 0 100664 895 `
715 .\"Generated by db2man.xsl. Don't modify this, modify the source.
724 .de Sp \" Vertical space (when we can't use .PP)
730 .ie \\n(.$>=3 .ne \\$3
734 .TH "ZZIP_ERRNO" 3 "0.13.24" "zziplib" "zzip_errno"
736 zzip_errno \- (zzip/err.c)
744 #include <zzip/lib\&.h>
748 int \ \fBzzip_errno\fR\ (int\ errcode);
755 map the error code to a system error code\&. This is used for the drop\-in replacement functions to return a value that can be interpreted correctly by code sections that are unaware of the fact they their \fBopen\fR(2) call had been diverted to a file inside a zip\-archive\&.
761 Guido Draheim <guidod@gmx\&.de>
764 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
768 zzip_error.3/ 1071214812 500 0 100664 872 `
769 .\"Generated by db2man.xsl. Don't modify this, modify the source.
778 .de Sp \" Vertical space (when we can't use .PP)
784 .ie \\n(.$>=3 .ne \\$3
788 .TH "ZZIP_ERROR" 3 "0.13.24" "zziplib" "zzip_error"
790 zzip_error, zzip_seterror \- (zzip/info.c)
798 #include <zzip/lib\&.h>
802 int\ \ \fBzzip_error\fR\ (ZZIP_DIR\ *\ dir);
804 void\ \ \fBzzip_seterror\fR\ (ZZIP_DIR\ *\ dir, int\ errcode);
811 just returns dir\->errcode of the ZZIP_DIR handle see: \fBzzip_dir_open\fR, \fBzzip_diropen\fR, \fBzzip_readdir\fR, \fBzzip_dir_read\fR
814 \fBThe zzip_seterror function\fR just does dir\->errcode = errcode
820 Guido Draheim <guidod@gmx\&.de>
823 zzip_fclose.3/ 1071214812 500 0 100664 993 `
824 .\"Generated by db2man.xsl. Don't modify this, modify the source.
833 .de Sp \" Vertical space (when we can't use .PP)
839 .ie \\n(.$>=3 .ne \\$3
843 .TH "ZZIP_FCLOSE" 3 "0.13.24" "zziplib" "zzip_fclose"
845 zzip_fclose, zzip_close \- (zzip/file.c)
853 #include <zzip/lib\&.h>
857 int\ \ \fBzzip_fclose\fR\ (ZZIP_FILE\ *\ fp);
859 int\ \ \fBzzip_close\fR\ (ZZIP_FILE*\ fp);
866 \fBThe zzip_fclose function\fR closes the given ZZIP_FILE handle\&.
869 If the ZZIP_FILE wraps a normal stat'fd then it is just that int'fd that is being closed and the otherwise empty ZZIP_FILE gets freed\&.
878 Guido Draheim <guidod@gmx\&.de>
881 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
884 Guido Draheim <guidod@gmx\&.de>
887 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
891 /227 1071214812 500 0 100664 952 `
892 .\"Generated by db2man.xsl. Don't modify this, modify the source.
901 .de Sp \" Vertical space (when we can't use .PP)
907 .ie \\n(.$>=3 .ne \\$3
911 .TH "ZZIP_FILE_CLOSE" 3 "0.13.24" "zziplib" "zzip_file_close"
913 zzip_file_close \- (zzip/file.c)
921 #include <zzip/lib\&.h>
925 int\ \ \fBzzip_file_close\fR\ (ZZIP_FILE\ *\ fp);
932 the direct function of \fBzzip_close\fR(fp)\&. it will cleanup the inflate\-portion of \fBzlib\fR and free the structure given\&.
935 it is called quite from the error\-cleanup parts of the various \fB_open\fR functions\&.
938 the \&.refcount is decreased and if zero the fp\->dir is closed just as well\&.
944 Guido Draheim <guidod@gmx\&.de>
947 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
950 /246 1071214812 500 0 100664 2954 `
951 .\"Generated by db2man.xsl. Don't modify this, modify the source.
960 .de Sp \" Vertical space (when we can't use .PP)
966 .ie \\n(.$>=3 .ne \\$3
970 .TH "ZZIP_FILE_CREAT" 3 "0.13.24" "zziplib" "zzip_file_creat"
972 zzip_file_creat, zzip_file_mkdir \- start next file entry in a zip archive
978 #include <zziplib\&.h>
982 ZZIP_FILE* \ \fBzzip_file_creat\fR\ (ZZIP_DIR*\ dir, zzip_char_t*\ name, int\ o_mode);
984 int \ \fBzzip_file_mkdir\fR\ (ZZIP_DIR*\ dir, zzip_char_t*\ name, int\ o_mode);
994 \fBThe zzip_file_creat function\fR will create a new file within a zzip archive, the one given as the primary argument and additionally to the posix creat(2) \- just like zzip_mkdir has an additional argument over the posix mkdir(2) spec\&. For \fBthe zzip_file_creat function\fR the primary parameter can be null as well thereby creating a real file instead of a new one inside the zip\-archive otherwise given\&. If the primary parameter is not null but wraps a real directory then all new files are also real\&.
997 \fBThe zzip_file_creat function\fR is not yet implemented, check for #def ZZIP_NO_CREAT
1000 Returns NULL on an error setting errno, and opening a file _within_ a zip archive using O_RDONLY (and similar stuff) will surely lead to an error\&.
1006 \fBThe zzip_file_mkdir function\fR has an additional primary argument over the posix mkdir(2) \- if it is null then \fBthe zzip_file_mkdir function\fR behaves just like posix mkdir(2)\&. The zzip_dir argument can be set to the result of a \fBzzip_createdir\fR which allows for some magic that the given directory name is created as an entry in the zip archive\&.
1009 If the given dir name argument is not within the basepath of the zip central directory then a real directory is created\&. Any EEXIST errors are not suppressed unlike with \fBzzip_createdir\fR
1012 Standard usage accepts a global/threaded/modular ZZIP_DIR pointer for all zip archive operations like in:
1016 ZZIP_DIR* zip = zzip_createdir (sysconfpath, 0755, zip);
1017 zzip_file_mkdir (zip, filepath[i], 0755);
1018 ZZIP_FILE* file = zzip_file_creat (zip, filename[i], 0644);
1019 zzip_write (file, buf, len);
1020 zzip_close (file); file = 0;
1021 zzip_closedir (zip); zip = 0;
1026 compare with \fBzzip_mkdir\fR inline macro which allows to collapse the examples script to
1030 #define zzip_savefile myproject_saveconfig
1031 #include <zzip/zzip\&.h>
1032 ZZIP_DIR* zzip_savefile = zzip_createdir (sysconfpath, 0755);
1033 zzip_mkdir (filepath[i], 0755);
1034 ZZIP_FILE* file = zzip_creat(filepath[i], 0644);
1035 zzip_write (file, buf, len);
1036 zzip_close (file); file = 0;
1037 zzip_closedir (zip_savefile);
1045 Guido Draheim <guidod@gmx\&.de>
1048 /265 1071214812 500 0 100664 27 `
1049 .so man3/zzip_file_creat.3
1051 /284 1071214812 500 0 100664 1006 `
1052 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1053 .de Sh \" Subsection
1061 .de Sp \" Vertical space (when we can't use .PP)
1067 .ie \\n(.$>=3 .ne \\$3
1071 .TH "ZZIP_FILE_OPEN" 3 "0.13.24" "zziplib" "zzip_file_open"
1073 zzip_file_open \- (zzip/file.c)
1081 #include <zzip/lib\&.h>
1085 ZZIP_FILE\ *\ \ \fBzzip_file_open\fR\ (ZZIP_DIR\ *\ dir, zzip_char_t*\ name, int\ o_mode);
1092 open an \fBZZIP_FILE\fR from an already open \fBZZIP_DIR\fR handle\&. Since we have a chance to reuse a cached \fBbuf32k\fR and \fBZZIP_FILE\fR memchunk this is the best choice to unpack multiple files\&.
1095 Note: the zlib supports 2\&.\&.15 bit windowsize, hence we provide a 32k memchunk here\&.\&.\&. just to be safe\&.
1101 Guido Draheim <guidod@gmx\&.de>
1104 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
1107 /302 1071214812 500 0 100664 1300 `
1108 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1109 .de Sh \" Subsection
1117 .de Sp \" Vertical space (when we can't use .PP)
1123 .ie \\n(.$>=3 .ne \\$3
1127 .TH "ZZIP_FILE_READ" 3 "0.13.24" "zziplib" "zzip_file_read"
1129 zzip_file_read \- (zzip/file.c)
1137 #include <zzip/lib\&.h>
1141 zzip_ssize_t\ \ \fBzzip_file_read\fR\ (ZZIP_FILE\ *\ fp, char\ *\ buf, zzip_size_t\ len);
1148 \fBThe zzip_file_read function\fRs read data from zip\-contained file\&.
1151 It works like \fBread\fR(2) and will fill the given buffer with bytes from the opened file\&. It will return the number of bytes read, so if the \fBEOF\fR is encountered you will be prompted with the number of bytes actually read\&.
1154 This is the routines that needs the \fBbuf32k\fR buffer, and it would have need for much more polishing but it does already work quite well\&.
1157 Note: the 32K buffer is rather big\&. The original inflate\-algorithm required just that but the latest zlib would work just fine with a smaller buffer\&.
1163 Guido Draheim <guidod@gmx\&.de>
1166 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
1169 /320 1071214812 500 0 100664 1525 `
1170 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1171 .de Sh \" Subsection
1179 .de Sp \" Vertical space (when we can't use .PP)
1185 .ie \\n(.$>=3 .ne \\$3
1189 .TH "ZZIP_FILE_REAL" 3 "0.13.24" "zziplib" "zzip_file_real"
1191 zzip_file_real, zzip_dir_real, zzip_realdir, zzip_realfd \- (zzip/info.c)
1199 #include <zzip/lib\&.h>
1203 int \ \fBzzip_file_real\fR\ (ZZIP_FILE*\ fp);
1205 int \ \fBzzip_dir_real\fR\ (ZZIP_DIR*\ dir);
1207 void* \ \fBzzip_realdir\fR\ (ZZIP_DIR*\ dir);
1209 int \ \fBzzip_realfd\fR\ (ZZIP_FILE*\ fp);
1216 \fBThe zzip_file_real function\fR checks if the ZZIP_FILE\-handle is wrapping a real file or a zip\-contained file\&. Returns 1 for a stat'able file, and 0 for a file inside a zip\-archive\&.
1219 \fBThe zzip_dir_real function\fR checks if the ZZIP_DIR\-handle is wrapping a real directory or a zip\-archive\&. Returns 1 for a stat'able directory, and 0 for a handle to zip\-archive\&.
1222 \fBThe zzip_realdir function\fR returns the posix DIR* handle (if one exists)\&. Check before with \fBzzip_dir_real\fR if the the ZZIP_DIR points to a real directory\&.
1225 \fBThe zzip_realfd function\fR returns the posix file descriptor (if one exists)\&. Check before with \fBzzip_file_real\fR if the the ZZIP_FILE points to a real file\&.
1231 Guido Draheim <guidod@gmx\&.de>
1235 /338 1071214812 500 0 100664 25 `
1236 .so man3/zzip_dir_stat.3
1238 /356 1071214812 500 0 100664 22 `
1239 .so man3/zzip_write.3
1240 /375 1071214812 500 0 100664 919 `
1241 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1242 .de Sh \" Subsection
1250 .de Sp \" Vertical space (when we can't use .PP)
1256 .ie \\n(.$>=3 .ne \\$3
1260 .TH "__ZZIP_FIND_DISK" 3 "0.13.24" "zziplib" "__zzip_find_disk_trailer"
1262 __zzip_find_disk_trailer \- (zzip/zip.c)
1270 #include <zzip/lib\&.h>
1274 int\ \ \fB__zzip_find_disk_trailer\fR\ (int\ fd, zzip_off_t\ filesize, struct\ zzip_disk_trailer\ *\ trailer, zzip_plugin_io_t\ io);
1281 \fBThe __zzip_find_disk_trailer function\fR is used by \fBzzip_file_open\fR\&. It tries to find the zip's central directory info that is usually a few bytes off the end of the file\&.
1287 Guido Draheim <guidod@gmx\&.de>
1290 Tomi Ollila <too@iki\&.fi>
1294 zzip_fopen.3/ 1071214812 500 0 100664 4108 `
1295 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1296 .de Sh \" Subsection
1304 .de Sp \" Vertical space (when we can't use .PP)
1310 .ie \\n(.$>=3 .ne \\$3
1314 .TH "ZZIP_FOPEN" 3 "0.13.24" "zziplib" "zzip_fopen"
1316 zzip_fopen, zzip_freopen \- (zzip/file.c)
1324 #include <zzip/lib\&.h>
1328 ZZIP_FILE* \ \fBzzip_fopen\fR\ (zzip_char_t*\ filename, zzip_char_t*\ mode);
1330 ZZIP_FILE* \ \fBzzip_freopen\fR\ (zzip_char_t*\ filename, zzip_char_t*\ mode, ZZIP_FILE*\ stream);
1337 \fBThe zzip_fopen function\fR will \fBfopen\fR(3) a real/zipped file\&.
1340 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 returned\&.
1343 Note that if the file is found in the normal fs\-directory the returned structure is mostly empty and the \fBzzip_read\fR call will use the libc \fBread\fR to obtain data\&. Otherwise a \fBzzip_file_open\fR is performed and any error mapped to \fBerrno\fR(3)\&.
1346 unlike the posix\-wrapper \fBzzip_open\fR 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 \fBzzip_fopen\fR call will convert the following characters in the mode\-string into their corrsponding mode\-bits:
1350 \fB "r" : O_RDONLY : \fR read\-only
1351 \fB "b" : O_BINARY : \fR binary (win32 specific)
1352 \fB "f" : O_NOCTTY : \fR no char device (unix)
1353 \fB "i" : ZZIP_CASELESS : \fR inside zip file
1354 \fB "*" : ZZIP_NOPATHS : \fR inside zip file only
1359 all other modes will be ignored for zip\-contained entries but they are transferred for compatibility and portability, including these extra sugar bits:
1363 \fB "x" : O_EXCL :\fR fail if file did exist
1364 \fB "s" : O_SYNC :\fR synchronized access
1365 \fB "n" : O_NONBLOCK :\fR nonblocking access
1366 \fB "z#" : compression level :\fR for zlib
1367 \fB "g#" : group access :\fR unix access bits
1368 \fB "u#" : owner access :\fR unix access bits
1369 \fB "o#" : world access :\fR unix access bits
1374 \&.\&.\&. the access bits are in traditional unix bit format with 7 = read/write/execute, 6 = read/write, 4 = read\-only\&.
1377 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\&.
1383 \fBThe zzip_freopen function\fR receives an additional argument pointing to a ZZIP_FILE* being already in use\&. If this extra argument is null then \fBthe zzip_freopen function\fR is identical with calling \fBzzip_fopen\fR
1386 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\&.
1389 That's simply because the zip arch's central directory does not need to be read again\&. As an extension for \fBthe zzip_freopen function\fR, 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\&.
1395 Guido Draheim <guidod@gmx\&.de>
1398 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
1401 Guido Draheim <guidod@gmx\&.de>
1404 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
1407 zzip_fread.3/ 1071214812 500 0 100664 21 `
1408 .so man3/zzip_read.3
1410 zzip_freopen.3/ 1071214812 500 0 100664 22 `
1411 .so man3/zzip_fopen.3
1412 zzip_fstat.3/ 1071214812 500 0 100664 25 `
1413 .so man3/zzip_dir_stat.3
1415 zzip_fwrite.3/ 1071214812 500 0 100664 22 `
1416 .so man3/zzip_write.3
1417 __zzip_get16.3/ 1071214812 500 0 100664 24 `
1418 .so man3/__zzip_get32.3
1419 __zzip_get32.3/ 1071214812 500 0 100664 1010 `
1420 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1421 .de Sh \" Subsection
1429 .de Sp \" Vertical space (when we can't use .PP)
1435 .ie \\n(.$>=3 .ne \\$3
1439 .TH "__ZZIP_GET32" 3 "0.13.24" "zziplib" "__zzip_get32"
1441 __zzip_get32, __zzip_get16 \- (zzip/zip.c)
1449 #include <zzip/lib\&.h>
1453 uint32_t\ \ \fB__zzip_get32\fR\ (unsigned\ char\ *\ s);
1455 uint16_t\ \ \fB__zzip_get16\fR\ (unsigned\ char\ *\ s);
1462 Make 32 bit value in host byteorder from little\-endian mapped octet\-data (works also on machines which SIGBUS on misaligned data access (eg\&. 68000))
1465 \fBThe __zzip_get16 function\fR does the same for a 16 bit value\&.
1471 Guido Draheim <guidod@gmx\&.de>
1474 Tomi Ollila <too@iki\&.fi>
1477 Guido Draheim <guidod@gmx\&.de>
1480 Tomi Ollila <too@iki\&.fi>
1483 /403 1071214812 500 0 100664 24 `
1484 .so man3/zzip_init_io.3
1485 /426 1071214812 500 0 100664 787 `
1486 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1487 .de Sh \" Subsection
1495 .de Sp \" Vertical space (when we can't use .PP)
1501 .ie \\n(.$>=3 .ne \\$3
1505 .TH "ZZIP_INFLATE_INIT" 3 "0.13.24" "zziplib" "zzip_inflate_init"
1507 zzip_inflate_init \- (zzip/file.c)
1515 #include <zzip/lib\&.h>
1519 static\ int\ \ \fBzzip_inflate_init\fR\ (ZZIP_FILE\ *\ fp, struct\ zzip_dir_hdr*\ hdr);
1526 call \fBinflateInit\fR and setup fp's iterator variables, used by lowlevel \fB_open\fR functions\&.
1532 Guido Draheim <guidod@gmx\&.de>
1535 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
1539 zzip_init_io.3/ 1071214812 500 0 100664 1135 `
1540 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1541 .de Sh \" Subsection
1549 .de Sp \" Vertical space (when we can't use .PP)
1555 .ie \\n(.$>=3 .ne \\$3
1559 .TH "ZZIP_INIT_IO" 3 "0.13.24" "zziplib" "zzip_init_io"
1561 zzip_init_io, zzip_get_default_io \- (zzip/plugin.c)
1569 #include <zzip/lib\&.h>
1573 int\ \ \fBzzip_init_io\fR\ (zzip_plugin_io_handlers_t\ io, int\ flags);
1575 zzip_plugin_io_t \ \fBzzip_get_default_io\fR\ ();
1582 \fBThe zzip_init_io function\fR initializes the users handler struct to default values being the posix io functions in default configured environments\&.
1585 \fBThe zzip_get_default_io function\fR returns a zzip_plugin_io_t handle to static defaults wrapping the posix io file functions for actual file access\&.
1591 Guido Draheim <guidod@gmx\&.de>
1594 Mike Nordell <tamlin@algonet\&.se>
1597 Guido Draheim <guidod@gmx\&.de>
1600 Mike Nordell <tamlin@algonet\&.se>
1604 zziplib.h.3/ 1071214812 500 0 100664 3477 `
1605 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1606 .de Sh \" Subsection
1614 .de Sp \" Vertical space (when we can't use .PP)
1620 .ie \\n(.$>=3 .ne \\$3
1624 .TH "ZZIPLIB.H" 3 "0.13.24" "the library zziplib" ""
1626 zziplib.h \- library
1634 #include <zzip/lib\&.h>
1638 void\ \ \fBzzip_rewinddir\fR\ (ZZIP_DIR\ *\ dir);
1640 ZZIP_DIRENT*\ \ \fBzzip_readdir\fR\ (ZZIP_DIR\ *\ dir);
1642 ZZIP_DIR*\ \ \fBzzip_opendir\fR\ (zzip_char_t*\ filename);
1644 int \ \fBzzip_closedir\fR\ (ZZIP_DIR*\ dir);
1646 zzip_char_t*\ \ \fBzzip_strerror\fR\ (int\ errcode);
1648 int \ \fBzzip_errno\fR\ (int\ errcode);
1650 int\ \ \fBzzip_file_close\fR\ (ZZIP_FILE\ *\ fp);
1652 ZZIP_FILE\ *\ \ \fBzzip_file_open\fR\ (ZZIP_DIR\ *\ dir, zzip_char_t*\ name, int\ o_mode);
1654 static\ int\ \ \fBzzip_inflate_init\fR\ (ZZIP_FILE\ *\ fp, struct\ zzip_dir_hdr*\ hdr);
1656 int\ \ \fBzzip_fclose\fR\ (ZZIP_FILE\ *\ fp);
1658 zzip_ssize_t\ \ \fBzzip_file_read\fR\ (ZZIP_FILE\ *\ fp, char\ *\ buf, zzip_size_t\ len);
1660 zzip_ssize_t \ \fBzzip_read\fR\ (ZZIP_FILE\ *\ fp, char\ *\ buf, zzip_size_t\ len);
1662 ZZIP_FILE* \ \fBzzip_fopen\fR\ (zzip_char_t*\ filename, zzip_char_t*\ mode);
1664 ZZIP_FILE* \ \fBzzip_open\fR\ (zzip_char_t*\ filename, int\ o_flags);
1666 int \ \fBzzip_rewind\fR\ (ZZIP_FILE\ *fp);
1668 zzip_off_t \ \fBzzip_seek\fR\ (ZZIP_FILE\ *\ fp, zzip_off_t\ offset, int\ whence);
1670 zzip_off_t \ \fBzzip_tell\fR\ (ZZIP_FILE\ *\ fp);
1672 int\ \ \fBzzip_error\fR\ (ZZIP_DIR\ *\ dir);
1674 ZZIP_DIR\ *\ \ \fBzzip_dirhandle\fR\ (ZZIP_FILE\ *\ fp);
1676 zzip_char_t* \ \fBzzip_compr_str\fR\ (int\ compr);
1678 int \ \fBzzip_file_real\fR\ (ZZIP_FILE*\ fp);
1680 int\ \ \fBzzip_init_io\fR\ (zzip_plugin_io_handlers_t\ io, int\ flags);
1682 int\ \ \fBzzip_dir_stat\fR\ (ZZIP_DIR\ *\ dir, zzip_char_t*\ name, ZZIP_STAT\ *\ zs, int\ flags);
1684 ZZIP_DIR* \ \fBzzip_dir_creat\fR\ (zzip_char_t*\ name, int\ o_mode);
1686 ZZIP_DIR* \ \fBzzip_createdir\fR\ (zzip_char_t*\ name, int\ o_mode);
1688 ZZIP_FILE* \ \fBzzip_file_creat\fR\ (ZZIP_DIR*\ dir, zzip_char_t*\ name, int\ o_mode);
1690 zzip_ssize_t \ \fBzzip_write\fR\ (ZZIP_FILE*\ file, const\ void*\ ptr, zzip_size_t\ len);
1692 int\ inline \ \fBzzip_mkdir\fR\ (zzip_char_t*\ name, int\ o_mode);
1694 void\ inline \ \fBzzip_mkfifo\fR\ (zzip_char_t*\ name, int\ o_mode);
1696 uint32_t\ \ \fB__zzip_get32\fR\ (unsigned\ char\ *\ s);
1698 int\ \ \fB__zzip_find_disk_trailer\fR\ (int\ fd, zzip_off_t\ filesize, struct\ zzip_disk_trailer\ *\ trailer, zzip_plugin_io_t\ io);
1700 int\ \ \fB__zzip_parse_root_directory\fR\ (int\ fd, struct\ zzip_disk_trailer\ *\ trailer, struct\ zzip_dir_hdr\ **\ hdr_return, zzip_plugin_io_t\ io);
1702 ZZIP_DIR* \ \fBzzip_dir_alloc_ext_io\fR\ (zzip_strings_t*\ ext, const\ zzip_plugin_io_t\ io);
1704 int\ \ \fBzzip_dir_free\fR\ (ZZIP_DIR\ *\ dir);
1706 ZZIP_DIR\ *\ \ \fBzzip_dir_fdopen\fR\ (int\ fd, zzip_error_t\ *\ errcode_p);
1708 int \ \fB__zzip_try_open\fR\ (zzip_char_t*\ filename, int\ filemode, zzip_strings_t*\ ext, zzip_plugin_io_t\ io);
1710 ZZIP_DIR*\ \ \fBzzip_dir_open\fR\ (zzip_char_t*\ filename, zzip_error_t*\ e);
1723 Guido Draheim <guidod@gmx\&.de>
1726 Tomi Ollila <too@iki\&.fi>
1730 zzip_mkdir.3/ 1071214812 500 0 100664 2079 `
1731 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1732 .de Sh \" Subsection
1740 .de Sp \" Vertical space (when we can't use .PP)
1746 .ie \\n(.$>=3 .ne \\$3
1750 .TH "ZZIP_MKDIR" 3 "0.13.24" "zziplib" "zzip_mkdir"
1752 zzip_mkdir, zzip_creat \- create a zipped file/directory
1758 #include <zziplib\&.h>
1762 int\ inline \ \fBzzip_mkdir\fR\ (zzip_char_t*\ name, int\ o_mode);
1764 ZZIP_FILE*\ inline \ \fBzzip_creat\fR\ (zzip_char_t*\ name, int\ o_mode);
1774 \fBThe zzip_mkdir function\fR creates a directory entry in the default zip\-archive\&. If you did not specify a "#define zzip_savefile somevar" then the default zip\-archive is null and all directories are created as real directories in the filesystem\&. \fBThe zzip_mkdir function\fR is really a preprocessor macro or preferably an inline function around \fBzzip_file_mkdir\fR, there is no such symbol generated into the library\&. The prototype is modelled after the posix \fBmkdir\fR(2) call\&.
1778 #ifndef zzip_savefile
1779 #define zzip_savefile 0
1781 #define zzip_mkdir(name,mode) \\ \-
1783 zzip_file_mkdir(zzip_savefile,name,mode)
1792 \fBThe zzip_creat function\fR creates a file in the default zip\-archive\&. If you did not specify a "#define zzip_savefile somevar" then the default zip\-archive is null and all files are created as real files\&. \fBThe zzip_creat function\fR is really a preprocessor macro or preferably an inline function around \fBzzip_file_creat\fR, there is no such symbol generated into the library\&. The prototype is modelled after the posix \fBcreat\fR(2) call\&.
1796 #ifndef zzip_savefile
1797 #define zzip_savefile 0
1799 #define zzip_creat(name,mode) \\ \-
1801 zzip_file_creat(zzip_savefile,name,mode)
1807 Guido Draheim <guidod@gmx\&.de>
1813 zzip_dir_creat, mkdir(2), creat(2), zzip_start
1816 zzip_mkfifo.3/ 1071214812 500 0 100664 2503 `
1817 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1818 .de Sh \" Subsection
1826 .de Sp \" Vertical space (when we can't use .PP)
1832 .ie \\n(.$>=3 .ne \\$3
1836 .TH "ZZIP_MKFIFO" 3 "0.13.24" "zziplib" "zzip_mkfifo"
1838 zzip_mkfifo, zzip_sync \- start writing to the magic zzip_savefile
1844 #include <zziplib\&.h>
1848 void\ inline \ \fBzzip_mkfifo\fR\ (zzip_char_t*\ name, int\ o_mode);
1850 void\ inline \ \fBzzip_sync\fR\ (void);
1860 open a zip archive for writing via the magic zzip_savefile macro variable\&. The name and mode are given to \fBzzip_createdir\fR and the result is stored into \fBzzip_savefile\fR \- if the \fBzzip_savefile\fR did already have a zzip_dir handle then it is automatically finalized with \fBzzip_sync\fR and the handle closed and the zzip_savefile variable reused for the new zip archive just started with this call\&. \- \fBThe zzip_mkfifo function\fR is really a preprocessor macro or preferably an inline function around \fBzzip_dir_create\fR, there is no such symbol generated into the library\&.
1864 #ifndef zzip_savefile
1865 #define zzip_savefile 0
1867 #define zzip_start(name,mode,ext) \\ \-
1869 { if (zzip_savefile) zzip_closedir(zzip_savefile); \\ \- zzip_savefile = zzip_createdir(name,mode,ext); } \fBThe zzip_mkfifo function\fR returns null on error or a zzip_dir handle on success\&. It is perfectly okay to continue with a null in the zzip_savefile variable since it makes subsequent calls to \fBzzip_creat\fR and \fBzzip_mkdir\fR to run as \fBcreat\fR(2) / \fBmkdir\fR(2) on the real filesystem\&.
1875 finalize a zip archive thereby writing the central directory to the end of the file\&. If it was a real directory then we do just nothing \- even that the prototype of the call itself is modelled to be similar to the posix \fBsync\fR(2) call\&. \fBThe zzip_sync function\fR is really a preprocessor macro or preferably an inline function around \fBzzip_closedir\fR, there is no such symbol generated into the library\&.
1879 #ifndef zzip_savefile
1880 #define zzip_savefile 0
1882 #define zzip_sync(name,mode) \\ \-
1884 { zzip_closedir(zzip_savefile); zzip_savefile = 0; }
1893 Guido Draheim <guidod@gmx\&.de>
1899 zzip_creat, zzip_write, zzip_closedir, sync(2)
1902 zzip_open.3/ 1071214812 500 0 100664 3961 `
1903 .\"Generated by db2man.xsl. Don't modify this, modify the source.
1904 .de Sh \" Subsection
1912 .de Sp \" Vertical space (when we can't use .PP)
1918 .ie \\n(.$>=3 .ne \\$3
1922 .TH "ZZIP_OPEN" 3 "0.13.24" "zziplib" "zzip_open"
1924 zzip_open, zzip_open_ext_io, zzip_open_shared_io \- (zzip/file.c)
1932 #include <zzip/lib\&.h>
1936 ZZIP_FILE* \ \fBzzip_open\fR\ (zzip_char_t*\ filename, int\ o_flags);
1938 ZZIP_FILE* \ \fBzzip_open_ext_io\fR\ (zzip_char_t*\ filename, int\ o_flags, int\ o_modes, zzip_strings_t*\ ext, zzip_plugin_io_t\ io);
1940 ZZIP_FILE* \ \fBzzip_open_shared_io\fR\ (ZZIP_FILE*\ stream, zzip_char_t*\ filename, int\ o_flags, int\ o_modes, zzip_strings_t*\ ext, zzip_plugin_io_t\ io);
1947 \fBThe zzip_open function\fR will \fBopen\fR(2) a real/zipped file
1950 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 returned\&.
1953 Note that if the file is found in the normal fs\-directory the returned structure is mostly empty and the \fBzzip_read\fR call will use the libc \fBread\fR to obtain data\&. Otherwise a \fBzzip_file_open\fR is performed and any error mapped to \fBerrno\fR(3)\&.
1956 There was a possibility to transfer zziplib\-specific openmodes through o_flags but you should please not use them anymore and look into \fBzzip_open_ext_io\fR to submit them down\&. \fBThe zzip_open function\fR is shallow in that it just extracts the zzipflags and calls
1961 zzip_open_ext_io(filename, o_flags, zzipflags|0664, 0, 0) \fR
1965 you must stop using this extra functionality (not well known anyway) since zzip_open might be later usable to open files for writing in which case the _EXTRAFLAGS will get in conflict\&.
1968 compare with \fBopen\fR(2) and \fBzzip_fopen\fR
1974 \fBThe zzip_open_ext_io function\fR uses explicit ext and io instead of the internal defaults, setting them to zero is equivalent to \fBzzip_open\fR
1977 note that the two flag types have been split into an o_flags (for fcntl\-like openflags) and o_modes where the latter shall carry the zzip_flags and possibly accessmodes for unix filesystems\&. Since this version of zziplib can not write zipfiles, it is not yet used for anything else than zzip\-specific modeflags\&.
1983 \fBThe zzip_open_shared_io function\fR takes an extra stream argument \- if a handle has been then ext/io can be left null and the new stream handle will pick up the ext/io\&. This should be used only in specific environment however since \fBzzip_file_real\fR does not store any ext\-sequence\&.
1986 The benefit for \fBthe zzip_open_shared_io function\fR comes in when the old file handle was openened from a file within a zip archive\&. When the new file is in the same zip archive then the internal zzip_dir structures will be shared\&. It is even quicker, as no check needs to be done anymore trying to guess the zip archive place in the filesystem, here we just check whether the zip archive's filepath is a prefix part of the filename to be opened\&.
1989 Note that \fBthe zzip_open_shared_io function\fR is also used by \fBzzip_freopen\fR that will unshare the old handle, thereby possibly closing the handle\&.
1995 Guido Draheim <guidod@gmx\&.de>
1998 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2001 Guido Draheim <guidod@gmx\&.de>
2004 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2007 Guido Draheim <guidod@gmx\&.de>
2010 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2014 zzip_opendir.3/ 1071214812 500 0 100664 1353 `
2015 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2016 .de Sh \" Subsection
2024 .de Sp \" Vertical space (when we can't use .PP)
2030 .ie \\n(.$>=3 .ne \\$3
2034 .TH "ZZIP_OPENDIR" 3 "0.13.24" "zziplib" "zzip_opendir"
2036 zzip_opendir, zzip_opendir_ext_io \- (zzip/dir.c)
2044 #include <zzip/lib\&.h>
2048 ZZIP_DIR*\ \ \fBzzip_opendir\fR\ (zzip_char_t*\ filename);
2050 ZZIP_DIR*\ \ \fBzzip_opendir_ext_io\fR\ (zzip_char_t*\ filename, int\ o_modes, zzip_strings_t*\ ext, zzip_plugin_io_t\ io);
2057 \fBThe zzip_opendir function\fR is the equivalent of \fBopendir\fR(3) for a realdir or zipfile\&.
2060 \fBThe zzip_opendir function\fR has some magic \- if the given argument\-path is a directory, it will wrap a real \fBopendir\fR(3) into the ZZIP_DIR structure\&. Otherwise it will divert to \fBzzip_dir_open\fR which can also attach a "\&.zip" extension if needed to find the archive\&.
2063 the error\-code is mapped to \fBerrno\fR(3)\&.
2066 \fBThe zzip_opendir_ext_io function\fR uses explicit ext and io instead of the internal defaults, setting them to zero is equivalent to \fBzzip_opendir\fR
2072 Guido Draheim <guidod@gmx\&.de>
2076 /447 1071214812 500 0 100664 24 `
2077 .so man3/zzip_opendir.3
2078 /470 1071214812 500 0 100664 21 `
2079 .so man3/zzip_open.3
2081 /490 1071214812 500 0 100664 21 `
2082 .so man3/zzip_open.3
2084 /513 1071214812 500 0 100664 1012 `
2085 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2086 .de Sh \" Subsection
2094 .de Sp \" Vertical space (when we can't use .PP)
2100 .ie \\n(.$>=3 .ne \\$3
2104 .TH "__ZZIP_PARSE_RO" 3 "0.13.24" "zziplib" "__zzip_parse_root_directory"
2106 __zzip_parse_root_directory \- (zzip/zip.c)
2114 #include <zzip/lib\&.h>
2118 int\ \ \fB__zzip_parse_root_directory\fR\ (int\ fd, struct\ zzip_disk_trailer\ *\ trailer, struct\ zzip_dir_hdr\ **\ hdr_return, zzip_plugin_io_t\ io);
2125 \fBThe __zzip_parse_root_directory function\fR is used by \fBzzip_file_open\fR, it is usually called after \fB__zzip_find_disk_trailer\fR\&. It will parse the zip's central directory information and create a zziplib private directory table in memory\&.
2131 Guido Draheim <guidod@gmx\&.de>
2134 Tomi Ollila <too@iki\&.fi>
2137 zzip_read.3/ 1071214812 500 0 100664 1418 `
2138 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2139 .de Sh \" Subsection
2147 .de Sp \" Vertical space (when we can't use .PP)
2153 .ie \\n(.$>=3 .ne \\$3
2157 .TH "ZZIP_READ" 3 "0.13.24" "zziplib" "zzip_read"
2159 zzip_read, zzip_fread \- (zzip/file.c)
2167 #include <zzip/lib\&.h>
2171 zzip_ssize_t \ \fBzzip_read\fR\ (ZZIP_FILE\ *\ fp, char\ *\ buf, zzip_size_t\ len);
2173 zzip_size_t \ \fBzzip_fread\fR\ (void\ *ptr, zzip_size_t\ size, zzip_size_t\ nmemb, ZZIP_FILE\ *file);
2180 \fBThe zzip_read function\fR will read(2) data from a real/zipped file\&.
2183 the replacement for \fBread\fR(2) will fill the given buffer with bytes from the opened file\&. It will return the number of bytes read, so if the EOF is encountered you will be prompted with the number of bytes actually read\&.
2186 If the file\-handle is wrapping a stat'able file then it will actually just perform a normal \fBread\fR(2)\-call, otherwise \fBzzip_file_read\fR is called to decompress the data stream and any error is mapped to \fBerrno\fR(3)\&.
2195 Guido Draheim <guidod@gmx\&.de>
2198 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2201 Guido Draheim <guidod@gmx\&.de>
2204 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2207 zzip_readdir.3/ 1071214812 500 0 100664 1035 `
2208 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2209 .de Sh \" Subsection
2217 .de Sp \" Vertical space (when we can't use .PP)
2223 .ie \\n(.$>=3 .ne \\$3
2227 .TH "ZZIP_READDIR" 3 "0.13.24" "zziplib" "zzip_readdir"
2229 zzip_readdir \- (zzip/dir.c)
2237 #include <zzip/lib\&.h>
2241 ZZIP_DIRENT*\ \ \fBzzip_readdir\fR\ (ZZIP_DIR\ *\ dir);
2248 \fBThe zzip_readdir function\fR is the equivalent of a \fBreaddir\fR(2) for a realdir or a zipfile referenced by the ZZIP_DIR returned from \fBzzip_opendir\fR\&.
2251 The ZZIP_DIR handle (as returned by \fBzzip_opendir\fR) contains a few more entries than being copied into the ZZIP_DIRENT\&. The only valid fields in a ZZIP_DIRENT are d_name (the file name), d_compr (compression), d_csize (compressed size), st_size (uncompressed size)\&.
2257 Guido Draheim <guidod@gmx\&.de>
2261 zzip_realdir.3/ 1071214812 500 0 100664 26 `
2262 .so man3/zzip_file_real.3
2263 zzip_realfd.3/ 1071214812 500 0 100664 26 `
2264 .so man3/zzip_file_real.3
2265 zzip_rewind.3/ 1071214812 500 0 100664 799 `
2266 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2267 .de Sh \" Subsection
2275 .de Sp \" Vertical space (when we can't use .PP)
2281 .ie \\n(.$>=3 .ne \\$3
2285 .TH "ZZIP_REWIND" 3 "0.13.24" "zziplib" "zzip_rewind"
2287 zzip_rewind \- (zzip/file.c)
2295 #include <zzip/lib\&.h>
2299 int \ \fBzzip_rewind\fR\ (ZZIP_FILE\ *fp);
2306 \fBThe zzip_rewind function\fR will rewind a real/zipped file\&.
2309 It seeks to the beginning of this file's data in the zip, or the beginning of the file for a stat'fd\&.
2315 Guido Draheim <guidod@gmx\&.de>
2318 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2322 /544 1071214812 500 0 100664 1264 `
2323 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2324 .de Sh \" Subsection
2332 .de Sp \" Vertical space (when we can't use .PP)
2338 .ie \\n(.$>=3 .ne \\$3
2342 .TH "ZZIP_REWINDDIR" 3 "0.13.24" "zziplib" "zzip_rewinddir"
2344 zzip_rewinddir, zzip_telldir, zzip_seekdir \- (zzip/dir.c)
2352 #include <zzip/lib\&.h>
2356 void\ \ \fBzzip_rewinddir\fR\ (ZZIP_DIR\ *\ dir);
2358 zzip_off_t\ \ \fBzzip_telldir\fR\ (ZZIP_DIR*\ dir);
2360 void \ \fBzzip_seekdir\fR\ (ZZIP_DIR*\ dir, zzip_off_t\ offset);
2367 \fBThe zzip_rewinddir function\fR is the equivalent of a \fBrewinddir\fR(2) for a realdir or the zipfile in place of a directory\&. The ZZIP_DIR handle returned from \fBzzip_opendir\fR has a flag saying realdir or zipfile\&. As for a zipfile, the filenames will include the filesubpath, so take care\&.
2370 \fBThe zzip_telldir function\fR is the equivalent of \fBtelldir\fR(2) for a realdir or zipfile\&.
2373 \fBThe zzip_seekdir function\fR is the equivalent of \fBseekdir\fR(2) for a realdir or zipfile\&.
2379 Guido Draheim <guidod@gmx\&.de>
2382 zzip_seek.3/ 1071214812 500 0 100664 1339 `
2383 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2384 .de Sh \" Subsection
2392 .de Sp \" Vertical space (when we can't use .PP)
2398 .ie \\n(.$>=3 .ne \\$3
2402 .TH "ZZIP_SEEK" 3 "0.13.24" "zziplib" "zzip_seek"
2404 zzip_seek \- (zzip/file.c)
2412 #include <zzip/lib\&.h>
2416 zzip_off_t \ \fBzzip_seek\fR\ (ZZIP_FILE\ *\ fp, zzip_off_t\ offset, int\ whence);
2423 \fBThe zzip_seek function\fR will perform a \fBlseek\fR(2) operation on a real/zipped file
2426 It will try to seek to the offset specified by offset, relative to whence, which is one of SEEK_SET, SEEK_CUR or SEEK_END\&.
2429 If the file\-handle is wrapping a stat'able file then it will actually just perform a normal \fBlseek\fR(2)\-call\&. Otherwise the relative offset is calculated, negative offsets are transformed into positive ones by rewinding the file, and then data is read until the offset is reached\&. This can make the function terribly slow, but this is how gzio implements it, so I'm not sure there is a better way without using the internals of the algorithm\&.
2435 Guido Draheim <guidod@gmx\&.de>
2438 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2442 zzip_seekdir.3/ 1071214812 500 0 100664 26 `
2443 .so man3/zzip_rewinddir.3
2444 zzip_seterror.3/1071214812 500 0 100664 22 `
2445 .so man3/zzip_error.3
2446 zzip_strerror.3/1071214812 500 0 100664 1317 `
2447 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2448 .de Sh \" Subsection
2456 .de Sp \" Vertical space (when we can't use .PP)
2462 .ie \\n(.$>=3 .ne \\$3
2466 .TH "ZZIP_STRERROR" 3 "0.13.24" "zziplib" "zzip_strerror"
2468 zzip_strerror, zzip_strerror_of \- (zzip/err.c)
2476 #include <zzip/lib\&.h>
2480 zzip_char_t*\ \ \fBzzip_strerror\fR\ (int\ errcode);
2482 zzip_char_t*\ \ \fBzzip_strerror_of\fR\ (ZZIP_DIR*\ dir);
2489 returns the static string for the given error code\&. The error code can be either a normal system error (a positive error code will flag this), it can be \fBlibz\fR error code (a small negative error code will flag this) or it can be an error code from \fBlibzzip\fR, which is an negative value lower than \fBZZIP_ERROR\fR
2492 \fBThe zzip_strerror_of function\fR fetches the errorcode from the \fBDIR\fR\-handle and runs it through \fBzzip_strerror\fR to obtain the static string describing the error\&.
2498 Guido Draheim <guidod@gmx\&.de>
2501 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2504 Guido Draheim <guidod@gmx\&.de>
2507 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2511 /562 1071214812 500 0 100664 25 `
2512 .so man3/zzip_strerror.3
2514 zzip_sync.3/ 1071214812 500 0 100664 23 `
2515 .so man3/zzip_mkfifo.3
2517 zzip_tell.3/ 1071214812 500 0 100664 1061 `
2518 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2519 .de Sh \" Subsection
2527 .de Sp \" Vertical space (when we can't use .PP)
2533 .ie \\n(.$>=3 .ne \\$3
2537 .TH "ZZIP_TELL" 3 "0.13.24" "zziplib" "zzip_tell"
2539 zzip_tell \- (zzip/file.c)
2547 #include <zzip/lib\&.h>
2551 zzip_off_t \ \fBzzip_tell\fR\ (ZZIP_FILE\ *\ fp);
2558 \fBThe zzip_tell function\fR will \fBtell\fR(2) the current position in a real/zipped file
2561 It will return the current offset within the real/zipped file, measured in uncompressed bytes for the zipped\-file case\&.
2564 If the file\-handle is wrapping a stat'able file then it will actually just perform a normal \fBtell\fR(2)\-call, otherwise the offset is calculated from the amount of data left and the total uncompressed size;
2570 Guido Draheim <guidod@gmx\&.de>
2573 Tomi Ollila <Tomi\&.Ollila@iki\&.fi>
2577 zzip_telldir.3/ 1071214812 500 0 100664 26 `
2578 .so man3/zzip_rewinddir.3
2579 /582 1071214812 500 0 100664 867 `
2580 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2581 .de Sh \" Subsection
2589 .de Sp \" Vertical space (when we can't use .PP)
2595 .ie \\n(.$>=3 .ne \\$3
2599 .TH "__ZZIP_TRY_OPEN" 3 "0.13.24" "zziplib" "__zzip_try_open"
2601 __zzip_try_open \- (zzip/zip.c)
2609 #include <zzip/lib\&.h>
2613 int \ \fB__zzip_try_open\fR\ (zzip_char_t*\ filename, int\ filemode, zzip_strings_t*\ ext, zzip_plugin_io_t\ io);
2620 will attach a \&.zip extension and tries to open it the with \fBopen\fR(2)\&. This is a helper function for \fBzzip_dir_open\fR, \fBzzip_opendir\fR and \fBzzip_open\fR\&.
2626 Guido Draheim <guidod@gmx\&.de>
2629 Tomi Ollila <too@iki\&.fi>
2633 zzip_write.3/ 1071214812 500 0 100664 2266 `
2634 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2635 .de Sh \" Subsection
2643 .de Sp \" Vertical space (when we can't use .PP)
2649 .ie \\n(.$>=3 .ne \\$3
2653 .TH "ZZIP_WRITE" 3 "0.13.24" "zziplib" "zzip_write"
2655 zzip_write, zzip_file_write, zzip_fwrite \- write to zzip storage
2661 #include <zziplib\&.h>
2665 zzip_ssize_t \ \fBzzip_write\fR\ (ZZIP_FILE*\ file, const\ void*\ ptr, zzip_size_t\ len);
2667 zzip_ssize_t \ \fBzzip_file_write\fR\ (ZZIP_FILE*\ file, const\ void*\ ptr, zzip_size_t\ len);
2669 zzip_size_t \ \fBzzip_fwrite\fR\ (const\ void*\ ptr, zzip_size_t\ len, zzip_size_t\ multiply, ZZIP_FILE*\ file);
2679 \fBThe zzip_write function\fR will write data to a file descriptor\&. If the file descriptor represents a real file then it will be forwarded to call posix \fBwrite\fR(2) directly\&. If it is a descriptor for a file within a zip directory then the data will be "deflated" using \fBzlib\fR(3) and appended to the zip archive file\&.
2685 \fBThe zzip_file_write function\fR will write data to a file descriptor inside a zip archive\&. The data will be "deflated" using \fBzlib\fR(3) compression and appended to the end of the zip archive file\&. Only one file descriptor may be open per zzip_dir archive handle (fifo\-like)\&.
2688 \fBThe zzip_file_write function\fR is not yet implemented, check for #def ZZIP_NO_CREAT It returns immediately \-1 and sets errno=EROFS for indication\&.
2691 \fBThe zzip_fwrite function\fR is the stdc variant for writing and the arguments are forwarded to \fBzzip_write\fR \- the return value is floored to null as for STDC spec but there is no zzip_ferror call so far for the zziplib (later? is it actually needed?)\&.
2694 \fBThe zzip_fwrite function\fR is not yet implemented, check for #def ZZIP_NO_CREAT Write\-support extends \fBzzip_close\fR with semantics to write out a file\-trailer to the zip\-archive leaving a name/offset marker in the (still\-open) ZZIP_DIR handle\&.
2700 Guido Draheim <guidod@gmx\&.de>
2706 write(2), zlib(3), zzip_file_creat