aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/zip/ZipUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/zip/ZipUtil.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/zip/ZipUtil.java252
1 files changed, 0 insertions, 252 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/zip/ZipUtil.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/zip/ZipUtil.java
deleted file mode 100644
index c25b8c7f..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/zip/ZipUtil.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.tools.zip;
-
-import java.io.IOException;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.zip.CRC32;
-
-/**
- * Utility class for handling DOS and Java time conversions.
- * @since Ant 1.8.1
- */
-public abstract class ZipUtil {
- /**
- * Smallest date/time ZIP can handle.
- */
- private static final byte[] DOS_TIME_MIN = ZipLong.getBytes(0x00002100L);
-
- /**
- * Convert a Date object to a DOS date/time field.
- * @param time the <code>Date</code> to convert
- * @return the date as a <code>ZipLong</code>
- */
- public static ZipLong toDosTime(Date time) {
- return new ZipLong(toDosTime(time.getTime()));
- }
-
- /**
- * Convert a Date object to a DOS date/time field.
- *
- * <p>Stolen from InfoZip's <code>fileio.c</code></p>
- * @param t number of milliseconds since the epoch
- * @return the date as a byte array
- */
- public static byte[] toDosTime(long t) {
- byte[] result = new byte[4];
- toDosTime(t, result, 0);
- return result;
- }
-
- /**
- * Convert a Date object to a DOS date/time field.
- *
- * <p>Stolen from InfoZip's <code>fileio.c</code></p>
- * @param t number of milliseconds since the epoch
- * @param buf the output buffer
- * @param offset
- * The offset within the output buffer of the first byte to be written.
- * must be non-negative and no larger than <tt>buf.length-4</tt>
- */
- public static void toDosTime(long t, byte[] buf, int offset) {
- toDosTime(Calendar.getInstance(), t, buf, offset);
- }
-
- static void toDosTime(Calendar c, long t, byte[] buf, int offset) {
- c.setTimeInMillis(t);
-
- int year = c.get(Calendar.YEAR);
- if (year < 1980) {
- System.arraycopy(DOS_TIME_MIN, 0, buf, offset, DOS_TIME_MIN.length);// stop callers from changing the array
- return;
- }
- int month = c.get(Calendar.MONTH) + 1;
- long value = ((year - 1980) << 25)
- | (month << 21)
- | (c.get(Calendar.DAY_OF_MONTH) << 16)
- | (c.get(Calendar.HOUR_OF_DAY) << 11)
- | (c.get(Calendar.MINUTE) << 5)
- | (c.get(Calendar.SECOND) >> 1);
- ZipLong.putLong(value, buf, offset);
- }
-
- /**
- * Assumes a negative integer really is a positive integer that
- * has wrapped around and re-creates the original value.
- *
- * <p>This methods is no longer used as of Apache Ant 1.9.0</p>
- *
- * @param i the value to treat as unsigned int.
- * @return the unsigned int as a long.
- */
- public static long adjustToLong(int i) {
- if (i < 0) {
- return 2 * ((long) Integer.MAX_VALUE) + 2 + i;
- } else {
- return i;
- }
- }
-
- /**
- * Convert a DOS date/time field to a Date object.
- *
- * @param zipDosTime contains the stored DOS time.
- * @return a Date instance corresponding to the given time.
- */
- public static Date fromDosTime(ZipLong zipDosTime) {
- long dosTime = zipDosTime.getValue();
- return new Date(dosToJavaTime(dosTime));
- }
-
- /**
- * Converts DOS time to Java time (number of milliseconds since
- * epoch).
- */
- public static long dosToJavaTime(long dosTime) {
- Calendar cal = Calendar.getInstance();
- // CheckStyle:MagicNumberCheck OFF - no point
- cal.set(Calendar.YEAR, (int) ((dosTime >> 25) & 0x7f) + 1980);
- cal.set(Calendar.MONTH, (int) ((dosTime >> 21) & 0x0f) - 1);
- cal.set(Calendar.DATE, (int) (dosTime >> 16) & 0x1f);
- cal.set(Calendar.HOUR_OF_DAY, (int) (dosTime >> 11) & 0x1f);
- cal.set(Calendar.MINUTE, (int) (dosTime >> 5) & 0x3f);
- cal.set(Calendar.SECOND, (int) (dosTime << 1) & 0x3e);
- cal.set(Calendar.MILLISECOND, 0);
- // CheckStyle:MagicNumberCheck ON
- return cal.getTime().getTime();
- }
-
- /**
- * If the entry has Unicode*ExtraFields and the CRCs of the
- * names/comments match those of the extra fields, transfer the
- * known Unicode values from the extra field.
- */
- static void setNameAndCommentFromExtraFields(ZipEntry ze,
- byte[] originalNameBytes,
- byte[] commentBytes) {
- UnicodePathExtraField name = (UnicodePathExtraField)
- ze.getExtraField(UnicodePathExtraField.UPATH_ID);
- String originalName = ze.getName();
- String newName = getUnicodeStringIfOriginalMatches(name,
- originalNameBytes);
- if (newName != null && !originalName.equals(newName)) {
- ze.setName(newName);
- }
-
- if (commentBytes != null && commentBytes.length > 0) {
- UnicodeCommentExtraField cmt = (UnicodeCommentExtraField)
- ze.getExtraField(UnicodeCommentExtraField.UCOM_ID);
- String newComment =
- getUnicodeStringIfOriginalMatches(cmt, commentBytes);
- if (newComment != null) {
- ze.setComment(newComment);
- }
- }
- }
-
- /**
- * If the stored CRC matches the one of the given name, return the
- * Unicode name of the given field.
- *
- * <p>If the field is null or the CRCs don't match, return null
- * instead.</p>
- */
- private static
- String getUnicodeStringIfOriginalMatches(AbstractUnicodeExtraField f,
- byte[] orig) {
- if (f != null) {
- CRC32 crc32 = new CRC32();
- crc32.update(orig);
- long origCRC32 = crc32.getValue();
-
- if (origCRC32 == f.getNameCRC32()) {
- try {
- return ZipEncodingHelper
- .UTF8_ZIP_ENCODING.decode(f.getUnicodeName());
- } catch (IOException ex) {
- // UTF-8 unsupported? should be impossible the
- // Unicode*ExtraField must contain some bad bytes
-
- // TODO log this anywhere?
- return null;
- }
- }
- }
- return null;
- }
-
- /**
- * Create a copy of the given array - or return null if the
- * argument is null.
- */
- static byte[] copy(byte[] from) {
- if (from != null) {
- byte[] to = new byte[from.length];
- System.arraycopy(from, 0, to, 0, to.length);
- return to;
- }
- return null;
- }
-
- /**
- * Whether this library is able to read or write the given entry.
- */
- static boolean canHandleEntryData(ZipEntry entry) {
- return supportsEncryptionOf(entry) && supportsMethodOf(entry);
- }
-
- /**
- * Whether this library supports the encryption used by the given
- * entry.
- *
- * @return true if the entry isn't encrypted at all
- */
- private static boolean supportsEncryptionOf(ZipEntry entry) {
- return !entry.getGeneralPurposeBit().usesEncryption();
- }
-
- /**
- * Whether this library supports the compression method used by
- * the given entry.
- *
- * @return true if the compression method is STORED or DEFLATED
- */
- private static boolean supportsMethodOf(ZipEntry entry) {
- return entry.getMethod() == ZipEntry.STORED
- || entry.getMethod() == ZipEntry.DEFLATED;
- }
-
- /**
- * Checks whether the entry requires features not (yet) supported
- * by the library and throws an exception if it does.
- */
- static void checkRequestedFeatures(ZipEntry ze)
- throws UnsupportedZipFeatureException {
- if (!supportsEncryptionOf(ze)) {
- throw
- new UnsupportedZipFeatureException(UnsupportedZipFeatureException
- .Feature.ENCRYPTION, ze);
- }
- if (!supportsMethodOf(ze)) {
- throw
- new UnsupportedZipFeatureException(UnsupportedZipFeatureException
- .Feature.METHOD, ze);
- }
- }
-}