CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
Path: blob/master/ext/libzip/zip.h
Views: 1401
#ifndef _HAD_ZIP_H1#define _HAD_ZIP_H23/*4zip.h -- exported declarations.5Copyright (C) 1999-2020 Dieter Baron and Thomas Klausner67This file is part of libzip, a library to manipulate ZIP archives.8The authors can be contacted at <[email protected]>910Redistribution and use in source and binary forms, with or without11modification, are permitted provided that the following conditions12are met:131. Redistributions of source code must retain the above copyright14notice, this list of conditions and the following disclaimer.152. Redistributions in binary form must reproduce the above copyright16notice, this list of conditions and the following disclaimer in17the documentation and/or other materials provided with the18distribution.193. The names of the authors may not be used to endorse or promote20products derived from this software without specific prior21written permission.2223THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS24OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED25WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE26ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY27DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL28DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE29GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS30INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER31IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR32OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN33IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.34*/353637#ifdef __cplusplus38extern "C" {39#if 040} /* fix autoindent */41#endif42#endif4344#include "zipconf.h"4546#ifndef ZIP_EXTERN47#ifndef ZIP_STATIC48#ifdef _WIN3249#define ZIP_EXTERN __declspec(dllimport)50#elif defined(__GNUC__) && __GNUC__ >= 451#define ZIP_EXTERN __attribute__((visibility("default")))52#else53#define ZIP_EXTERN54#endif55#else56#define ZIP_EXTERN57#endif58#endif5960#include <stdio.h>61#include <sys/types.h>62#include <time.h>6364/* flags for zip_open */6566#define ZIP_CREATE 167#define ZIP_EXCL 268#define ZIP_CHECKCONS 469#define ZIP_TRUNCATE 870#define ZIP_RDONLY 16717273/* flags for zip_name_locate, zip_fopen, zip_stat, ... */7475#define ZIP_FL_NOCASE 1u /* ignore case on name lookup */76#define ZIP_FL_NODIR 2u /* ignore directory component */77#define ZIP_FL_COMPRESSED 4u /* read compressed data */78#define ZIP_FL_UNCHANGED 8u /* use original data, ignoring changes */79#define ZIP_FL_RECOMPRESS 16u /* force recompression of data */80#define ZIP_FL_ENCRYPTED 32u /* read encrypted data (implies ZIP_FL_COMPRESSED) */81#define ZIP_FL_ENC_GUESS 0u /* guess string encoding (is default) */82#define ZIP_FL_ENC_RAW 64u /* get unmodified string */83#define ZIP_FL_ENC_STRICT 128u /* follow specification strictly */84#define ZIP_FL_LOCAL 256u /* in local header */85#define ZIP_FL_CENTRAL 512u /* in central directory */86/* 1024u reserved for internal use */87#define ZIP_FL_ENC_UTF_8 2048u /* string is UTF-8 encoded */88#define ZIP_FL_ENC_CP437 4096u /* string is CP437 encoded */89#define ZIP_FL_OVERWRITE 8192u /* zip_file_add: if file with name exists, overwrite (replace) it */9091/* archive global flags flags */9293#define ZIP_AFL_RDONLY 2u /* read only -- cannot be cleared */949596/* create a new extra field */9798#define ZIP_EXTRA_FIELD_ALL ZIP_UINT16_MAX99#define ZIP_EXTRA_FIELD_NEW ZIP_UINT16_MAX100101102/* libzip error codes */103104#define ZIP_ER_OK 0 /* N No error */105#define ZIP_ER_MULTIDISK 1 /* N Multi-disk zip archives not supported */106#define ZIP_ER_RENAME 2 /* S Renaming temporary file failed */107#define ZIP_ER_CLOSE 3 /* S Closing zip archive failed */108#define ZIP_ER_SEEK 4 /* S Seek error */109#define ZIP_ER_READ 5 /* S Read error */110#define ZIP_ER_WRITE 6 /* S Write error */111#define ZIP_ER_CRC 7 /* N CRC error */112#define ZIP_ER_ZIPCLOSED 8 /* N Containing zip archive was closed */113#define ZIP_ER_NOENT 9 /* N No such file */114#define ZIP_ER_EXISTS 10 /* N File already exists */115#define ZIP_ER_OPEN 11 /* S Can't open file */116#define ZIP_ER_TMPOPEN 12 /* S Failure to create temporary file */117#define ZIP_ER_ZLIB 13 /* Z Zlib error */118#define ZIP_ER_MEMORY 14 /* N Malloc failure */119#define ZIP_ER_CHANGED 15 /* N Entry has been changed */120#define ZIP_ER_COMPNOTSUPP 16 /* N Compression method not supported */121#define ZIP_ER_EOF 17 /* N Premature end of file */122#define ZIP_ER_INVAL 18 /* N Invalid argument */123#define ZIP_ER_NOZIP 19 /* N Not a zip archive */124#define ZIP_ER_INTERNAL 20 /* N Internal error */125#define ZIP_ER_INCONS 21 /* N Zip archive inconsistent */126#define ZIP_ER_REMOVE 22 /* S Can't remove file */127#define ZIP_ER_DELETED 23 /* N Entry has been deleted */128#define ZIP_ER_ENCRNOTSUPP 24 /* N Encryption method not supported */129#define ZIP_ER_RDONLY 25 /* N Read-only archive */130#define ZIP_ER_NOPASSWD 26 /* N No password provided */131#define ZIP_ER_WRONGPASSWD 27 /* N Wrong password provided */132#define ZIP_ER_OPNOTSUPP 28 /* N Operation not supported */133#define ZIP_ER_INUSE 29 /* N Resource still in use */134#define ZIP_ER_TELL 30 /* S Tell error */135#define ZIP_ER_COMPRESSED_DATA 31 /* N Compressed data invalid */136#define ZIP_ER_CANCELLED 32 /* N Operation cancelled */137138/* type of system error value */139140#define ZIP_ET_NONE 0 /* sys_err unused */141#define ZIP_ET_SYS 1 /* sys_err is errno */142#define ZIP_ET_ZLIB 2 /* sys_err is zlib error code */143144/* compression methods */145146#define ZIP_CM_DEFAULT -1 /* better of deflate or store */147#define ZIP_CM_STORE 0 /* stored (uncompressed) */148#define ZIP_CM_SHRINK 1 /* shrunk */149#define ZIP_CM_REDUCE_1 2 /* reduced with factor 1 */150#define ZIP_CM_REDUCE_2 3 /* reduced with factor 2 */151#define ZIP_CM_REDUCE_3 4 /* reduced with factor 3 */152#define ZIP_CM_REDUCE_4 5 /* reduced with factor 4 */153#define ZIP_CM_IMPLODE 6 /* imploded */154/* 7 - Reserved for Tokenizing compression algorithm */155#define ZIP_CM_DEFLATE 8 /* deflated */156#define ZIP_CM_DEFLATE64 9 /* deflate64 */157#define ZIP_CM_PKWARE_IMPLODE 10 /* PKWARE imploding */158/* 11 - Reserved by PKWARE */159#define ZIP_CM_BZIP2 12 /* compressed using BZIP2 algorithm */160/* 13 - Reserved by PKWARE */161#define ZIP_CM_LZMA 14 /* LZMA (EFS) */162/* 15-17 - Reserved by PKWARE */163#define ZIP_CM_TERSE 18 /* compressed using IBM TERSE (new) */164#define ZIP_CM_LZ77 19 /* IBM LZ77 z Architecture (PFS) */165#define ZIP_CM_LZMA2 33166#define ZIP_CM_XZ 95 /* XZ compressed data */167#define ZIP_CM_JPEG 96 /* Compressed Jpeg data */168#define ZIP_CM_WAVPACK 97 /* WavPack compressed data */169#define ZIP_CM_PPMD 98 /* PPMd version I, Rev 1 */170171/* encryption methods */172173#define ZIP_EM_NONE 0 /* not encrypted */174#define ZIP_EM_TRAD_PKWARE 1 /* traditional PKWARE encryption */175#if 0 /* Strong Encryption Header not parsed yet */176#define ZIP_EM_DES 0x6601 /* strong encryption: DES */177#define ZIP_EM_RC2_OLD 0x6602 /* strong encryption: RC2, version < 5.2 */178#define ZIP_EM_3DES_168 0x6603179#define ZIP_EM_3DES_112 0x6609180#define ZIP_EM_PKZIP_AES_128 0x660e181#define ZIP_EM_PKZIP_AES_192 0x660f182#define ZIP_EM_PKZIP_AES_256 0x6610183#define ZIP_EM_RC2 0x6702 /* strong encryption: RC2, version >= 5.2 */184#define ZIP_EM_RC4 0x6801185#endif186#define ZIP_EM_AES_128 0x0101 /* Winzip AES encryption */187#define ZIP_EM_AES_192 0x0102188#define ZIP_EM_AES_256 0x0103189#define ZIP_EM_UNKNOWN 0xffff /* unknown algorithm */190191#define ZIP_OPSYS_DOS 0x00u192#define ZIP_OPSYS_AMIGA 0x01u193#define ZIP_OPSYS_OPENVMS 0x02u194#define ZIP_OPSYS_UNIX 0x03u195#define ZIP_OPSYS_VM_CMS 0x04u196#define ZIP_OPSYS_ATARI_ST 0x05u197#define ZIP_OPSYS_OS_2 0x06u198#define ZIP_OPSYS_MACINTOSH 0x07u199#define ZIP_OPSYS_Z_SYSTEM 0x08u200#define ZIP_OPSYS_CPM 0x09u201#define ZIP_OPSYS_WINDOWS_NTFS 0x0au202#define ZIP_OPSYS_MVS 0x0bu203#define ZIP_OPSYS_VSE 0x0cu204#define ZIP_OPSYS_ACORN_RISC 0x0du205#define ZIP_OPSYS_VFAT 0x0eu206#define ZIP_OPSYS_ALTERNATE_MVS 0x0fu207#define ZIP_OPSYS_BEOS 0x10u208#define ZIP_OPSYS_TANDEM 0x11u209#define ZIP_OPSYS_OS_400 0x12u210#define ZIP_OPSYS_OS_X 0x13u211212#define ZIP_OPSYS_DEFAULT ZIP_OPSYS_UNIX213214215enum zip_source_cmd {216ZIP_SOURCE_OPEN, /* prepare for reading */217ZIP_SOURCE_READ, /* read data */218ZIP_SOURCE_CLOSE, /* reading is done */219ZIP_SOURCE_STAT, /* get meta information */220ZIP_SOURCE_ERROR, /* get error information */221ZIP_SOURCE_FREE, /* cleanup and free resources */222ZIP_SOURCE_SEEK, /* set position for reading */223ZIP_SOURCE_TELL, /* get read position */224ZIP_SOURCE_BEGIN_WRITE, /* prepare for writing */225ZIP_SOURCE_COMMIT_WRITE, /* writing is done */226ZIP_SOURCE_ROLLBACK_WRITE, /* discard written changes */227ZIP_SOURCE_WRITE, /* write data */228ZIP_SOURCE_SEEK_WRITE, /* set position for writing */229ZIP_SOURCE_TELL_WRITE, /* get write position */230ZIP_SOURCE_SUPPORTS, /* check whether source supports command */231ZIP_SOURCE_REMOVE, /* remove file */232ZIP_SOURCE_RESERVED_1, /* previously used internally */233ZIP_SOURCE_BEGIN_WRITE_CLONING, /* like ZIP_SOURCE_BEGIN_WRITE, but keep part of original file */234ZIP_SOURCE_ACCEPT_EMPTY, /* whether empty files are valid archives */235ZIP_SOURCE_GET_FILE_ATTRIBUTES /* get additional file attributes */236};237typedef enum zip_source_cmd zip_source_cmd_t;238239#define ZIP_SOURCE_MAKE_COMMAND_BITMASK(cmd) (((zip_int64_t)1) << (cmd))240241/* clang-format off */242243#define ZIP_SOURCE_SUPPORTS_READABLE (ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_OPEN) \244| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_READ) \245| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_CLOSE) \246| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_STAT) \247| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_ERROR) \248| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_FREE))249250#define ZIP_SOURCE_SUPPORTS_SEEKABLE (ZIP_SOURCE_SUPPORTS_READABLE \251| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK) \252| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_TELL) \253| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SUPPORTS))254255#define ZIP_SOURCE_SUPPORTS_WRITABLE (ZIP_SOURCE_SUPPORTS_SEEKABLE \256| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_BEGIN_WRITE) \257| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_COMMIT_WRITE) \258| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_ROLLBACK_WRITE) \259| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_WRITE) \260| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK_WRITE) \261| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_TELL_WRITE) \262| ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_REMOVE))263264/* clang-format on */265266/* for use by sources */267struct zip_source_args_seek {268zip_int64_t offset;269int whence;270};271272typedef struct zip_source_args_seek zip_source_args_seek_t;273#define ZIP_SOURCE_GET_ARGS(type, data, len, error) ((len) < sizeof(type) ? zip_error_set((error), ZIP_ER_INVAL, 0), (type *)NULL : (type *)(data))274275276/* error information */277/* use zip_error_*() to access */278struct zip_error {279int zip_err; /* libzip error code (ZIP_ER_*) */280int sys_err; /* copy of errno (E*) or zlib error code */281char *_Nullable str; /* string representation or NULL */282};283284#define ZIP_STAT_NAME 0x0001u285#define ZIP_STAT_INDEX 0x0002u286#define ZIP_STAT_SIZE 0x0004u287#define ZIP_STAT_COMP_SIZE 0x0008u288#define ZIP_STAT_MTIME 0x0010u289#define ZIP_STAT_CRC 0x0020u290#define ZIP_STAT_COMP_METHOD 0x0040u291#define ZIP_STAT_ENCRYPTION_METHOD 0x0080u292#define ZIP_STAT_FLAGS 0x0100u293294struct zip_stat {295zip_uint64_t valid; /* which fields have valid values */296const char *_Nullable name; /* name of the file */297zip_uint64_t index; /* index within archive */298zip_uint64_t size; /* size of file (uncompressed) */299zip_uint64_t comp_size; /* size of file (compressed) */300time_t mtime; /* modification time */301zip_uint32_t crc; /* crc of file data */302zip_uint16_t comp_method; /* compression method used */303zip_uint16_t encryption_method; /* encryption method used */304zip_uint32_t flags; /* reserved for future use */305};306307struct zip_buffer_fragment {308zip_uint8_t *_Nonnull data;309zip_uint64_t length;310};311312struct zip_file_attributes {313zip_uint64_t valid; /* which fields have valid values */314zip_uint8_t version; /* version of this struct, currently 1 */315zip_uint8_t host_system; /* host system on which file was created */316zip_uint8_t ascii; /* flag whether file is ASCII text */317zip_uint8_t version_needed; /* minimum version needed to extract file */318zip_uint32_t external_file_attributes; /* external file attributes (host-system specific) */319zip_uint16_t general_purpose_bit_flags; /* general purpose big flags, only some bits are honored */320zip_uint16_t general_purpose_bit_mask; /* which bits in general_purpose_bit_flags are valid */321};322323#define ZIP_FILE_ATTRIBUTES_HOST_SYSTEM 0x0001u324#define ZIP_FILE_ATTRIBUTES_ASCII 0x0002u325#define ZIP_FILE_ATTRIBUTES_VERSION_NEEDED 0x0004u326#define ZIP_FILE_ATTRIBUTES_EXTERNAL_FILE_ATTRIBUTES 0x0008u327#define ZIP_FILE_ATTRIBUTES_GENERAL_PURPOSE_BIT_FLAGS 0x0010u328329struct zip;330struct zip_file;331struct zip_source;332333typedef struct zip zip_t;334typedef struct zip_error zip_error_t;335typedef struct zip_file zip_file_t;336typedef struct zip_file_attributes zip_file_attributes_t;337typedef struct zip_source zip_source_t;338typedef struct zip_stat zip_stat_t;339typedef struct zip_buffer_fragment zip_buffer_fragment_t;340341typedef zip_uint32_t zip_flags_t;342343typedef zip_int64_t (*zip_source_callback)(void *_Nullable, void *_Nullable, zip_uint64_t, zip_source_cmd_t);344typedef void (*zip_progress_callback)(zip_t *_Nonnull, double, void *_Nullable);345typedef int (*zip_cancel_callback)(zip_t *_Nonnull, void *_Nullable);346347#ifndef ZIP_DISABLE_DEPRECATED348typedef void (*zip_progress_callback_t)(double);349ZIP_EXTERN void zip_register_progress_callback(zip_t *_Nonnull, zip_progress_callback_t _Nullable); /* use zip_register_progress_callback_with_state */350351ZIP_EXTERN zip_int64_t zip_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull); /* use zip_file_add */352ZIP_EXTERN zip_int64_t zip_add_dir(zip_t *_Nonnull, const char *_Nonnull); /* use zip_dir_add */353ZIP_EXTERN const char *_Nullable zip_get_file_comment(zip_t *_Nonnull, zip_uint64_t, int *_Nullable, int); /* use zip_file_get_comment */354ZIP_EXTERN int zip_get_num_files(zip_t *_Nonnull); /* use zip_get_num_entries instead */355ZIP_EXTERN int zip_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull); /* use zip_file_rename */356ZIP_EXTERN int zip_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull); /* use zip_file_replace */357ZIP_EXTERN int zip_set_file_comment(zip_t *_Nonnull, zip_uint64_t, const char *_Nullable, int); /* use zip_file_set_comment */358ZIP_EXTERN int zip_error_get_sys_type(int); /* use zip_error_system_type */359ZIP_EXTERN void zip_error_get(zip_t *_Nonnull, int *_Nullable, int *_Nullable); /* use zip_get_error, zip_error_code_zip / zip_error_code_system */360ZIP_EXTERN int zip_error_to_str(char *_Nonnull, zip_uint64_t, int, int); /* use zip_error_init_with_code / zip_error_strerror */361ZIP_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 */362#endif363364ZIP_EXTERN int zip_close(zip_t *_Nonnull);365ZIP_EXTERN int zip_delete(zip_t *_Nonnull, zip_uint64_t);366ZIP_EXTERN zip_int64_t zip_dir_add(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);367ZIP_EXTERN void zip_discard(zip_t *_Nonnull);368369ZIP_EXTERN zip_error_t *_Nonnull zip_get_error(zip_t *_Nonnull);370ZIP_EXTERN void zip_error_clear(zip_t *_Nonnull);371ZIP_EXTERN int zip_error_code_zip(const zip_error_t *_Nonnull);372ZIP_EXTERN int zip_error_code_system(const zip_error_t *_Nonnull);373ZIP_EXTERN void zip_error_fini(zip_error_t *_Nonnull);374ZIP_EXTERN void zip_error_init(zip_error_t *_Nonnull);375ZIP_EXTERN void zip_error_init_with_code(zip_error_t *_Nonnull, int);376ZIP_EXTERN void zip_error_set(zip_error_t *_Nullable, int, int);377ZIP_EXTERN const char *_Nonnull zip_error_strerror(zip_error_t *_Nonnull);378ZIP_EXTERN int zip_error_system_type(const zip_error_t *_Nonnull);379ZIP_EXTERN zip_int64_t zip_error_to_data(const zip_error_t *_Nonnull, void *_Nonnull, zip_uint64_t);380381ZIP_EXTERN int zip_fclose(zip_file_t *_Nonnull);382ZIP_EXTERN zip_t *_Nullable zip_fdopen(int, int, int *_Nullable);383ZIP_EXTERN zip_int64_t zip_file_add(zip_t *_Nonnull, const char *_Nonnull, zip_source_t *_Nonnull, zip_flags_t);384ZIP_EXTERN void zip_file_attributes_init(zip_file_attributes_t *_Nonnull);385ZIP_EXTERN void zip_file_error_clear(zip_file_t *_Nonnull);386ZIP_EXTERN int zip_file_extra_field_delete(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_flags_t);387ZIP_EXTERN int zip_file_extra_field_delete_by_id(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_flags_t);388ZIP_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);389ZIP_EXTERN zip_int16_t zip_file_extra_fields_count(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);390ZIP_EXTERN zip_int16_t zip_file_extra_fields_count_by_id(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_flags_t);391ZIP_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);392ZIP_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);393ZIP_EXTERN const char *_Nullable zip_file_get_comment(zip_t *_Nonnull, zip_uint64_t, zip_uint32_t *_Nullable, zip_flags_t);394ZIP_EXTERN zip_error_t *_Nonnull zip_file_get_error(zip_file_t *_Nonnull);395ZIP_EXTERN int zip_file_get_external_attributes(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint8_t *_Nullable, zip_uint32_t *_Nullable);396ZIP_EXTERN int zip_file_rename(zip_t *_Nonnull, zip_uint64_t, const char *_Nonnull, zip_flags_t);397ZIP_EXTERN int zip_file_replace(zip_t *_Nonnull, zip_uint64_t, zip_source_t *_Nonnull, zip_flags_t);398ZIP_EXTERN int zip_file_set_comment(zip_t *_Nonnull, zip_uint64_t, const char *_Nullable, zip_uint16_t, zip_flags_t);399ZIP_EXTERN int zip_file_set_dostime(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_flags_t);400ZIP_EXTERN int zip_file_set_encryption(zip_t *_Nonnull, zip_uint64_t, zip_uint16_t, const char *_Nullable);401ZIP_EXTERN int zip_file_set_external_attributes(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_uint8_t, zip_uint32_t);402ZIP_EXTERN int zip_file_set_mtime(zip_t *_Nonnull, zip_uint64_t, time_t, zip_flags_t);403ZIP_EXTERN const char *_Nonnull zip_file_strerror(zip_file_t *_Nonnull);404ZIP_EXTERN zip_file_t *_Nullable zip_fopen(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);405ZIP_EXTERN zip_file_t *_Nullable zip_fopen_encrypted(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t, const char *_Nullable);406ZIP_EXTERN zip_file_t *_Nullable zip_fopen_index(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);407ZIP_EXTERN zip_file_t *_Nullable zip_fopen_index_encrypted(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, const char *_Nullable);408ZIP_EXTERN zip_int64_t zip_fread(zip_file_t *_Nonnull, void *_Nonnull, zip_uint64_t);409ZIP_EXTERN zip_int8_t zip_fseek(zip_file_t *_Nonnull, zip_int64_t, int);410ZIP_EXTERN zip_int64_t zip_ftell(zip_file_t *_Nonnull);411ZIP_EXTERN const char *_Nullable zip_get_archive_comment(zip_t *_Nonnull, int *_Nullable, zip_flags_t);412ZIP_EXTERN int zip_get_archive_flag(zip_t *_Nonnull, zip_flags_t, zip_flags_t);413ZIP_EXTERN const char *_Nullable zip_get_name(zip_t *_Nonnull, zip_uint64_t, zip_flags_t);414ZIP_EXTERN zip_int64_t zip_get_num_entries(zip_t *_Nonnull, zip_flags_t);415ZIP_EXTERN const char *_Nonnull zip_libzip_version(void);416ZIP_EXTERN zip_int64_t zip_name_locate(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t);417ZIP_EXTERN zip_t *_Nullable zip_open(const char *_Nonnull, int, int *_Nullable);418ZIP_EXTERN zip_t *_Nullable zip_open_from_source(zip_source_t *_Nonnull, int, zip_error_t *_Nullable);419ZIP_EXTERN int zip_register_progress_callback_with_state(zip_t *_Nonnull, double, zip_progress_callback _Nullable, void (*_Nullable)(void *_Nullable), void *_Nullable);420ZIP_EXTERN int zip_register_cancel_callback_with_state(zip_t *_Nonnull, zip_cancel_callback _Nullable, void (*_Nullable)(void *_Nullable), void *_Nullable);421ZIP_EXTERN int zip_set_archive_comment(zip_t *_Nonnull, const char *_Nullable, zip_uint16_t);422ZIP_EXTERN int zip_set_archive_flag(zip_t *_Nonnull, zip_flags_t, int);423ZIP_EXTERN int zip_set_default_password(zip_t *_Nonnull, const char *_Nullable);424ZIP_EXTERN int zip_set_file_compression(zip_t *_Nonnull, zip_uint64_t, zip_int32_t, zip_uint32_t);425ZIP_EXTERN int zip_source_begin_write(zip_source_t *_Nonnull);426ZIP_EXTERN int zip_source_begin_write_cloning(zip_source_t *_Nonnull, zip_uint64_t);427ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer(zip_t *_Nonnull, const void *_Nullable, zip_uint64_t, int);428ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_create(const void *_Nullable, zip_uint64_t, int, zip_error_t *_Nullable);429ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_fragment(zip_t *_Nonnull, const zip_buffer_fragment_t *_Nonnull, zip_uint64_t, int);430ZIP_EXTERN zip_source_t *_Nullable zip_source_buffer_fragment_create(const zip_buffer_fragment_t *_Nullable, zip_uint64_t, int, zip_error_t *_Nullable);431ZIP_EXTERN int zip_source_close(zip_source_t *_Nonnull);432ZIP_EXTERN int zip_source_commit_write(zip_source_t *_Nonnull);433ZIP_EXTERN zip_error_t *_Nonnull zip_source_error(zip_source_t *_Nonnull);434ZIP_EXTERN zip_source_t *_Nullable zip_source_file(zip_t *_Nonnull, const char *_Nonnull, zip_uint64_t, zip_int64_t);435ZIP_EXTERN zip_source_t *_Nullable zip_source_file_create(const char *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);436ZIP_EXTERN zip_source_t *_Nullable zip_source_filep(zip_t *_Nonnull, FILE *_Nonnull, zip_uint64_t, zip_int64_t);437ZIP_EXTERN zip_source_t *_Nullable zip_source_filep_create(FILE *_Nonnull, zip_uint64_t, zip_int64_t, zip_error_t *_Nullable);438ZIP_EXTERN void zip_source_free(zip_source_t *_Nullable);439ZIP_EXTERN zip_source_t *_Nullable zip_source_function(zip_t *_Nonnull, zip_source_callback _Nonnull, void *_Nullable);440ZIP_EXTERN zip_source_t *_Nullable zip_source_function_create(zip_source_callback _Nonnull, void *_Nullable, zip_error_t *_Nullable);441ZIP_EXTERN int zip_source_get_file_attributes(zip_source_t *_Nonnull, zip_file_attributes_t *_Nonnull);442ZIP_EXTERN int zip_source_is_deleted(zip_source_t *_Nonnull);443ZIP_EXTERN void zip_source_keep(zip_source_t *_Nonnull);444ZIP_EXTERN zip_int64_t zip_source_make_command_bitmap(zip_source_cmd_t, ...);445ZIP_EXTERN int zip_source_open(zip_source_t *_Nonnull);446ZIP_EXTERN zip_int64_t zip_source_read(zip_source_t *_Nonnull, void *_Nonnull, zip_uint64_t);447ZIP_EXTERN void zip_source_rollback_write(zip_source_t *_Nonnull);448ZIP_EXTERN int zip_source_seek(zip_source_t *_Nonnull, zip_int64_t, int);449ZIP_EXTERN zip_int64_t zip_source_seek_compute_offset(zip_uint64_t, zip_uint64_t, void *_Nonnull, zip_uint64_t, zip_error_t *_Nullable);450ZIP_EXTERN int zip_source_seek_write(zip_source_t *_Nonnull, zip_int64_t, int);451ZIP_EXTERN int zip_source_stat(zip_source_t *_Nonnull, zip_stat_t *_Nonnull);452ZIP_EXTERN zip_int64_t zip_source_tell(zip_source_t *_Nonnull);453ZIP_EXTERN zip_int64_t zip_source_tell_write(zip_source_t *_Nonnull);454#ifdef _WIN32455ZIP_EXTERN zip_source_t *zip_source_win32a(zip_t *, const char *, zip_uint64_t, zip_int64_t);456ZIP_EXTERN zip_source_t *zip_source_win32a_create(const char *, zip_uint64_t, zip_int64_t, zip_error_t *);457ZIP_EXTERN zip_source_t *zip_source_win32handle(zip_t *, void *, zip_uint64_t, zip_int64_t);458ZIP_EXTERN zip_source_t *zip_source_win32handle_create(void *, zip_uint64_t, zip_int64_t, zip_error_t *);459ZIP_EXTERN zip_source_t *zip_source_win32w(zip_t *, const wchar_t *, zip_uint64_t, zip_int64_t);460ZIP_EXTERN zip_source_t *zip_source_win32w_create(const wchar_t *, zip_uint64_t, zip_int64_t, zip_error_t *);461#endif462ZIP_EXTERN zip_int64_t zip_source_write(zip_source_t *_Nonnull, const void *_Nullable, zip_uint64_t);463ZIP_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);464ZIP_EXTERN int zip_stat(zip_t *_Nonnull, const char *_Nonnull, zip_flags_t, zip_stat_t *_Nonnull);465ZIP_EXTERN int zip_stat_index(zip_t *_Nonnull, zip_uint64_t, zip_flags_t, zip_stat_t *_Nonnull);466ZIP_EXTERN void zip_stat_init(zip_stat_t *_Nonnull);467ZIP_EXTERN const char *_Nonnull zip_strerror(zip_t *_Nonnull);468ZIP_EXTERN int zip_unchange(zip_t *_Nonnull, zip_uint64_t);469ZIP_EXTERN int zip_unchange_all(zip_t *_Nonnull);470ZIP_EXTERN int zip_unchange_archive(zip_t *_Nonnull);471ZIP_EXTERN int zip_compression_method_supported(zip_int32_t method, int compress);472ZIP_EXTERN int zip_encryption_method_supported(zip_uint16_t method, int encode);473474#ifdef __cplusplus475}476#endif477478#endif /* _HAD_ZIP_H */479480481