fix building when NO_CRYPT is used

forward ported from zip-2.32

http://bugs.gentoo.org/238398

--- zip.c
+++ zip.c
@@ -3452,6 +3452,9 @@ char **argv;            /* command line tokens */
 
   /* Key not yet specified.  If needed, get/verify it now. */
   if (key_needed) {
+#if !CRYPT
+    ZIPERR(ZE_PARMS, "encryption not supported");
+#else /* CRYPT */
     if ((key = malloc(IZ_PWLEN+1)) == NULL) {
       ZIPERR(ZE_MEM, "was getting encryption password");
     }
@@ -3478,6 +3481,7 @@ char **argv;            /* command line tokens */
     if (r) {
       ZIPERR(ZE_PARMS, "password verification failed");
     }
+#endif
   }
   if (key) {
     /* if -P "" could get here */
--- zipcloak.c
+++ zipcloak.c
@@ -744,6 +744,28 @@ struct option_struct far options[] = {
 
 int main OF((void));
 
+void zipmessage_nl(a, nl)
+ZCONST char *a;
+int nl;
+{
+}
+
+void zipmessage(a, b)
+ZCONST char *a, *b;
+{
+}
+
+int set_filetype(out_path)
+  char *out_path;
+{
+}
+
+int rename_split(temp_name, out_path)
+  char *temp_name;
+  char *out_path;
+{
+}
+
 void zipwarn(msg1, msg2)
 ZCONST char  *msg1, *msg2;
 {
