Browse Source

preserve ZIP extra fields

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@794204 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 16 years ago
parent
commit
5c440d2481
1 changed files with 35 additions and 7 deletions
  1. +35
    -7
      src/main/org/apache/tools/ant/taskdefs/Zip.java

+ 35
- 7
src/main/org/apache/tools/ant/taskdefs/Zip.java View File

@@ -921,8 +921,7 @@ public class Zip extends MatchingTask {
? fileMode : getUnixMode(resources[i], zf,
fileMode);
addResource(resources[i], name, prefix,
zOut, thisFileMode,
zf, zfs.getSrc(getProject()));
zOut, thisFileMode, zf);
}
}
}
@@ -983,7 +982,7 @@ public class Zip extends MatchingTask {
*/
private void addResource(Resource r, String name, String prefix,
ZipOutputStream zOut, int mode,
ZipFile zf, File sourceArchive)
ZipFile zf)
throws IOException {

if (zf != null) {
@@ -998,7 +997,7 @@ public class Zip extends MatchingTask {
try {
is = zf.getInputStream(ze);
zipFile(is, zOut, prefix + name, ze.getTime(),
sourceArchive, mode);
mode, ze.getExtraFields());
} finally {
doCompress = oldCompress;
FileUtils.close(is);
@@ -1009,7 +1008,8 @@ public class Zip extends MatchingTask {
try {
is = r.getInputStream();
zipFile(is, zOut, prefix + name, r.getLastModified(),
sourceArchive, mode);
mode, r instanceof ZipResource
? ((ZipResource) r).getExtraFields() : null);
} finally {
FileUtils.close(is);
}
@@ -1065,7 +1065,7 @@ public class Zip extends MatchingTask {
} else {
addResource(resources[i], name, "", zOut,
ArchiveFileSet.DEFAULT_FILE_MODE,
null, null);
null);
}
}
}
@@ -1639,7 +1639,31 @@ public class Zip extends MatchingTask {
* @throws IOException on error
*/
protected void zipFile(InputStream in, ZipOutputStream zOut, String vPath,
long lastModified, File fromArchive, int mode)
long lastModified,
/* unused, BWC */ File fromArchive,
int mode)
throws IOException {
zipFile(in, zOut, vPath, lastModified, mode, null);
}

/**
* Adds a new entry to the archive, takes care of duplicates as well.
*
* @param in the stream to read data for the entry from. The
* caller of the method is responsible for closing the stream.
* @param zOut the stream to write to.
* @param vPath the name this entry shall have in the archive.
* @param lastModified last modification time for the entry.
* @param fromArchive the original archive we are copying this
* entry from, will be null if we are not copying from an archive.
* @param mode the Unix permissions to set.
* @param extra ZipExtraFields to add
*
* @since Ant 1.8.0
* @throws IOException on error
*/
protected void zipFile(InputStream in, ZipOutputStream zOut, String vPath,
long lastModified, int mode, ZipExtraField[] extra)
throws IOException {
if (entries.contains(vPath)) {

@@ -1709,6 +1733,10 @@ public class Zip extends MatchingTask {
ze.setUnixMode(mode);
zOut.putNextEntry(ze);

if (extra != null) {
ze.setExtraFields(extra);
}

byte[] buffer = new byte[BUFFER_SIZE];
int count = 0;
do {


Loading…
Cancel
Save