Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:36:22

0001 #ifndef _HAD_ZIP_H
0002 #define _HAD_ZIP_H
0003 
0004 /*
0005   zip.h -- exported declarations.
0006   Copyright (C) 1999-2024 Dieter Baron and Thomas Klausner
0007 
0008   This file is part of libzip, a library to manipulate ZIP archives.
0009   The authors can be contacted at <info@libzip.org>
0010 
0011   Redistribution and use in source and binary forms, with or without
0012   modification, are permitted provided that the following conditions
0013   are met:
0014   1. Redistributions of source code must retain the above copyright
0015      notice, this list of conditions and the following disclaimer.
0016   2. Redistributions in binary form must reproduce the above copyright
0017      notice, this list of conditions and the following disclaimer in
0018      the documentation and/or other materials provided with the
0019      distribution.
0020   3. The names of the authors may not be used to endorse or promote
0021      products derived from this software without specific prior
0022      written permission.
0023 
0024   THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
0025   OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
0026   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0027   ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
0028   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
0029   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
0030   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0031   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
0032   IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
0033   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
0034   IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0035 */
0036 
0037 
0038 #ifdef __cplusplus
0039 extern "C" {
0040 #if 0
0041 } /* fix autoindent */
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 /* flags for zip_open */
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 /* flags for zip_name_locate, zip_fopen, zip_stat, ... */
0085 
0086 #define ZIP_FL_NOCASE 1u       /* ignore case on name lookup */
0087 #define ZIP_FL_NODIR 2u        /* ignore directory component */
0088 #define ZIP_FL_COMPRESSED 4u   /* read compressed data */
0089 #define ZIP_FL_UNCHANGED 8u    /* use original data, ignoring changes */
0090 /* 16u was ZIP_FL_RECOMPRESS, which is deprecated */
0091 #define ZIP_FL_ENCRYPTED 32u   /* read encrypted data (implies ZIP_FL_COMPRESSED) */
0092 #define ZIP_FL_ENC_GUESS 0u    /* guess string encoding (is default) */
0093 #define ZIP_FL_ENC_RAW 64u     /* get unmodified string */
0094 #define ZIP_FL_ENC_STRICT 128u /* follow specification strictly */
0095 #define ZIP_FL_LOCAL 256u      /* in local header */
0096 #define ZIP_FL_CENTRAL 512u    /* in central directory */
0097 /*                           1024u    reserved for internal use */
0098 #define ZIP_FL_ENC_UTF_8 2048u /* string is UTF-8 encoded */
0099 #define ZIP_FL_ENC_CP437 4096u /* string is CP437 encoded */
0100 #define ZIP_FL_OVERWRITE 8192u /* zip_file_add: if file with name exists, overwrite (replace) it */
0101 
0102 /* archive global flags flags */
0103 
0104 #define ZIP_AFL_RDONLY  2u /* read only -- cannot be cleared */
0105 #define ZIP_AFL_IS_TORRENTZIP   4u /* current archive is torrentzipped */
0106 #define ZIP_AFL_WANT_TORRENTZIP 8u /* write archive in torrentzip format */
0107 #define ZIP_AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE 16u /* don't remove file if archive is empty */
0108 
0109 
0110 /* create a new extra field */
0111 
0112 #define ZIP_EXTRA_FIELD_ALL ZIP_UINT16_MAX
0113 #define ZIP_EXTRA_FIELD_NEW ZIP_UINT16_MAX
0114 
0115 /* length parameter to various functions */
0116 
0117 #define ZIP_LENGTH_TO_END 0
0118 #define ZIP_LENGTH_UNCHECKED (-2) /* only supported by zip_source_file and its variants */
0119 
0120 /* libzip error codes */
0121 
0122 #define ZIP_ER_OK 0               /* N No error */
0123 #define ZIP_ER_MULTIDISK 1        /* N Multi-disk zip archives not supported */
0124 #define ZIP_ER_RENAME 2           /* S Renaming temporary file failed */
0125 #define ZIP_ER_CLOSE 3            /* S Closing zip archive failed */
0126 #define ZIP_ER_SEEK 4             /* S Seek error */
0127 #define ZIP_ER_READ 5             /* S Read error */
0128 #define ZIP_ER_WRITE 6            /* S Write error */
0129 #define ZIP_ER_CRC 7              /* N CRC error */
0130 #define ZIP_ER_ZIPCLOSED 8        /* N Containing zip archive was closed */
0131 #define ZIP_ER_NOENT 9            /* N No such file */
0132 #define ZIP_ER_EXISTS 10          /* N File already exists */
0133 #define ZIP_ER_OPEN 11            /* S Can't open file */
0134 #define ZIP_ER_TMPOPEN 12         /* S Failure to create temporary file */
0135 #define ZIP_ER_ZLIB 13            /* Z Zlib error */
0136 #define ZIP_ER_MEMORY 14          /* N Malloc failure */
0137 #define ZIP_ER_CHANGED 15         /* N Entry has been changed */
0138 #define ZIP_ER_COMPNOTSUPP 16     /* N Compression method not supported */
0139 #define ZIP_ER_EOF 17             /* N Premature end of file */
0140 #define ZIP_ER_INVAL 18           /* N Invalid argument */
0141 #define ZIP_ER_NOZIP 19           /* N Not a zip archive */
0142 #define ZIP_ER_INTERNAL 20        /* N Internal error */
0143 #define ZIP_ER_INCONS 21          /* L Zip archive inconsistent */
0144 #define ZIP_ER_REMOVE 22          /* S Can't remove file */
0145 #define ZIP_ER_DELETED 23         /* N Entry has been deleted */
0146 #define ZIP_ER_ENCRNOTSUPP 24     /* N Encryption method not supported */
0147 #define ZIP_ER_RDONLY 25          /* N Read-only archive */
0148 #define ZIP_ER_NOPASSWD 26        /* N No password provided */
0149 #define ZIP_ER_WRONGPASSWD 27     /* N Wrong password provided */
0150 #define ZIP_ER_OPNOTSUPP 28       /* N Operation not supported */
0151 #define ZIP_ER_INUSE 29           /* N Resource still in use */
0152 #define ZIP_ER_TELL 30            /* S Tell error */
0153 #define ZIP_ER_COMPRESSED_DATA 31 /* N Compressed data invalid */
0154 #define ZIP_ER_CANCELLED 32       /* N Operation cancelled */
0155 #define ZIP_ER_DATA_LENGTH 33     /* N Unexpected length of data */
0156 #define ZIP_ER_NOT_ALLOWED 34     /* N Not allowed in torrentzip */
0157 #define ZIP_ER_TRUNCATED_ZIP 35   /* N Possibly truncated or corrupted zip archive */
0158 
0159 /* type of system error value */
0160 
0161 #define ZIP_ET_NONE 0   /* sys_err unused */
0162 #define ZIP_ET_SYS 1    /* sys_err is errno */
0163 #define ZIP_ET_ZLIB 2   /* sys_err is zlib error code */
0164 #define ZIP_ET_LIBZIP 3 /* sys_err is libzip error code */
0165 
0166 /* compression methods */
0167 
0168 #define ZIP_CM_DEFAULT -1 /* better of deflate or store */
0169 #define ZIP_CM_STORE 0    /* stored (uncompressed) */
0170 #define ZIP_CM_SHRINK 1   /* shrunk */
0171 #define ZIP_CM_REDUCE_1 2 /* reduced with factor 1 */
0172 #define ZIP_CM_REDUCE_2 3 /* reduced with factor 2 */
0173 #define ZIP_CM_REDUCE_3 4 /* reduced with factor 3 */
0174 #define ZIP_CM_REDUCE_4 5 /* reduced with factor 4 */
0175 #define ZIP_CM_IMPLODE 6  /* imploded */
0176 /* 7 - Reserved for Tokenizing compression algorithm */
0177 #define ZIP_CM_DEFLATE 8         /* deflated */
0178 #define ZIP_CM_DEFLATE64 9       /* deflate64 */
0179 #define ZIP_CM_PKWARE_IMPLODE 10 /* PKWARE imploding */
0180 /* 11 - Reserved by PKWARE */
0181 #define ZIP_CM_BZIP2 12 /* compressed using BZIP2 algorithm */
0182 /* 13 - Reserved by PKWARE */
0183 #define ZIP_CM_LZMA 14 /* LZMA (EFS) */
0184 /* 15-17 - Reserved by PKWARE */
0185 #define ZIP_CM_TERSE 18 /* compressed using IBM TERSE (new) */
0186 #define ZIP_CM_LZ77 19  /* IBM LZ77 z Architecture (PFS) */
0187 /* 20 - old value for Zstandard */
0188 #define ZIP_CM_LZMA2 33
0189 #define ZIP_CM_ZSTD 93    /* Zstandard compressed data */
0190 #define ZIP_CM_XZ 95      /* XZ compressed data */
0191 #define ZIP_CM_JPEG 96    /* Compressed Jpeg data */
0192 #define ZIP_CM_WAVPACK 97 /* WavPack compressed data */
0193 #define ZIP_CM_PPMD 98    /* PPMd version I, Rev 1 */
0194 
0195 /* encryption methods */
0196 
0197 #define ZIP_EM_NONE 0         /* not encrypted */
0198 #define ZIP_EM_TRAD_PKWARE 1  /* traditional PKWARE encryption */
0199 #if 0                         /* Strong Encryption Header not parsed yet */
0200 #define ZIP_EM_DES 0x6601     /* strong encryption: DES */
0201 #define ZIP_EM_RC2_OLD 0x6602 /* strong encryption: RC2, version < 5.2 */
0202 #define ZIP_EM_3DES_168 0x6603
0203 #define ZIP_EM_3DES_112 0x6609
0204 #define ZIP_EM_PKZIP_AES_128 0x660e
0205 #define ZIP_EM_PKZIP_AES_192 0x660f
0206 #define ZIP_EM_PKZIP_AES_256 0x6610
0207 #define ZIP_EM_RC2 0x6702 /* strong encryption: RC2, version >= 5.2 */
0208 #define ZIP_EM_RC4 0x6801
0209 #endif
0210 #define ZIP_EM_AES_128 0x0101 /* Winzip AES encryption */
0211 #define ZIP_EM_AES_192 0x0102
0212 #define ZIP_EM_AES_256 0x0103
0213 #define ZIP_EM_UNKNOWN 0xffff /* unknown algorithm */
0214 
0215 #define ZIP_OPSYS_DOS 0x00u
0216 #define ZIP_OPSYS_AMIGA 0x01u
0217 #define ZIP_OPSYS_OPENVMS 0x02u
0218 #define ZIP_OPSYS_UNIX 0x03u
0219 #define ZIP_OPSYS_VM_CMS 0x04u
0220 #define ZIP_OPSYS_ATARI_ST 0x05u
0221 #define ZIP_OPSYS_OS_2 0x06u
0222 #define ZIP_OPSYS_MACINTOSH 0x07u
0223 #define ZIP_OPSYS_Z_SYSTEM 0x08u
0224 #define ZIP_OPSYS_CPM 0x09u
0225 #define ZIP_OPSYS_WINDOWS_NTFS 0x0au
0226 #define ZIP_OPSYS_MVS 0x0bu
0227 #define ZIP_OPSYS_VSE 0x0cu
0228 #define ZIP_OPSYS_ACORN_RISC 0x0du
0229 #define ZIP_OPSYS_VFAT 0x0eu
0230 #define ZIP_OPSYS_ALTERNATE_MVS 0x0fu
0231 #define ZIP_OPSYS_BEOS 0x10u
0232 #define ZIP_OPSYS_TANDEM 0x11u
0233 #define ZIP_OPSYS_OS_400 0x12u
0234 #define ZIP_OPSYS_OS_X 0x13u
0235 
0236 #define ZIP_OPSYS_DEFAULT ZIP_OPSYS_UNIX
0237 
0238 
0239 enum zip_source_cmd {
0240     ZIP_SOURCE_OPEN,                /* prepare for reading */
0241     ZIP_SOURCE_READ,                /* read data */
0242     ZIP_SOURCE_CLOSE,               /* reading is done */
0243     ZIP_SOURCE_STAT,                /* get meta information */
0244     ZIP_SOURCE_ERROR,               /* get error information */
0245     ZIP_SOURCE_FREE,                /* cleanup and free resources */
0246     ZIP_SOURCE_SEEK,                /* set position for reading */
0247     ZIP_SOURCE_TELL,                /* get read position */
0248     ZIP_SOURCE_BEGIN_WRITE,         /* prepare for writing */
0249     ZIP_SOURCE_COMMIT_WRITE,        /* writing is done */
0250     ZIP_SOURCE_ROLLBACK_WRITE,      /* discard written changes */
0251     ZIP_SOURCE_WRITE,               /* write data */
0252     ZIP_SOURCE_SEEK_WRITE,          /* set position for writing */
0253     ZIP_SOURCE_TELL_WRITE,          /* get write position */
0254     ZIP_SOURCE_SUPPORTS,            /* check whether source supports command */
0255     ZIP_SOURCE_REMOVE,              /* remove file */
0256     ZIP_SOURCE_RESERVED_1,          /* previously used internally */
0257     ZIP_SOURCE_BEGIN_WRITE_CLONING, /* like ZIP_SOURCE_BEGIN_WRITE, but keep part of original file */
0258     ZIP_SOURCE_ACCEPT_EMPTY,        /* whether empty files are valid archives */
0259     ZIP_SOURCE_GET_FILE_ATTRIBUTES, /* get additional file attributes */
0260     ZIP_SOURCE_SUPPORTS_REOPEN,     /* allow reading from changed entry */
0261     ZIP_SOURCE_GET_DOS_TIME         /* get last modification time in DOS format */
0262 };
0263 typedef enum zip_source_cmd zip_source_cmd_t;
0264 
0265 #define ZIP_SOURCE_MAKE_COMMAND_BITMASK(cmd) (((zip_int64_t)1) << (cmd))
0266 
0267 #define ZIP_SOURCE_CHECK_SUPPORTED(supported, cmd)  (((supported) & ZIP_SOURCE_MAKE_COMMAND_BITMASK(cmd)) != 0)
0268 
0269 /* clang-format off */
0270 
0271 #define ZIP_SOURCE_SUPPORTS_READABLE    (ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_OPEN) \
0272                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_READ) \
0273                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_CLOSE) \
0274                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_STAT) \
0275                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_ERROR) \
0276                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_FREE))
0277 
0278 #define ZIP_SOURCE_SUPPORTS_SEEKABLE    (ZIP_SOURCE_SUPPORTS_READABLE \
0279                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK) \
0280                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_TELL) \
0281                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SUPPORTS))
0282 
0283 #define ZIP_SOURCE_SUPPORTS_WRITABLE    (ZIP_SOURCE_SUPPORTS_SEEKABLE \
0284                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_BEGIN_WRITE) \
0285                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_COMMIT_WRITE) \
0286                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_ROLLBACK_WRITE) \
0287                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_WRITE) \
0288                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK_WRITE) \
0289                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_TELL_WRITE) \
0290                                          | ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_REMOVE))
0291 
0292 /* clang-format on */
0293 
0294 /* for use by sources */
0295 struct zip_source_args_seek {
0296     zip_int64_t offset;
0297     int whence;
0298 };
0299 
0300 typedef struct zip_source_args_seek zip_source_args_seek_t;
0301 #define ZIP_SOURCE_GET_ARGS(type, data, len, error) ((len) < sizeof(type) ? zip_error_set((error), ZIP_ER_INVAL, 0), (type *)NULL : (type *)(data))
0302 
0303 
0304 /* error information */
0305 /* use zip_error_*() to access */
0306 struct zip_error {
0307     int zip_err;         /* libzip error code (ZIP_ER_*) */
0308     int sys_err;         /* copy of errno (E*) or zlib error code */
0309     char *_Nullable str; /* string representation or NULL */
0310 };
0311 
0312 #define ZIP_STAT_NAME 0x0001u
0313 #define ZIP_STAT_INDEX 0x0002u
0314 #define ZIP_STAT_SIZE 0x0004u
0315 #define ZIP_STAT_COMP_SIZE 0x0008u
0316 #define ZIP_STAT_MTIME 0x0010u
0317 #define ZIP_STAT_CRC 0x0020u
0318 #define ZIP_STAT_COMP_METHOD 0x0040u
0319 #define ZIP_STAT_ENCRYPTION_METHOD 0x0080u
0320 #define ZIP_STAT_FLAGS 0x0100u
0321 
0322 struct zip_stat {
0323     zip_uint64_t valid;             /* which fields have valid values */
0324     const char *_Nullable name;     /* name of the file */
0325     zip_uint64_t index;             /* index within archive */
0326     zip_uint64_t size;              /* size of file (uncompressed) */
0327     zip_uint64_t comp_size;         /* size of file (compressed) */
0328     time_t mtime;                   /* modification time */
0329     zip_uint32_t crc;               /* crc of file data */
0330     zip_uint16_t comp_method;       /* compression method used */
0331     zip_uint16_t encryption_method; /* encryption method used */
0332     zip_uint32_t flags;             /* reserved for future use */
0333 };
0334 
0335 struct zip_buffer_fragment {
0336     zip_uint8_t *_Nonnull data;
0337     zip_uint64_t length;
0338 };
0339 
0340 struct zip_file_attributes {
0341     zip_uint64_t valid;                     /* which fields have valid values */
0342     zip_uint8_t version;                    /* version of this struct, currently 1 */
0343     zip_uint8_t host_system;                /* host system on which file was created */
0344     zip_uint8_t ascii;                      /* flag whether file is ASCII text */
0345     zip_uint8_t version_needed;             /* minimum version needed to extract file */
0346     zip_uint32_t external_file_attributes;  /* external file attributes (host-system specific) */
0347     zip_uint16_t general_purpose_bit_flags; /* general purpose big flags, only some bits are honored */
0348     zip_uint16_t general_purpose_bit_mask;  /* which bits in general_purpose_bit_flags are valid */
0349 };
0350 
0351 #define ZIP_FILE_ATTRIBUTES_HOST_SYSTEM 0x0001u
0352 #define ZIP_FILE_ATTRIBUTES_ASCII 0x0002u
0353 #define ZIP_FILE_ATTRIBUTES_VERSION_NEEDED 0x0004u
0354 #define ZIP_FILE_ATTRIBUTES_EXTERNAL_FILE_ATTRIBUTES 0x0008u
0355 #define ZIP_FILE_ATTRIBUTES_GENERAL_PURPOSE_BIT_FLAGS 0x0010u
0356 
0357 struct zip;
0358 struct zip_file;
0359 struct zip_source;
0360 
0361 typedef struct zip zip_t;
0362 typedef struct zip_error zip_error_t;
0363 typedef struct zip_file zip_file_t;
0364 typedef struct zip_file_attributes zip_file_attributes_t;
0365 typedef struct zip_source zip_source_t;
0366 typedef struct zip_stat zip_stat_t;
0367 typedef struct zip_buffer_fragment zip_buffer_fragment_t;
0368 
0369 typedef zip_uint32_t zip_flags_t;
0370 
0371 typedef zip_int64_t (*zip_source_callback)(void *_Nullable, void *_Nullable, zip_uint64_t, zip_source_cmd_t);
0372 typedef zip_int64_t (*zip_source_layered_callback)(zip_source_t *_Nonnull, void *_Nullable, void *_Nullable, zip_uint64_t, enum zip_source_cmd);
0373 typedef void (*zip_progress_callback)(zip_t *_Nonnull, double, void *_Nullable);
0374 typedef int (*zip_cancel_callback)(zip_t *_Nonnull, void *_Nullable);
0375 
0376 #ifndef ZIP_DISABLE_DEPRECATED
0377 #define ZIP_FL_RECOMPRESS 16u  /* force recompression of data */
0378 
0379 typedef void (*zip_progress_callback_t)(double);
0380 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);
0381 
0382 ZIP_DEPRECATED("use 'zip_file_add' instead") ZIP_EXTERN zip_int64_t zip_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull);
0383 ZIP_DEPRECATED("use 'zip_dir_add' instead") ZIP_EXTERN zip_int64_t zip_add_dir(zip_t *_Nonnull, const char *_Nonnull);
0384 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);
0385 ZIP_DEPRECATED("use 'zip_get_num_entries' instead") ZIP_EXTERN int zip_get_num_files(zip_t *_Nonnull);
0386 ZIP_DEPRECATED("use 'zip_file_rename' instead") ZIP_EXTERN int zip_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull);
0387 ZIP_DEPRECATED("use 'zip_file_replace' instead") ZIP_EXTERN int zip_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull);
0388 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);
0389 ZIP_DEPRECATED("use 'zip_error_init_with_code' and 'zip_error_system_type' instead") ZIP_EXTERN int zip_error_get_sys_type(int);
0390 ZIP_DEPRECATED("use 'zip_get_error' instead") ZIP_EXTERN void zip_error_get(zip_t *_Nonnull, int *_Nullable, int *_Nullable);
0391 ZIP_DEPRECATED("use 'zip_error_strerror' instead") ZIP_EXTERN int zip_error_to_str(char *_Nonnull, zip_uint64_t, int, int);
0392 ZIP_DEPRECATED("use 'zip_file_get_error' instead") ZIP_EXTERN void zip_file_error_get(zip_file_t *_Nonnull, int *_Nullable, int *_Nullable);
0393 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);
0394 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);
0395 #endif
0396 
0397 ZIP_EXTERN int zip_close(zip_t *_Nonnull);
0398 ZIP_EXTERN int zip_delete(zip_t *_Nonnull, zip_uint64_t);
0399 ZIP_EXTERN zip_int64_t zip_dir_add(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);
0400 ZIP_EXTERN void zip_discard(zip_t *_Nonnull);
0401 
0402 ZIP_EXTERN zip_error_t *_Nonnull zip_get_error(zip_t *_Nonnull);
0403 ZIP_EXTERN void zip_error_clear(zip_t *_Nonnull);
0404 ZIP_EXTERN int zip_error_code_zip(const zip_error_t *_Nonnull);
0405 ZIP_EXTERN int zip_error_code_system(const zip_error_t *_Nonnull);
0406 ZIP_EXTERN void zip_error_fini(zip_error_t *_Nonnull);
0407 ZIP_EXTERN void zip_error_init(zip_error_t *_Nonnull);
0408 ZIP_EXTERN void zip_error_init_with_code(zip_error_t *_Nonnull, int);
0409 ZIP_EXTERN void zip_error_set(zip_error_t *_Nullable, int, int);
0410 ZIP_EXTERN void zip_error_set_from_source(zip_error_t *_Nonnull, zip_source_t *_Nullable);
0411 ZIP_EXTERN const char *_Nonnull zip_error_strerror(zip_error_t *_Nonnull);
0412 ZIP_EXTERN int zip_error_system_type(const zip_error_t *_Nonnull);
0413 ZIP_EXTERN zip_int64_t zip_error_to_data(const zip_error_t *_Nonnull, void *_Nonnull, zip_uint64_t);
0414 
0415 ZIP_EXTERN int zip_fclose(zip_file_t *_Nonnull);
0416 ZIP_EXTERN zip_t *_Nullable zip_fdopen(int, int, int *_Nullable);
0417 ZIP_EXTERN zip_int64_t zip_file_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull, zip_flags_t);
0418 ZIP_EXTERN void zip_file_attributes_init(zip_file_attributes_t *_Nonnull);
0419 ZIP_EXTERN void zip_file_error_clear(zip_file_t *_Nonnull);
0420 ZIP_EXTERN int zip_file_extra_field_delete(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_flags_t);
0421 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);
0422 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);
0423 ZIP_EXTERN zip_int16_t zip_file_extra_fields_count(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);
0424 ZIP_EXTERN zip_int16_t zip_file_extra_fields_count_by_id(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_flags_t);
0425 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);
0426 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);
0427 ZIP_EXTERN const char *_Nullable zip_file_get_comment(zip_t *_Nonnull, zip_uint64_t, zip_uint32_t *_Nullable, zip_flags_t);
0428 ZIP_EXTERN zip_error_t *_Nonnull zip_file_get_error(zip_file_t *_Nonnull);
0429 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);
0430 ZIP_EXTERN int zip_file_is_seekable(zip_file_t *_Nonnull);
0431 ZIP_EXTERN int zip_file_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull, zip_flags_t);
0432 ZIP_EXTERN int zip_file_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull, zip_flags_t);
0433 ZIP_EXTERN int zip_file_set_comment(zip_t *_Nonnull, zip_uint64_t, const char *_Nullable, zip_uint16_t, zip_flags_t);
0434 ZIP_EXTERN int zip_file_set_dostime(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_flags_t);
0435 ZIP_EXTERN int zip_file_set_encryption(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, const char *_Nullable);
0436 ZIP_EXTERN int zip_file_set_external_attributes(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint8_t, zip_uint32_t);
0437 ZIP_EXTERN int zip_file_set_mtime(zip_t *_Nonnull, zip_uint64_t, time_t, zip_flags_t);
0438 ZIP_EXTERN const char *_Nonnull zip_file_strerror(zip_file_t *_Nonnull);
0439 ZIP_EXTERN zip_file_t *_Nullable zip_fopen(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);
0440 ZIP_EXTERN zip_file_t *_Nullable zip_fopen_encrypted(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t, const char *_Nullable);
0441 ZIP_EXTERN zip_file_t *_Nullable zip_fopen_index(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);
0442 ZIP_EXTERN zip_file_t *_Nullable zip_fopen_index_encrypted(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, const char *_Nullable);
0443 ZIP_EXTERN zip_int64_t zip_fread(zip_file_t *_Nonnull, void *_Nonnull, zip_uint64_t);
0444 ZIP_EXTERN zip_int8_t zip_fseek(zip_file_t *_Nonnull, zip_int64_t, int);
0445 ZIP_EXTERN zip_int64_t zip_ftell(zip_file_t *_Nonnull);
0446 ZIP_EXTERN const char *_Nullable zip_get_archive_comment(zip_t *_Nonnull, int *_Nullable, zip_flags_t);
0447 ZIP_EXTERN int zip_get_archive_flag(zip_t *_Nonnull, zip_flags_t, zip_flags_t);
0448 ZIP_EXTERN const char *_Nullable zip_get_name(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);
0449 ZIP_EXTERN zip_int64_t zip_get_num_entries(zip_t *_Nonnull, zip_flags_t);
0450 ZIP_EXTERN const char *_Nonnull zip_libzip_version(void);
0451 ZIP_EXTERN zip_int64_t zip_name_locate(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);
0452 ZIP_EXTERN zip_t *_Nullable zip_open(const char *_Nonnull, int, int *_Nullable);
0453 ZIP_EXTERN zip_t *_Nullable zip_open_from_source(zip_source_t *_Nonnull, int, zip_error_t *_Nullable);
0454 ZIP_EXTERN int zip_register_progress_callback_with_state(zip_t *_Nonnull, double, zip_progress_callback _Nullable, void (*_Nullable)(void *_Nullable), void *_Nullable);
0455 ZIP_EXTERN int zip_register_cancel_callback_with_state(zip_t *_Nonnull, zip_cancel_callback _Nullable, void (*_Nullable)(void *_Nullable), void *_Nullable);
0456 ZIP_EXTERN int zip_set_archive_comment(zip_t *_Nonnull, const char *_Nullable, zip_uint16_t);
0457 ZIP_EXTERN int zip_set_archive_flag(zip_t *_Nonnull, zip_flags_t, int);
0458 ZIP_EXTERN int zip_set_default_password(zip_t *_Nonnull, const char *_Nullable);
0459 ZIP_EXTERN int zip_set_file_compression(zip_t *_Nonnull, zip_uint64_t, zip_int32_t, zip_uint32_t);
0460 ZIP_EXTERN int zip_source_begin_write(zip_source_t *_Nonnull);
0461 ZIP_EXTERN int zip_source_begin_write_cloning(zip_source_t *_Nonnull, zip_uint64_t);
0462 ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer(zip_t *_Nonnull, const void *_Nullable, zip_uint64_t, int);
0463 ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_create(const void *_Nullable, zip_uint64_t, int, zip_error_t *_Nullable);
0464 ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_fragment(zip_t *_Nonnull, const zip_buffer_fragment_t *_Nonnull, zip_uint64_t, int);
0465 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);
0466 ZIP_EXTERN int zip_source_close(zip_source_t *_Nonnull);
0467 ZIP_EXTERN int zip_source_commit_write(zip_source_t *_Nonnull);
0468 ZIP_EXTERN zip_error_t *_Nonnull zip_source_error(zip_source_t *_Nonnull);
0469 ZIP_EXTERN zip_source_t *_Nullable zip_source_file(zip_t *_Nonnull, const char *_Nonnull, zip_uint64_t, zip_int64_t);
0470 ZIP_EXTERN zip_source_t *_Nullable zip_source_file_create(const char *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0471 ZIP_EXTERN zip_source_t *_Nullable zip_source_filep(zip_t *_Nonnull, FILE *_Nonnull, zip_uint64_t, zip_int64_t);
0472 ZIP_EXTERN zip_source_t *_Nullable zip_source_filep_create(FILE *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0473 ZIP_EXTERN void zip_source_free(zip_source_t *_Nullable);
0474 ZIP_EXTERN zip_source_t *_Nullable zip_source_function(zip_t *_Nonnull, zip_source_callback _Nonnull, void *_Nullable);
0475 ZIP_EXTERN zip_source_t *_Nullable zip_source_function_create(zip_source_callback _Nonnull, void *_Nullable, zip_error_t *_Nullable);
0476 ZIP_EXTERN int zip_source_get_file_attributes(zip_source_t *_Nonnull, zip_file_attributes_t *_Nonnull);
0477 ZIP_EXTERN int zip_source_is_deleted(zip_source_t *_Nonnull);
0478 ZIP_EXTERN int zip_source_is_seekable(zip_source_t *_Nonnull);
0479 ZIP_EXTERN void zip_source_keep(zip_source_t *_Nonnull);
0480 ZIP_EXTERN zip_source_t *_Nullable zip_source_layered(zip_t *_Nullable, zip_source_t *_Nonnull, zip_source_layered_callback _Nonnull, void *_Nullable);
0481 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);
0482 ZIP_EXTERN zip_int64_t zip_source_make_command_bitmap(zip_source_cmd_t, ...);
0483 ZIP_EXTERN int zip_source_open(zip_source_t *_Nonnull);
0484 ZIP_EXTERN zip_int64_t zip_source_pass_to_lower_layer(zip_source_t *_Nonnull, void *_Nullable, zip_uint64_t, zip_source_cmd_t);
0485 ZIP_EXTERN zip_int64_t zip_source_read(zip_source_t *_Nonnull, void *_Nonnull, zip_uint64_t);
0486 ZIP_EXTERN void zip_source_rollback_write(zip_source_t *_Nonnull);
0487 ZIP_EXTERN int zip_source_seek(zip_source_t *_Nonnull, zip_int64_t, int);
0488 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);
0489 ZIP_EXTERN int zip_source_seek_write(zip_source_t *_Nonnull, zip_int64_t, int);
0490 ZIP_EXTERN int zip_source_stat(zip_source_t *_Nonnull, zip_stat_t *_Nonnull);
0491 ZIP_EXTERN zip_int64_t zip_source_tell(zip_source_t *_Nonnull);
0492 ZIP_EXTERN zip_int64_t zip_source_tell_write(zip_source_t *_Nonnull);
0493 #ifdef _WIN32
0494 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32a(zip_t *_Nonnull, const char *_Nonnull, zip_uint64_t, zip_int64_t);
0495 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32a_create(const char *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0496 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32handle(zip_t *_Nonnull, void *_Nonnull, zip_uint64_t, zip_int64_t);
0497 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32handle_create(void *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0498 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32w(zip_t *_Nonnull, const wchar_t *_Nonnull, zip_uint64_t, zip_int64_t);
0499 ZIP_EXTERN zip_source_t *_Nullable zip_source_win32w_create(const wchar_t *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0500 #endif
0501 ZIP_EXTERN zip_source_t *_Nullable zip_source_window_create(zip_source_t *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);
0502 ZIP_EXTERN zip_int64_t zip_source_write(zip_source_t *_Nonnull, const void *_Nullable, zip_uint64_t);
0503 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);
0504 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);
0505 ZIP_EXTERN int zip_stat(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t, zip_stat_t *_Nonnull);
0506 ZIP_EXTERN int zip_stat_index(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_stat_t *_Nonnull);
0507 ZIP_EXTERN void zip_stat_init(zip_stat_t *_Nonnull);
0508 ZIP_EXTERN const char *_Nonnull zip_strerror(zip_t *_Nonnull);
0509 ZIP_EXTERN int zip_unchange(zip_t *_Nonnull, zip_uint64_t);
0510 ZIP_EXTERN int zip_unchange_all(zip_t *_Nonnull);
0511 ZIP_EXTERN int zip_unchange_archive(zip_t *_Nonnull);
0512 ZIP_EXTERN int zip_compression_method_supported(zip_int32_t method, int compress);
0513 ZIP_EXTERN int zip_encryption_method_supported(zip_uint16_t method, int encode);
0514 
0515 #ifdef __cplusplus
0516 }
0517 #endif
0518 
0519 #endif /* _HAD_ZIP_H */