aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/util/zip/ZipEntry.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/util/zip/ZipEntry.java')
-rw-r--r--libjava/java/util/zip/ZipEntry.java408
1 files changed, 0 insertions, 408 deletions
diff --git a/libjava/java/util/zip/ZipEntry.java b/libjava/java/util/zip/ZipEntry.java
deleted file mode 100644
index 04c5e01bb99..00000000000
--- a/libjava/java/util/zip/ZipEntry.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/* ZipEntry.java --
- Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-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
- * ZipInputStream will give you instances of this class as information
- * about the members in an archive. On the other hand ZipOutputStream
- * needs an instance of this class to create a new member.
- *
- * @author Jochen Hoenicke
- */
-public class ZipEntry implements ZipConstants, Cloneable
-{
- private static final int KNOWN_SIZE = 1;
- private static final int KNOWN_CSIZE = 2;
- private static final int KNOWN_CRC = 4;
- private static final int KNOWN_TIME = 8;
-
- private static Calendar cal;
-
- private String name;
- private int size;
- private long compressedSize = -1;
- private int crc;
- private int dostime;
- private short known = 0;
- private short method = -1;
- private byte[] extra = null;
- private String comment = null;
-
- int flags; /* used by ZipOutputStream */
- int offset; /* used by ZipFile and ZipOutputStream */
-
- /**
- * Compression method. This method doesn't compress at all.
- */
- public static final int STORED = 0;
- /**
- * Compression method. This method uses the Deflater.
- */
- public static final int DEFLATED = 8;
-
- /**
- * Creates a zip entry with the given name.
- * @param name the name. May include directory components separated
- * by '/'.
- *
- * @exception NullPointerException when name is null.
- * @exception IllegalArgumentException when name is bigger then 65535 chars.
- */
- public ZipEntry(String name)
- {
- int length = name.length();
- if (length > 65535)
- throw new IllegalArgumentException("name length is " + length);
- this.name = name;
- }
-
- /**
- * Creates a copy of the given zip entry.
- * @param e the entry to copy.
- */
- public ZipEntry(ZipEntry e)
- {
- name = e.name;
- known = e.known;
- size = e.size;
- compressedSize = e.compressedSize;
- crc = e.crc;
- dostime = e.dostime;
- method = e.method;
- extra = e.extra;
- comment = e.comment;
- }
-
- final void setDOSTime(int dostime)
- {
- this.dostime = dostime;
- known |= KNOWN_TIME;
- }
-
- final int getDOSTime()
- {
- if ((known & KNOWN_TIME) == 0)
- return 0;
- else
- return dostime;
- }
-
- /**
- * 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();
- }
- }
-
- /**
- * Returns the entry name. The path components in the entry are
- * always separated by slashes ('/').
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Sets the time of last modification of the entry.
- * @time the time of last modification of the entry.
- */
- public void setTime(long time)
- {
- Calendar cal = getCalendar();
- synchronized (cal)
- {
- cal.setTime(new Date(time));
- dostime = (cal.get(Calendar.YEAR) - 1980 & 0x7f) << 25
- | (cal.get(Calendar.MONTH) + 1) << 21
- | (cal.get(Calendar.DAY_OF_MONTH)) << 16
- | (cal.get(Calendar.HOUR_OF_DAY)) << 11
- | (cal.get(Calendar.MINUTE)) << 5
- | (cal.get(Calendar.SECOND)) >> 1;
- }
- this.known |= KNOWN_TIME;
- }
-
- /**
- * Gets the time of last modification of the entry.
- * @return the time of last modification of the entry, or -1 if unknown.
- */
- public long getTime()
- {
- if ((known & KNOWN_TIME) == 0)
- return -1;
-
- int sec = 2 * (dostime & 0x1f);
- int min = (dostime >> 5) & 0x3f;
- int hrs = (dostime >> 11) & 0x1f;
- int day = (dostime >> 16) & 0x1f;
- int mon = ((dostime >> 21) & 0xf) - 1;
- int year = ((dostime >> 25) & 0x7f) + 1980; /* since 1900 */
-
- try
- {
- cal = getCalendar();
- synchronized (cal)
- {
- cal.set(year, mon, day, hrs, min, sec);
- return cal.getTime().getTime();
- }
- }
- catch (RuntimeException ex)
- {
- /* Ignore illegal time stamp */
- known &= ~KNOWN_TIME;
- return -1;
- }
- }
-
- private static synchronized Calendar getCalendar()
- {
- if (cal == null)
- cal = Calendar.getInstance();
-
- return cal;
- }
-
- /**
- * Sets the size of the uncompressed data.
- * @exception IllegalArgumentException if size is not in 0..0xffffffffL
- */
- public void setSize(long size)
- {
- if ((size & 0xffffffff00000000L) != 0)
- throw new IllegalArgumentException();
- this.size = (int) size;
- this.known |= KNOWN_SIZE;
- }
-
- /**
- * Gets the size of the uncompressed data.
- * @return the size or -1 if unknown.
- */
- public long getSize()
- {
- return (known & KNOWN_SIZE) != 0 ? size & 0xffffffffL : -1L;
- }
-
- /**
- * Sets the size of the compressed data.
- */
- public void setCompressedSize(long csize)
- {
- this.compressedSize = csize;
- }
-
- /**
- * Gets the size of the compressed data.
- * @return the size or -1 if unknown.
- */
- public long getCompressedSize()
- {
- return compressedSize;
- }
-
- /**
- * Sets the crc of the uncompressed data.
- * @exception IllegalArgumentException if crc is not in 0..0xffffffffL
- */
- public void setCrc(long crc)
- {
- if ((crc & 0xffffffff00000000L) != 0)
- throw new IllegalArgumentException();
- this.crc = (int) crc;
- this.known |= KNOWN_CRC;
- }
-
- /**
- * Gets the crc of the uncompressed data.
- * @return the crc or -1 if unknown.
- */
- public long getCrc()
- {
- return (known & KNOWN_CRC) != 0 ? crc & 0xffffffffL : -1L;
- }
-
- /**
- * Sets the compression method. Only DEFLATED and STORED are
- * supported.
- * @exception IllegalArgumentException if method is not supported.
- * @see ZipOutputStream#DEFLATED
- * @see ZipOutputStream#STORED
- */
- public void setMethod(int method)
- {
- if (method != ZipOutputStream.STORED
- && method != ZipOutputStream.DEFLATED)
- throw new IllegalArgumentException();
- this.method = (short) method;
- }
-
- /**
- * Gets the compression method.
- * @return the compression method or -1 if unknown.
- */
- public int getMethod()
- {
- return method;
- }
-
- /**
- * Sets the extra data.
- * @exception IllegalArgumentException if extra is longer than 0xffff bytes.
- */
- public void setExtra(byte[] extra)
- {
- if (extra == null)
- {
- this.extra = null;
- return;
- }
-
- if (extra.length > 0xffff)
- throw new IllegalArgumentException();
- this.extra = extra;
- try
- {
- int pos = 0;
- while (pos < extra.length)
- {
- int sig = (extra[pos++] & 0xff)
- | (extra[pos++] & 0xff) << 8;
- int len = (extra[pos++] & 0xff)
- | (extra[pos++] & 0xff) << 8;
- if (sig == 0x5455)
- {
- /* extended time stamp */
- int flags = extra[pos];
- if ((flags & 1) != 0)
- {
- long time = ((extra[pos+1] & 0xff)
- | (extra[pos+2] & 0xff) << 8
- | (extra[pos+3] & 0xff) << 16
- | (extra[pos+4] & 0xff) << 24);
- setTime(time);
- }
- }
- pos += len;
- }
- }
- catch (ArrayIndexOutOfBoundsException ex)
- {
- /* be lenient */
- return;
- }
- }
-
- /**
- * Gets the extra data.
- * @return the extra data or null if not set.
- */
- public byte[] getExtra()
- {
- return extra;
- }
-
- /**
- * Sets the entry comment.
- * @exception IllegalArgumentException if comment is longer than 0xffff.
- */
- public void setComment(String comment)
- {
- if (comment != null && comment.length() > 0xffff)
- throw new IllegalArgumentException();
- this.comment = comment;
- }
-
- /**
- * Gets the comment.
- * @return the comment or null if not set.
- */
- public String getComment()
- {
- return comment;
- }
-
- /**
- * Gets true, if the entry is a directory. This is solely
- * determined by the name, a trailing slash '/' marks a directory.
- */
- public boolean isDirectory()
- {
- int nlen = name.length();
- return nlen > 0 && name.charAt(nlen - 1) == '/';
- }
-
- /**
- * Gets the string representation of this ZipEntry. This is just
- * the name as returned by getName().
- */
- public String toString()
- {
- return name;
- }
-
- /**
- * Gets the hashCode of this ZipEntry. This is just the hashCode
- * of the name. Note that the equals method isn't changed, though.
- */
- public int hashCode()
- {
- return name.hashCode();
- }
-}