Files
harbour-core/harbour/contrib/hbzlib/ioapi.h
Mindaugas Kavaliauskas b2f93a309a 2008-01-16 01:20 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
+ harbout/contrib/hbzlib
    + added support for zlib library and zip files (based on 
      minizip)
  + harbour/contrib/hbzlib/zconf.h
  + harbour/contrib/hbzlib/zlib.h
    + zlib include files
  + harbour/contrib/hbzlib/zip.h
  + harbour/contrib/hbzlib/unzip.h
    + minizip include files
  + harbour/contrib/hbzlib/ioapi.c
  + harbour/contrib/hbzlib/zip.c
  + harbour/contrib/hbzlib/unzip.c
    + minizip source files. Some fixes are applied to avoid compile 
      time warning and errors, see readme.txt for list
    ; I've compiled with BCC only, please, check other compilers
  + harbour/contrib/hbzlib/hbzlib.c
    + zlib wrapper functions. Przemyslaw Czerpak is author of this code. 
      The file was posted to developers mailing list on 2007-05-17. 
      I think licence statments in the begining of file gives permission 
      to include it into SVN.
    * HB_UNCOMPRESSLEN() function added. Source copied from Przemyslaw's
      email on 2008-01-10.
  + harbour/contrib/hbzlib/hbmzip.c
    + wrapper functions for minizip library
      Function names uses convention:
      - HB_ZIP*() - manages compression of .zip file:
           HB_ZIPOPEN(), HB_ZIPCLOSE()
      - HB_ZIPFILE*() - manages compression of files inside .zip:
           HB_ZIPFILECREATE(), HB_ZIPFILEWRITE(), HB_ZIPFILECLOSE()
      - HB_UNZIP*() - manages decompression of .zip fileL
           HB_UNZIPOPEN(), HB_UNZIPCLOSE()
      - HB_UNZIPFILE*() - manages decompression of files inside .zip
           HB_UNZIPFILEOPEN(), HB_UNZIPFILEREAD(), HB_UNZIPFILECLOSE(),
           HB_UNZIPFILEFIRST(), HB_UNZIPFILENEXT(), HB_UNZIPFILEPOS(), 
           HB_UNZIPFILEGOTO(), HB_UNZIPFILEINFO()
      Parameters of functions are documented inside source files.
    + implemented some higher level functions. These function are not 
      wrapper of minizip:
      HB_ZIPSTOREFILE(), HB_UNZIPEXTRACTCURRENTFILE()
    ; minizip gives low level access on zip files. This could be a 
      problem if you not going to put your fingers on internals, but 
      just want to compress/decompress files. Because managing of 
      file attributes is a little complicated. These higher level 
      functions do the job.
    ; please test code under linux. Source is written using docs only, 
      without test or deeper knowledge.
  + harbour/contrib/hbzlib/hbzlib.ch
    + defines for zlib and minizip libraries
    ; I've used HB_ZLIB_* and HB_ZIP_* prefixes, because some original 
      names of minizip library are too general, ex., APPEND_STATUS_CREATE
      If you want to use original define names we change this.
  + harbour/contrib/hbzlib/readme.txt
    * some comments on the source of libraries and ChangeLog for minizip 
      files
  + harbour/contrib/hbzlib/tests/myzip.prg
  + harbour/contrib/hbzlib/tests/myunzip.prg
    + tiny compression/decompression utilities written in Harbour
  + harbour/contrib/hbzlib/Makefile
  + harbour/contrib/hbzlib/make_b32.bat
  + harbour/contrib/hbzlib/make_vc.bat
    + makefiles written using another contrib's makefiles as template
    ; I'm not makefiles guru, please test it. I've also used command line 
      parameters: -DNOCRYPT -DNOUNCRYPT, to compile minizip. I don't know 
      howto include these to our makefiles
2008-01-15 23:23:34 +00:00

76 lines
2.5 KiB
C

/* ioapi.h -- IO base function header for compress/uncompress .zip
files using zlib + zip or unzip API
Version 1.01e, February 12th, 2005
Copyright (C) 1998-2005 Gilles Vollant
*/
#ifndef _ZLIBIOAPI_H
#define _ZLIBIOAPI_H
#define ZLIB_FILEFUNC_SEEK_CUR (1)
#define ZLIB_FILEFUNC_SEEK_END (2)
#define ZLIB_FILEFUNC_SEEK_SET (0)
#define ZLIB_FILEFUNC_MODE_READ (1)
#define ZLIB_FILEFUNC_MODE_WRITE (2)
#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3)
#define ZLIB_FILEFUNC_MODE_EXISTING (4)
#define ZLIB_FILEFUNC_MODE_CREATE (8)
#ifndef ZCALLBACK
#if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK)
#define ZCALLBACK CALLBACK
#else
#define ZCALLBACK
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode));
typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size));
typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream));
typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin));
typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream));
typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream));
typedef struct zlib_filefunc_def_s
{
open_file_func zopen_file;
read_file_func zread_file;
write_file_func zwrite_file;
tell_file_func ztell_file;
seek_file_func zseek_file;
close_file_func zclose_file;
testerror_file_func zerror_file;
voidpf opaque;
} zlib_filefunc_def;
void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size))
#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size))
#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream))
#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode))
#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream))
#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream))
#ifdef __cplusplus
}
#endif
#endif