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

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

home | help