File indexing completed on 2025-04-18 09:17:06
0001 #ifndef _HAD_ZIP_H
0002 #define _HAD_ZIP_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 #ifdef __cplusplus
0039 extern "C" {
0040 #if 0
0041 }
0042 #endif
0043 #endif
0044
0045 #include <zipconf.h>
0046
0047 #ifndef ZIP_EXTERN
0048 #ifndef ZIP_STATIC
0049 #ifdef _WIN32
0050 #define ZIP_EXTERN __declspec(dllimport)
0051 #elif defined(__GNUC__) && __GNUC__ >= 4
0052 #define ZIP_EXTERN __attribute__((visibility("default")))
0053 #else
0054 #define ZIP_EXTERN
0055 #endif
0056 #else
0057 #define ZIP_EXTERN
0058 #endif
0059 #endif
0060
0061 #ifndef ZIP_DEPRECATED
0062 #if defined(__GNUC__) || defined(__clang__)
0063 #define ZIP_DEPRECATED(x) __attribute__((deprecated(x)))
0064 #elif defined(_MSC_VER)
0065 #define ZIP_DEPRECATED(x) __declspec(deprecated(x))
0066 #else
0067 #define ZIP_DEPRECATED(x)
0068 #endif
0069 #endif
0070
0071 #include <stdio.h>
0072 #include <sys/types.h>
0073 #include <time.h>
0074
0075
0076
0077 #define ZIP_CREATE 1
0078 #define ZIP_EXCL 2
0079 #define ZIP_CHECKCONS 4
0080 #define ZIP_TRUNCATE 8
0081 #define ZIP_RDONLY 16
0082
0083
0084
0085
0086 #define ZIP_FL_NOCASE 1u
0087 #define ZIP_FL_NODIR 2u
0088 #define ZIP_FL_COMPRESSED 4u
0089 #define ZIP_FL_UNCHANGED 8u
0090
0091 #define ZIP_FL_ENCRYPTED 32u
0092 #define ZIP_FL_ENC_GUESS 0u
0093 #define ZIP_FL_ENC_RAW 64u
0094 #define ZIP_FL_ENC_STRICT 128u
0095 #define ZIP_FL_LOCAL 256u
0096 #define ZIP_FL_CENTRAL 512u
0097
0098 #define ZIP_FL_ENC_UTF_8 2048u
0099 #define ZIP_FL_ENC_CP437 4096u
0100 #define ZIP_FL_OVERWRITE 8192u
0101
0102
0103
0104 #define ZIP_AFL_RDONLY 2u
0105 #define ZIP_AFL_IS_TORRENTZIP 4u
0106 #define ZIP_AFL_WANT_TORRENTZIP 8u
0107 #define ZIP_AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE 16u
0108
0109
0110
0111
0112 #define ZIP_EXTRA_FIELD_ALL ZIP_UINT16_MAX
0113 #define ZIP_EXTRA_FIELD_NEW ZIP_UINT16_MAX
0114
0115
0116
0117 #define ZIP_LENGTH_TO_END 0
0118 #define ZIP_LENGTH_UNCHECKED (-2)
0119
0120
0121
0122 #define ZIP_ER_OK 0
0123 #define ZIP_ER_MULTIDISK 1
0124 #define ZIP_ER_RENAME 2
0125 #define ZIP_ER_CLOSE 3
0126 #define ZIP_ER_SEEK 4
0127 #define ZIP_ER_READ 5
0128 #define ZIP_ER_WRITE 6
0129 #define ZIP_ER_CRC 7
0130 #define ZIP_ER_ZIPCLOSED 8
0131 #define ZIP_ER_NOENT 9
0132 #define ZIP_ER_EXISTS 10
0133 #define ZIP_ER_OPEN 11
0134 #define ZIP_ER_TMPOPEN 12
0135 #define ZIP_ER_ZLIB 13
0136 #define ZIP_ER_MEMORY 14
0137 #define ZIP_ER_CHANGED 15
0138 #define ZIP_ER_COMPNOTSUPP 16
0139 #define ZIP_ER_EOF 17
0140 #define ZIP_ER_INVAL 18
0141 #define ZIP_ER_NOZIP 19
0142 #define ZIP_ER_INTERNAL 20
0143 #define ZIP_ER_INCONS 21
0144 #define ZIP_ER_REMOVE 22
0145 #define ZIP_ER_DELETED 23
0146 #define ZIP_ER_ENCRNOTSUPP 24
0147 #define ZIP_ER_RDONLY 25
0148 #define ZIP_ER_NOPASSWD 26
0149 #define ZIP_ER_WRONGPASSWD 27
0150 #define ZIP_ER_OPNOTSUPP 28
0151 #define ZIP_ER_INUSE 29
0152 #define ZIP_ER_TELL 30
0153 #define ZIP_ER_COMPRESSED_DATA 31
0154 #define ZIP_ER_CANCELLED 32
0155 #define ZIP_ER_DATA_LENGTH 33
0156 #define ZIP_ER_NOT_ALLOWED 34
0157
0158
0159
0160 #define ZIP_ET_NONE 0
0161 #define ZIP_ET_SYS 1
0162 #define ZIP_ET_ZLIB 2
0163 #define ZIP_ET_LIBZIP 3
0164
0165
0166
0167 #define ZIP_CM_DEFAULT -1
0168 #define ZIP_CM_STORE 0
0169 #define ZIP_CM_SHRINK 1
0170 #define ZIP_CM_REDUCE_1 2
0171 #define ZIP_CM_REDUCE_2 3
0172 #define ZIP_CM_REDUCE_3 4
0173 #define ZIP_CM_REDUCE_4 5
0174 #define ZIP_CM_IMPLODE 6
0175
0176 #define ZIP_CM_DEFLATE 8
0177 #define ZIP_CM_DEFLATE64 9
0178 #define ZIP_CM_PKWARE_IMPLODE 10
0179
0180 #define ZIP_CM_BZIP2 12
0181
0182 #define ZIP_CM_LZMA 14
0183
0184 #define ZIP_CM_TERSE 18
0185 #define ZIP_CM_LZ77 19
0186
0187 #define ZIP_CM_LZMA2 33
0188 #define ZIP_CM_ZSTD 93
0189 #define ZIP_CM_XZ 95
0190 #define ZIP_CM_JPEG 96
0191 #define ZIP_CM_WAVPACK 97
0192 #define ZIP_CM_PPMD 98
0193
0194
0195
0196 #define ZIP_EM_NONE 0
0197 #define ZIP_EM_TRAD_PKWARE 1
0198 #if 0
0199 #define ZIP_EM_DES 0x6601
0200 #define ZIP_EM_RC2_OLD 0x6602
0201 #define ZIP_EM_3DES_168 0x6603
0202 #define ZIP_EM_3DES_112 0x6609
0203 #define ZIP_EM_PKZIP_AES_128 0x660e
0204 #define ZIP_EM_PKZIP_AES_192 0x660f
0205 #define ZIP_EM_PKZIP_AES_256 0x6610
0206 #define ZIP_EM_RC2 0x6702
0207 #define ZIP_EM_RC4 0x6801
0208 #endif
0209 #define ZIP_EM_AES_128 0x0101
0210 #define ZIP_EM_AES_192 0x0102
0211 #define ZIP_EM_AES_256 0x0103
0212 #define ZIP_EM_UNKNOWN 0xffff
0213
0214 #define ZIP_OPSYS_DOS 0x00u
0215 #define ZIP_OPSYS_AMIGA 0x01u
0216 #define ZIP_OPSYS_OPENVMS 0x02u
0217 #define ZIP_OPSYS_UNIX 0x03u
0218 #define ZIP_OPSYS_VM_CMS 0x04u
0219 #define ZIP_OPSYS_ATARI_ST 0x05u
0220 #define ZIP_OPSYS_OS_2 0x06u
0221 #define ZIP_OPSYS_MACINTOSH 0x07u
0222 #define ZIP_OPSYS_Z_SYSTEM 0x08u
0223 #define ZIP_OPSYS_CPM 0x09u
0224 #define ZIP_OPSYS_WINDOWS_NTFS 0x0au
0225 #define ZIP_OPSYS_MVS 0x0bu
0226 #define ZIP_OPSYS_VSE 0x0cu
0227 #define ZIP_OPSYS_ACORN_RISC 0x0du
0228 #define ZIP_OPSYS_VFAT 0x0eu
0229 #define ZIP_OPSYS_ALTERNATE_MVS 0x0fu
0230 #define ZIP_OPSYS_BEOS 0x10u
0231 #define ZIP_OPSYS_TANDEM 0x11u
0232 #define ZIP_OPSYS_OS_400 0x12u
0233 #define ZIP_OPSYS_OS_X 0x13u
0234
0235 #define ZIP_OPSYS_DEFAULT ZIP_OPSYS_UNIX
0236
0237
0238 enum zip_source_cmd {
0239 ZIP_SOURCE_OPEN,
0240 ZIP_SOURCE_READ,
0241 ZIP_SOURCE_CLOSE,
0242 ZIP_SOURCE_STAT,
0243 ZIP_SOURCE_ERROR,
0244 ZIP_SOURCE_FREE,
0245 ZIP_SOURCE_SEEK,
0246 ZIP_SOURCE_TELL,
0247 ZIP_SOURCE_BEGIN_WRITE,
0248 ZIP_SOURCE_COMMIT_WRITE,
0249 ZIP_SOURCE_ROLLBACK_WRITE,
0250 ZIP_SOURCE_WRITE,
0251 ZIP_SOURCE_SEEK_WRITE,
0252 ZIP_SOURCE_TELL_WRITE,
0253 ZIP_SOURCE_SUPPORTS,
0254 ZIP_SOURCE_REMOVE,
0255 ZIP_SOURCE_RESERVED_1,
0256 ZIP_SOURCE_BEGIN_WRITE_CLONING,
0257 ZIP_SOURCE_ACCEPT_EMPTY,
0258 ZIP_SOURCE_GET_FILE_ATTRIBUTES,
0259 ZIP_SOURCE_SUPPORTS_REOPEN
0260 };
0261 typedef enum zip_source_cmd zip_source_cmd_t;
0262
0263 #define ZIP_SOURCE_MAKE_COMMAND_BITMASK(cmd) (((zip_int64_t)1) << (cmd))
0264
0265 #define ZIP_SOURCE_CHECK_SUPPORTED(supported, cmd) (((supported) & ZIP_SOURCE_MAKE_COMMAND_BITMASK(cmd)) != 0)
0266
0267
0268
0269 #define ZIP_SOURCE_SUPPORTS_READABLE (ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_OPEN) \
0270 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_READ) \
0271 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_CLOSE) \
0272 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_STAT) \
0273 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_ERROR) \
0274 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_FREE))
0275
0276 #define ZIP_SOURCE_SUPPORTS_SEEKABLE (ZIP_SOURCE_SUPPORTS_READABLE \
0277 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK) \
0278 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_TELL) \
0279 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SUPPORTS))
0280
0281 #define ZIP_SOURCE_SUPPORTS_WRITABLE (ZIP_SOURCE_SUPPORTS_SEEKABLE \
0282 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_BEGIN_WRITE) \
0283 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_COMMIT_WRITE) \
0284 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_ROLLBACK_WRITE) \
0285 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_WRITE) \
0286 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK_WRITE) \
0287 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_TELL_WRITE) \
0288 | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_REMOVE))
0289
0290
0291
0292
0293 struct zip_source_args_seek {
0294 zip_int64_t offset;
0295 int whence;
0296 };
0297
0298 typedef struct zip_source_args_seek zip_source_args_seek_t;
0299 #define ZIP_SOURCE_GET_ARGS(type, data, len, error) ((len) < sizeof(type) ? zip_error_set((error), ZIP_ER_INVAL, 0), (type *)NULL : (type *)(data))
0300
0301
0302
0303
0304 struct zip_error {
0305 int zip_err;
0306 int sys_err;
0307 char *_Nullable str;
0308 };
0309
0310 #define ZIP_STAT_NAME 0x0001u
0311 #define ZIP_STAT_INDEX 0x0002u
0312 #define ZIP_STAT_SIZE 0x0004u
0313 #define ZIP_STAT_COMP_SIZE 0x0008u
0314 #define ZIP_STAT_MTIME 0x0010u
0315 #define ZIP_STAT_CRC 0x0020u
0316 #define ZIP_STAT_COMP_METHOD 0x0040u
0317 #define ZIP_STAT_ENCRYPTION_METHOD 0x0080u
0318 #define ZIP_STAT_FLAGS 0x0100u
0319
0320 struct zip_stat {
0321 zip_uint64_t valid;
0322 const char *_Nullable name;
0323 zip_uint64_t index;
0324 zip_uint64_t size;
0325 zip_uint64_t comp_size;
0326 time_t mtime;
0327 zip_uint32_t crc;
0328 zip_uint16_t comp_method;
0329 zip_uint16_t encryption_method;
0330 zip_uint32_t flags;
0331 };
0332
0333 struct zip_buffer_fragment {
0334 zip_uint8_t *_Nonnull data;
0335 zip_uint64_t length;
0336 };
0337
0338 struct zip_file_attributes {
0339 zip_uint64_t valid;
0340 zip_uint8_t version;
0341 zip_uint8_t host_system;
0342 zip_uint8_t ascii;
0343 zip_uint8_t version_needed;
0344 zip_uint32_t external_file_attributes;
0345 zip_uint16_t general_purpose_bit_flags;
0346 zip_uint16_t general_purpose_bit_mask;
0347 };
0348
0349 #define ZIP_FILE_ATTRIBUTES_HOST_SYSTEM 0x0001u
0350 #define ZIP_FILE_ATTRIBUTES_ASCII 0x0002u
0351 #define ZIP_FILE_ATTRIBUTES_VERSION_NEEDED 0x0004u
0352 #define ZIP_FILE_ATTRIBUTES_EXTERNAL_FILE_ATTRIBUTES 0x0008u
0353 #define ZIP_FILE_ATTRIBUTES_GENERAL_PURPOSE_BIT_FLAGS 0x0010u
0354
0355 struct zip;
0356 struct zip_file;
0357 struct zip_source;
0358
0359 typedef struct zip zip_t;
0360 typedef struct zip_error zip_error_t;
0361 typedef struct zip_file zip_file_t;
0362 typedef struct zip_file_attributes zip_file_attributes_t;
0363 typedef struct zip_source zip_source_t;
0364 typedef struct zip_stat zip_stat_t;
0365 typedef struct zip_buffer_fragment zip_buffer_fragment_t;
0366
0367 typedef zip_uint32_t zip_flags_t;
0368
0369 typedef zip_int64_t (*zip_source_callback)(void *_Nullable, void *_Nullable, zip_uint64_t, zip_source_cmd_t);
0370 typedef zip_int64_t (*zip_source_layered_callback)(zip_source_t *_Nonnull, void *_Nullable, void *_Nullable, zip_uint64_t, enum zip_source_cmd);
0371 typedef void (*zip_progress_callback)(zip_t *_Nonnull, double, void *_Nullable);
0372 typedef int (*zip_cancel_callback)(zip_t *_Nonnull, void *_Nullable);
0373
0374 #ifndef ZIP_DISABLE_DEPRECATED
0375 #define ZIP_FL_RECOMPRESS 16u
0376
0377 typedef void (*zip_progress_callback_t)(double);
0378 ZIP_DEPRECATED("use 'zip_register_progress_callback_with_state' instead") ZIP_EXTERN void zip_register_progress_callback(zip_t *_Nonnull, zip_progress_callback_t _Nullable);
0379
0380 ZIP_DEPRECATED("use 'zip_file_add' instead") ZIP_EXTERN zip_int64_t zip_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull);
0381 ZIP_DEPRECATED("use 'zip_dir_add' instead") ZIP_EXTERN zip_int64_t zip_add_dir(zip_t *_Nonnull, const char *_Nonnull);
0382 ZIP_DEPRECATED("use 'zip_file_get_comment' instead") ZIP_EXTERN const char *_Nullable zip_get_file_comment(zip_t *_Nonnull, zip_uint64_t, int *_Nullable, int);
0383 ZIP_DEPRECATED("use 'zip_get_num_entries' instead") ZIP_EXTERN int zip_get_num_files(zip_t *_Nonnull);
0384 ZIP_DEPRECATED("use 'zip_file_rename' instead") ZIP_EXTERN int zip_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull);
0385 ZIP_DEPRECATED("use 'zip_file_replace' instead") ZIP_EXTERN int zip_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull);
0386 ZIP_DEPRECATED("use 'zip_file_set_comment' instead") ZIP_EXTERN int zip_set_file_comment(zip_t *_Nonnull, zip_uint64_t, const char *_Nullable, int);
0387 ZIP_DEPRECATED("use 'zip_error_init_with_code' and 'zip_error_system_type' instead") ZIP_EXTERN int zip_error_get_sys_type(int);
0388 ZIP_DEPRECATED("use 'zip_get_error' instead") ZIP_EXTERN void zip_error_get(zip_t *_Nonnull, int *_Nullable, int *_Nullable);
0389 ZIP_DEPRECATED("use 'zip_error_strerror' instead") ZIP_EXTERN int zip_error_to_str(char *_Nonnull, zip_uint64_t, int, int);
0390 ZIP_DEPRECATED("use 'zip_file_get_error' instead") ZIP_EXTERN void zip_file_error_get(zip_file_t *_Nonnull, int *_Nullable, int *_Nullable);
0391 ZIP_DEPRECATED("use 'zip_source_zip_file' instead") 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);
0392 ZIP_DEPRECATED("use 'zip_source_zip_file_create' instead") 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);
0393 #endif
0394
0395 ZIP_EXTERN int zip_close(zip_t *_Nonnull);
0396 ZIP_EXTERN int zip_delete(zip_t *_Nonnull, zip_uint64_t);
0397 ZIP_EXTERN zip_int64_t zip_dir_add(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);
0398 ZIP_EXTERN void zip_discard(zip_t *_Nonnull);
0399
0400 ZIP_EXTERN zip_error_t *_Nonnull zip_get_error(zip_t *_Nonnull);
0401 ZIP_EXTERN void zip_error_clear(zip_t *_Nonnull);
0402 ZIP_EXTERN int zip_error_code_zip(const zip_error_t *_Nonnull);
0403 ZIP_EXTERN int zip_error_code_system(const zip_error_t *_Nonnull);
0404 ZIP_EXTERN void zip_error_fini(zip_error_t *_Nonnull);
0405 ZIP_EXTERN void zip_error_init(zip_error_t *_Nonnull);
0406 ZIP_EXTERN void zip_error_init_with_code(zip_error_t *_Nonnull, int);
0407 ZIP_EXTERN void zip_error_set(zip_error_t *_Nullable, int, int);
0408 ZIP_EXTERN void zip_error_set_from_source(zip_error_t *_Nonnull, zip_source_t *_Nullable);
0409 ZIP_EXTERN const char *_Nonnull zip_error_strerror(zip_error_t *_Nonnull);
0410 ZIP_EXTERN int zip_error_system_type(const zip_error_t *_Nonnull);
0411 ZIP_EXTERN zip_int64_t zip_error_to_data(const zip_error_t *_Nonnull, void *_Nonnull, zip_uint64_t);
0412
0413 ZIP_EXTERN int zip_fclose(zip_file_t *_Nonnull);
0414 ZIP_EXTERN zip_t *_Nullable zip_fdopen(int, int, int *_Nullable);
0415 ZIP_EXTERN zip_int64_t zip_file_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull, zip_flags_t);
0416 ZIP_EXTERN void zip_file_attributes_init(zip_file_attributes_t *_Nonnull);
0417 ZIP_EXTERN void zip_file_error_clear(zip_file_t *_Nonnull);
0418 ZIP_EXTERN int zip_file_extra_field_delete(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_flags_t);
0419 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);
0420 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);
0421 ZIP_EXTERN zip_int16_t zip_file_extra_fields_count(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);
0422 ZIP_EXTERN zip_int16_t zip_file_extra_fields_count_by_id(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_flags_t);
0423 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);
0424 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);
0425 ZIP_EXTERN const char *_Nullable zip_file_get_comment(zip_t *_Nonnull, zip_uint64_t, zip_uint32_t *_Nullable, zip_flags_t);
0426 ZIP_EXTERN zip_error_t *_Nonnull zip_file_get_error(zip_file_t *_Nonnull);
0427 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);
0428 ZIP_EXTERN int zip_file_is_seekable(zip_file_t *_Nonnull);
0429 ZIP_EXTERN int zip_file_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull, zip_flags_t);
0430 ZIP_EXTERN int zip_file_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull, zip_flags_t);
0431 ZIP_EXTERN int zip_file_set_comment(zip_t *_Nonnull, zip_uint64_t, const char *_Nullable, zip_uint16_t, zip_flags_t);
0432 ZIP_EXTERN int zip_file_set_dostime(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_flags_t);
0433 ZIP_EXTERN int zip_file_set_encryption(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, const char *_Nullable);
0434 ZIP_EXTERN int zip_file_set_external_attributes(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint8_t, zip_uint32_t);
0435 ZIP_EXTERN int zip_file_set_mtime(zip_t *_Nonnull, zip_uint64_t, time_t, zip_flags_t);
0436 ZIP_EXTERN const char *_Nonnull zip_file_strerror(zip_file_t *_Nonnull);
0437 ZIP_EXTERN zip_file_t *_Nullable zip_fopen(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);
0438 ZIP_EXTERN zip_file_t *_Nullable zip_fopen_encrypted(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t, const char *_Nullable);
0439 ZIP_EXTERN zip_file_t *_Nullable zip_fopen_index(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);
0440 ZIP_EXTERN zip_file_t *_Nullable zip_fopen_index_encrypted(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, const char *_Nullable);
0441 ZIP_EXTERN zip_int64_t zip_fread(zip_file_t *_Nonnull, void *_Nonnull, zip_uint64_t);
0442 ZIP_EXTERN zip_int8_t zip_fseek(zip_file_t *_Nonnull, zip_int64_t, int);
0443 ZIP_EXTERN zip_int64_t zip_ftell(zip_file_t *_Nonnull);
0444 ZIP_EXTERN const char *_Nullable zip_get_archive_comment(zip_t *_Nonnull, int *_Nullable, zip_flags_t);
0445 ZIP_EXTERN int zip_get_archive_flag(zip_t *_Nonnull, zip_flags_t, zip_flags_t);
0446 ZIP_EXTERN const char *_Nullable zip_get_name(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);
0447 ZIP_EXTERN zip_int64_t zip_get_num_entries(zip_t *_Nonnull, zip_flags_t);
0448 ZIP_EXTERN const char *_Nonnull zip_libzip_version(void);
0449 ZIP_EXTERN zip_int64_t zip_name_locate(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);
0450 ZIP_EXTERN zip_t *_Nullable zip_open(const char *_Nonnull, int, int *_Nullable);
0451 ZIP_EXTERN zip_t *_Nullable zip_open_from_source(zip_source_t *_Nonnull, int, zip_error_t *_Nullable);
0452 ZIP_EXTERN int zip_register_progress_callback_with_state(zip_t *_Nonnull, double, zip_progress_callback _Nullable, void (*_Nullable)(void *_Nullable), void *_Nullable);
0453 ZIP_EXTERN int zip_register_cancel_callback_with_state(zip_t *_Nonnull, zip_cancel_callback _Nullable, void (*_Nullable)(void *_Nullable), void *_Nullable);
0454 ZIP_EXTERN int zip_set_archive_comment(zip_t *_Nonnull, const char *_Nullable, zip_uint16_t);
0455 ZIP_EXTERN int zip_set_archive_flag(zip_t *_Nonnull, zip_flags_t, int);
0456 ZIP_EXTERN int zip_set_default_password(zip_t *_Nonnull, const char *_Nullable);
0457 ZIP_EXTERN int zip_set_file_compression(zip_t *_Nonnull, zip_uint64_t, zip_int32_t, zip_uint32_t);
0458 ZIP_EXTERN int zip_source_begin_write(zip_source_t *_Nonnull);
0459 ZIP_EXTERN int zip_source_begin_write_cloning(zip_source_t *_Nonnull, zip_uint64_t);
0460 ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer(zip_t *_Nonnull, const void *_Nullable, zip_uint64_t, int);
0461 ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_create(const void *_Nullable, zip_uint64_t, int, zip_error_t *_Nullable);
0462 ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_fragment(zip_t *_Nonnull, const zip_buffer_fragment_t *_Nonnull, zip_uint64_t, int);
0463 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);
0464 ZIP_EXTERN int zip_source_close(zip_source_t *_Nonnull);
0465 ZIP_EXTERN int zip_source_commit_write(zip_source_t *_Nonnull);
0466 ZIP_EXTERN zip_error_t *_Nonnull zip_source_error(zip_source_t *_Nonnull);
0467 ZIP_EXTERN zip_source_t *_Nullable zip_source_file(zip_t *_Nonnull, const char *_Nonnull, zip_uint64_t, zip_int64_t);
0468 ZIP_EXTERN zip_source_t *_Nullable zip_source_file_create(const char *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0469 ZIP_EXTERN zip_source_t *_Nullable zip_source_filep(zip_t *_Nonnull, FILE *_Nonnull, zip_uint64_t, zip_int64_t);
0470 ZIP_EXTERN zip_source_t *_Nullable zip_source_filep_create(FILE *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0471 ZIP_EXTERN void zip_source_free(zip_source_t *_Nullable);
0472 ZIP_EXTERN zip_source_t *_Nullable zip_source_function(zip_t *_Nonnull, zip_source_callback _Nonnull, void *_Nullable);
0473 ZIP_EXTERN zip_source_t *_Nullable zip_source_function_create(zip_source_callback _Nonnull, void *_Nullable, zip_error_t *_Nullable);
0474 ZIP_EXTERN int zip_source_get_file_attributes(zip_source_t *_Nonnull, zip_file_attributes_t *_Nonnull);
0475 ZIP_EXTERN int zip_source_is_deleted(zip_source_t *_Nonnull);
0476 ZIP_EXTERN int zip_source_is_seekable(zip_source_t *_Nonnull);
0477 ZIP_EXTERN void zip_source_keep(zip_source_t *_Nonnull);
0478 ZIP_EXTERN zip_source_t *_Nullable zip_source_layered(zip_t *_Nullable, zip_source_t *_Nonnull, zip_source_layered_callback _Nonnull, void *_Nullable);
0479 ZIP_EXTERN zip_source_t *_Nullable zip_source_layered_create(zip_source_t *_Nonnull, zip_source_layered_callback _Nonnull, void *_Nullable, zip_error_t *_Nullable);
0480 ZIP_EXTERN zip_int64_t zip_source_make_command_bitmap(zip_source_cmd_t, ...);
0481 ZIP_EXTERN int zip_source_open(zip_source_t *_Nonnull);
0482 ZIP_EXTERN zip_int64_t zip_source_pass_to_lower_layer(zip_source_t *_Nonnull, void *_Nullable, zip_uint64_t, zip_source_cmd_t);
0483 ZIP_EXTERN zip_int64_t zip_source_read(zip_source_t *_Nonnull, void *_Nonnull, zip_uint64_t);
0484 ZIP_EXTERN void zip_source_rollback_write(zip_source_t *_Nonnull);
0485 ZIP_EXTERN int zip_source_seek(zip_source_t *_Nonnull, zip_int64_t, int);
0486 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);
0487 ZIP_EXTERN int zip_source_seek_write(zip_source_t *_Nonnull, zip_int64_t, int);
0488 ZIP_EXTERN int zip_source_stat(zip_source_t *_Nonnull, zip_stat_t *_Nonnull);
0489 ZIP_EXTERN zip_int64_t zip_source_tell(zip_source_t *_Nonnull);
0490 ZIP_EXTERN zip_int64_t zip_source_tell_write(zip_source_t *_Nonnull);
0491 #ifdef _WIN32
0492 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32a(zip_t *_Nonnull, const char *_Nonnull, zip_uint64_t, zip_int64_t);
0493 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32a_create(const char *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0494 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32handle(zip_t *_Nonnull, void *_Nonnull, zip_uint64_t, zip_int64_t);
0495 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32handle_create(void *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0496 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32w(zip_t *_Nonnull, const wchar_t *_Nonnull, zip_uint64_t, zip_int64_t);
0497 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32w_create(const wchar_t *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0498 #endif
0499 ZIP_EXTERN zip_source_t *_Nullable zip_source_window_create(zip_source_t *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0500 ZIP_EXTERN zip_int64_t zip_source_write(zip_source_t *_Nonnull, const void *_Nullable, zip_uint64_t);
0501 ZIP_EXTERN zip_source_t *_Nullable zip_source_zip_file(zip_t *_Nonnull, zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint64_t, zip_int64_t, const char *_Nullable);
0502 ZIP_EXTERN zip_source_t *_Nullable zip_source_zip_file_create(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint64_t, zip_int64_t, const char *_Nullable, zip_error_t *_Nullable);
0503 ZIP_EXTERN int zip_stat(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t, zip_stat_t *_Nonnull);
0504 ZIP_EXTERN int zip_stat_index(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_stat_t *_Nonnull);
0505 ZIP_EXTERN void zip_stat_init(zip_stat_t *_Nonnull);
0506 ZIP_EXTERN const char *_Nonnull zip_strerror(zip_t *_Nonnull);
0507 ZIP_EXTERN int zip_unchange(zip_t *_Nonnull, zip_uint64_t);
0508 ZIP_EXTERN int zip_unchange_all(zip_t *_Nonnull);
0509 ZIP_EXTERN int zip_unchange_archive(zip_t *_Nonnull);
0510 ZIP_EXTERN int zip_compression_method_supported(zip_int32_t method, int compress);
0511 ZIP_EXTERN int zip_encryption_method_supported(zip_uint16_t method, int encode);
0512
0513 #ifdef __cplusplus
0514 }
0515 #endif
0516
0517 #endif