For ZIP_CM_DEFAULT: deflate stored sources, don't recompress compressed ones.

Also, have zip_source_deflate handle ZIP_CM_DEFAULT in preparation
of actually implementing it.
diff --git a/lib/zip_close.c b/lib/zip_close.c
index 66a0895..aee16aa 100644
--- a/lib/zip_close.c
+++ b/lib/zip_close.c
@@ -299,7 +299,7 @@
 	de->comp_method = ZIP_CM_DEFLATE;
     }
 
-    if (st.comp_method != de->comp_method || st.comp_method == ZIP_CM_STORE) {
+    if (st.comp_method == ZIP_CM_STORE || (de->comp_method != ZIP_CM_DEFAULT && st.comp_method != de->comp_method)) {
 	struct zip_source *s_store, *s_crc;
 	zip_compression_implementation comp_impl;
 	
diff --git a/lib/zip_get_compression_implementation.c b/lib/zip_get_compression_implementation.c
index 8d4ccb6..82128f3 100644
--- a/lib/zip_get_compression_implementation.c
+++ b/lib/zip_get_compression_implementation.c
@@ -38,9 +38,9 @@
 
 
 ZIP_EXTERN zip_compression_implementation
-zip_get_compression_implementation(zip_uint16_t cm)
+zip_get_compression_implementation(zip_int32_t cm)
 {
-    if (cm == ZIP_CM_DEFLATE)
+    if (cm == ZIP_CM_DEFLATE || cm == ZIP_CM_DEFAULT)
 	return zip_source_deflate;
     return NULL;
 }
diff --git a/lib/zip_source_deflate.c b/lib/zip_source_deflate.c
index 0cbcd7c..e651400 100644
--- a/lib/zip_source_deflate.c
+++ b/lib/zip_source_deflate.c
@@ -62,12 +62,12 @@
 
 ZIP_EXTERN struct zip_source *
 zip_source_deflate(struct zip *za, struct zip_source *src,
-		   zip_uint16_t cm, int flags)
+		   zip_int32_t cm, int flags)
 {
     struct deflate *ctx;
     struct zip_source *s2;
 
-    if (src == NULL || cm != ZIP_CM_DEFLATE) {
+    if (src == NULL || (cm != ZIP_CM_DEFLATE && cm != ZIP_CM_DEFAULT)) {
 	_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
 	return NULL;
     }
diff --git a/lib/zipint.h b/lib/zipint.h
index a03fe7c..0c334c5 100644
--- a/lib/zipint.h
+++ b/lib/zipint.h
@@ -125,13 +125,13 @@
 
 typedef struct zip_source *(*zip_compression_implementation)(struct zip *,
 						     struct zip_source *,
-						     zip_uint16_t, int);
+						     zip_int32_t, int);
 typedef struct zip_source *(*zip_encryption_implementation)(struct zip *,
 						    struct zip_source *,
 						    zip_uint16_t, int,
 						    const char *);
 
-zip_compression_implementation zip_get_compression_implementation(zip_uint16_t);
+zip_compression_implementation zip_get_compression_implementation(zip_int32_t);
 zip_encryption_implementation zip_get_encryption_implementation(zip_uint16_t);
 
 
@@ -154,7 +154,7 @@
 				  int);
 struct zip_source *zip_source_deflate(struct zip *,
 				      struct zip_source *,
-				      zip_uint16_t, int);
+				      zip_int32_t, int);
 void zip_source_error(struct zip_source *, int *, int *);
 struct zip_source *zip_source_layered(struct zip *,
 				      struct zip_source *,