59
61
#define ZIP_CREATE 1
61
63
#define ZIP_CHECKCONS 4
64
#define ZIP_TRUNCATE 8
64
67
/* flags for zip_name_locate, zip_fopen, zip_stat, ... */
66
#define ZIP_FL_NOCASE 1 /* ignore case on name lookup */
67
#define ZIP_FL_NODIR 2 /* ignore directory component */
68
#define ZIP_FL_COMPRESSED 4 /* read compressed data */
69
#define ZIP_FL_UNCHANGED 8 /* use original data, ignoring changes */
70
#define ZIP_FL_RECOMPRESS 16 /* force recompression of data */
71
#define ZIP_FL_ENCRYPTED 32 /* read encrypted data
72
(implies ZIP_FL_COMPRESSED) */
69
#define ZIP_FL_NOCASE 1u /* ignore case on name lookup */
70
#define ZIP_FL_NODIR 2u /* ignore directory component */
71
#define ZIP_FL_COMPRESSED 4u /* read compressed data */
72
#define ZIP_FL_UNCHANGED 8u /* use original data, ignoring changes */
73
#define ZIP_FL_RECOMPRESS 16u /* force recompression of data */
74
#define ZIP_FL_ENCRYPTED 32u /* read encrypted data (implies ZIP_FL_COMPRESSED) */
75
#define ZIP_FL_ENC_GUESS 0u /* guess string encoding (is default) */
76
#define ZIP_FL_ENC_RAW 64u /* get unmodified string */
77
#define ZIP_FL_ENC_STRICT 128u /* follow specification strictly */
78
#define ZIP_FL_LOCAL 256u /* in local header */
79
#define ZIP_FL_CENTRAL 512u /* in central directory */
80
/* 1024u reserved for internal use */
81
#define ZIP_FL_ENC_UTF_8 2048u /* string is UTF-8 encoded */
82
#define ZIP_FL_ENC_CP437 4096u /* string is CP437 encoded */
83
#define ZIP_FL_OVERWRITE 8192u /* zip_file_add: if file with name exists, overwrite (replace) it */
74
85
/* archive global flags flags */
76
#define ZIP_AFL_TORRENT 1 /* torrent zipped */
77
#define ZIP_AFL_RDONLY 2 /* read only -- cannot be cleared */
87
#define ZIP_AFL_TORRENT 1u /* torrent zipped */
88
#define ZIP_AFL_RDONLY 2u /* read only -- cannot be cleared */
91
/* create a new extra field */
93
#define ZIP_EXTRA_FIELD_ALL ZIP_UINT16_MAX
94
#define ZIP_EXTRA_FIELD_NEW ZIP_UINT16_MAX
80
96
/* flags for compression and encryption sources */
98
#define ZIP_CODEC_DECODE 0 /* decompress/decrypt (encode flag not set) */
82
99
#define ZIP_CODEC_ENCODE 1 /* compress/encrypt */
201
241
struct zip_source;
243
typedef zip_uint32_t zip_flags_t;
203
245
typedef zip_int64_t (*zip_source_callback)(void *, void *, zip_uint64_t,
204
246
enum zip_source_cmd);
208
ZIP_EXTERN zip_int64_t zip_add(struct zip *, const char *, struct zip_source *);
209
ZIP_EXTERN zip_int64_t zip_add_dir(struct zip *, const char *);
250
#ifndef ZIP_DISABLE_DEPRECATED
251
ZIP_EXTERN zip_int64_t zip_add(struct zip *, const char *, struct zip_source *); /* use zip_file_add */
252
ZIP_EXTERN zip_int64_t zip_add_dir(struct zip *, const char *); /* use zip_dir_add */
253
ZIP_EXTERN const char *zip_get_file_comment(struct zip *, zip_uint64_t, int *, int); /* use zip_file_get_comment */
254
ZIP_EXTERN int zip_get_num_files(struct zip *); /* use zip_get_num_entries instead */
255
ZIP_EXTERN int zip_rename(struct zip *, zip_uint64_t, const char *); /* use zip_file_rename */
256
ZIP_EXTERN int zip_replace(struct zip *, zip_uint64_t, struct zip_source *); /* use zip_file_replace */
257
ZIP_EXTERN int zip_set_file_comment(struct zip *, zip_uint64_t, const char *, int); /* use zip_file_set_comment */
260
ZIP_EXTERN int zip_archive_set_tempdir(struct zip *, const char *);
210
261
ZIP_EXTERN int zip_close(struct zip *);
211
262
ZIP_EXTERN int zip_delete(struct zip *, zip_uint64_t);
263
ZIP_EXTERN zip_int64_t zip_dir_add(struct zip *, const char *, zip_flags_t);
264
ZIP_EXTERN void zip_discard(struct zip *);
212
265
ZIP_EXTERN void zip_error_clear(struct zip *);
213
266
ZIP_EXTERN void zip_error_get(struct zip *, int *, int *);
214
267
ZIP_EXTERN int zip_error_get_sys_type(int);
215
268
ZIP_EXTERN int zip_error_to_str(char *, zip_uint64_t, int, int);
216
269
ZIP_EXTERN int zip_fclose(struct zip_file *);
217
270
ZIP_EXTERN struct zip *zip_fdopen(int, int, int *);
271
ZIP_EXTERN zip_int64_t zip_file_add(struct zip *, const char *, struct zip_source *, zip_flags_t);
218
272
ZIP_EXTERN void zip_file_error_clear(struct zip_file *);
219
273
ZIP_EXTERN void zip_file_error_get(struct zip_file *, int *, int *);
274
ZIP_EXTERN int zip_file_extra_field_delete(struct zip *, zip_uint64_t, zip_uint16_t, zip_flags_t);
275
ZIP_EXTERN int zip_file_extra_field_delete_by_id(struct zip *, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_flags_t);
276
ZIP_EXTERN int zip_file_extra_field_set(struct zip *, zip_uint64_t, zip_uint16_t, zip_uint16_t, const zip_uint8_t *, zip_uint16_t, zip_flags_t);
277
ZIP_EXTERN zip_int16_t zip_file_extra_fields_count(struct zip *, zip_uint64_t, zip_flags_t);
278
ZIP_EXTERN zip_int16_t zip_file_extra_fields_count_by_id(struct zip *, zip_uint64_t, zip_uint16_t, zip_flags_t);
279
ZIP_EXTERN const zip_uint8_t *zip_file_extra_field_get(struct zip *, zip_uint64_t, zip_uint16_t, zip_uint16_t *, zip_uint16_t *, zip_flags_t);
280
ZIP_EXTERN const zip_uint8_t *zip_file_extra_field_get_by_id(struct zip *, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_uint16_t *, zip_flags_t);
281
ZIP_EXTERN const char *zip_file_get_comment(struct zip *, zip_uint64_t, zip_uint32_t *, zip_flags_t);
282
ZIP_EXTERN int zip_file_get_external_attributes(struct zip *, zip_uint64_t, zip_flags_t, zip_uint8_t *, zip_uint32_t *);
283
ZIP_EXTERN int zip_file_rename(struct zip *, zip_uint64_t, const char *, zip_flags_t);
284
ZIP_EXTERN int zip_file_replace(struct zip *, zip_uint64_t, struct zip_source *, zip_flags_t);
285
ZIP_EXTERN int zip_file_set_comment(struct zip *, zip_uint64_t, const char *, zip_uint16_t, zip_flags_t);
286
ZIP_EXTERN int zip_file_set_external_attributes(struct zip *, zip_uint64_t, zip_flags_t, zip_uint8_t, zip_uint32_t);
220
287
ZIP_EXTERN const char *zip_file_strerror(struct zip_file *);
221
ZIP_EXTERN struct zip_file *zip_fopen(struct zip *, const char *, int);
222
ZIP_EXTERN struct zip_file *zip_fopen_encrypted(struct zip *, const char *,
224
ZIP_EXTERN struct zip_file *zip_fopen_index(struct zip *, zip_uint64_t, int);
225
ZIP_EXTERN struct zip_file *zip_fopen_index_encrypted(struct zip *,
288
ZIP_EXTERN struct zip_file *zip_fopen(struct zip *, const char *, zip_flags_t);
289
ZIP_EXTERN struct zip_file *zip_fopen_encrypted(struct zip *, const char *, zip_flags_t, const char *);
290
ZIP_EXTERN struct zip_file *zip_fopen_index(struct zip *, zip_uint64_t, zip_flags_t);
291
ZIP_EXTERN struct zip_file *zip_fopen_index_encrypted(struct zip *, zip_uint64_t, zip_flags_t, const char *);
228
292
ZIP_EXTERN zip_int64_t zip_fread(struct zip_file *, void *, zip_uint64_t);
229
ZIP_EXTERN const char *zip_get_archive_comment(struct zip *, int *, int);
230
ZIP_EXTERN int zip_get_archive_flag(struct zip *, int, int);
231
ZIP_EXTERN const char *zip_get_file_comment(struct zip *, zip_uint64_t,
233
ZIP_EXTERN const char *zip_get_file_extra(struct zip *, zip_uint64_t,
235
ZIP_EXTERN const char *zip_get_name(struct zip *, zip_uint64_t, int);
236
ZIP_EXTERN zip_uint64_t zip_get_num_entries(struct zip *, int);
237
ZIP_EXTERN int zip_get_num_files(struct zip *); /* deprecated, use zip_get_num_entries instead */
238
ZIP_EXTERN int zip_name_locate(struct zip *, const char *, int);
293
ZIP_EXTERN const char *zip_get_archive_comment(struct zip *, int *, zip_flags_t);
294
ZIP_EXTERN int zip_get_archive_flag(struct zip *, zip_flags_t, zip_flags_t);
295
ZIP_EXTERN const char *zip_get_name(struct zip *, zip_uint64_t, zip_flags_t);
296
ZIP_EXTERN zip_int64_t zip_get_num_entries(struct zip *, zip_flags_t);
297
ZIP_EXTERN zip_int64_t zip_name_locate(struct zip *, const char *, zip_flags_t);
239
298
ZIP_EXTERN struct zip *zip_open(const char *, int, int *);
240
ZIP_EXTERN int zip_rename(struct zip *, zip_uint64_t, const char *);
241
ZIP_EXTERN int zip_replace(struct zip *, zip_uint64_t, struct zip_source *);
242
ZIP_EXTERN int zip_set_archive_comment(struct zip *, const char *, int);
243
ZIP_EXTERN int zip_set_archive_flag(struct zip *, int, int);
299
ZIP_EXTERN int zip_set_archive_comment(struct zip *, const char *, zip_uint16_t);
300
ZIP_EXTERN int zip_set_archive_flag(struct zip *, zip_flags_t, int);
244
301
ZIP_EXTERN int zip_set_default_password(struct zip *, const char *);
245
ZIP_EXTERN int zip_set_file_comment(struct zip *, zip_uint64_t,
247
ZIP_EXTERN int zip_set_file_extra(struct zip *, zip_uint64_t,
249
ZIP_EXTERN struct zip_source *zip_source_buffer(struct zip *, const void *,
251
ZIP_EXTERN struct zip_source *zip_source_file(struct zip *, const char *,
252
zip_uint64_t, zip_int64_t);
253
ZIP_EXTERN struct zip_source *zip_source_filep(struct zip *, FILE *,
254
zip_uint64_t, zip_int64_t);
302
ZIP_EXTERN int zip_set_file_compression(struct zip *, zip_uint64_t, zip_int32_t, zip_uint32_t);
303
ZIP_EXTERN struct zip_source *zip_source_buffer(struct zip *, const void *, zip_uint64_t, int);
304
ZIP_EXTERN struct zip_source *zip_source_file(struct zip *, const char *, zip_uint64_t, zip_int64_t);
305
ZIP_EXTERN struct zip_source *zip_source_filep(struct zip *, FILE *, zip_uint64_t, zip_int64_t);
255
306
ZIP_EXTERN void zip_source_free(struct zip_source *);
256
ZIP_EXTERN struct zip_source *zip_source_function(struct zip *,
257
zip_source_callback, void *);
258
ZIP_EXTERN struct zip_source *zip_source_zip(struct zip *, struct zip *,
260
zip_uint64_t, zip_int64_t);
261
ZIP_EXTERN int zip_stat(struct zip *, const char *, int, struct zip_stat *);
262
ZIP_EXTERN int zip_stat_index(struct zip *, zip_uint64_t, int,
307
ZIP_EXTERN struct zip_source *zip_source_function(struct zip *, zip_source_callback, void *);
308
ZIP_EXTERN struct zip_source *zip_source_zip(struct zip *, struct zip *, zip_uint64_t, zip_flags_t, zip_uint64_t, zip_int64_t);
309
ZIP_EXTERN int zip_stat(struct zip *, const char *, zip_flags_t, struct zip_stat *);
310
ZIP_EXTERN int zip_stat_index(struct zip *, zip_uint64_t, zip_flags_t, struct zip_stat *);
264
311
ZIP_EXTERN void zip_stat_init(struct zip_stat *);
265
312
ZIP_EXTERN const char *zip_strerror(struct zip *);
266
313
ZIP_EXTERN int zip_unchange(struct zip *, zip_uint64_t);