PatchSet 7723 
Date: 2008/01/31 20:49:45
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
updated zlib-zip

2008-01-31  Dalibor Topic  <[EMAIL PROTECTED]>

        * TODO: Updated.

        * libraries/javalib/zlib-zip/java/util/zip/ZipEntry.java,
        libraries/javalib/zlib-zip/java/util/zip/ZipInputStream.java,
        libraries/javalib/zlib-zip/java/util/zip/ZipOutputStream.java:
        Removed.

        * kaffe/kaffevm/debug.c (kaffe_dprintf): Changed prototype of
        max to size_t.

        * libraries/clib/zip/ZipFile.c: Include native.h amd zzip/zzip.h.
        (makeZipEntry, java_util_zip_ZipFile_openZipFile0,
        java_util_zip_ZipFile_closeZipFile0, 
java_util_zip_ZipFile_getZipFileSize0,
        java_util_zip_ZipFile_getZipEntry0, java_util_zip_ZipFile_getZipData0,
        java_util_zip_ZipFile_getZipEntries0) Rewritten to use zziplib.
        (getZipEntry) New helper function.

        * libraries/javalib/zlib-zip/Makefile.am (dist_zlib_JAVA):
        Removed /java/util/zip/ZipEntry.java, java/util/zip/ZipInputStream.java
        and java/util/zip/ZipOutputStream.java.

        * libraries/javalib/zlib-zip/java/util/zip/ZipFile.java (getZipEntry):
        New private helper method. (getEntry, getInputStream) Use getZipEntry
        to avoid infinte recursion with overridden getEntry.

Members: 
        ChangeLog:1.5224->1.5225 
        TODO:1.47->1.48 
        kaffe/kaffevm/debug.c:1.67->1.68 
        libraries/clib/zip/ZipFile.c:1.1->1.2 
        libraries/javalib/zlib-zip/Makefile.am:1.7->1.8 
        libraries/javalib/zlib-zip/Makefile.in:1.27->1.28 
        libraries/javalib/zlib-zip/java/util/zip/ZipEntry.java:1.1->1.2(DEAD) 
        libraries/javalib/zlib-zip/java/util/zip/ZipFile.java:1.1->1.2 
        
libraries/javalib/zlib-zip/java/util/zip/ZipInputStream.java:1.1->1.2(DEAD) 
        
libraries/javalib/zlib-zip/java/util/zip/ZipOutputStream.java:1.1->1.2(DEAD) 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.5224 kaffe/ChangeLog:1.5225
--- kaffe/ChangeLog:1.5224      Mon Jan 28 00:59:32 2008
+++ kaffe/ChangeLog     Thu Jan 31 20:49:45 2008
@@ -1,3 +1,30 @@
+2008-01-31  Dalibor Topic  <[EMAIL PROTECTED]>
+
+       * TODO: Updated.
+
+       * libraries/javalib/zlib-zip/java/util/zip/ZipEntry.java,
+       libraries/javalib/zlib-zip/java/util/zip/ZipInputStream.java,
+       libraries/javalib/zlib-zip/java/util/zip/ZipOutputStream.java:
+       Removed.
+
+       * kaffe/kaffevm/debug.c (kaffe_dprintf): Changed prototype of
+       max to size_t.
+
+       * libraries/clib/zip/ZipFile.c: Include native.h amd zzip/zzip.h.
+       (makeZipEntry, java_util_zip_ZipFile_openZipFile0, 
+       java_util_zip_ZipFile_closeZipFile0, 
java_util_zip_ZipFile_getZipFileSize0,
+       java_util_zip_ZipFile_getZipEntry0, java_util_zip_ZipFile_getZipData0, 
+       java_util_zip_ZipFile_getZipEntries0) Rewritten to use zziplib.
+       (getZipEntry) New helper function.
+
+       * libraries/javalib/zlib-zip/Makefile.am (dist_zlib_JAVA):
+       Removed /java/util/zip/ZipEntry.java, java/util/zip/ZipInputStream.java
+       and java/util/zip/ZipOutputStream.java.
+
+       * libraries/javalib/zlib-zip/java/util/zip/ZipFile.java (getZipEntry):
+       New private helper method. (getEntry, getInputStream) Use getZipEntry
+       to avoid infinte recursion with overridden getEntry.
+       
 2008-01-27  Dalibor Topic  <[EMAIL PROTECTED]>
 
        * config/arm/netbsd1/md.c,
Index: kaffe/TODO
diff -u kaffe/TODO:1.47 kaffe/TODO:1.48
--- kaffe/TODO:1.47     Tue Jan 22 14:42:16 2008
+++ kaffe/TODO  Thu Jan 31 20:49:45 2008
@@ -13,6 +13,7 @@
    * libjit could use a vmgenned interpreter, too.
 
 * Cleanup
+ * Don't use __USE_GNU use _GNU_SOURCE instead
  * cleanup JNI library loading to use libltdl exclusively.
  * Remove unused instructions from jits (nop, unimplemented)
 
Index: kaffe/kaffe/kaffevm/debug.c
diff -u kaffe/kaffe/kaffevm/debug.c:1.67 kaffe/kaffe/kaffevm/debug.c:1.68
--- kaffe/kaffe/kaffevm/debug.c:1.67    Tue Nov  7 00:59:10 2006
+++ kaffe/kaffe/kaffevm/debug.c Thu Jan 31 20:49:47 2008
@@ -429,7 +429,7 @@
 {
 
        int n;
-       int max;
+       size_t max;
        va_list args;
        ssize_t w = 0;
        int rc;
@@ -441,7 +441,7 @@
 #ifdef HAVE_VSNPRINTF
        max = bufferSz - bufferBegin - 1;
        assert(max > 0);
-       n = vsnprintf(debugBuffer + bufferBegin, (unsigned int)max, fmt, args);
+       n = vsnprintf(debugBuffer + bufferBegin, max, fmt, args);
 
        /* The return value is bytes *needed* not bytes *used* */
        if (n > max)
Index: kaffe/libraries/clib/zip/ZipFile.c
diff -u kaffe/libraries/clib/zip/ZipFile.c:1.1 
kaffe/libraries/clib/zip/ZipFile.c:1.2
--- kaffe/libraries/clib/zip/ZipFile.c:1.1      Sun Jul 23 15:48:26 2006
+++ kaffe/libraries/clib/zip/ZipFile.c  Thu Jan 31 20:49:47 2008
@@ -18,17 +18,38 @@
 #include "gtypes.h"
 #include "itypes.h"
 #include "jar.h"
+#include "native.h"
+
+#include <zzip/zzip.h>
 
 #include "java_util_zip_ZipEntry.h"
 #include "java_util_zip_ZipFile.h"
 #include "java_util_Vector.h"
 
-static Hjava_util_zip_ZipEntry* makeZipEntry(jarEntry*);
+static
+Hjava_util_zip_ZipEntry*
+makeZipEntry(ZZIP_FILE * entry, Hjava_lang_String* zname)
+{
+       Hjava_util_zip_ZipEntry* zentry;
+       ZZIP_STAT stat;
+       zzip_fstat(entry, &stat);
+
+       zentry = (Hjava_util_zip_ZipEntry*)
+           execute_java_constructor("java.util.zip.ZipEntry", NULL, NULL, 
+                                    "(Ljava/lang/String;)V", zname);
+       unhand(zentry)->size = stat.st_size;
+       unhand(zentry)->known |= java_util_zip_ZipEntry_KNOWN_SIZE;
+       unhand(zentry)->method = stat.d_compr;
+       unhand(zentry)->compressedSize = stat.d_csize;
+       unhand(zentry)->dostime = -1;
+       
+       return (zentry);
+}
 
 struct Horg_kaffe_util_Ptr*
 java_util_zip_ZipFile_openZipFile0(Hjava_lang_String* fname)
 {
-       jarFile* zip;
+       ZZIP_DIR* zip;
        char* str;
 
        str = checkPtr(stringJava2C(fname));
@@ -40,36 +61,52 @@
 void
 java_util_zip_ZipFile_closeZipFile0(struct Horg_kaffe_util_Ptr* zip)
 {
-       closeJarFile((jarFile*)zip);
+       closeJarFile((ZZIP_DIR*)zip);
 }
 
 jint
 java_util_zip_ZipFile_getZipFileSize0(struct Horg_kaffe_util_Ptr* zip)
 {
-       return ((jarFile*)zip)->count;
+  jint size = 0;
+
+  zzip_rewinddir((ZZIP_DIR *) zip);
+
+  while(zzip_readdir((ZZIP_DIR *) zip) != NULL)
+    ++size;
+
+  return size;
 }
 
-struct Hjava_util_zip_ZipEntry*
-java_util_zip_ZipFile_getZipEntry0(struct Horg_kaffe_util_Ptr* zip, 
Hjava_lang_String* zname)
+static
+ZZIP_FILE* getZipEntry(struct Horg_kaffe_util_Ptr* zip, Hjava_lang_String* 
zname)
 {
-       jarEntry* entry;
+       ZZIP_FILE* entry;
        char* str;
-       Hjava_util_zip_ZipEntry* zentry;
 
        str = checkPtr(stringJava2C(zname));
-       entry = lookupJarFile((jarFile*)zip, str);
+       entry = lookupJarFile((ZZIP_DIR*)zip, str);
        gc_free(str);
-       if (entry == NULL) {
-               return (NULL);
-       }
-       zentry = makeZipEntry(entry);
-       return (zentry);
+
+       return entry;
+}
+
+struct Hjava_util_zip_ZipEntry*
+java_util_zip_ZipFile_getZipEntry0(struct Horg_kaffe_util_Ptr* zip, 
Hjava_lang_String* zname)
+{
+  ZZIP_FILE* entry;
+  Hjava_util_zip_ZipEntry* zentry = NULL;
+
+  entry = getZipEntry(zip, zname);
+
+  if (entry != NULL)
+    zentry = makeZipEntry(entry, zname);
+  
+  return (zentry);
 }
 
 HArrayOfByte*
 java_util_zip_ZipFile_getZipData0(struct Horg_kaffe_util_Ptr* zip, struct 
Hjava_util_zip_ZipEntry* zentry)
 {
-       jarEntry entry;
        HArrayOfByte* array;
        uint8* buf = NULL;
        jlong size;
@@ -81,16 +118,13 @@
         }
        if( size > 0 )
        {
-               entry.fileName = NULL;
-               entry.uncompressedSize = size;
-               entry.compressionMethod = unhand(zentry)->method;
-               entry.compressedSize = unhand(zentry)->csize;
-               entry.localHeaderOffset = unhand(zentry)->offset;
-               
-               buf = getDataJarFile((jarFile*)zip, &entry);
-               if (buf == 0) {
-                       return (NULL);
-               }
+         ZZIP_FILE *entry = getZipEntry( zip, unhand(zentry)->name);
+         if (entry != NULL)
+           buf = getDataJarFile(entry);
+
+         if (buf == 0) {
+           return (NULL);
+         }
        }
        array = (HArrayOfByte*)AllocArray((jsize)size, TYPE_Byte);
        if( buf )
@@ -105,50 +139,31 @@
 java_util_zip_ZipFile_getZipEntries0(struct Horg_kaffe_util_Ptr* zip)
 {
        Hjava_util_Vector* vec;
-       jarFile* zfile;
-       jarEntry* entry;
+       ZZIP_DIR* zfile;
+       ZZIP_FILE* entry;
+       ZZIP_DIRENT * zip_entry = NULL; 
        HObject** elems;
        int i = 0;
-       unsigned int j;
-
-       zfile = (jarFile*)zip;
-       vec = (Hjava_util_Vector*)execute_java_constructor("java.util.Vector",
-           NULL, NULL, "(I)V", zfile->count);
+       jint num_entries = java_util_zip_ZipFile_getZipFileSize0(zip);
+       zfile = (ZZIP_DIR*)zip;
+       
+       vec = (Hjava_util_Vector*)
+         execute_java_constructor("java.util.Vector",
+                                  NULL, NULL, "(I)V", 
+                                  num_entries);
        elems = unhand_array(unhand(vec)->elementData)->body;
-       for (j = 0; j < zfile->tableSize; j++) {
-               entry = zfile->table[j];
-               while( entry )
-               {
-                       elems[i] = (HObject*)makeZipEntry(entry);
-                       i++;
-                       entry = entry->next;
-               }
-       }
-       unhand(vec)->elementCount = zfile->count;
 
-       return (vec);
-}
+       zzip_rewinddir(zfile);
+       do {
+         zip_entry = zzip_readdir(zfile);
+         if (NULL != zip_entry) {
+           entry = lookupJarFile(zfile, zip_entry->d_name);
+           elems[i] = (HObject*)makeZipEntry(entry, 
stringC2Java(zip_entry->d_name));
+           i++;
+         }
+       }while (zip_entry != NULL);
 
-static
-Hjava_util_zip_ZipEntry*
-makeZipEntry(jarEntry* entry)
-{
-       Hjava_util_zip_ZipEntry* zentry;
+       unhand(vec)->elementCount = num_entries;
 
-       zentry = (Hjava_util_zip_ZipEntry*)
-           execute_java_constructor("java.util.zip.ZipEntry", NULL, NULL, 
"()V");
-       unhand(zentry)->name =
-           checkPtr(stringC2Java(entry->fileName));
-       unhand(zentry)->crc = 0;
-       unhand(zentry)->size = entry->uncompressedSize;
-       unhand(zentry)->method = entry->compressionMethod;
-       unhand(zentry)->extra = NULL;
-       unhand(zentry)->comment = NULL;
-       unhand(zentry)->flag = 0;
-       unhand(zentry)->version = 0;
-       unhand(zentry)->csize = entry->compressedSize;
-       unhand(zentry)->offset = entry->localHeaderOffset;
-       unhand(zentry)->dosTime = entry->dosTime;
-
-       return (zentry);
+       return (vec);
 }
Index: kaffe/libraries/javalib/zlib-zip/Makefile.am
diff -u kaffe/libraries/javalib/zlib-zip/Makefile.am:1.7 
kaffe/libraries/javalib/zlib-zip/Makefile.am:1.8
--- kaffe/libraries/javalib/zlib-zip/Makefile.am:1.7    Sun Dec  9 20:47:21 2007
+++ kaffe/libraries/javalib/zlib-zip/Makefile.am        Thu Jan 31 20:49:48 2008
@@ -27,10 +27,7 @@
        java/util/zip/Deflater.java \
        java/util/zip/DeflaterOutputStream.java \
        java/util/zip/Inflater.java \
-       java/util/zip/ZipEntry.java \
        java/util/zip/ZipFile.java \
-       java/util/zip/ZipInputStream.java \
-       java/util/zip/ZipOutputStream.java \
        org/kaffe/util/Assert.java \
        org/kaffe/util/UTF8.java \
        org/kaffe/util/zip/SwitchInflater.java 
Index: kaffe/libraries/javalib/zlib-zip/Makefile.in
diff -u kaffe/libraries/javalib/zlib-zip/Makefile.in:1.27 
kaffe/libraries/javalib/zlib-zip/Makefile.in:1.28
--- kaffe/libraries/javalib/zlib-zip/Makefile.in:1.27   Tue Jan 22 23:21:47 2008
+++ kaffe/libraries/javalib/zlib-zip/Makefile.in        Thu Jan 31 20:49:48 2008
@@ -292,10 +292,7 @@
        java/util/zip/Deflater.java \
        java/util/zip/DeflaterOutputStream.java \
        java/util/zip/Inflater.java \
-       java/util/zip/ZipEntry.java \
        java/util/zip/ZipFile.java \
-       java/util/zip/ZipInputStream.java \
-       java/util/zip/ZipOutputStream.java \
        org/kaffe/util/Assert.java \
        org/kaffe/util/UTF8.java \
        org/kaffe/util/zip/SwitchInflater.java 
===================================================================
Checking out kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipEntry.java
RCS:  
/home/cvs/kaffe/kaffe/libraries/javalib/zlib-zip/java/util/zip/Attic/ZipEntry.java,v
VERS: 1.1
***************
--- kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipEntry.java        Thu Jan 
31 20:51:15 2008
+++ /dev/null   Sun Aug  4 19:57:58 2002
@@ -1,246 +0,0 @@
-/*
- * Java core library component.
- *
- * Copyright (c) 1997, 1998
- *      Transvirtual Technologies, Inc.  All rights reserved.
- *
- * See the file "license.terms" for information on usage and redistribution
- * of this file.
- */
-
-package java.util.zip;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-
-public class ZipEntry implements Cloneable, ZipConstants {
-
-    /* Clone method taken from GNU Classpath:
-     * Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
-     */
-  /**
-   * Creates a copy of this zip entry.
-   */
-  /**
-   * Clones the entry.
-   */
-  public Object clone()
-  {
-    try
-      {
-       // The JCL says that the `extra' field is also copied.
-       ZipEntry clone = (ZipEntry) super.clone();
-       if (extra != null)
-         clone.extra = (byte[]) extra.clone();
-       return clone;
-      }
-    catch (CloneNotSupportedException ex)
-      {
-       throw new InternalError();
-      }
-  }
-
-  public static final int STORED = Deflater.NO_COMPRESSION;
-  public static final int DEFLATED = Deflater.DEFLATED;
-
-  private String name;
-  private long time = -1;
-  int dosTime;
-  private long crc;
-  private long size;
-  private int method;
-  private byte[] extra;
-  private String comment;
-  int flag;
-  int version;
-  private long csize;
-  long offset;
-
-  /**
-   * this constructor is for internal library use only (makeZipEntry) 
-   */
-  ZipEntry()
-  {
-  }
-
-  public ZipEntry(String nm)
-  {
-    if (nm == null) {
-      throw new NullPointerException();
-    }
-    if (nm.length() > 0xFFFF) {
-      throw new IllegalArgumentException("name length > 0xFFFF");
-    }
-    name = nm;
-    time = new Date().getTime();
-    dosTime = computeDosTime(time);
-    crc = -1;
-    size = -1;
-    method = -1;
-    extra = null;
-    comment = null;
-    flag = 0;
-    version = 0;
-    csize = -1;
-    offset = 0;
-  }
-
-  /**
-   * Create a new ZipEntry with fields taken from the specified zip entry.
-   */
-  public ZipEntry(ZipEntry entry)
-  {
-    name = entry.name;
-    time = entry.time;
-    dosTime = entry.dosTime;
-    crc  = entry.crc;
-    size = entry.size;
-    method = entry.method;
-    extra = entry.extra;
-    comment = entry.comment;
-    flag = entry.flag;
-    version = entry.version;
-    csize = entry.csize;
-    offset = entry.offset;
-  }
-
-  public String getName()
-  {
-    return (name);
-  }
-
-  public void setTime(long tm)
-  {
-    time = tm;
-    dosTime = computeDosTime(tm);
-  }
-
-  public long getTime()
-  {
-    if (time == -1 && dosTime != 0)
-      setDosTime(dosTime);
-    return (time);
-  }
-
-  public void setSize(long size)
-  {
-    if (size < 0 || size > 0xFFFFFFFFL) {
-      throw new IllegalArgumentException("size < 0 or size > 0xFFFFFFFF");
-    }
-    this.size = size;
-  }
-
-  public long getSize()
-  {
-    return (size);
-  }
-
-  public void setCrc(long crcx)
-  {
-    if (crcx < 0 || crcx > 0xFFFFFFFFL) {
-      throw new IllegalArgumentException("crc < 0 or > 0xFFFFFFFF: " + crcx);
-    }
-    crc = crcx;
-  }
-
-  public long getCrc()
-  {
-    return (crc);
-  }
-
-  public void setMethod(int meth)
-  {
-    if (meth != STORED && meth != DEFLATED) {
-      throw new IllegalArgumentException("unsupported compression method");
-    }
-    method = meth;
-  }
-
-  public int getMethod()
-  {
-    return (method);
-  }
-
-  public void setExtra(byte extra[])
-  {
-    if ((extra != null) && (extra.length > 0xFFFFF)) {
-      throw new IllegalArgumentException("extra length > 0xFFFFF");
-    }
-    this.extra = extra;
-  }
-
-  public byte[] getExtra()
-  {
-    return (extra);
-  }
-
-  public void setComment(String comment)
-  {
-    if ((comment != null) && (comment.length() > 0xFFFF)) {
-      throw new IllegalArgumentException("comment length > 0xFFFF");
-    }
-    this.comment = comment;
-  }
-
-  public String getComment()
-  {
-    return (comment);
-  }
-
-  public void setCompressedSize(long csize)
-  {
-    if (csize < 0 || csize > 0xFFFFFFFFL) {
-       throw new IllegalArgumentException("csize < 0 or csize > 0xFFFFFFFF");
-    }
-
-    this.csize = csize;
-  }
-  
-  public long getCompressedSize()
-  {
-    return (csize);
-  }
-
-  public boolean isDirectory()
-  {
-    return (name.endsWith("/"));
-  }
-
-  public String toString()
-  {
-    return (getName());
-  }
-
-  // Encode timestamp in DOS format
-  int computeDosTime(long time) {
-    time = (time + 1) & ~1L; // Round up to even seconds.
-    Calendar cal = new GregorianCalendar();
-    cal.setTime(new Date(time));
-    return encodeDosTime(
-       cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1,
-       cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY),
-       cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
-  }
-
-  int encodeDosTime(int year, int month, int day, int hour,
-      int minute, int second) {
-    return (year < 1980) ? encodeDosTime(1980, 1, 1, 0, 0, 0) :
-      ((year - 1980) << 25) | (month << 21) | (day << 16) |
-      (hour << 11) | (minute << 5) | (second >>> 1);
-  }
-
-  void setDosTime(int date) {
-      Calendar cal = new GregorianCalendar();
-      cal.clear();
-      cal.set (((date >> 25) & 0x7F) + 1980,
-              ((date >> 21) & 0xF) - 1,
-              (date >> 16) & 0x1F,
-              (date >> 11) & 0x1F,
-              (date >> 5) & 0x3F,
-              (date << 1) & 0x3E); 
-      time = cal.getTime().getTime();
-      dosTime = date;
-  }
-
-}
Index: kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipFile.java
diff -u kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipFile.java:1.1 
kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipFile.java:1.2
--- kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipFile.java:1.1     Wed Aug 
 9 21:28:00 2006
+++ kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipFile.java Thu Jan 31 
20:49:48 2008
@@ -90,12 +90,17 @@
   return (all.elements());
 }
 
-public ZipEntry getEntry(String zname)
+private final ZipEntry getZipEntry(String zname)
 {
   checkIfClosed();
   return (getZipEntry0(zip, zname));
 }
 
+public ZipEntry getEntry(String zname)
+{
+    return (getZipEntry(zname));
+}
+
 public InputStream getInputStream(ZipEntry ze) throws IOException
 {
        if (ze == null) {
@@ -103,7 +108,7 @@
        }
 
        if (ze.getSize() == -1) {
-               ze = getEntry(ze.getName());
+               ze = getZipEntry(ze.getName());
        }
 
        if (ze == null) {
===================================================================
Checking out kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipInputStream.java
RCS:  
/home/cvs/kaffe/kaffe/libraries/javalib/zlib-zip/java/util/zip/Attic/ZipInputStream.java,v
VERS: 1.1
***************
--- kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipInputStream.java  Thu Jan 
31 20:51:15 2008
+++ /dev/null   Sun Aug  4 19:57:58 2002
@@ -1,228 +0,0 @@
-
-/*
- * Java core library component.
- *
- * Copyright (c) 1997, 1998
- *      Transvirtual Technologies, Inc.  All rights reserved.
- *
- * See the file "license.terms" for information on usage and redistribution
- * of this file.
- */
-
-package java.util.zip;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-
-import org.kaffe.util.UTF8;
-import org.kaffe.util.zip.SwitchInflater;
-
-public class ZipInputStream extends InflaterInputStream
-       implements ZipConstants {
-
-  private byte sigbuf[] = new byte[4];
-  private byte zheader[] = new byte[LOCHDR];
-  private byte dheader[] = new byte[EXTHDR];
-  private boolean gotSig;
-  private SwitchInflater sinf;
-  private ZipEntry entry;
-
-  public ZipInputStream(InputStream in) {
-    super(in, new SwitchInflater(true, true));
-    sinf = (SwitchInflater)inf;
-    sinf.reset();
-    sinf.setMode(true);
-    sinf.setLength(Integer.MAX_VALUE);
-  }
-
-  public ZipEntry getNextEntry() throws IOException {
-
-    closeEntry();
-
-    synchronized (this) {
-
-      // First, open the stream.
-      sinf.setLength(Integer.MAX_VALUE);
-
-      // Read next signature
-      int sig = readSig();
-      switch (sig) {
-      case (int)CENSIG:                // central dir: no more entries
-       return null;
-      case (int)LOCSIG:                // another entry
-       break;
-      default:                         // unexpected
-       return null;
-      }
-
-      // Read remainder of local header
-      readFully(zheader, sigbuf.length, zheader.length - sigbuf.length);
-
-      // Read filename; assume UTF-8 encoding
-      byte[] nameBuf = new byte[get16(zheader, LOCNAM)];
-      readFully(nameBuf, 0, nameBuf.length);
-
-      // Read extra field
-      byte[] extra = new byte[get16(zheader, LOCEXT)];
-      readFully(extra, 0, extra.length);
-
-      // Setup new entry
-      entry = createZipEntry(UTF8.decode(nameBuf));
-      entry.version = get16(zheader, LOCVER);
-      entry.flag    = get16(zheader, LOCFLG);
-
-      entry.setMethod(get16(zheader, LOCHOW));
-      entry.setDosTime(get32(zheader, LOCTIM));
-      entry.setCrc(get32(zheader, LOCCRC) & 0xffffffffL);
-
-      entry.setCompressedSize(get32(zheader, LOCSIZ) & 0xffffffffL);
-      entry.setSize(get32(zheader, LOCLEN) & 0xffffffffL);
-
-      entry.setExtra( extra );
-      entry.setComment("");
-      entry.offset = 0;
-
-      // Select the loader, simple or inflater.
-      if (entry.getMethod() == ZipEntry.STORED) {
-       sinf.setMode(true);
-       sinf.setLength((int)entry.getCompressedSize());
-      }
-      else {
-       sinf.setMode(false);
-      }
-
-      //System.out.println("ZipEntry (Post LOC): " + entry + ", meth="
-      // + entry.method + ", size=" + entry.size + ", csize=" + entry.csize
-      // + ", crc=" + entry.crc);
-
-      return entry;
-    }
-  }
-
-  public void closeEntry() throws IOException {
-    synchronized (this) {
-
-      // Don't do this twice
-      if (entry == null)
-       return;
-
-      // Cleanup
-      try {
-
-       // Skip remaining compressed data
-       byte[] buf = new byte[512];
-       while (read(buf, 0, buf.length) != -1);
-
-       // Reset inflate state machine
-       sinf.reset();
-       sinf.setMode(true);
-       sinf.setLength(Integer.MAX_VALUE);
-
-       // In the case where closeEntry() is called after reading
-       // a compressed entry, we need to read the DATA header that
-       // follows, if any, and update the ZipEntry with the info
-       // from the DATA header. This is so that users can find out
-       // the compressed and uncompressed sizes of data written in
-       // a compressed entry.
-       if (entry.getMethod() == ZipEntry.DEFLATED && peekSig() == (int)EXTSIG) 
{
-
-         // Consume signature
-         readSig();
-
-         // Read remainder of data header
-         readFully(dheader, sigbuf.length, dheader.length - sigbuf.length);
-
-         // Read CRC
-         int data_crc = get32(dheader, EXTCRC);
-         entry.setCrc(data_crc & 0xffffffffL);
-
-         // Read compressed size
-         int data_csize = get32(dheader, EXTSIZ);
-         entry.setCompressedSize(data_csize & 0xffffffffL);
-
-         // Read uncompressed size
-         int data_size = get32(dheader, EXTLEN);
-         if (data_crc == 0 && data_size != 0) {
-             throw new IOException(
-               "CRC error: data_crc=0, data_csize=" + data_csize + 
",data_size=" + data_size);
-         }
-         entry.setSize(data_size & 0xffffffffL);
-
-         //System.out.println("ZipEntry (Post DATA): " + entry
-         // + ", meth=" + entry.method + ", size=" + entry.size
-         // + ", csize=" + entry.csize + ", crc=" + entry.crc);
-       }
-       
-       // Close the input stream for the rest of the world.
-       sinf.setLength(0);
-      } finally {
-       entry = null;
-      }
-    }
-  }
-
-  public int read(byte[] b, int off, int len) throws IOException {
-    return super.read(b, off, len);
-  }
-
-  public long skip(long n) throws IOException {
-    return super.skip(n);
-  }
-
-  public void close() throws IOException {
-    closeEntry();
-    super.close();
-    // Now completely close the byte stream. There may be some
-    // bytes left in the buffer.
-    sinf.setInput(null, 0, 0);
-  }
-
-  private int get16(byte[] buf, int base) {
-    int val = (int)buf[base] & 0xFF;
-    val |= ((int)buf[base+1] & 0xFF) << 8;
-    return (val);
-  }
-
-  private int get32(byte[] buf, int base) {
-    return  buf[base] & 0xFF
-       | ((buf[base+1] & 0xFF) << 8)
-       | ((buf[base+2] & 0xFF) << 16)
-       | ((buf[base+3] & 0xFF) << 24);
-  }
-
-  private void readFully(byte[] buf, int off, int len) throws IOException {
-    int nread;
-
-    for (int remain = len; remain > 0; remain -= nread) {
-      nread = read(buf, off, remain);
-      if (nread == -1) {
-       if (remain != 0) {
-         throw new IOException("truncated file (only read "
-           + (len - remain) + "/" + len + ")");
-       }
-       return;
-      }
-      off += nread;
-    }
-  }
-
-  private int readSig() throws IOException {
-    int sig = peekSig();
-    gotSig = false;
-    return sig;
-  }
-
-  private int peekSig() throws IOException {
-    if (!gotSig) {
-      readFully(sigbuf, 0, sigbuf.length);
-      gotSig = true;
-    }
-    return get32(sigbuf, 0);
-  }
-
-  protected ZipEntry createZipEntry(String name) {
-       return new ZipEntry(name);
-  }
-}
-
===================================================================
Checking out kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipOutputStream.java
RCS:  
/home/cvs/kaffe/kaffe/libraries/javalib/zlib-zip/java/util/zip/Attic/ZipOutputStream.java,v
VERS: 1.1
***************
--- kaffe/libraries/javalib/zlib-zip/java/util/zip/ZipOutputStream.java Thu Jan 
31 20:51:15 2008
+++ /dev/null   Sun Aug  4 19:57:58 2002
@@ -1,349 +0,0 @@
-/*
- * Java core library component.
- *
- * Copyright (c) 1997, 1998
- *      Transvirtual Technologies, Inc.  All rights reserved.
- *
- * See the file "license.terms" for information on usage and redistribution
- * of this file.
- */
-
-package java.util.zip;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Enumeration;
-import java.util.Vector;
-
-import org.kaffe.util.UTF8;
-
-// Reference: ftp://ftp.uu.net/pub/archiving/zip/doc/appnote-970311-iz.zip
-
-public class ZipOutputStream extends DeflaterOutputStream
-       implements ZipConstants {
-
-  public static final int STORED = Deflater.NO_COMPRESSION;
-  public static final int DEFLATED = Deflater.DEFLATED;
-
-private static final int ZIPVER_1_0 = 0x000a;
-private static final int ZIPVER_2_0 = 0x0014;
-
-    /* Copied the fields over from GNU Claspath to make it compile again */
-  /* The following two fields are missing in SUN JDK */
-  private final int ENDNRD =  4;
-  private final int ENDDCD =  6;
-
-private int method = Deflater.DEFLATED;
-private int level = Deflater.DEFAULT_COMPRESSION;
-private ZipEntry curr;
-private Vector dir;
-private OutputStream strm;
-private int dout;
-private CRC32 crc;
-
-class Storer
-  extends Deflater {
-
-private int total;
-private byte[] buf;
-private int off;
-private int len;
-
-Storer() {
-    total = 0;
-    off = 0;
-    len = 0;
-}
-
-public int deflate(byte[] b, int p, int l) {
-       if (l >= len) {
-               l = len;
-       }
-       System.arraycopy(buf, off, b, p, l);
-       total += l;
-       off += l;
-       len -= l;
-       return (l);
-}
-
-public synchronized void setInput(byte b[], int o, int l)
-{
-       buf = b;
-       off = o;
-       len = l;
-}
-
-public boolean needsInput() {
-       return (len > 0 ? false : true);
-}
-
-public boolean finished() {
-       return (len > 0 ? false : true);
-}
-
-public int getTotalIn() {
-       return (total);
-}
-
-public int getTotalOut() {
-       return (total);
-}
-
-public void reset() {
-}
-
-}
-
-public ZipOutputStream(OutputStream out)
-{
-       super(out);
-       strm = out;
-       curr = null;
-       dir = new Vector();
-       dout = 0;
-       crc = new CRC32();
-}
-
-public void close() throws IOException
-{
-       finish();
-       super.close();
-}
-
-public void closeEntry() throws IOException
-{
-       if (curr == null) {
-               return;

*** Patch too long, truncated ***

_______________________________________________
kaffe mailing list
kaffe@kaffe.org
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to