bodewig 2003/07/03 06:02:01
Modified: . WHATSNEW
docs/manual/CoreTasks unzip.html
src/etc/testcases/taskdefs untar.xml unzip.xml
src/main/org/apache/tools/ant/taskdefs Expand.java
Untar.java
src/testcases/org/apache/tools/ant/taskdefs UntarTest.java
UnzipTest.java
Log:
Add support for filename-encodings other than UTF8 to <untar>.
PR: 10504
Revision Changes Path
1.450 +4 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.449
retrieving revision 1.450
diff -u -r1.449 -r1.450
--- WHATSNEW 30 Jun 2003 10:41:00 -0000 1.449
+++ WHATSNEW 3 Jul 2003 13:02:00 -0000 1.450
@@ -453,6 +453,10 @@
* FileUtils#createTempFile will now create temporary files in the
directory pointed to by the property java.io.tmpdir
+* <unzip> and friends now supports an optional encoding attribute to
+ enable it to expand archives created with filenames using an encoding
+ other than UTF8. Bugzilla Report 10504.
+
Changes from Ant 1.5.2 to Ant 1.5.3
===================================
1.12 +18 -4 ant/docs/manual/CoreTasks/unzip.html
Index: unzip.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTasks/unzip.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- unzip.html 4 Sep 2002 11:05:16 -0000 1.11
+++ unzip.html 3 Jul 2003 13:02:01 -0000 1.12
@@ -46,11 +46,25 @@
</tr>
<tr>
<td valign="top">compression</td>
- <td valign="top">compression method for untar. Allowable values are
- "none", "gzip" and "bzip2". Default is
- "none".</td>
+ <td valign="top"><b>Note:</b> This attribute is only available for
+ the <code>untar</code> task.<br>
+ compression method. Allowable values are "none",
+ "gzip" and "bzip2". Default is
+ "none".</td>
<td valign="top" align="center">No</td>
</tr>
+ <tr>
+ <td valign="top">encoding</td>
+ <td valign="top"><b>Note:</b> This attribute is not available for
+ the <code>untar</code> task.<br>
+ The character encoding that has been used for filenames
+ inside the zip file. For a list of possible values see <a
+
href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>.<br>
+ Defaults to "UTF8", use the magic value
+ <code>native-encoding</code> for the platform's default character
+ encoding.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
</table>
<h3>Examples</h3>
@@ -89,7 +103,7 @@
</pre></p>
</blockquote>
<hr>
-<p align="center">Copyright © 2000-2002 Apache Software Foundation. All
rights
+<p align="center">Copyright © 2000-2003 Apache Software Foundation. All
rights
Reserved.</p>
</body>
1.4 +3 -0 ant/src/etc/testcases/taskdefs/untar.xml
Index: untar.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/untar.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- untar.xml 24 Apr 2002 03:09:06 -0000 1.3
+++ untar.xml 3 Jul 2003 13:02:01 -0000 1.4
@@ -41,4 +41,7 @@
<untar src="." dest="." />
</target>
+ <target name="encoding">
+ <untar src="expected/asf-logo.gif.tar" dest="." encoding="foo"/>
+ </target>
</project>
1.7 +9 -0 ant/src/etc/testcases/taskdefs/unzip.xml
Index: unzip.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/unzip.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- unzip.xml 23 Jun 2003 14:47:02 -0000 1.6
+++ unzip.xml 3 Jul 2003 13:02:01 -0000 1.7
@@ -78,4 +78,13 @@
</unzip>
</target>
+ <!-- Bugzilla Report 10504 -->
+ <target name="encodingTest">
+ <mkdir dir="unziptestin"/>
+ <touch file="unziptestin/foo"/>
+ <zip zipfile="unziptest.zip" basedir="unziptestin" encoding="UTF16"/>
+ <mkdir dir="unziptestout"/>
+ <unzip src="unziptest.zip" dest="unziptestout" encoding="UTF16"/>
+ </target>
+
</project>
1.45 +20 -4 ant/src/main/org/apache/tools/ant/taskdefs/Expand.java
Index: Expand.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Expand.java,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- Expand.java 3 Jul 2003 08:30:11 -0000 1.44
+++ Expand.java 3 Jul 2003 13:02:01 -0000 1.45
@@ -95,9 +95,10 @@
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.
+
+ private static final String NATIVE_ENCODING = "native-encoding";
+
+ private String encoding = "UTF8";
/**
* Do the work.
@@ -155,7 +156,7 @@
log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO);
ZipFile zf = null;
try {
- zf = new ZipFile(srcF, "UTF8");
+ zf = new ZipFile(srcF, encoding);
Enumeration enum = zf.getEntries();
while (enum.hasMoreElements()) {
ZipEntry ze = (ZipEntry) enum.nextElement();
@@ -322,6 +323,21 @@
*/
public void addFileset(FileSet set) {
filesets.addElement(set);
+ }
+
+ /**
+ * Sets the encoding to assume for file names and comments.
+ *
+ * <p>Set to <code>native-encoding</code> if you want your
+ * platform's native encoding, defaults to UTF8.</p>
+ *
+ * @since Ant 1.6
+ */
+ public void setEncoding(String encoding) {
+ if (NATIVE_ENCODING.equals(encoding)) {
+ encoding = null;
+ }
+ this.encoding = encoding;
}
}
1.33 +12 -1 ant/src/main/org/apache/tools/ant/taskdefs/Untar.java
Index: Untar.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Untar.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- Untar.java 7 Mar 2003 11:23:02 -0000 1.32
+++ Untar.java 3 Jul 2003 13:02:01 -0000 1.33
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -110,6 +110,17 @@
*/
public void setCompression(UntarCompressionMethod method) {
compression = method;
+ }
+
+ /**
+ * No encoding support in Untar.
+ *
+ * @since Ant 1.6
+ */
+ public void setEncoding(String encoding) {
+ throw new BuildException("The " + getTaskName()
+ + " task doesn't support the encoding"
+ + " attribute", getLocation());
}
protected void expandFile(FileUtils fileUtils, File srcF, File dir) {
1.6 +11 -5
ant/src/testcases/org/apache/tools/ant/taskdefs/UntarTest.java
Index: UntarTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/UntarTest.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- UntarTest.java 7 Mar 2003 11:23:11 -0000 1.5
+++ UntarTest.java 3 Jul 2003 13:02:01 -0000 1.6
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -53,7 +53,6 @@
*/
package org.apache.tools.ant.taskdefs;
-import java.io.File;
import org.apache.tools.ant.BuildFileTest;
import org.apache.tools.ant.util.FileUtils;
@@ -117,8 +116,15 @@
project.resolveFile("asf-logo.gif")));
}
- public void testSrcDirTest() throws java.io.IOException {
- FileUtils fileUtils = FileUtils.newFileUtils();
+ public void testSrcDirTest() {
expectBuildException("srcDirTest", "Src cannot be a directory.");
}
+
+ public void testEncoding() {
+ expectSpecificBuildException("encoding",
+ "<untar> overrides setEncoding.",
+ "The untar task doesn't support the "
+ + "encoding attribute");
+ }
+
}
1.12 +9 -0
ant/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java
Index: UnzipTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- UnzipTest.java 3 Jul 2003 08:30:11 -0000 1.11
+++ UnzipTest.java 3 Jul 2003 13:02:01 -0000 1.12
@@ -153,4 +153,13 @@
getProject().resolveFile("unziptestout/2/bar").exists());
}
+ /*
+ * PR 10504
+ */
+ public void testEncoding() {
+ executeTarget("encodingTest");
+ assertTrue("foo has been properly named",
+ getProject().resolveFile("unziptestout/foo").exists());
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]