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

FreeBSD Manual Pages

  
 
  

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

NAME
     zzip_open, zzip_open_ext_io, zzip_open_shared_io -  start usage.

SYNOPSIS
     #include <zzip/lib.h>

     ZZIP_FILE*
     zzip_open(zzip_char_t* filename, int o_flags)

     ZZIP_FILE*
     zzip_open_ext_io(zzip_char_t* filename, int o_flags, int o_modes, zzip_strings_t* ext,
		      zzip_plugin_io_t io)

     ZZIP_FILE*
     zzip_open_shared_io(ZZIP_FILE* stream, zzip_char_t* filename, int o_flags, int o_modes,
			 zzip_strings_t* ext, zzip_plugin_io_t io)

DESCRIPTION
      The zzip_open function will open(2) 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).

      There  was  a  possibility  to transfer zziplib-specific openmodes through
     o_flags  but  you	should	please	not  use  them	anymore  and  look  into
     zzip_open_ext_io  to submit them down. The zzip_open function is shallow in
     that it just extracts the zzipflags and calls

      zzip_open_ext_io(filename, o_flags, zzipflags|0664, 0, 0)

      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.

      compare with open(2) and zzip_fopen

      The zzip_open_ext_io function uses explicit ext and io instead of the  in-
     ternal defaults, setting them to zero is equivalent to zzip_open

      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-spe-
     cific modeflags.

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

      If  any  ext_io handlers were used then the referenced structure should be
     static as the allocated ZZIP_FILE does not copy them.

      The zzip_open_shared_io function 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 how-
     ever since zzip_file_real does not store any ext-sequence.

      The benefit for the zzip_open_shared_io function 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.

      Note that the zzip_open_shared_io function is also  used	by  zzip_freopen
     that will unshare the old handle, thereby possibly closing the handle.

      The zzip_open_shared_io function returns a new zzip-handle (use zzip_close
     to  return  it). On error the zzip_open_shared_io 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)

zziplib 			     0.13.80			    zzip_open(3)

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

home | help