Merge no-meta branch
--HG--
branch : HEAD
diff --git a/lib/zip.h b/lib/zip.h
index 6853136..d97f489 100644
--- a/lib/zip.h
+++ b/lib/zip.h
@@ -2,7 +2,7 @@
#define _HAD_ZIP_H
/*
- $NiH: zip.h,v 1.34 2003/10/05 16:05:22 dillo Exp $
+ $NiH: zip.h,v 1.35.4.6 2004/04/14 09:21:33 dillo Exp $
zip.h -- exported declarations.
Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
@@ -43,21 +43,25 @@
#include <zlib.h>
#include <time.h>
-enum zip_state { ZIP_ST_UNCHANGED, ZIP_ST_DELETED, ZIP_ST_REPLACED,
- ZIP_ST_ADDED, ZIP_ST_RENAMED };
-enum zip_cmd { ZIP_CMD_INIT, ZIP_CMD_READ, ZIP_CMD_META, ZIP_CMD_CLOSE };
-
/* flags for zip_open */
+
#define ZIP_CREATE 1
#define ZIP_EXCL 2
#define ZIP_CHECKCONS 4
-/* flags for zip_name_locate */
-#define ZIP_NAME_NOCASE 1
-#define ZIP_NAME_NODIR 2
-int zip_err; /* global variable for errors returned by the low-level
- library */
+/* 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 (XXX: rename) */
+#define ZIP_FL_UNCHANGED 8 /* use original data, ignoring changes */
+
+/* flags for zip_add and zip_replace */
+
+#define ZIP_CH_ISCOMP 1 /* data returned by ch_func is compressed */
+
+/* libzip error codes */
#define ZERR_OK 0 /* N No error */
#define ZERR_MULTIDISK 1 /* N Multi-disk zip archives not supported */
@@ -82,33 +86,47 @@
#define ZERR_INTERNAL 20 /* N Internal error */
#define ZERR_INCONS 21 /* N Zip archive inconsistent */
+
+/* type of system error value */
+
#define ZIP_ET_NONE 0 /* sys_err unused */
#define ZIP_ET_SYS 1 /* sys_err is errno */
#define ZIP_ET_ZIP 2 /* sys_err is zlib error code */
-/* zip file */
+/* compression methods */
-typedef int (*zip_read_func)(void *state, void *data,
- int len, enum zip_cmd cmd);
+#define ZIP_CM_DEFAULT -1 /* better of deflate or store */
+#define ZIP_CM_STORE 0 /* stored (uncompressed) */
+#define ZIP_CM_SHRINK 1 /* shrunk */
+#define ZIP_CM_REDUCE_1 2 /* reduced with factor 1 */
+#define ZIP_CM_REDUCE_2 3 /* reduced with factor 2 */
+#define ZIP_CM_REDUCE_3 4 /* reduced with factor 3 */
+#define ZIP_CM_REDUCE_4 5 /* reduced with factor 4 */
+#define ZIP_CM_IMPLODE 6 /* imploded */
+#define ZIP_CM_DEFLATE 8 /* deflated */
+#define ZIP_CM_DEFLATE64 9 /* deflate64 */
+#define ZIP_CM_PKWARE_IMPLODE 10 /* PKWARE imploding */
-struct zip_meta {
- unsigned short version_made, version_need, bitflags, comp_method,
- disknrstart, int_attr;
- time_t last_mod;
- unsigned int crc, comp_size, uncomp_size, ext_attr, local_offset;
- unsigned short ef_len, lef_len, fc_len;
- unsigned char *ef, *lef, *fc;
+
+
+enum zip_cmd {
+ ZIP_CMD_INIT, /* prepare for reading */
+ ZIP_CMD_READ, /* read data */
+ ZIP_CMD_CLOSE, /* close and cleanup */
+ ZIP_CMD_STAT /* for compressed data */
};
+typedef ssize_t (*zip_read_func)(void *state, void *data,
+ size_t len, enum zip_cmd cmd);
+
struct zip_stat {
const char *name; /* name of the file */
int index; /* index within archive */
unsigned int crc; /* crc of file data */
- unsigned int size; /* size of file (uncompressed) */
time_t mtime; /* modification time */
- unsigned int comp_size; /* size of file (compressed) */
+ off_t size; /* size of file (uncompressed) */
+ off_t comp_size; /* size of file (compressed) */
unsigned short comp_method; /* compression method used */
- /* unsigned short bitflags; */
};
struct zip;
@@ -116,47 +134,35 @@
-int zip_add(struct zip *, const char *, struct zip_meta *,
- zip_read_func, void *, int);
-int zip_add_data(struct zip *, const char *, struct zip_meta *,
- const char *, int, int);
-int zip_add_file(struct zip *, const char *, struct zip_meta *,
- const char *, int, int);
-int zip_add_filep(struct zip *, const char *, struct zip_meta *,
- FILE *, int, int);
-int zip_add_zip(struct zip *, const char *, struct zip_meta *,
- struct zip *, int, int, int);
+int zip_add(struct zip *, const char *, zip_read_func, void *, int);
+int zip_add_data(struct zip *, const char *, const void *, off_t, int);
+int zip_add_file(struct zip *, const char *, const char *, off_t, off_t);
+int zip_add_filep(struct zip *, const char *, FILE *, off_t, off_t);
+int zip_add_zip(struct zip *, const char *, struct zip *, int, int,
+ off_t, off_t);
int zip_close(struct zip *);
int zip_delete(struct zip *, int);
-int zip_error_str(char *, int, int, int);
+int zip_error_str(char *, size_t, int, int);
int zip_error_sys_type(int);
int zip_fclose(struct zip_file *);
void zip_file_get_error(struct zip_file *, int *, int *);
const char *zip_file_strerror(struct zip_file *);
struct zip_file *zip_fopen(struct zip *, const char *, int);
-struct zip_file *zip_fopen_index(struct zip *, int);
-int zip_fread(struct zip_file *, char *, int);
-void zip_free_meta(struct zip_meta *);
+struct zip_file *zip_fopen_index(struct zip *, int, int);
+ssize_t zip_fread(struct zip_file *, void *, size_t);
void zip_get_error(struct zip *, int *, int *);
-struct zip_meta *zip_get_meta(struct zip *, int);
const char *zip_get_name(struct zip *, int);
int zip_get_num_files(struct zip *);
int zip_name_locate(struct zip *, const char *, int);
-struct zip_meta *zip_new_meta(void);
struct zip *zip_open(const char *, int, int *);
int zip_rename(struct zip *, int, const char *);
-int zip_replace(struct zip *, int, const char *, struct zip_meta *,
- zip_read_func, void *, int);
-int zip_replace_data(struct zip *, int, const char *, struct zip_meta *,
- const char *, int, int);
-int zip_replace_file(struct zip *, int, const char *, struct zip_meta *,
- const char *, int, int);
-int zip_replace_filep(struct zip *, int, const char *, struct zip_meta *,
- FILE *, int, int);
-int zip_replace_zip(struct zip *, int, const char *, struct zip_meta *,
- struct zip *, int, int, int);
+int zip_replace(struct zip *, int, zip_read_func, void *, int);
+int zip_replace_data(struct zip *, int, const void *, off_t, int);
+int zip_replace_file(struct zip *, int, const char *, off_t, off_t);
+int zip_replace_filep(struct zip *, int, FILE *, off_t, off_t);
+int zip_replace_zip(struct zip *, int, struct zip *, int, int, off_t, off_t);
int zip_stat(struct zip *, const char *, int, struct zip_stat *);
-int zip_stat_index(struct zip *, int, struct zip_stat *);
+int zip_stat_index(struct zip *, int, int, struct zip_stat *);
const char *zip_strerror(struct zip *);
int zip_unchange(struct zip *, int);
int zip_unchange_all(struct zip *);