Author: bodewig
Date: Tue Aug 25 03:30:17 2009
New Revision: 807464
URL: http://svn.apache.org/viewvc?rev=807464&view=rev
Log:
port preserve0permissions from core <zip>
Modified:
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml
ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml
ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml
ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml
Modified:
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
URL:
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java?rev=807464&r1=807463&r2=807464&view=diff
==============================================================================
---
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
(original)
+++
ant/sandbox/antlibs/compress/trunk/src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java
Tue Aug 25 03:30:17 2009
@@ -59,6 +59,7 @@
import org.apache.tools.ant.types.resources.ArchiveResource;
import org.apache.tools.ant.types.resources.FileResource;
import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.zip.UnixStat;
/**
* Base implementation of tasks creating archives.
@@ -72,6 +73,7 @@
private Mode mode = new Mode();
private String encoding;
private boolean filesOnly = true;
+ private boolean preserve0permissions = false;
protected ArchiveBase(StreamFactory factory, EntryBuilder builder) {
this.factory = factory;
@@ -124,6 +126,15 @@
filesOnly = b;
}
+ /**
+ * Whether 0 permissions read from an archive should be considered
+ * real permissions (that should be preserved) or missing
+ * permissions (which is the default).
+ */
+ public void setPreserve0permissions(boolean b) {
+ preserve0permissions = b;
+ }
+
public void execute() {
validate();
if (!dest.isExists()) {
@@ -428,7 +439,7 @@
/**
* Ensures a forward slash is used as file separator.
*/
- protected static String bendSlashesForward(String s) {
+ protected String bendSlashesForward(String s) {
if (s != null) {
s = s.replace('\\', '/');
if (File.separatorChar != '/' && File.separatorChar != '\\') {
@@ -472,8 +483,9 @@
* Various flags a (archive) resource may hold in addition to
* being a plain resource.
*/
- public static class ResourceFlags {
+ public class ResourceFlags {
private final int mode;
+ private final boolean modeSet;
private final int gid;
private final int uid;
private final ZipExtraField[] extraFields;
@@ -511,9 +523,11 @@
this.uid = uid;
this.userName = userName;
this.groupName = groupName;
+ int m = mode & UnixStat.PERM_MASK;
+ modeSet = mode >= 0 && (m > 0 || (m == 0 && preserve0permissions));
}
- public boolean hasModeBeenSet() { return mode >= 0; }
+ public boolean hasModeBeenSet() { return modeSet; }
public int getMode() { return mode; }
public ZipExtraField[] getZipExtraFields() { return extraFields; }
@@ -538,7 +552,7 @@
/**
* Various flags a (archive) resource collection may hold.
*/
- public static class ResourceCollectionFlags extends ResourceFlags {
+ public class ResourceCollectionFlags extends ResourceFlags {
private final String prefix, fullpath;
private final int dirMode;
@@ -589,7 +603,7 @@
/**
* Binds a resource to additional data that may be present.
*/
- public static class ResourceWithFlags {
+ public class ResourceWithFlags {
private final Resource r;
private final ResourceCollectionFlags rcFlags;
private final ResourceFlags rFlags;
Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml
URL:
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml?rev=807464&r1=807463&r2=807464&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/ar-test.xml Tue Aug 25
03:30:17 2009
@@ -261,4 +261,32 @@
</assertResourceDoesntExist>
</target>
+ <target name="-setUp0Permissions" depends="setUp">
+ <property name="src" location="${input}/src.ar"/>
+ <cmp:ar destfile="${src}" preserve0permissions="true">
+ <cmp:arfileset src="../resources/asf-logo.gif.ar"
+ filemode="0"
+ includes="asf-logo.gif"/>
+ </cmp:ar>
+ </target>
+
+ <target name="test0PermissionsGetReplaced"
+ depends="-setUp0Permissions">
+ <cmp:ar destfile="${dest}">
+ <cmp:arfileset src="${src}"
+ includes="asf-logo.gif"/>
+ </cmp:ar>
+ <checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
+ uid="1000" gid="1000"/>
+ </target>
+
+ <target name="testPreserve0Permissions"
+ depends="-setUp0Permissions">
+ <cmp:ar destfile="${dest}" preserve0permissions="true">
+ <cmp:arfileset src="${src}"
+ includes="asf-logo.gif"/>
+ </cmp:ar>
+ <checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="0"
+ uid="1000" gid="1000"/>
+ </target>
</project>
Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml
URL:
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml?rev=807464&r1=807463&r2=807464&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml
(original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/cpio-test.xml Tue Aug
25 03:30:17 2009
@@ -293,4 +293,32 @@
</assertResourceDoesntExist>
</target>
+ <target name="-setUp0Permissions" depends="setUp">
+ <property name="src" location="${input}/src.ar"/>
+ <cmp:ar destfile="${src}" preserve0permissions="true">
+ <cmp:arfileset src="../resources/asf-logo.gif.ar"
+ filemode="0"
+ includes="asf-logo.gif"/>
+ </cmp:ar>
+ </target>
+
+ <target name="test0PermissionsGetReplaced"
+ depends="-setUp0Permissions">
+ <cmp:cpio destfile="${dest}">
+ <cmp:arfileset src="${src}"
+ includes="asf-logo.gif"/>
+ </cmp:cpio>
+ <checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
+ uid="1000" gid="1000"/>
+ </target>
+
+ <target name="testPreserve0Permissions"
+ depends="-setUp0Permissions">
+ <cmp:cpio destfile="${dest}" preserve0permissions="true">
+ <cmp:arfileset src="${src}"
+ includes="asf-logo.gif"/>
+ </cmp:cpio>
+ <checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="0"
+ uid="1000" gid="1000"/>
+ </target>
</project>
Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml
URL:
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml?rev=807464&r1=807463&r2=807464&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/tar-test.xml Tue Aug
25 03:30:17 2009
@@ -309,4 +309,32 @@
</assertResourceDoesntExist>
</target>
+ <target name="-setUp0Permissions" depends="setUp">
+ <property name="src" location="${input}/src.ar"/>
+ <cmp:ar destfile="${src}" preserve0permissions="true">
+ <cmp:arfileset src="../resources/asf-logo.gif.ar"
+ filemode="0"
+ includes="asf-logo.gif"/>
+ </cmp:ar>
+ </target>
+
+ <target name="test0PermissionsGetReplaced"
+ depends="-setUp0Permissions">
+ <cmp:tar destfile="${dest}">
+ <cmp:arfileset src="${src}"
+ includes="asf-logo.gif"/>
+ </cmp:tar>
+ <checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
+ uid="1000" gid="1000"/>
+ </target>
+
+ <target name="testPreserve0Permissions"
+ depends="-setUp0Permissions">
+ <cmp:tar destfile="${dest}" preserve0permissions="true">
+ <cmp:arfileset src="${src}"
+ includes="asf-logo.gif"/>
+ </cmp:tar>
+ <checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="0"
+ uid="1000" gid="1000"/>
+ </target>
</project>
Modified: ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml
URL:
http://svn.apache.org/viewvc/ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml?rev=807464&r1=807463&r2=807464&view=diff
==============================================================================
--- ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml (original)
+++ ant/sandbox/antlibs/compress/trunk/src/tests/antunit/zip-test.xml Tue Aug
25 03:30:17 2009
@@ -276,4 +276,37 @@
</assertResourceDoesntExist>
</target>
+ <target name="-setUp0Permissions" depends="setUp">
+ <property name="src" location="${input}/src.ar"/>
+ <cmp:ar destfile="${src}" preserve0permissions="true">
+ <cmp:arfileset src="../resources/asf-logo.gif.ar"
+ filemode="0"
+ includes="asf-logo.gif"/>
+ </cmp:ar>
+ <au:assertTrue>
+ <cmp:hasmode mode="0">
+ <cmp:arentry name="asf-logo.gif">
+ <file file="${src}"/>
+ </cmp:arentry>
+ </cmp:hasmode>
+ </au:assertTrue>
+ </target>
+
+ <target name="test0PermissionsGetReplaced"
+ depends="-setUp0Permissions">
+ <cmp:zip destfile="${dest}">
+ <cmp:arfileset src="${src}"
+ includes="asf-logo.gif"/>
+ </cmp:zip>
+ <checkProperties dateTime="2009-07-31-20:11:12 +0200" mode="644"/>
+ </target>
+
+ <target name="testPreserve0Permissions"
+ depends="-setUp0Permissions">
+ <cmp:zip destfile="${dest}" preserve0permissions="true">
+ <cmp:arfileset src="${src}"
+ includes="asf-logo.gif"/>
+ </cmp:zip>
+ <checkProperties dateTime="2009-07-31-20:11:12 +0200" mode="0"/>
+ </target>
</project>