PatchSet 4795 
Date: 2004/05/30 16:30:42
Author: guilhem
Branch: HEAD
Tag: (none) 
Log:
Fix for FileChannelImpl + fixed some problems with zip classes.

        * libraries/javalib/java/util/ZipInputStream.java
        (getNextEntry): Reopen the byte stream.
        (closeEntry): Close the byte stream.
        (close): Close completely the byte stream.

        * libraries/javalib/java/util/Inflater.java:
        (inflate0): Made private.

        * libraries/javalib/java/util/InflaterInputStream.java:
        (read): Check whether the stream is closed.
        (skip): Improved exception message.

        * libraries/clib/nio/FileChannelImpl.c
        (Java_gnu_java_nio_channels_FileChannelImpl_read__): Fixed
        one byte reading. We have to use 'uint8' for the reading and
        then cast it to jint.
        (Java_gnu_java_nio_channels_FileChannelImpl_write__I): Fixed
        one byte writing. We have to cast jint to uint8 and then write
        this byte.

Members: 
        ChangeLog:1.2364->1.2365 
        libraries/clib/nio/FileChannelImpl.c:1.5->1.6 
        libraries/javalib/java/util/zip/Inflater.java:1.7->1.8 
        libraries/javalib/java/util/zip/InflaterInputStream.java:1.10->1.11 
        libraries/javalib/java/util/zip/ZipInputStream.java:1.19->1.20 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2364 kaffe/ChangeLog:1.2365
--- kaffe/ChangeLog:1.2364      Sun May 30 10:35:15 2004
+++ kaffe/ChangeLog     Sun May 30 16:30:42 2004
@@ -1,3 +1,25 @@
+2004-05-30  Guilhem Lavaux <[EMAIL PROTECTED]>
+
+       * libraries/javalib/java/util/ZipInputStream.java
+       (getNextEntry): Reopen the byte stream.
+       (closeEntry): Close the byte stream.
+       (close): Close completely the byte stream.
+
+       * libraries/javalib/java/util/Inflater.java:
+       (inflate0): Made private.
+
+       * libraries/javalib/java/util/InflaterInputStream.java:
+       (read): Check whether the stream is closed.
+       (skip): Improved exception message.
+
+       * libraries/clib/nio/FileChannelImpl.c
+       (Java_gnu_java_nio_channels_FileChannelImpl_read__): Fixed
+       one byte reading. We have to use 'uint8' for the reading and
+       then cast it to jint.
+       (Java_gnu_java_nio_channels_FileChannelImpl_write__I): Fixed
+       one byte writing. We have to cast jint to uint8 and then write
+       this byte.
+
 2004-05-29  Guilhem Lavaux <[EMAIL PROTECTED]>
 
        * configure.ac: Check for mprotect. If the host is an HPUX disable
Index: kaffe/libraries/clib/nio/FileChannelImpl.c
diff -u kaffe/libraries/clib/nio/FileChannelImpl.c:1.5 
kaffe/libraries/clib/nio/FileChannelImpl.c:1.6
--- kaffe/libraries/clib/nio/FileChannelImpl.c:1.5      Fri May 28 13:40:13 2004
+++ kaffe/libraries/clib/nio/FileChannelImpl.c  Sun May 30 16:30:49 2004
@@ -390,7 +390,7 @@
 Java_gnu_java_nio_channels_FileChannelImpl_read__(JNIEnv *env, jobject filechannel)
 {
   int rc;
-  jbyte one_byte;
+  uint8 one_byte;
   int nativeFd = (int)getFD(env, filechannel);
   int ret;
 
@@ -445,10 +445,11 @@
 {
   int rc;
   int nativeFd = (int)getFD(env, filechannel);
+  uint8 real_byte = byte;
   int ret;
 
   do {
-    rc = KWRITE(nativeFd, &byte, 1, &ret);
+    rc = KWRITE(nativeFd, &real_byte, 1, &ret);
     if (rc != 0 && rc != EINTR)
       {
        throwIOException(env, rc);
Index: kaffe/libraries/javalib/java/util/zip/Inflater.java
diff -u kaffe/libraries/javalib/java/util/zip/Inflater.java:1.7 
kaffe/libraries/javalib/java/util/zip/Inflater.java:1.8
--- kaffe/libraries/javalib/java/util/zip/Inflater.java:1.7     Fri Aug 16 18:04:31 
2002
+++ kaffe/libraries/javalib/java/util/zip/Inflater.java Sun May 30 16:30:49 2004
@@ -100,7 +100,7 @@
   }
 
   public native synchronized void setDictionary(byte b[], int off, int len);
-  public native synchronized int inflate0(byte b[], int off, int len) throws 
DataFormatException;
+  private native synchronized int inflate0(byte b[], int off, int len) throws 
DataFormatException;
   public native synchronized int getAdler();
   public native synchronized int getTotalIn();
   public native synchronized int getTotalOut();
Index: kaffe/libraries/javalib/java/util/zip/InflaterInputStream.java
diff -u kaffe/libraries/javalib/java/util/zip/InflaterInputStream.java:1.10 
kaffe/libraries/javalib/java/util/zip/InflaterInputStream.java:1.11
--- kaffe/libraries/javalib/java/util/zip/InflaterInputStream.java:1.10 Sat May  1 
16:52:49 2004
+++ kaffe/libraries/javalib/java/util/zip/InflaterInputStream.java      Sun May 30 
16:30:49 2004
@@ -150,7 +150,7 @@
   {
     if (in == null)
       throw new ZipException ("InflaterInputStream is closed");
-    
+
     len = in.read(buf, 0, buf.length);
 
     if (len < 0)
@@ -183,6 +183,9 @@
    */
   public int read(byte[] b, int off, int len) throws IOException
   {
+    if (in == null)
+      throw new ZipException ("InflaterInputStream is closed");
+
     if (len == 0)
       return 0;
 
@@ -220,7 +223,7 @@
   public long skip(long n) throws IOException
   {
     if (n < 0)
-      throw new IllegalArgumentException();
+      throw new IllegalArgumentException("Argument must be positive");
 
     if (n == 0)
       return 0;
Index: kaffe/libraries/javalib/java/util/zip/ZipInputStream.java
diff -u kaffe/libraries/javalib/java/util/zip/ZipInputStream.java:1.19 
kaffe/libraries/javalib/java/util/zip/ZipInputStream.java:1.20
--- kaffe/libraries/javalib/java/util/zip/ZipInputStream.java:1.19      Mon Mar 22 
11:25:13 2004
+++ kaffe/libraries/javalib/java/util/zip/ZipInputStream.java   Sun May 30 16:30:49 
2004
@@ -41,6 +41,9 @@
 
     synchronized (this) {
 
+      // First, open the stream.
+      sinf.setLength(Integer.MAX_VALUE);
+
       // Read next signature
       int sig = readSig();
       switch (sig) {
@@ -149,6 +152,9 @@
          // + ", 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;
       }
@@ -166,6 +172,9 @@
   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) {

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to