You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2004/11/09 17:11:36 UTC
cvs commit: ant/src/main/org/apache/tools/ant/taskdefs Sync.java
bodewig 2004/11/09 08:11:36
Modified: src/main/org/apache/tools/ant/taskdefs Sync.java
Log:
Improve code as suggested by Dominique
Revision Changes Path
1.15 +10 -4 ant/src/main/org/apache/tools/ant/taskdefs/Sync.java
Index: Sync.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Sync.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- Sync.java 9 Nov 2004 10:19:51 -0000 1.14
+++ Sync.java 9 Nov 2004 16:11:36 -0000 1.15
@@ -152,9 +152,10 @@
int[] removedCount = new int[] {0, 0};
DirectoryScanner ds = new DirectoryScanner();
ds.setBasedir(toDir);
- Set s = new HashSet(nonOrphans);
- s.add("");
- String[] excls = (String[]) s.toArray(new String[s.size()]);
+ String[] excls =
+ (String[]) nonOrphans.toArray(new String[nonOrphans.size() + 1]);
+ // want to keep toDir itself
+ excls[nonOrphans.size()] = "";
ds.setExcludes(excls);
ds.scan();
String[] files = ds.getIncludedFiles();
@@ -165,6 +166,11 @@
++removedCount[1];
}
String[] dirs = ds.getIncludedDirectories();
+ // ds returns the directories as it has visited them.
+ // iterating through the array backwards means we are deleting
+ // leaves before their parent nodes - thus making sure (well,
+ // more likely) that the directories are empty when we try to
+ // delete them.
for (int i = dirs.length - 1 ; i >= 0 ; --i) {
File f = new File(toDir, dirs[i]);
log("Removing orphan directory: " + f, Project.MSG_DEBUG);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org