Rizin
unix-like reverse engineering framework and cli tools
zip.h
Go to the documentation of this file.
1 #ifndef _HAD_ZIP_H
2 #define _HAD_ZIP_H
3 
4 /*
5  zip.h -- exported declarations.
6  Copyright (C) 1999-2021 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 <info@libzip.org>
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 #ifdef __cplusplus
39 extern "C" {
40 #if 0
41 } /* fix autoindent */
42 #endif
43 #endif
44 
45 #include <zipconf.h>
46 
47 #ifndef ZIP_EXTERN
48 #ifndef ZIP_STATIC
49 #ifdef _WIN32
50 #define ZIP_EXTERN __declspec(dllimport)
51 #elif defined(__GNUC__) && __GNUC__ >= 4
52 #define ZIP_EXTERN __attribute__((visibility("default")))
53 #else
54 #define ZIP_EXTERN
55 #endif
56 #else
57 #define ZIP_EXTERN
58 #endif
59 #endif
60 
61 #include <stdio.h>
62 #include <sys/types.h>
63 #include <time.h>
64 
65 /* flags for zip_open */
66 
67 #define ZIP_CREATE 1
68 #define ZIP_EXCL 2
69 #define ZIP_CHECKCONS 4
70 #define ZIP_TRUNCATE 8
71 #define ZIP_RDONLY 16
72 
73 
74 /* flags for zip_name_locate, zip_fopen, zip_stat, ... */
75 
76 #define ZIP_FL_NOCASE 1u /* ignore case on name lookup */
77 #define ZIP_FL_NODIR 2u /* ignore directory component */
78 #define ZIP_FL_COMPRESSED 4u /* read compressed data */
79 #define ZIP_FL_UNCHANGED 8u /* use original data, ignoring changes */
80 #define ZIP_FL_RECOMPRESS 16u /* force recompression of data */
81 #define ZIP_FL_ENCRYPTED 32u /* read encrypted data (implies ZIP_FL_COMPRESSED) */
82 #define ZIP_FL_ENC_GUESS 0u /* guess string encoding (is default) */
83 #define ZIP_FL_ENC_RAW 64u /* get unmodified string */
84 #define ZIP_FL_ENC_STRICT 128u /* follow specification strictly */
85 #define ZIP_FL_LOCAL 256u /* in local header */
86 #define ZIP_FL_CENTRAL 512u /* in central directory */
87 /* 1024u reserved for internal use */
88 #define ZIP_FL_ENC_UTF_8 2048u /* string is UTF-8 encoded */
89 #define ZIP_FL_ENC_CP437 4096u /* string is CP437 encoded */
90 #define ZIP_FL_OVERWRITE 8192u /* zip_file_add: if file with name exists, overwrite (replace) it */
91 
92 /* archive global flags flags */
93 
94 #define ZIP_AFL_RDONLY 2u /* read only -- cannot be cleared */
95 
96 
97 /* create a new extra field */
98 
99 #define ZIP_EXTRA_FIELD_ALL ZIP_UINT16_MAX
100 #define ZIP_EXTRA_FIELD_NEW ZIP_UINT16_MAX
101 
102 
103 /* libzip error codes */
104 
105 #define ZIP_ER_OK 0 /* N No error */
106 #define ZIP_ER_MULTIDISK 1 /* N Multi-disk zip archives not supported */
107 #define ZIP_ER_RENAME 2 /* S Renaming temporary file failed */
108 #define ZIP_ER_CLOSE 3 /* S Closing zip archive failed */
109 #define ZIP_ER_SEEK 4 /* S Seek error */
110 #define ZIP_ER_READ 5 /* S Read error */
111 #define ZIP_ER_WRITE 6 /* S Write error */
112 #define ZIP_ER_CRC 7 /* N CRC error */
113 #define ZIP_ER_ZIPCLOSED 8 /* N Containing zip archive was closed */
114 #define ZIP_ER_NOENT 9 /* N No such file */
115 #define ZIP_ER_EXISTS 10 /* N File already exists */
116 #define ZIP_ER_OPEN 11 /* S Can't open file */
117 #define ZIP_ER_TMPOPEN 12 /* S Failure to create temporary file */
118 #define ZIP_ER_ZLIB 13 /* Z Zlib error */
119 #define ZIP_ER_MEMORY 14 /* N Malloc failure */
120 #define ZIP_ER_CHANGED 15 /* N Entry has been changed */
121 #define ZIP_ER_COMPNOTSUPP 16 /* N Compression method not supported */
122 #define ZIP_ER_EOF 17 /* N Premature end of file */
123 #define ZIP_ER_INVAL 18 /* N Invalid argument */
124 #define ZIP_ER_NOZIP 19 /* N Not a zip archive */
125 #define ZIP_ER_INTERNAL 20 /* N Internal error */
126 #define ZIP_ER_INCONS 21 /* L Zip archive inconsistent */
127 #define ZIP_ER_REMOVE 22 /* S Can't remove file */
128 #define ZIP_ER_DELETED 23 /* N Entry has been deleted */
129 #define ZIP_ER_ENCRNOTSUPP 24 /* N Encryption method not supported */
130 #define ZIP_ER_RDONLY 25 /* N Read-only archive */
131 #define ZIP_ER_NOPASSWD 26 /* N No password provided */
132 #define ZIP_ER_WRONGPASSWD 27 /* N Wrong password provided */
133 #define ZIP_ER_OPNOTSUPP 28 /* N Operation not supported */
134 #define ZIP_ER_INUSE 29 /* N Resource still in use */
135 #define ZIP_ER_TELL 30 /* S Tell error */
136 #define ZIP_ER_COMPRESSED_DATA 31 /* N Compressed data invalid */
137 #define ZIP_ER_CANCELLED 32 /* N Operation cancelled */
138 
139 /* type of system error value */
140 
141 #define ZIP_ET_NONE 0 /* sys_err unused */
142 #define ZIP_ET_SYS 1 /* sys_err is errno */
143 #define ZIP_ET_ZLIB 2 /* sys_err is zlib error code */
144 #define ZIP_ET_LIBZIP 3 /* sys_err is libzip error code */
145 
146 /* compression methods */
147 
148 #define ZIP_CM_DEFAULT -1 /* better of deflate or store */
149 #define ZIP_CM_STORE 0 /* stored (uncompressed) */
150 #define ZIP_CM_SHRINK 1 /* shrunk */
151 #define ZIP_CM_REDUCE_1 2 /* reduced with factor 1 */
152 #define ZIP_CM_REDUCE_2 3 /* reduced with factor 2 */
153 #define ZIP_CM_REDUCE_3 4 /* reduced with factor 3 */
154 #define ZIP_CM_REDUCE_4 5 /* reduced with factor 4 */
155 #define ZIP_CM_IMPLODE 6 /* imploded */
156 /* 7 - Reserved for Tokenizing compression algorithm */
157 #define ZIP_CM_DEFLATE 8 /* deflated */
158 #define ZIP_CM_DEFLATE64 9 /* deflate64 */
159 #define ZIP_CM_PKWARE_IMPLODE 10 /* PKWARE imploding */
160 /* 11 - Reserved by PKWARE */
161 #define ZIP_CM_BZIP2 12 /* compressed using BZIP2 algorithm */
162 /* 13 - Reserved by PKWARE */
163 #define ZIP_CM_LZMA 14 /* LZMA (EFS) */
164 /* 15-17 - Reserved by PKWARE */
165 #define ZIP_CM_TERSE 18 /* compressed using IBM TERSE (new) */
166 #define ZIP_CM_LZ77 19 /* IBM LZ77 z Architecture (PFS) */
167 /* 20 - old value for Zstandard */
168 #define ZIP_CM_LZMA2 33
169 #define ZIP_CM_ZSTD 93 /* Zstandard compressed data */
170 #define ZIP_CM_XZ 95 /* XZ compressed data */
171 #define ZIP_CM_JPEG 96 /* Compressed Jpeg data */
172 #define ZIP_CM_WAVPACK 97 /* WavPack compressed data */
173 #define ZIP_CM_PPMD 98 /* PPMd version I, Rev 1 */
174 
175 /* encryption methods */
176 
177 #define ZIP_EM_NONE 0 /* not encrypted */
178 #define ZIP_EM_TRAD_PKWARE 1 /* traditional PKWARE encryption */
179 #if 0 /* Strong Encryption Header not parsed yet */
180 #define ZIP_EM_DES 0x6601 /* strong encryption: DES */
181 #define ZIP_EM_RC2_OLD 0x6602 /* strong encryption: RC2, version < 5.2 */
182 #define ZIP_EM_3DES_168 0x6603
183 #define ZIP_EM_3DES_112 0x6609
184 #define ZIP_EM_PKZIP_AES_128 0x660e
185 #define ZIP_EM_PKZIP_AES_192 0x660f
186 #define ZIP_EM_PKZIP_AES_256 0x6610
187 #define ZIP_EM_RC2 0x6702 /* strong encryption: RC2, version >= 5.2 */
188 #define ZIP_EM_RC4 0x6801
189 #endif
190 #define ZIP_EM_AES_128 0x0101 /* Winzip AES encryption */
191 #define ZIP_EM_AES_192 0x0102
192 #define ZIP_EM_AES_256 0x0103
193 #define ZIP_EM_UNKNOWN 0xffff /* unknown algorithm */
194 
195 #define ZIP_OPSYS_DOS 0x00u
196 #define ZIP_OPSYS_AMIGA 0x01u
197 #define ZIP_OPSYS_OPENVMS 0x02u
198 #define ZIP_OPSYS_UNIX 0x03u
199 #define ZIP_OPSYS_VM_CMS 0x04u
200 #define ZIP_OPSYS_ATARI_ST 0x05u
201 #define ZIP_OPSYS_OS_2 0x06u
202 #define ZIP_OPSYS_MACINTOSH 0x07u
203 #define ZIP_OPSYS_Z_SYSTEM 0x08u
204 #define ZIP_OPSYS_CPM 0x09u
205 #define ZIP_OPSYS_WINDOWS_NTFS 0x0au
206 #define ZIP_OPSYS_MVS 0x0bu
207 #define ZIP_OPSYS_VSE 0x0cu
208 #define ZIP_OPSYS_ACORN_RISC 0x0du
209 #define ZIP_OPSYS_VFAT 0x0eu
210 #define ZIP_OPSYS_ALTERNATE_MVS 0x0fu
211 #define ZIP_OPSYS_BEOS 0x10u
212 #define ZIP_OPSYS_TANDEM 0x11u
213 #define ZIP_OPSYS_OS_400 0x12u
214 #define ZIP_OPSYS_OS_X 0x13u
215 
216 #define ZIP_OPSYS_DEFAULT ZIP_OPSYS_UNIX
217 
218 
220  ZIP_SOURCE_OPEN, /* prepare for reading */
221  ZIP_SOURCE_READ, /* read data */
222  ZIP_SOURCE_CLOSE, /* reading is done */
223  ZIP_SOURCE_STAT, /* get meta information */
224  ZIP_SOURCE_ERROR, /* get error information */
225  ZIP_SOURCE_FREE, /* cleanup and free resources */
226  ZIP_SOURCE_SEEK, /* set position for reading */
227  ZIP_SOURCE_TELL, /* get read position */
228  ZIP_SOURCE_BEGIN_WRITE, /* prepare for writing */
229  ZIP_SOURCE_COMMIT_WRITE, /* writing is done */
230  ZIP_SOURCE_ROLLBACK_WRITE, /* discard written changes */
231  ZIP_SOURCE_WRITE, /* write data */
232  ZIP_SOURCE_SEEK_WRITE, /* set position for writing */
233  ZIP_SOURCE_TELL_WRITE, /* get write position */
234  ZIP_SOURCE_SUPPORTS, /* check whether source supports command */
235  ZIP_SOURCE_REMOVE, /* remove file */
236  ZIP_SOURCE_RESERVED_1, /* previously used internally */
237  ZIP_SOURCE_BEGIN_WRITE_CLONING, /* like ZIP_SOURCE_BEGIN_WRITE, but keep part of original file */
238  ZIP_SOURCE_ACCEPT_EMPTY, /* whether empty files are valid archives */
239  ZIP_SOURCE_GET_FILE_ATTRIBUTES /* get additional file attributes */
240 };
241 typedef enum zip_source_cmd zip_source_cmd_t;
242 
243 #define ZIP_SOURCE_MAKE_COMMAND_BITMASK(cmd) (((zip_int64_t)1) << (cmd))
244 
245 #define ZIP_SOURCE_CHECK_SUPPORTED(supported, cmd) (((supported) & ZIP_SOURCE_MAKE_COMMAND_BITMASK(cmd)) != 0)
246 
247 /* clang-format off */
248 
249 #define ZIP_SOURCE_SUPPORTS_READABLE (ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_OPEN) \
250  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_READ) \
251  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_CLOSE) \
252  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_STAT) \
253  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_ERROR) \
254  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_FREE))
255 
256 #define ZIP_SOURCE_SUPPORTS_SEEKABLE (ZIP_SOURCE_SUPPORTS_READABLE \
257  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK) \
258  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_TELL) \
259  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SUPPORTS))
260 
261 #define ZIP_SOURCE_SUPPORTS_WRITABLE (ZIP_SOURCE_SUPPORTS_SEEKABLE \
262  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_BEGIN_WRITE) \
263  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_COMMIT_WRITE) \
264  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_ROLLBACK_WRITE) \
265  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_WRITE) \
266  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK_WRITE) \
267  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_TELL_WRITE) \
268  | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_REMOVE))
269 
270 /* clang-format on */
271 
272 /* for use by sources */
275  int whence;
276 };
277 
279 #define ZIP_SOURCE_GET_ARGS(type, data, len, error) ((len) < sizeof(type) ? zip_error_set((error), ZIP_ER_INVAL, 0), (type *)NULL : (type *)(data))
280 
281 
282 /* error information */
283 /* use zip_error_*() to access */
284 struct zip_error {
285  int zip_err; /* libzip error code (ZIP_ER_*) */
286  int sys_err; /* copy of errno (E*) or zlib error code */
287  char *_Nullable str; /* string representation or NULL */
288 };
289 
290 #define ZIP_STAT_NAME 0x0001u
291 #define ZIP_STAT_INDEX 0x0002u
292 #define ZIP_STAT_SIZE 0x0004u
293 #define ZIP_STAT_COMP_SIZE 0x0008u
294 #define ZIP_STAT_MTIME 0x0010u
295 #define ZIP_STAT_CRC 0x0020u
296 #define ZIP_STAT_COMP_METHOD 0x0040u
297 #define ZIP_STAT_ENCRYPTION_METHOD 0x0080u
298 #define ZIP_STAT_FLAGS 0x0100u
299 
300 struct zip_stat {
301  zip_uint64_t valid; /* which fields have valid values */
302  const char *_Nullable name; /* name of the file */
303  zip_uint64_t index; /* index within archive */
304  zip_uint64_t size; /* size of file (uncompressed) */
305  zip_uint64_t comp_size; /* size of file (compressed) */
306  time_t mtime; /* modification time */
307  zip_uint32_t crc; /* crc of file data */
308  zip_uint16_t comp_method; /* compression method used */
309  zip_uint16_t encryption_method; /* encryption method used */
310  zip_uint32_t flags; /* reserved for future use */
311 };
312 
316 };
317 
319  zip_uint64_t valid; /* which fields have valid values */
320  zip_uint8_t version; /* version of this struct, currently 1 */
321  zip_uint8_t host_system; /* host system on which file was created */
322  zip_uint8_t ascii; /* flag whether file is ASCII text */
323  zip_uint8_t version_needed; /* minimum version needed to extract file */
324  zip_uint32_t external_file_attributes; /* external file attributes (host-system specific) */
325  zip_uint16_t general_purpose_bit_flags; /* general purpose big flags, only some bits are honored */
326  zip_uint16_t general_purpose_bit_mask; /* which bits in general_purpose_bit_flags are valid */
327 };
328 
329 #define ZIP_FILE_ATTRIBUTES_HOST_SYSTEM 0x0001u
330 #define ZIP_FILE_ATTRIBUTES_ASCII 0x0002u
331 #define ZIP_FILE_ATTRIBUTES_VERSION_NEEDED 0x0004u
332 #define ZIP_FILE_ATTRIBUTES_EXTERNAL_FILE_ATTRIBUTES 0x0008u
333 #define ZIP_FILE_ATTRIBUTES_GENERAL_PURPOSE_BIT_FLAGS 0x0010u
334 
335 struct zip;
336 struct zip_file;
337 struct zip_source;
338 
339 typedef struct zip zip_t;
340 typedef struct zip_error zip_error_t;
341 typedef struct zip_file zip_file_t;
343 typedef struct zip_source zip_source_t;
344 typedef struct zip_stat zip_stat_t;
346 
348 
350 typedef void (*zip_progress_callback)(zip_t *_Nonnull, double, void *_Nullable);
352 
353 #ifndef ZIP_DISABLE_DEPRECATED
354 typedef void (*zip_progress_callback_t)(double);
355 ZIP_EXTERN void zip_register_progress_callback(zip_t *_Nonnull, zip_progress_callback_t _Nullable); /* use zip_register_progress_callback_with_state */
356 
357 ZIP_EXTERN zip_int64_t zip_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull); /* use zip_file_add */
358 ZIP_EXTERN zip_int64_t zip_add_dir(zip_t *_Nonnull, const char *_Nonnull); /* use zip_dir_add */
359 ZIP_EXTERN const char *_Nullable zip_get_file_comment(zip_t *_Nonnull, zip_uint64_t, int *_Nullable, int); /* use zip_file_get_comment */
360 ZIP_EXTERN int zip_get_num_files(zip_t *_Nonnull); /* use zip_get_num_entries instead */
361 ZIP_EXTERN int zip_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull); /* use zip_file_rename */
362 ZIP_EXTERN int zip_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull); /* use zip_file_replace */
363 ZIP_EXTERN int zip_set_file_comment(zip_t *_Nonnull, zip_uint64_t, const char *_Nullable, int); /* use zip_file_set_comment */
364 ZIP_EXTERN int zip_error_get_sys_type(int); /* use zip_error_system_type */
365 ZIP_EXTERN void zip_error_get(zip_t *_Nonnull, int *_Nullable, int *_Nullable); /* use zip_get_error, zip_error_code_zip / zip_error_code_system */
366 ZIP_EXTERN int zip_error_to_str(char *_Nonnull, zip_uint64_t, int, int); /* use zip_error_init_with_code / zip_error_strerror */
367 ZIP_EXTERN void zip_file_error_get(zip_file_t *_Nonnull, int *_Nullable, int *_Nullable); /* use zip_file_get_error, zip_error_code_zip / zip_error_code_system */
368 #endif
369 
374 
386 
422 ZIP_EXTERN const char *_Nonnull zip_libzip_version(void);
424 ZIP_EXTERN zip_t *_Nullable zip_open(const char *_Nonnull, int, int *_Nullable);
461 #ifdef _WIN32
468 #endif
482 
483 #ifdef __cplusplus
484 }
485 #endif
486 
487 #endif /* _HAD_ZIP_H */
int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)
Definition: compress.c:68
static void encode(size_t size, lzma_action action)
Definition: full_flush.c:25
ZIP_EXTERN int zip_source_close(zip_source_t *_Nonnull)
ZIP_EXTERN void zip_error_set(zip_error_t *_Nullable, int, int)
Definition: zip_error.c:126
ZIP_EXTERN const zip_uint8_t *_Nullable zip_file_extra_field_get(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t *_Nullable, zip_uint16_t *_Nullable, zip_flags_t)
ZIP_EXTERN void zip_error_init_with_code(zip_error_t *_Nonnull, int)
Definition: zip_error.c:66
ZIP_EXTERN void zip_source_rollback_write(zip_source_t *_Nonnull)
ZIP_EXTERN int zip_source_commit_write(zip_source_t *_Nonnull)
ZIP_EXTERN int zip_compression_method_supported(zip_int32_t method, int compress)
ZIP_EXTERN zip_int64_t zip_name_locate(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t)
ZIP_EXTERN int zip_fclose(zip_file_t *_Nonnull)
Definition: zip_fclose.c:41
ZIP_EXTERN void zip_file_attributes_init(zip_file_attributes_t *_Nonnull)
ZIP_EXTERN int zip_error_get_sys_type(int)
ZIP_EXTERN int zip_file_is_seekable(zip_file_t *_Nonnull)
Definition: zip_fseek.c:55
ZIP_EXTERN zip_file_t *_Nullable zip_fopen_encrypted(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t, const char *_Nullable)
void(* zip_progress_callback)(zip_t *_Nonnull, double, void *_Nullable)
Definition: zip.h:350
ZIP_EXTERN int zip_source_is_deleted(zip_source_t *_Nonnull)
ZIP_EXTERN const char *_Nonnull zip_file_strerror(zip_file_t *_Nonnull)
ZIP_EXTERN zip_t *_Nullable zip_open_from_source(zip_source_t *_Nonnull, int, zip_error_t *_Nullable)
Definition: zip_open.c:79
ZIP_EXTERN zip_file_t *_Nullable zip_fopen(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t)
Definition: zip_fopen.c:39
ZIP_EXTERN int zip_source_seek_write(zip_source_t *_Nonnull, zip_int64_t, int)
ZIP_EXTERN zip_int64_t zip_source_read(zip_source_t *_Nonnull, void *_Nonnull, zip_uint64_t)
ZIP_EXTERN int zip_file_get_external_attributes(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint8_t *_Nullable, zip_uint32_t *_Nullable)
ZIP_EXTERN int zip_error_code_system(const zip_error_t *_Nonnull)
Definition: zip_error.c:40
ZIP_EXTERN zip_int64_t zip_source_seek_compute_offset(zip_uint64_t, zip_uint64_t, void *_Nonnull, zip_uint64_t, zip_error_t *_Nullable)
ZIP_EXTERN zip_int64_t zip_dir_add(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t)
Definition: zip_dir_add.c:44
ZIP_EXTERN zip_int16_t zip_file_extra_fields_count(zip_t *_Nonnull, zip_uint64_t, zip_flags_t)
ZIP_EXTERN const char *_Nullable zip_get_archive_comment(zip_t *_Nonnull, int *_Nullable, zip_flags_t)
ZIP_EXTERN zip_source_t *_Nullable zip_source_filep(zip_t *_Nonnull, FILE *_Nonnull, zip_uint64_t, zip_int64_t)
ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_fragment_create(const zip_buffer_fragment_t *_Nullable, zip_uint64_t, int, zip_error_t *_Nullable)
ZIP_EXTERN int zip_source_seek(zip_source_t *_Nonnull, zip_int64_t, int)
ZIP_EXTERN zip_t *_Nullable zip_fdopen(int, int, int *_Nullable)
Definition: zip_fdopen.c:42
ZIP_EXTERN int zip_unchange(zip_t *_Nonnull, zip_uint64_t)
Definition: zip_unchange.c:41
ZIP_EXTERN int zip_encryption_method_supported(zip_uint16_t method, int encode)
ZIP_EXTERN zip_int64_t zip_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull)
Definition: zip_add.c:47
ZIP_EXTERN int zip_file_extra_field_delete_by_id(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_flags_t)
ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_create(const void *_Nullable, zip_uint64_t, int, zip_error_t *_Nullable)
ZIP_EXTERN int zip_get_num_files(zip_t *_Nonnull)
ZIP_EXTERN int zip_set_default_password(zip_t *_Nonnull, const char *_Nullable)
ZIP_EXTERN zip_int64_t zip_source_tell(zip_source_t *_Nonnull)
ZIP_EXTERN int zip_file_set_mtime(zip_t *_Nonnull, zip_uint64_t, time_t, zip_flags_t)
ZIP_EXTERN int zip_source_get_file_attributes(zip_source_t *_Nonnull, zip_file_attributes_t *_Nonnull)
ZIP_EXTERN void zip_error_clear(zip_t *_Nonnull)
ZIP_EXTERN void zip_error_get(zip_t *_Nonnull, int *_Nullable, int *_Nullable)
Definition: zip_error_get.c:40
ZIP_EXTERN const char *_Nullable zip_file_get_comment(zip_t *_Nonnull, zip_uint64_t, zip_uint32_t *_Nullable, zip_flags_t)
ZIP_EXTERN void zip_stat_init(zip_stat_t *_Nonnull)
Definition: zip_stat_init.c:40
ZIP_EXTERN const char *_Nullable zip_get_name(zip_t *_Nonnull, zip_uint64_t, zip_flags_t)
Definition: zip_get_name.c:41
ZIP_EXTERN void zip_error_init(zip_error_t *_Nonnull)
Definition: zip_error.c:59
#define ZIP_EXTERN
Definition: zip.h:54
ZIP_EXTERN zip_error_t *_Nonnull zip_source_error(zip_source_t *_Nonnull)
ZIP_EXTERN int zip_set_file_compression(zip_t *_Nonnull, zip_uint64_t, zip_int32_t, zip_uint32_t)
ZIP_EXTERN int zip_file_extra_field_set(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t, const zip_uint8_t *_Nullable, zip_uint16_t, zip_flags_t)
ZIP_EXTERN int zip_file_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull, zip_flags_t)
ZIP_EXTERN zip_int8_t zip_fseek(zip_file_t *_Nonnull, zip_int64_t, int)
Definition: zip_fseek.c:38
ZIP_EXTERN int zip_register_progress_callback_with_state(zip_t *_Nonnull, double, zip_progress_callback _Nullable, void(*_Nullable)(void *_Nullable), void *_Nullable)
ZIP_EXTERN int zip_source_stat(zip_source_t *_Nonnull, zip_stat_t *_Nonnull)
ZIP_EXTERN int zip_file_set_external_attributes(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint8_t, zip_uint32_t)
enum zip_source_cmd zip_source_cmd_t
Definition: zip.h:241
ZIP_EXTERN int zip_get_archive_flag(zip_t *_Nonnull, zip_flags_t, zip_flags_t)
ZIP_EXTERN zip_error_t *_Nonnull zip_get_error(zip_t *_Nonnull)
Definition: zip_error_get.c:46
ZIP_EXTERN int zip_register_cancel_callback_with_state(zip_t *_Nonnull, zip_cancel_callback _Nullable, void(*_Nullable)(void *_Nullable), void *_Nullable)
ZIP_EXTERN int zip_set_archive_comment(zip_t *_Nonnull, const char *_Nullable, zip_uint16_t)
ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_fragment(zip_t *_Nonnull, const zip_buffer_fragment_t *_Nonnull, zip_uint64_t, int)
ZIP_EXTERN zip_source_t *_Nullable zip_source_file(zip_t *_Nonnull, const char *_Nonnull, zip_uint64_t, zip_int64_t)
ZIP_EXTERN void zip_discard(zip_t *_Nonnull)
Definition: zip_discard.c:45
ZIP_EXTERN int zip_set_file_comment(zip_t *_Nonnull, zip_uint64_t, const char *_Nullable, int)
ZIP_EXTERN zip_int64_t zip_fread(zip_file_t *_Nonnull, void *_Nonnull, zip_uint64_t)
Definition: zip_fread.c:39
ZIP_EXTERN zip_source_t *_Nullable zip_source_filep_create(FILE *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable)
ZIP_EXTERN int zip_set_archive_flag(zip_t *_Nonnull, zip_flags_t, int)
ZIP_EXTERN int zip_file_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull, zip_flags_t)
ZIP_EXTERN int zip_close(zip_t *_Nonnull)
Definition: zip_close.c:52
zip_source_cmd
Definition: zip.h:219
@ ZIP_SOURCE_CLOSE
Definition: zip.h:222
@ ZIP_SOURCE_READ
Definition: zip.h:221
@ ZIP_SOURCE_RESERVED_1
Definition: zip.h:236
@ ZIP_SOURCE_GET_FILE_ATTRIBUTES
Definition: zip.h:239
@ ZIP_SOURCE_FREE
Definition: zip.h:225
@ ZIP_SOURCE_ACCEPT_EMPTY
Definition: zip.h:238
@ ZIP_SOURCE_BEGIN_WRITE_CLONING
Definition: zip.h:237
@ ZIP_SOURCE_SEEK
Definition: zip.h:226
@ ZIP_SOURCE_SEEK_WRITE
Definition: zip.h:232
@ ZIP_SOURCE_SUPPORTS
Definition: zip.h:234
@ ZIP_SOURCE_STAT
Definition: zip.h:223
@ ZIP_SOURCE_TELL
Definition: zip.h:227
@ ZIP_SOURCE_OPEN
Definition: zip.h:220
@ ZIP_SOURCE_REMOVE
Definition: zip.h:235
@ ZIP_SOURCE_ROLLBACK_WRITE
Definition: zip.h:230
@ ZIP_SOURCE_TELL_WRITE
Definition: zip.h:233
@ ZIP_SOURCE_BEGIN_WRITE
Definition: zip.h:228
@ ZIP_SOURCE_WRITE
Definition: zip.h:231
@ ZIP_SOURCE_ERROR
Definition: zip.h:224
@ ZIP_SOURCE_COMMIT_WRITE
Definition: zip.h:229
ZIP_EXTERN int zip_file_set_encryption(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, const char *_Nullable)
void(* zip_progress_callback_t)(double)
Definition: zip.h:354
ZIP_EXTERN int zip_source_open(zip_source_t *_Nonnull)
ZIP_EXTERN zip_source_t *_Nullable zip_source_zip_create(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable)
ZIP_EXTERN int zip_error_to_str(char *_Nonnull, zip_uint64_t, int, int)
ZIP_EXTERN zip_int64_t zip_source_tell_write(zip_source_t *_Nonnull)
zip_int64_t(* zip_source_callback)(void *_Nullable, void *_Nullable, zip_uint64_t, zip_source_cmd_t)
Definition: zip.h:349
int(* zip_cancel_callback)(zip_t *_Nonnull, void *_Nullable)
Definition: zip.h:351
ZIP_EXTERN int zip_file_set_comment(zip_t *_Nonnull, zip_uint64_t, const char *_Nullable, zip_uint16_t, zip_flags_t)
ZIP_EXTERN const char *_Nonnull zip_libzip_version(void)
ZIP_EXTERN zip_int64_t zip_add_dir(zip_t *_Nonnull, const char *_Nonnull)
Definition: zip_add_dir.c:42
ZIP_EXTERN int zip_delete(zip_t *_Nonnull, zip_uint64_t)
Definition: zip_delete.c:39
ZIP_EXTERN void zip_register_progress_callback(zip_t *_Nonnull, zip_progress_callback_t _Nullable)
Definition: zip_progress.c:277
ZIP_EXTERN void zip_error_fini(zip_error_t *_Nonnull)
Definition: zip_error.c:52
ZIP_EXTERN zip_source_t *_Nullable zip_source_function_create(zip_source_callback _Nonnull, void *_Nullable, zip_error_t *_Nullable)
ZIP_EXTERN int zip_source_begin_write(zip_source_t *_Nonnull)
ZIP_EXTERN int zip_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull)
Definition: zip_rename.c:40
ZIP_EXTERN zip_int64_t zip_source_write(zip_source_t *_Nonnull, const void *_Nullable, zip_uint64_t)
ZIP_EXTERN int zip_unchange_all(zip_t *_Nonnull)
ZIP_EXTERN int zip_unchange_archive(zip_t *_Nonnull)
ZIP_EXTERN zip_int64_t zip_source_make_command_bitmap(zip_source_cmd_t,...)
ZIP_EXTERN int zip_stat(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t, zip_stat_t *_Nonnull)
Definition: zip_stat.c:39
ZIP_EXTERN zip_source_t *_Nullable zip_source_function(zip_t *_Nonnull, zip_source_callback _Nonnull, void *_Nullable)
ZIP_EXTERN zip_int64_t zip_ftell(zip_file_t *_Nonnull)
Definition: zip_ftell.c:38
ZIP_EXTERN int zip_error_code_zip(const zip_error_t *_Nonnull)
Definition: zip_error.c:46
zip_uint32_t zip_flags_t
Definition: zip.h:347
ZIP_EXTERN int zip_file_extra_field_delete(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_flags_t)
ZIP_EXTERN zip_source_t *_Nullable zip_source_zip(zip_t *_Nonnull, zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint64_t, zip_int64_t)
ZIP_EXTERN void zip_source_free(zip_source_t *_Nullable)
ZIP_EXTERN zip_error_t *_Nonnull zip_file_get_error(zip_file_t *_Nonnull)
Definition: zip_error_get.c:52
ZIP_EXTERN zip_t *_Nullable zip_open(const char *_Nonnull, int, int *_Nullable)
Definition: zip_open.c:54
ZIP_EXTERN int zip_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull)
Definition: zip_replace.c:40
ZIP_EXTERN int zip_stat_index(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_stat_t *_Nonnull)
ZIP_EXTERN zip_source_t *_Nullable zip_source_window_create(zip_source_t *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable)
ZIP_EXTERN const char *_Nonnull zip_error_strerror(zip_error_t *_Nonnull)
ZIP_EXTERN void zip_file_error_clear(zip_file_t *_Nonnull)
ZIP_EXTERN zip_int64_t zip_file_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull, zip_flags_t)
Definition: zip_file_add.c:45
ZIP_EXTERN int zip_error_system_type(const zip_error_t *_Nonnull)
Definition: zip_error.c:83
ZIP_EXTERN zip_int64_t zip_get_num_entries(zip_t *_Nonnull, zip_flags_t)
ZIP_EXTERN zip_int16_t zip_file_extra_fields_count_by_id(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_flags_t)
ZIP_EXTERN const zip_uint8_t *_Nullable zip_file_extra_field_get_by_id(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_uint16_t *_Nullable, zip_flags_t)
ZIP_EXTERN zip_file_t *_Nullable zip_fopen_index(zip_t *_Nonnull, zip_uint64_t, zip_flags_t)
ZIP_EXTERN void zip_source_keep(zip_source_t *_Nonnull)
ZIP_EXTERN zip_int64_t zip_error_to_data(const zip_error_t *_Nonnull, void *_Nonnull, zip_uint64_t)
Definition: zip_error.c:141
ZIP_EXTERN int zip_source_begin_write_cloning(zip_source_t *_Nonnull, zip_uint64_t)
ZIP_EXTERN const char *_Nullable zip_get_file_comment(zip_t *_Nonnull, zip_uint64_t, int *_Nullable, int)
ZIP_EXTERN zip_file_t *_Nullable zip_fopen_index_encrypted(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, const char *_Nullable)
ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer(zip_t *_Nonnull, const void *_Nullable, zip_uint64_t, int)
ZIP_EXTERN void zip_file_error_get(zip_file_t *_Nonnull, int *_Nullable, int *_Nullable)
ZIP_EXTERN int zip_file_set_dostime(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_flags_t)
ZIP_EXTERN const char *_Nonnull zip_strerror(zip_t *_Nonnull)
Definition: zip_strerror.c:39
ZIP_EXTERN zip_source_t *_Nullable zip_source_file_create(const char *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable)
string FILE
Definition: benchmark.py:21
static int
Definition: sfsocketcall.h:114
int time_t
Definition: sftypes.h:66
zip_uint64_t length
Definition: zip.h:315
zip_uint8_t *_Nonnull data
Definition: zip.h:314
Definition: zip.h:284
int zip_err
Definition: zip.h:285
int sys_err
Definition: zip.h:286
char *_Nullable str
Definition: zip.h:287
zip_uint8_t host_system
Definition: zip.h:321
zip_uint16_t general_purpose_bit_mask
Definition: zip.h:326
zip_uint8_t ascii
Definition: zip.h:322
zip_uint16_t general_purpose_bit_flags
Definition: zip.h:325
zip_uint8_t version_needed
Definition: zip.h:323
zip_uint32_t external_file_attributes
Definition: zip.h:324
zip_uint64_t valid
Definition: zip.h:319
zip_uint8_t version
Definition: zip.h:320
zip_int64_t offset
Definition: zip.h:274
Definition: zip.h:300
time_t mtime
Definition: zip.h:306
zip_uint16_t encryption_method
Definition: zip.h:309
zip_uint64_t index
Definition: zip.h:303
zip_uint32_t flags
Definition: zip.h:310
const char *_Nullable name
Definition: zip.h:302
zip_uint64_t valid
Definition: zip.h:301
zip_uint16_t comp_method
Definition: zip.h:308
zip_uint64_t comp_size
Definition: zip.h:305
zip_uint32_t crc
Definition: zip.h:307
zip_uint64_t size
Definition: zip.h:304
Definition: zipint.h:278
ZIP_EXTERN zip_source_t * zip_source_win32handle(zip_t *za, HANDLE h, zip_uint64_t start, zip_int64_t len)
ZIP_EXTERN zip_source_t * zip_source_win32handle_create(HANDLE h, zip_uint64_t start, zip_int64_t length, zip_error_t *error)
ZIP_EXTERN zip_source_t * zip_source_win32a(zip_t *za, const char *fname, zip_uint64_t start, zip_int64_t len)
ZIP_EXTERN zip_source_t * zip_source_win32a_create(const char *fname, zip_uint64_t start, zip_int64_t length, zip_error_t *error)
ZIP_EXTERN zip_source_t * zip_source_win32w_create(const wchar_t *fname, zip_uint64_t start, zip_int64_t length, zip_error_t *error)
ZIP_EXTERN zip_source_t * zip_source_win32w(zip_t *za, const wchar_t *fname, zip_uint64_t start, zip_int64_t len)
int16_t zip_int16_t
Definition: zipconf.h:34
int8_t zip_int8_t
Definition: zipconf.h:32
uint64_t zip_uint64_t
Definition: zipconf.h:39
#define _Nullable
Definition: zipconf.h:24
uint32_t zip_uint32_t
Definition: zipconf.h:37
uint8_t zip_uint8_t
Definition: zipconf.h:33
int32_t zip_int32_t
Definition: zipconf.h:36
uint16_t zip_uint16_t
Definition: zipconf.h:35
#define _Nonnull
Definition: zipconf.h:25
int64_t zip_int64_t
Definition: zipconf.h:38