summaryrefslogtreecommitdiffstats
path: root/libjava/classpath/java/util/zip
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/java/util/zip')
-rw-r--r--libjava/classpath/java/util/zip/DeflaterHuffman.java4
-rw-r--r--libjava/classpath/java/util/zip/DeflaterOutputStream.java6
-rw-r--r--libjava/classpath/java/util/zip/ZipEntry.java13
-rw-r--r--libjava/classpath/java/util/zip/ZipFile.java24
-rw-r--r--libjava/classpath/java/util/zip/ZipInputStream.java13
-rw-r--r--libjava/classpath/java/util/zip/ZipOutputStream.java45
6 files changed, 82 insertions, 23 deletions
diff --git a/libjava/classpath/java/util/zip/DeflaterHuffman.java b/libjava/classpath/java/util/zip/DeflaterHuffman.java
index d040dde485d..32c10b6de80 100644
--- a/libjava/classpath/java/util/zip/DeflaterHuffman.java
+++ b/libjava/classpath/java/util/zip/DeflaterHuffman.java
@@ -1,5 +1,5 @@
/* DeflaterHuffman.java --
- Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -59,7 +59,7 @@ class DeflaterHuffman
private static final int[] BL_ORDER =
{ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
- private static String bit4Reverse =
+ private static final String bit4Reverse =
"\000\010\004\014\002\012\006\016\001\011\005\015\003\013\007\017";
class Tree {
diff --git a/libjava/classpath/java/util/zip/DeflaterOutputStream.java b/libjava/classpath/java/util/zip/DeflaterOutputStream.java
index b10100d8a28..4321c0f2cae 100644
--- a/libjava/classpath/java/util/zip/DeflaterOutputStream.java
+++ b/libjava/classpath/java/util/zip/DeflaterOutputStream.java
@@ -1,5 +1,5 @@
/* DeflaterOutputStream.java - Output filter for compressing.
- Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -100,7 +100,7 @@ public class DeflaterOutputStream extends FilterOutputStream
*/
public DeflaterOutputStream(OutputStream out)
{
- this(out, new Deflater(), 512);
+ this(out, new Deflater(), 4096);
}
/**
@@ -111,7 +111,7 @@ public class DeflaterOutputStream extends FilterOutputStream
*/
public DeflaterOutputStream(OutputStream out, Deflater defl)
{
- this(out, defl, 512);
+ this(out, defl, 4096);
}
/**
diff --git a/libjava/classpath/java/util/zip/ZipEntry.java b/libjava/classpath/java/util/zip/ZipEntry.java
index ae21997dba2..9b7afa00045 100644
--- a/libjava/classpath/java/util/zip/ZipEntry.java
+++ b/libjava/classpath/java/util/zip/ZipEntry.java
@@ -39,7 +39,6 @@ exception statement from your version. */
package java.util.zip;
import java.util.Calendar;
-import java.util.Date;
/**
* This class represents a member of a zip archive. ZipFile and
@@ -173,7 +172,7 @@ public class ZipEntry implements ZipConstants, Cloneable
Calendar cal = getCalendar();
synchronized (cal)
{
- cal.setTime(new Date(time));
+ cal.setTimeInMillis(time);
dostime = (cal.get(Calendar.YEAR) - 1980 & 0x7f) << 25
| (cal.get(Calendar.MONTH) + 1) << 21
| (cal.get(Calendar.DAY_OF_MONTH)) << 16
@@ -190,12 +189,12 @@ public class ZipEntry implements ZipConstants, Cloneable
*/
public long getTime()
{
+ // The extra bytes might contain the time (posix/unix extension)
+ parseExtra();
+
if ((known & KNOWN_TIME) == 0)
return -1;
- // The extra bytes might contain the time (posix/unix extension)
- parseExtra ();
-
int sec = 2 * (dostime & 0x1f);
int min = (dostime >> 5) & 0x3f;
int hrs = (dostime >> 11) & 0x1f;
@@ -209,7 +208,7 @@ public class ZipEntry implements ZipConstants, Cloneable
synchronized (cal)
{
cal.set(year, mon, day, hrs, min, sec);
- return cal.getTime().getTime();
+ return cal.getTimeInMillis();
}
}
catch (RuntimeException ex)
@@ -367,10 +366,10 @@ public class ZipEntry implements ZipConstants, Cloneable
catch (ArrayIndexOutOfBoundsException ex)
{
/* be lenient */
- return;
}
known |= KNOWN_EXTRA;
+ return;
}
/**
diff --git a/libjava/classpath/java/util/zip/ZipFile.java b/libjava/classpath/java/util/zip/ZipFile.java
index 33f67c78bfe..0243abed1f8 100644
--- a/libjava/classpath/java/util/zip/ZipFile.java
+++ b/libjava/classpath/java/util/zip/ZipFile.java
@@ -48,6 +48,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
+import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
@@ -284,7 +285,15 @@ public class ZipFile implements ZipConstants
buffer = new byte[needBuffer];
raf.readFully(buffer, 0, nameLen);
- String name = new String(buffer, 0, 0, nameLen);
+ String name;
+ try
+ {
+ name = new String(buffer, 0, nameLen, "UTF-8");
+ }
+ catch (UnsupportedEncodingException uee)
+ {
+ throw new AssertionError(uee);
+ }
ZipEntry entry = new ZipEntry(name);
entry.setMethod(method);
@@ -301,7 +310,14 @@ public class ZipFile implements ZipConstants
if (commentLen > 0)
{
raf.readFully(buffer, 0, commentLen);
- entry.setComment(new String(buffer, 0, commentLen));
+ try
+ {
+ entry.setComment(new String(buffer, 0, commentLen, "UTF-8"));
+ }
+ catch (UnsupportedEncodingException uee)
+ {
+ throw new AssertionError(uee);
+ }
}
entry.offset = offset;
entries.put(name, entry);
@@ -317,6 +333,10 @@ public class ZipFile implements ZipConstants
*/
public void close() throws IOException
{
+ RandomAccessFile raf = this.raf;
+ if (raf == null)
+ return;
+
synchronized (raf)
{
closed = true;
diff --git a/libjava/classpath/java/util/zip/ZipInputStream.java b/libjava/classpath/java/util/zip/ZipInputStream.java
index 5732523238e..4539828c2b0 100644
--- a/libjava/classpath/java/util/zip/ZipInputStream.java
+++ b/libjava/classpath/java/util/zip/ZipInputStream.java
@@ -1,5 +1,5 @@
/* ZipInputStream.java --
- Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -41,6 +41,7 @@ package java.util.zip;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
/**
* This is a FilterInputStream that reads the files in an zip archive
@@ -171,7 +172,15 @@ public class ZipInputStream extends InflaterInputStream implements ZipConstants
byte[] buffer = new byte[nameLen];
readFully(buffer);
- String name = new String(buffer);
+ String name;
+ try
+ {
+ name = new String(buffer, "UTF-8");
+ }
+ catch (UnsupportedEncodingException uee)
+ {
+ throw new AssertionError(uee);
+ }
entry = createZipEntry(name);
entryAtEOF = false;
diff --git a/libjava/classpath/java/util/zip/ZipOutputStream.java b/libjava/classpath/java/util/zip/ZipOutputStream.java
index 5699ff046f5..5c593b2c45a 100644
--- a/libjava/classpath/java/util/zip/ZipOutputStream.java
+++ b/libjava/classpath/java/util/zip/ZipOutputStream.java
@@ -1,5 +1,5 @@
/* ZipOutputStream.java --
- Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,6 +40,7 @@ package java.util.zip;
import java.io.IOException;
import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Vector;
@@ -102,7 +103,14 @@ public class ZipOutputStream extends DeflaterOutputStream implements ZipConstant
public void setComment(String comment)
{
byte[] commentBytes;
- commentBytes = comment.getBytes();
+ try
+ {
+ commentBytes = comment.getBytes("UTF-8");
+ }
+ catch (UnsupportedEncodingException uee)
+ {
+ throw new AssertionError(uee);
+ }
if (commentBytes.length > 0xffff)
throw new IllegalArgumentException("Comment too long.");
zipComment = commentBytes;
@@ -226,7 +234,15 @@ public class ZipOutputStream extends DeflaterOutputStream implements ZipConstant
writeLeInt(0);
writeLeInt(0);
}
- byte[] name = entry.getName().getBytes();
+ byte[] name;
+ try
+ {
+ name = entry.getName().getBytes("UTF-8");
+ }
+ catch (UnsupportedEncodingException uee)
+ {
+ throw new AssertionError(uee);
+ }
if (name.length > 0xffff)
throw new ZipException("Name too long.");
byte[] extra = entry.getExtra();
@@ -357,15 +373,30 @@ public class ZipOutputStream extends DeflaterOutputStream implements ZipConstant
writeLeInt((int)entry.getCompressedSize());
writeLeInt((int)entry.getSize());
- byte[] name = entry.getName().getBytes();
+ byte[] name;
+ try
+ {
+ name = entry.getName().getBytes("UTF-8");
+ }
+ catch (UnsupportedEncodingException uee)
+ {
+ throw new AssertionError(uee);
+ }
if (name.length > 0xffff)
throw new ZipException("Name too long.");
byte[] extra = entry.getExtra();
if (extra == null)
extra = new byte[0];
- String strComment = entry.getComment();
- byte[] comment = strComment != null
- ? strComment.getBytes() : new byte[0];
+ String str = entry.getComment();
+ byte[] comment;
+ try
+ {
+ comment = str != null ? str.getBytes("UTF-8") : new byte[0];
+ }
+ catch (UnsupportedEncodingException uee)
+ {
+ throw new AssertionError(uee);
+ }
if (comment.length > 0xffff)
throw new ZipException("Comment too long.");
OpenPOWER on IntegriCloud