Annotation of embedaddon/php/ext/zip/lib/zip.h, revision 1.1.1.1

1.1       misho       1: #ifndef _HAD_ZIP_H
                      2: #define _HAD_ZIP_H
                      3: 
                      4: /*
                      5:   zip.h -- exported declarations.
                      6:   Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
                      7: 
                      8:   This file is part of libzip, a library to manipulate ZIP archives.
                      9:   The authors can be contacted at <libzip@nih.at>
                     10: 
                     11:   Redistribution and use in source and binary forms, with or without
                     12:   modification, are permitted provided that the following conditions
                     13:   are met:
                     14:   1. Redistributions of source code must retain the above copyright
                     15:      notice, this list of conditions and the following disclaimer.
                     16:   2. Redistributions in binary form must reproduce the above copyright
                     17:      notice, this list of conditions and the following disclaimer in
                     18:      the documentation and/or other materials provided with the
                     19:      distribution.
                     20:   3. The names of the authors may not be used to endorse or promote
                     21:      products derived from this software without specific prior
                     22:      written permission.
                     23: 
                     24:   THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
                     25:   OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                     26:   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     27:   ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
                     28:   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     29:   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
                     30:   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     31:   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
                     32:   IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
                     33:   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
                     34:   IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     35: */
                     36: 
                     37: 
                     38: #include "main/php.h"
                     39: 
                     40: #ifdef PHP_WIN32
                     41: #      include "zip_win32.h"
                     42: #      ifdef PHP_ZIP_EXPORTS
                     43: #              define ZIP_EXTERN(rt) __declspec(dllexport)rt _stdcall
                     44: #      else
                     45: #              define ZIP_EXTERN(rt) rt
                     46: #      endif
                     47: #elif defined(__GNUC__) && __GNUC__ >= 4
                     48: #      define ZIP_EXTERN(rt) __attribute__ ((visibility("default"))) rt
                     49: #else
                     50: #      define ZIP_EXTERN(rt) rt
                     51: #endif
                     52: 
                     53: BEGIN_EXTERN_C()
                     54: 
                     55: #include <sys/types.h>
                     56: #include <stdio.h>
                     57: #include <time.h>
                     58: 
                     59: /* flags for zip_open */
                     60: 
                     61: #define ZIP_CREATE           1
                     62: #define ZIP_EXCL             2
                     63: #define ZIP_CHECKCONS        4
                     64: #define ZIP_OVERWRITE        8
                     65: 
                     66: 
                     67: /* flags for zip_name_locate, zip_fopen, zip_stat, ... */
                     68: 
                     69: #define ZIP_FL_NOCASE          1 /* ignore case on name lookup */
                     70: #define ZIP_FL_NODIR           2 /* ignore directory component */
                     71: #define ZIP_FL_COMPRESSED      4 /* read compressed data */
                     72: #define ZIP_FL_UNCHANGED       8 /* use original data, ignoring changes */
                     73: #define ZIP_FL_RECOMPRESS      16 /* force recompression of data */
                     74: 
                     75: /* archive global flags flags */
                     76: 
                     77: #define ZIP_AFL_TORRENT                1 /* torrent zipped */
                     78: 
                     79: /* libzip error codes */
                     80: 
                     81: #define ZIP_ER_OK             0  /* N No error */
                     82: #define ZIP_ER_MULTIDISK      1  /* N Multi-disk zip archives not supported */
                     83: #define ZIP_ER_RENAME         2  /* S Renaming temporary file failed */
                     84: #define ZIP_ER_CLOSE          3  /* S Closing zip archive failed */
                     85: #define ZIP_ER_SEEK           4  /* S Seek error */
                     86: #define ZIP_ER_READ           5  /* S Read error */
                     87: #define ZIP_ER_WRITE          6  /* S Write error */
                     88: #define ZIP_ER_CRC            7  /* N CRC error */
                     89: #define ZIP_ER_ZIPCLOSED      8  /* N Containing zip archive was closed */
                     90: #define ZIP_ER_NOENT          9  /* N No such file */
                     91: #define ZIP_ER_EXISTS        10  /* N File already exists */
                     92: #define ZIP_ER_OPEN          11  /* S Can't open file */
                     93: #define ZIP_ER_TMPOPEN       12  /* S Failure to create temporary file */
                     94: #define ZIP_ER_ZLIB          13  /* Z Zlib error */
                     95: #define ZIP_ER_MEMORY        14  /* N Malloc failure */
                     96: #define ZIP_ER_CHANGED       15  /* N Entry has been changed */
                     97: #define ZIP_ER_COMPNOTSUPP   16  /* N Compression method not supported */
                     98: #define ZIP_ER_EOF           17  /* N Premature EOF */
                     99: #define ZIP_ER_INVAL         18  /* N Invalid argument */
                    100: #define ZIP_ER_NOZIP         19  /* N Not a zip archive */
                    101: #define ZIP_ER_INTERNAL      20  /* N Internal error */
                    102: #define ZIP_ER_INCONS        21  /* N Zip archive inconsistent */
                    103: #define ZIP_ER_REMOVE        22  /* S Can't remove file */
                    104: #define ZIP_ER_DELETED       23  /* N Entry has been deleted */
                    105: 
                    106: 
                    107: /* type of system error value */
                    108: 
                    109: #define ZIP_ET_NONE          0  /* sys_err unused */
                    110: #define ZIP_ET_SYS           1  /* sys_err is errno */
                    111: #define ZIP_ET_ZLIB          2  /* sys_err is zlib error code */
                    112: 
                    113: /* compression methods */
                    114: 
                    115: #define ZIP_CM_DEFAULT       -1  /* better of deflate or store */
                    116: #define ZIP_CM_STORE          0  /* stored (uncompressed) */
                    117: #define ZIP_CM_SHRINK         1  /* shrunk */
                    118: #define ZIP_CM_REDUCE_1               2  /* reduced with factor 1 */
                    119: #define ZIP_CM_REDUCE_2               3  /* reduced with factor 2 */
                    120: #define ZIP_CM_REDUCE_3               4  /* reduced with factor 3 */
                    121: #define ZIP_CM_REDUCE_4               5  /* reduced with factor 4 */
                    122: #define ZIP_CM_IMPLODE        6  /* imploded */
                    123: /* 7 - Reserved for Tokenizing compression algorithm */
                    124: #define ZIP_CM_DEFLATE        8  /* deflated */
                    125: #define ZIP_CM_DEFLATE64       9  /* deflate64 */
                    126: #define ZIP_CM_PKWARE_IMPLODE 10  /* PKWARE imploding */
                    127: /* 11 - Reserved by PKWARE */
                    128: #define ZIP_CM_BZIP2          12  /* compressed using BZIP2 algorithm */
                    129: /* 13 - Reserved by PKWARE */
                    130: #define ZIP_CM_LZMA          14  /* LZMA (EFS) */
                    131: /* 15-17 - Reserved by PKWARE */
                    132: #define ZIP_CM_TERSE         18  /* compressed using IBM TERSE (new) */
                    133: #define ZIP_CM_LZ77           19  /* IBM LZ77 z Architecture (PFS) */
                    134: #define ZIP_CM_WAVPACK       97  /* WavPack compressed data */
                    135: #define ZIP_CM_PPMD          98  /* PPMd version I, Rev 1 */
                    136: 
                    137: /* encryption methods */
                    138: 
                    139: #define ZIP_EM_NONE           0  /* not encrypted */
                    140: #define ZIP_EM_TRAD_PKWARE     1  /* traditional PKWARE encryption */
                    141: #if 0 /* Strong Encryption Header not parsed yet */
                    142: #define ZIP_EM_DES        0x6601  /* strong encryption: DES */
                    143: #define ZIP_EM_RC2_OLD    0x6602  /* strong encryption: RC2, version < 5.2 */
                    144: #define ZIP_EM_3DES_168   0x6603
                    145: #define ZIP_EM_3DES_112   0x6609
                    146: #define ZIP_EM_AES_128    0x660e
                    147: #define ZIP_EM_AES_192    0x660f
                    148: #define ZIP_EM_AES_256    0x6610
                    149: #define ZIP_EM_RC2        0x6702  /* strong encryption: RC2, version >= 5.2 */
                    150: #define ZIP_EM_RC4        0x6801
                    151: #endif
                    152: #define ZIP_EM_UNKNOWN    0xffff  /* unknown algorithm */
                    153: 
                    154: 
                    155: 
                    156: enum zip_source_cmd {
                    157:     ZIP_SOURCE_OPEN,   /* prepare for reading */
                    158:     ZIP_SOURCE_READ,   /* read data */
                    159:     ZIP_SOURCE_CLOSE,  /* reading is done */
                    160:     ZIP_SOURCE_STAT,   /* get meta information */
                    161:     ZIP_SOURCE_ERROR,  /* get error information */
                    162:     ZIP_SOURCE_FREE    /* cleanup and free resources */
                    163: };
                    164: 
                    165: typedef ssize_t (*zip_source_callback)(void *state, void *data,
                    166:                                       size_t len, enum zip_source_cmd cmd);
                    167: 
                    168: struct zip_stat {
                    169:     const char *name;                  /* name of the file */
                    170:     int index;                         /* index within archive */
                    171:     unsigned int crc;                  /* crc of file data */
                    172:     time_t mtime;                      /* modification time */
                    173:     off_t size;                                /* size of file (uncompressed) */
                    174:     off_t comp_size;                   /* size of file (compressed) */
                    175:     unsigned short comp_method;                /* compression method used */
                    176:     unsigned short encryption_method;  /* encryption method used */
                    177: };
                    178: 
                    179: struct zip;
                    180: struct zip_file;
                    181: struct zip_source;
                    182: 
                    183: 
                    184: 
                    185: ZIP_EXTERN(int) zip_add(struct zip *, const char *, struct zip_source *);
                    186: ZIP_EXTERN(int) zip_add_dir(struct zip *, const char *);
                    187: ZIP_EXTERN(int) zip_close(struct zip *);
                    188: ZIP_EXTERN(int) zip_delete(struct zip *, int);
                    189: ZIP_EXTERN(void) zip_error_clear(struct zip *);
                    190: ZIP_EXTERN(void) zip_error_get(struct zip *, int *, int *);
                    191: ZIP_EXTERN(int) zip_error_get_sys_type(int);
                    192: ZIP_EXTERN(int) zip_error_to_str(char *, size_t, int, int);
                    193: ZIP_EXTERN(int) zip_fclose(struct zip_file *);
                    194: ZIP_EXTERN(void) zip_file_error_clear(struct zip_file *);
                    195: ZIP_EXTERN(void) zip_file_error_get(struct zip_file *, int *, int *);
                    196: ZIP_EXTERN(const char *)zip_file_strerror(struct zip_file *);
                    197: ZIP_EXTERN(struct zip_file *)zip_fopen(struct zip *, const char *, int);
                    198: ZIP_EXTERN(struct zip_file *)zip_fopen_index(struct zip *, int, int);
                    199: ZIP_EXTERN(ssize_t) zip_fread(struct zip_file *, void *, size_t);
                    200: ZIP_EXTERN(const char *)zip_get_archive_comment(struct zip *, int *, int);
                    201: ZIP_EXTERN(int) zip_get_archive_flag(struct zip *, int, int);
                    202: ZIP_EXTERN(const char *)zip_get_file_comment(struct zip *, int, int *, int);
                    203: ZIP_EXTERN(const char *)zip_get_name(struct zip *, int, int);
                    204: ZIP_EXTERN(int) zip_get_num_files(struct zip *);
                    205: ZIP_EXTERN(int) zip_name_locate(struct zip *, const char *, int);
                    206: ZIP_EXTERN(struct zip *)zip_open(const char *, int, int *);
                    207: ZIP_EXTERN(int) zip_rename(struct zip *, int, const char *);
                    208: ZIP_EXTERN(int) zip_replace(struct zip *, int, struct zip_source *);
                    209: ZIP_EXTERN(int) zip_set_archive_comment(struct zip *, const char *, int);
                    210: ZIP_EXTERN(int) zip_set_archive_flag(struct zip *, int, int);
                    211: ZIP_EXTERN(int) zip_set_file_comment(struct zip *, int, const char *, int);
                    212: ZIP_EXTERN(struct zip_source *)zip_source_buffer(struct zip *, const void *,
                    213:                                                off_t, int);
                    214: ZIP_EXTERN(struct zip_source *)zip_source_file(struct zip *, const char *,
                    215:                                              off_t, off_t);
                    216: ZIP_EXTERN(struct zip_source *)zip_source_filep(struct zip *, FILE *,
                    217:                                               off_t, off_t);
                    218: ZIP_EXTERN(void) zip_source_free(struct zip_source *);
                    219: ZIP_EXTERN(struct zip_source *)zip_source_function(struct zip *,
                    220:                                                  zip_source_callback, void *);
                    221: ZIP_EXTERN(struct zip_source *)zip_source_zip(struct zip *, struct zip *,
                    222:                                             int, int, off_t, off_t);
                    223: ZIP_EXTERN(int) zip_stat(struct zip *, const char *, int, struct zip_stat *);
                    224: ZIP_EXTERN(int) zip_stat_index(struct zip *, int, int, struct zip_stat *);
                    225: ZIP_EXTERN(void) zip_stat_init(struct zip_stat *);
                    226: ZIP_EXTERN(const char *)zip_strerror(struct zip *);
                    227: ZIP_EXTERN(int) zip_unchange(struct zip *, int);
                    228: ZIP_EXTERN(int) zip_unchange_all(struct zip *);
                    229: ZIP_EXTERN(int) zip_unchange_archive(struct zip *);
                    230: 
                    231: END_EXTERN_C();
                    232: #endif /* _HAD_ZIP_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>