[657] | 1 | /* |
---|
| 2 | * Author: |
---|
| 3 | * Guido Draheim <guidod@gmx.de> |
---|
| 4 | * Tomi Ollila <Tomi.Ollila@iki.fi> |
---|
| 5 | * |
---|
| 6 | * Copyright (c) 1999,2000,2001,2002,2003 Guido Draheim |
---|
| 7 | * All rights reserved |
---|
| 8 | * use under the restrictions of the |
---|
| 9 | * Lesser GNU General Public License |
---|
| 10 | * or alternatively the restrictions |
---|
| 11 | * of the Mozilla Public License 1.1 |
---|
| 12 | * |
---|
| 13 | * This is the private header containing definitions that are not |
---|
| 14 | * use by a libzzip user application. Writing an extension lib that |
---|
| 15 | * uses libzzip will still want to include this. The extension |
---|
| 16 | * write should make way to have the ISO C9X integer types defined. |
---|
| 17 | */ |
---|
| 18 | #ifndef _ZZIP_LIB_H /* zzip.h */ |
---|
| 19 | #define _ZZIP_LIB_H |
---|
| 20 | |
---|
| 21 | #include <zzip/zzip.h> |
---|
| 22 | #include <zzip/plugin.h> |
---|
| 23 | #include <zzip/stdint.h> |
---|
| 24 | |
---|
| 25 | /* |
---|
| 26 | * this structure cannot be wildly enlarged... (see zzip-zip.c) |
---|
| 27 | */ |
---|
| 28 | struct zzip_dir_hdr |
---|
| 29 | { |
---|
| 30 | uint32_t d_usize; /* uncompressed size */ |
---|
| 31 | uint32_t d_csize; /* compressed size */ |
---|
| 32 | uint32_t d_crc32; /* the adler32-checksum */ |
---|
| 33 | uint32_t d_off; /* offset of file in zipfile */ |
---|
| 34 | uint16_t d_reclen; /* next dir_hdr structure offset */ |
---|
| 35 | uint16_t d_namlen; /* explicit namelen of d_name */ |
---|
| 36 | uint8_t d_compr; /* the compression type, 0 = store, 8 = inflate */ |
---|
| 37 | char d_name[1]; /* the actual name of the entry, may contain DIRSEPs */ |
---|
| 38 | }; |
---|
| 39 | #define _ZZIP_DIRENT_HAVE_D_NAMLEN |
---|
| 40 | #define _ZZIP_DIRENT_HAVE_D_OFF |
---|
| 41 | #define _ZZIP_DIRENT_HAVE_D_RECLEN |
---|
| 42 | |
---|
| 43 | /* |
---|
| 44 | * you shall not use this struct anywhere else than in zziplib sources. |
---|
| 45 | */ |
---|
| 46 | struct zzip_dir |
---|
| 47 | { |
---|
| 48 | int fd; |
---|
| 49 | int errcode; /* zzip_error_t */ |
---|
| 50 | long refcount; |
---|
| 51 | struct { |
---|
| 52 | struct zzip_file * fp; /* reduce a lot of alloc/deallocations by */ |
---|
| 53 | char * buf32k; /* caching one entry of these data structures */ |
---|
| 54 | } cache; |
---|
| 55 | struct zzip_dir_hdr * hdr0; /* zfi; */ |
---|
| 56 | struct zzip_dir_hdr * hdr; /* zdp; directory pointer, for dirent stuff */ |
---|
| 57 | struct zzip_file * currentfp; /* last fp used... */ |
---|
| 58 | struct zzip_dirent dirent; |
---|
| 59 | void* realdir; /* e.g. DIR* from posix dirent.h */ |
---|
| 60 | char* realname; |
---|
| 61 | zzip_strings_t* fileext; /* list of fileext to test for */ |
---|
| 62 | zzip_plugin_io_t io; /* vtable for io routines */ |
---|
| 63 | }; |
---|
| 64 | |
---|
| 65 | #define ZZIP_32K 32768 |
---|
| 66 | |
---|
| 67 | /* try to open a zip-basename with default_fileext */ |
---|
| 68 | int __zzip_try_open (zzip_char_t* filename, int filemode, |
---|
| 69 | zzip_strings_t* ext, zzip_plugin_io_t io); |
---|
| 70 | |
---|
| 71 | ZZIP_DIR * |
---|
| 72 | zzip_dir_fdopen(int fd, zzip_error_t * errcode_p); |
---|
| 73 | |
---|
| 74 | ZZIP_DIR* |
---|
| 75 | zzip_dir_fdopen_ext_io(int fd, zzip_error_t * errorcode_p, |
---|
| 76 | zzip_strings_t* ext, const zzip_plugin_io_t io); |
---|
| 77 | |
---|
| 78 | ZZIP_DIR* /*depracated*/ |
---|
| 79 | zzip_dir_alloc_ext_io (zzip_strings_t* ext, const zzip_plugin_io_t io); |
---|
| 80 | |
---|
| 81 | #endif /* _ZZIP_H */ |
---|
| 82 | |
---|