From b113154a3acb81036230d6bacbffb6ea977271b5 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Thu, 24 Apr 2003 13:02:57 +0000 Subject: [PATCH] can now deal with self-extracting archives. PR: 16213 Submitted by: Jason Salter git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274512 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 3 ++ src/etc/testcases/taskdefs/unzip.xml | 5 ++ src/etc/testcases/taskdefs/zip/test.exe | Bin 0 -> 40448 bytes .../org/apache/tools/ant/taskdefs/Expand.java | 47 +++++++++++++++--- .../apache/tools/ant/taskdefs/UnzipTest.java | 9 ++++ 5 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 src/etc/testcases/taskdefs/zip/test.exe diff --git a/WHATSNEW b/WHATSNEW index fefaf3504..e7edcb135 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -273,6 +273,9 @@ Other changes: * A wrapper script for OS/2 has been added. +* will now detect and successfully extract self-extracting + archives. Bugzilla Report 16213. + Changes from Ant 1.5.2 to Ant 1.5.3 =================================== diff --git a/src/etc/testcases/taskdefs/unzip.xml b/src/etc/testcases/taskdefs/unzip.xml index 824cf55a8..43c340395 100644 --- a/src/etc/testcases/taskdefs/unzip.xml +++ b/src/etc/testcases/taskdefs/unzip.xml @@ -63,4 +63,9 @@ + + + + + diff --git a/src/etc/testcases/taskdefs/zip/test.exe b/src/etc/testcases/taskdefs/zip/test.exe new file mode 100644 index 0000000000000000000000000000000000000000..1372dffa3743d6d147b8370c59f9cd7b1e243dbc GIT binary patch literal 40448 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 literal 0 HcmV?d00001 diff --git a/src/main/org/apache/tools/ant/taskdefs/Expand.java b/src/main/org/apache/tools/ant/taskdefs/Expand.java index 788d30d8a..85848bd03 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Expand.java +++ b/src/main/org/apache/tools/ant/taskdefs/Expand.java @@ -56,14 +56,16 @@ package org.apache.tools.ant.taskdefs; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; +import java.io.RandomAccessFile; import java.io.FileOutputStream; -import java.io.IOException; +import java.io.FileNotFoundException; import java.io.InputStream; +import java.io.IOException; +import java.util.Arrays; import java.util.Date; import java.util.Vector; -import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import java.util.zip.ZipEntry; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; @@ -78,6 +80,7 @@ import org.apache.tools.ant.util.FileUtils; * @author costin@dnt.ro * @author Stefan Bodewig * @author Magesh Umasankar + * @author Jason Salter * * @since Ant 1.1 * @@ -92,6 +95,9 @@ public class Expand extends Task { private boolean overwrite = true; private Vector patternsets = new Vector(); private Vector filesets = new Vector(); + private static final byte[] ZIPMARKER = {0x50, 0x4b, 0x03, 0x04}; + private static final int MARKER_SIZE = ZIPMARKER.length; + private static final int MAX_LOOKAHEAD = 50 * 1024; // 50K. /** * Do the work. @@ -148,11 +154,34 @@ public class Expand extends Task { protected void expandFile(FileUtils fileUtils, File srcF, File dir) { log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO); ZipInputStream zis = null; + FileInputStream fis = null; + RandomAccessFile raf = null; + byte[] buff = new byte[MARKER_SIZE]; try { - // code from WarExpand - zis = new ZipInputStream(new FileInputStream(srcF)); - ZipEntry ze = null; + raf = new RandomAccessFile(srcF, "r"); + long offset = 0; + int more = raf.read(buff); + boolean foundMarker = false; + while (more != -1 || offset < MAX_LOOKAHEAD) { + if (Arrays.equals(buff, ZIPMARKER)) { + foundMarker = true; + break; + } + raf.seek(++offset); + more = raf.read(buff); + } + raf.close(); + raf = null; + fis = new FileInputStream(srcF); + if (foundMarker && offset > 0) { + log("found a preamble of " + offset + + " bytes, probably a self-extracting archive"); + fis.skip(offset); + } + + zis = new ZipInputStream(fis); + ZipEntry ze = null; while ((ze = zis.getNextEntry()) != null) { extractFile(fileUtils, srcF, dir, zis, ze.getName(), new Date(ze.getTime()), @@ -164,6 +193,11 @@ public class Expand extends Task { throw new BuildException("Error while expanding " + srcF.getPath(), ioe); } finally { + if (raf != null) { + try { + raf.close(); + } catch (IOException e) {} + } if (zis != null) { try { zis.close(); @@ -216,7 +250,6 @@ public class Expand extends Task { return; } } - File f = fileUtils.resolveFile(dir, entryName); try { if (!overwrite && f.exists() diff --git a/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java b/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java index 2abe2c3a3..638d22b66 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java @@ -134,4 +134,13 @@ public class UnzipTest extends BuildFileTest { !getProject().resolveFile("unziptestout/2/bar").exists()); } + /* + * PR 16213 + */ + public void testSelfExtractingArchive() { + expectLogContaining("selfExtractingArchive", + "found a preamble of 38439 bytes, " + + "probably a self-extracting archive"); + } + }