/src/zziplib/zzip/lib.h

https://bitbucket.org/cabalistic/ogredeps/ · C++ Header · 91 lines · 56 code · 11 blank · 24 comment · 0 complexity · 31f49efb3d33a4da252c1d74b227bbd6 MD5 · raw file

  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. #include <zzip/zzip.h>
  21. #include <zzip/plugin.h>
  22. #include <zzip/stdint.h>
  23. #include <zzip/zzip32.h>
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /*
  28. * this structure cannot be wildly enlarged... (see zzip-zip.c)
  29. */
  30. struct zzip_dir_hdr
  31. {
  32. uint32_t d_usize; /* uncompressed size */
  33. uint32_t d_csize; /* compressed size */
  34. uint32_t d_crc32; /* the adler32-checksum */
  35. uint32_t d_off; /* offset of file in zipfile */
  36. uint16_t d_reclen; /* next dir_hdr structure offset */
  37. uint16_t d_namlen; /* explicit namelen of d_name */
  38. uint8_t d_compr; /* the compression type, 0 = store, 8 = inflate */
  39. char d_name[1]; /* the actual name of the entry, may contain DIRSEPs */
  40. };
  41. #define _ZZIP_DIRENT_HAVE_D_NAMLEN
  42. #define _ZZIP_DIRENT_HAVE_D_OFF
  43. #define _ZZIP_DIRENT_HAVE_D_RECLEN
  44. /*
  45. * you shall not use this struct anywhere else than in zziplib sources.
  46. */
  47. struct zzip_dir
  48. {
  49. int fd;
  50. int errcode; /* zzip_error_t */
  51. long refcount;
  52. struct { /* reduce a lot of alloc/deallocations by caching these: */
  53. int * volatile locked;
  54. struct zzip_file * volatile fp;
  55. char * volatile buf32k;
  56. } cache;
  57. struct zzip_dir_hdr * hdr0; /* zfi; */
  58. struct zzip_dir_hdr * hdr; /* zdp; directory pointer, for dirent stuff */
  59. struct zzip_file * currentfp; /* last fp used... */
  60. struct zzip_dirent dirent;
  61. void* realdir; /* e.g. DIR* from posix dirent.h */
  62. char* realname;
  63. zzip_strings_t* fileext; /* list of fileext to test for */
  64. zzip_plugin_io_t io; /* vtable for io routines */
  65. };
  66. #define ZZIP_32K 32768
  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. ZZIP_DIR *
  71. zzip_dir_fdopen(int fd, zzip_error_t * errcode_p);
  72. ZZIP_DIR*
  73. zzip_dir_fdopen_ext_io(int fd, zzip_error_t * errorcode_p,
  74. zzip_strings_t* ext, const zzip_plugin_io_t io);
  75. ZZIP_DIR* /*depracated*/
  76. zzip_dir_alloc_ext_io (zzip_strings_t* ext, const zzip_plugin_io_t io);
  77. #ifdef __cplusplus
  78. }
  79. #endif
  80. #endif /* _ZZIP_H */