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 *);