summaryrefslogtreecommitdiff
path: root/ext/zip/lib/zip.h
diff options
context:
space:
mode:
Diffstat (limited to 'ext/zip/lib/zip.h')
-rw-r--r--ext/zip/lib/zip.h241
1 files changed, 146 insertions, 95 deletions
diff --git a/ext/zip/lib/zip.h b/ext/zip/lib/zip.h
index f11c9aba7f..2665291abc 100644
--- a/ext/zip/lib/zip.h
+++ b/ext/zip/lib/zip.h
@@ -3,7 +3,7 @@
/*
zip.h -- exported declarations.
- Copyright (C) 1999-2011 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2012 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -20,7 +20,7 @@
3. The names of the authors may not be used to endorse or promote
products derived from this software without specific prior
written permission.
-
+
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -35,24 +35,28 @@
*/
-#include "main/php.h"
+#include "main/php.h"
+
#ifdef PHP_WIN32
-# include "zip_win32.h"
-# ifdef PHP_ZIP_EXPORTS
-# define ZIP_EXTERN(rt) __declspec(dllexport)rt _stdcall
-# else
-# define ZIP_EXTERN(rt) rt
-# endif
+#ifdef PHP_ZIP_EXPORTS
+# define ZIP_EXTERN __declspec(dllexport) _stdcall
+# else
+# define ZIP_EXTERN
+# endif
#elif defined(__GNUC__) && __GNUC__ >= 4
-# define ZIP_EXTERN(rt) __attribute__ ((visibility("default"))) rt
+# define ZIP_EXTERN __attribute__ ((visibility("default")))
#else
-# define ZIP_EXTERN(rt) rt
+# define ZIP_EXTERN
#endif
+
-BEGIN_EXTERN_C()
-#include "zipconf.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <zipconf.h>
#include <sys/types.h>
#include <stdio.h>
@@ -63,27 +67,41 @@ BEGIN_EXTERN_C()
#define ZIP_CREATE 1
#define ZIP_EXCL 2
#define ZIP_CHECKCONS 4
-#define ZIP_OVERWRITE 8
+#define ZIP_TRUNCATE 8
/* flags for zip_name_locate, zip_fopen, zip_stat, ... */
-#define ZIP_FL_NOCASE 1 /* ignore case on name lookup */
-#define ZIP_FL_NODIR 2 /* ignore directory component */
-#define ZIP_FL_COMPRESSED 4 /* read compressed data */
-#define ZIP_FL_UNCHANGED 8 /* use original data, ignoring changes */
-#define ZIP_FL_RECOMPRESS 16 /* force recompression of data */
-#define ZIP_FL_ENCRYPTED 32 /* read encrypted data
- (implies ZIP_FL_COMPRESSED) */
+#define ZIP_FL_NOCASE 1u /* ignore case on name lookup */
+#define ZIP_FL_NODIR 2u /* ignore directory component */
+#define ZIP_FL_COMPRESSED 4u /* read compressed data */
+#define ZIP_FL_UNCHANGED 8u /* use original data, ignoring changes */
+#define ZIP_FL_RECOMPRESS 16u /* force recompression of data */
+#define ZIP_FL_ENCRYPTED 32u /* read encrypted data (implies ZIP_FL_COMPRESSED) */
+#define ZIP_FL_ENC_GUESS 0u /* guess string encoding (is default) */
+#define ZIP_FL_ENC_RAW 64u /* get unmodified string */
+#define ZIP_FL_ENC_STRICT 128u /* follow specification strictly */
+#define ZIP_FL_LOCAL 256u /* in local header */
+#define ZIP_FL_CENTRAL 512u /* in central directory */
+/* 1024u reserved for internal use */
+#define ZIP_FL_ENC_UTF_8 2048u /* string is UTF-8 encoded */
+#define ZIP_FL_ENC_CP437 4096u /* string is CP437 encoded */
+#define ZIP_FL_OVERWRITE 8192u /* zip_file_add: if file with name exists, overwrite (replace) it */
/* archive global flags flags */
-#define ZIP_AFL_TORRENT 1 /* torrent zipped */
-#define ZIP_AFL_RDONLY 2 /* read only -- cannot be cleared */
+#define ZIP_AFL_TORRENT 1u /* torrent zipped */
+#define ZIP_AFL_RDONLY 2u /* read only -- cannot be cleared */
+
+
+/* create a new extra field */
+#define ZIP_EXTRA_FIELD_ALL ZIP_UINT16_MAX
+#define ZIP_EXTRA_FIELD_NEW ZIP_UINT16_MAX
/* flags for compression and encryption sources */
+#define ZIP_CODEC_DECODE 0 /* decompress/decrypt (encode flag not set) */
#define ZIP_CODEC_ENCODE 1 /* compress/encrypt */
@@ -165,6 +183,29 @@ BEGIN_EXTERN_C()
#endif
#define ZIP_EM_UNKNOWN 0xffff /* unknown algorithm */
+#define ZIP_OPSYS_DOS 0x00u
+#define ZIP_OPSYS_AMIGA 0x01u
+#define ZIP_OPSYS_OPENVMS 0x02u
+#define ZIP_OPSYS_UNIX 0x03u
+#define ZIP_OPSYS_VM_CMS 0x04u
+#define ZIP_OPSYS_ATARI_ST 0x05u
+#define ZIP_OPSYS_OS_2 0x06u
+#define ZIP_OPSYS_MACINTOSH 0x07u
+#define ZIP_OPSYS_Z_SYSTEM 0x08u
+#define ZIP_OPSYS_CPM 0x09u
+#define ZIP_OPSYS_WINDOWS_NTFS 0x0au
+#define ZIP_OPSYS_MVS 0x0bu
+#define ZIP_OPSYS_VSE 0x0cu
+#define ZIP_OPSYS_ACORN_RISC 0x0du
+#define ZIP_OPSYS_VFAT 0x0eu
+#define ZIP_OPSYS_ALTERNATE_MVS 0x0fu
+#define ZIP_OPSYS_BEOS 0x10u
+#define ZIP_OPSYS_TANDEM 0x11u
+#define ZIP_OPSYS_OS_400 0x12u
+#define ZIP_OPSYS_OS_X 0x13u
+
+#define ZIP_OPSYS_DEFAULT ZIP_OPSYS_UNIX
+
enum zip_source_cmd {
@@ -178,15 +219,15 @@ enum zip_source_cmd {
#define ZIP_SOURCE_ERR_LOWER -2
-#define ZIP_STAT_NAME 0x0001
-#define ZIP_STAT_INDEX 0x0002
-#define ZIP_STAT_SIZE 0x0004
-#define ZIP_STAT_COMP_SIZE 0x0008
-#define ZIP_STAT_MTIME 0x0010
-#define ZIP_STAT_CRC 0x0020
-#define ZIP_STAT_COMP_METHOD 0x0040
-#define ZIP_STAT_ENCRYPTION_METHOD 0x0080
-#define ZIP_STAT_FLAGS 0x0100
+#define ZIP_STAT_NAME 0x0001u
+#define ZIP_STAT_INDEX 0x0002u
+#define ZIP_STAT_SIZE 0x0004u
+#define ZIP_STAT_COMP_SIZE 0x0008u
+#define ZIP_STAT_MTIME 0x0010u
+#define ZIP_STAT_CRC 0x0020u
+#define ZIP_STAT_COMP_METHOD 0x0040u
+#define ZIP_STAT_ENCRYPTION_METHOD 0x0080u
+#define ZIP_STAT_FLAGS 0x0100u
struct zip_stat {
zip_uint64_t valid; /* which fields have valid values */
@@ -205,72 +246,82 @@ struct zip;
struct zip_file;
struct zip_source;
+typedef zip_uint32_t zip_flags_t;
+
typedef zip_int64_t (*zip_source_callback)(void *, void *, zip_uint64_t,
enum zip_source_cmd);
-ZIP_EXTERN(zip_int64_t) zip_add(struct zip *, const char *, struct zip_source *);
-ZIP_EXTERN(zip_int64_t) zip_add_dir(struct zip *, const char *);
-ZIP_EXTERN(int) zip_close(struct zip *);
-ZIP_EXTERN(int) zip_delete(struct zip *, zip_uint64_t);
-ZIP_EXTERN(void) zip_error_clear(struct zip *);
-ZIP_EXTERN(void) zip_error_get(struct zip *, int *, int *);
-ZIP_EXTERN(int) zip_error_get_sys_type(int);
-ZIP_EXTERN(int) zip_error_to_str(char *, zip_uint64_t, int, int);
-ZIP_EXTERN(int) zip_fclose(struct zip_file *);
-ZIP_EXTERN(struct zip *)zip_fdopen(int, int, int *);
-ZIP_EXTERN(void) zip_file_error_clear(struct zip_file *);
-ZIP_EXTERN(void) zip_file_error_get(struct zip_file *, int *, int *);
-ZIP_EXTERN(const char *)zip_file_strerror(struct zip_file *);
-ZIP_EXTERN(struct) zip_file *zip_fopen(struct zip *, const char *, int);
-ZIP_EXTERN(struct) zip_file *zip_fopen_encrypted(struct zip *, const char *,
- int, const char *);
-ZIP_EXTERN(struct zip_file *)zip_fopen_index(struct zip *, zip_uint64_t, int);
-ZIP_EXTERN(struct zip_file *)zip_fopen_index_encrypted(struct zip *,
- zip_uint64_t, int,
- const char *);
-ZIP_EXTERN(zip_int64_t) zip_fread(struct zip_file *, void *, zip_uint64_t);
-ZIP_EXTERN(const char *)zip_get_archive_comment(struct zip *, int *, int);
-ZIP_EXTERN(int) zip_get_archive_flag(struct zip *, int, int);
-ZIP_EXTERN(const char *)zip_get_file_comment(struct zip *, zip_uint64_t,
- int *, int);
-ZIP_EXTERN(const char *)zip_get_file_extra(struct zip *, zip_uint64_t,
- int *, int);
-ZIP_EXTERN(const char *)zip_get_name(struct zip *, zip_uint64_t, int);
-ZIP_EXTERN(zip_uint64_t) zip_get_num_entries(struct zip *, int);
-ZIP_EXTERN(int) zip_get_num_files(struct zip *); /* deprecated, use zip_get_num_entries instead */
-ZIP_EXTERN(int) zip_name_locate(struct zip *, const char *, int);
-ZIP_EXTERN(struct zip *)zip_open(const char *, int, int *);
-ZIP_EXTERN(int) zip_rename(struct zip *, zip_uint64_t, const char *);
-ZIP_EXTERN(int) zip_replace(struct zip *, zip_uint64_t, struct zip_source *);
-ZIP_EXTERN(int) zip_set_archive_comment(struct zip *, const char *, int);
-ZIP_EXTERN(int) zip_set_archive_flag(struct zip *, int, int);
-ZIP_EXTERN(int) zip_set_default_password(struct zip *, const char *);
-ZIP_EXTERN(int) zip_set_file_comment(struct zip *, zip_uint64_t,
- const char *, int);
-ZIP_EXTERN(int) zip_set_file_extra(struct zip *, zip_uint64_t,
- const char *, int);
-ZIP_EXTERN(struct) zip_source *zip_source_buffer(struct zip *, const void *,
- zip_uint64_t, int);
-ZIP_EXTERN(struct) zip_source *zip_source_file(struct zip *, const char *,
- zip_uint64_t, zip_int64_t);
-ZIP_EXTERN(struct) zip_source *zip_source_filep(struct zip *, FILE *,
- zip_uint64_t, zip_int64_t);
-ZIP_EXTERN(void) zip_source_free(struct zip_source *);
-ZIP_EXTERN(struct zip_source *)zip_source_function(struct zip *,
- zip_source_callback, void *);
-ZIP_EXTERN(struct zip_source *)zip_source_zip(struct zip *, struct zip *,
- zip_uint64_t, int,
- zip_uint64_t, zip_int64_t);
-ZIP_EXTERN(int) zip_stat(struct zip *, const char *, int, struct zip_stat *);
-ZIP_EXTERN(int) zip_stat_index(struct zip *, zip_uint64_t, int,
- struct zip_stat *);
-ZIP_EXTERN(void) zip_stat_init(struct zip_stat *);
-ZIP_EXTERN(const char *)zip_strerror(struct zip *);
-ZIP_EXTERN(int) zip_unchange(struct zip *, zip_uint64_t);
-ZIP_EXTERN(int) zip_unchange_all(struct zip *);
-ZIP_EXTERN(int) zip_unchange_archive(struct zip *);
-
-END_EXTERN_C();
+#ifndef ZIP_DISABLE_DEPRECATED
+ZIP_EXTERN zip_int64_t zip_add(struct zip *, const char *, struct zip_source *); /* use zip_file_add */
+ZIP_EXTERN zip_int64_t zip_add_dir(struct zip *, const char *); /* use zip_dir_add */
+ZIP_EXTERN const char *zip_get_file_comment(struct zip *, zip_uint64_t, int *, int); /* use zip_file_get_comment */
+ZIP_EXTERN int zip_get_num_files(struct zip *); /* use zip_get_num_entries instead */
+ZIP_EXTERN int zip_rename(struct zip *, zip_uint64_t, const char *); /* use zip_file_rename */
+ZIP_EXTERN int zip_replace(struct zip *, zip_uint64_t, struct zip_source *); /* use zip_file_replace */
+ZIP_EXTERN int zip_set_file_comment(struct zip *, zip_uint64_t, const char *, int); /* use zip_file_set_comment */
+#endif
+
+ZIP_EXTERN int zip_archive_set_tempdir(struct zip *, const char *);
+ZIP_EXTERN int zip_close(struct zip *);
+ZIP_EXTERN int zip_delete(struct zip *, zip_uint64_t);
+ZIP_EXTERN zip_int64_t zip_dir_add(struct zip *, const char *, zip_flags_t);
+ZIP_EXTERN void zip_discard(struct zip *);
+ZIP_EXTERN void zip_error_clear(struct zip *);
+ZIP_EXTERN void zip_error_get(struct zip *, int *, int *);
+ZIP_EXTERN int zip_error_get_sys_type(int);
+ZIP_EXTERN int zip_error_to_str(char *, zip_uint64_t, int, int);
+ZIP_EXTERN int zip_fclose(struct zip_file *);
+ZIP_EXTERN struct zip *zip_fdopen(int, int, int *);
+ZIP_EXTERN zip_int64_t zip_file_add(struct zip *, const char *, struct zip_source *, zip_flags_t);
+ZIP_EXTERN void zip_file_error_clear(struct zip_file *);
+ZIP_EXTERN void zip_file_error_get(struct zip_file *, int *, int *);
+ZIP_EXTERN int zip_file_extra_field_delete(struct zip *, zip_uint64_t, zip_uint16_t, zip_flags_t);
+ZIP_EXTERN int zip_file_extra_field_delete_by_id(struct zip *, zip_uint64_t, zip_uint16_t, zip_uint16_t, zip_flags_t);
+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);
+ZIP_EXTERN zip_int16_t zip_file_extra_fields_count(struct zip *, zip_uint64_t, zip_flags_t);
+ZIP_EXTERN zip_int16_t zip_file_extra_fields_count_by_id(struct zip *, zip_uint64_t, zip_uint16_t, zip_flags_t);
+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);
+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);
+ZIP_EXTERN const char *zip_file_get_comment(struct zip *, zip_uint64_t, zip_uint32_t *, zip_flags_t);
+ZIP_EXTERN int zip_file_get_external_attributes(struct zip *, zip_uint64_t, zip_flags_t, zip_uint8_t *, zip_uint32_t *);
+ZIP_EXTERN int zip_file_rename(struct zip *, zip_uint64_t, const char *, zip_flags_t);
+ZIP_EXTERN int zip_file_replace(struct zip *, zip_uint64_t, struct zip_source *, zip_flags_t);
+ZIP_EXTERN int zip_file_set_comment(struct zip *, zip_uint64_t, const char *, zip_uint16_t, zip_flags_t);
+ZIP_EXTERN int zip_file_set_external_attributes(struct zip *, zip_uint64_t, zip_flags_t, zip_uint8_t, zip_uint32_t);
+ZIP_EXTERN const char *zip_file_strerror(struct zip_file *);
+ZIP_EXTERN struct zip_file *zip_fopen(struct zip *, const char *, zip_flags_t);
+ZIP_EXTERN struct zip_file *zip_fopen_encrypted(struct zip *, const char *, zip_flags_t, const char *);
+ZIP_EXTERN struct zip_file *zip_fopen_index(struct zip *, zip_uint64_t, zip_flags_t);
+ZIP_EXTERN struct zip_file *zip_fopen_index_encrypted(struct zip *, zip_uint64_t, zip_flags_t, const char *);
+ZIP_EXTERN zip_int64_t zip_fread(struct zip_file *, void *, zip_uint64_t);
+ZIP_EXTERN const char *zip_get_archive_comment(struct zip *, int *, zip_flags_t);
+ZIP_EXTERN int zip_get_archive_flag(struct zip *, zip_flags_t, zip_flags_t);
+ZIP_EXTERN const char *zip_get_name(struct zip *, zip_uint64_t, zip_flags_t);
+ZIP_EXTERN zip_int64_t zip_get_num_entries(struct zip *, zip_flags_t);
+ZIP_EXTERN zip_int64_t zip_name_locate(struct zip *, const char *, zip_flags_t);
+ZIP_EXTERN struct zip *zip_open(const char *, int, int *);
+ZIP_EXTERN int zip_set_archive_comment(struct zip *, const char *, zip_uint16_t);
+ZIP_EXTERN int zip_set_archive_flag(struct zip *, zip_flags_t, int);
+ZIP_EXTERN int zip_set_default_password(struct zip *, const char *);
+ZIP_EXTERN int zip_set_file_compression(struct zip *, zip_uint64_t, zip_int32_t, zip_uint32_t);
+ZIP_EXTERN struct zip_source *zip_source_buffer(struct zip *, const void *, zip_uint64_t, int);
+ZIP_EXTERN struct zip_source *zip_source_file(struct zip *, const char *, zip_uint64_t, zip_int64_t);
+ZIP_EXTERN struct zip_source *zip_source_filep(struct zip *, FILE *, zip_uint64_t, zip_int64_t);
+ZIP_EXTERN void zip_source_free(struct zip_source *);
+ZIP_EXTERN struct zip_source *zip_source_function(struct zip *, zip_source_callback, void *);
+ZIP_EXTERN struct zip_source *zip_source_zip(struct zip *, struct zip *, zip_uint64_t, zip_flags_t, zip_uint64_t, zip_int64_t);
+ZIP_EXTERN int zip_stat(struct zip *, const char *, zip_flags_t, struct zip_stat *);
+ZIP_EXTERN int zip_stat_index(struct zip *, zip_uint64_t, zip_flags_t, struct zip_stat *);
+ZIP_EXTERN void zip_stat_init(struct zip_stat *);
+ZIP_EXTERN const char *zip_strerror(struct zip *);
+ZIP_EXTERN int zip_unchange(struct zip *, zip_uint64_t);
+ZIP_EXTERN int zip_unchange_all(struct zip *);
+ZIP_EXTERN int zip_unchange_archive(struct zip *);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _HAD_ZIP_H */