bodewig 2003/07/16 06:57:10
Modified: src/main/org/apache/tools/ant DirectoryScanner.java
Log:
Fix symlink check
Revision Changes Path
1.47 +39 -0 ant/src/main/org/apache/tools/ant/DirectoryScanner.java
Index: DirectoryScanner.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/DirectoryScanner.java,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- DirectoryScanner.java 16 Jul 2003 11:47:52 -0000 1.46
+++ DirectoryScanner.java 16 Jul 2003 13:56:55 -0000 1.47
@@ -705,6 +705,10 @@
}
if (myfile.exists()) {
+ if (!followSymlinks && isSymlink(basedir, currentelement)) {
+ continue;
+ }
+
if (myfile.isDirectory()) {
if (isIncluded(currentelement)
&& currentelement.length() > 0) {
@@ -1191,5 +1195,40 @@
}
}
return null;
+ }
+
+ /**
+ * Do we have to traverse a symlink when trying to reach path from
+ * basedir?
+ * @since Ant 1.6
+ */
+ private boolean isSymlink(File base, String path) {
+ return isSymlink(base, SelectorUtils.tokenizePath(path));
+ }
+
+ /**
+ * Do we have to traverse a symlink when trying to reach path from
+ * basedir?
+ * @since Ant 1.6
+ */
+ private boolean isSymlink(File base, Vector pathElements) {
+ if (pathElements.size() > 0) {
+ String current = (String) pathElements.remove(0);
+ try {
+ if (fileUtils.isSymbolicLink(base, current)) {
+ return true;
+ } else {
+ base = new File(base, current);
+ return isSymlink(base, pathElements);
+ }
+ } catch (IOException ioe) {
+ String msg = "IOException caught while checking "
+ + "for links, couldn't get cannonical path!";
+ // will be caught and redirected to Ant's logging system
+ System.err.println(msg);
+ return false;
+ }
+ }
+ return false;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]