From 4464369821e5824727322622259f6ffd3ab8880b Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Wed, 10 Sep 2008 14:01:29 +0000 Subject: [PATCH] honor followsymlinks on a fileset's dir as well. PR 45741. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@693846 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 5 +++++ src/main/org/apache/tools/ant/DirectoryScanner.java | 10 ++++++++++ src/tests/antunit/core/dirscanner-symlinks-test.xml | 4 ++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/WHATSNEW b/WHATSNEW index 97d8558c7..4c982baa2 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -101,6 +101,11 @@ Changes that could break older environments: The task will now try to delete them in both cases. Bugzilla Report 41285. + * if the dir attribute of a point to a symbolic link and + followsymlinks is set to false, the fileset will no longer be + scanned and always seem empty. + Bugzilla Report 45741. + Fixed bugs: ----------- diff --git a/src/main/org/apache/tools/ant/DirectoryScanner.java b/src/main/org/apache/tools/ant/DirectoryScanner.java index 88c66003c..3074161c9 100644 --- a/src/main/org/apache/tools/ant/DirectoryScanner.java +++ b/src/main/org/apache/tools/ant/DirectoryScanner.java @@ -786,6 +786,7 @@ public class DirectoryScanner } scanning = true; } + File savedBase = basedir; try { synchronized (this) { illegal = null; @@ -797,6 +798,12 @@ public class DirectoryScanner boolean nullExcludes = (excludes == null); excludes = nullExcludes ? new String[0] : excludes; + if (basedir != null && !followSymlinks + && FILE_UTILS.isSymbolicLink(basedir.getParentFile(), + basedir.getName())) { + basedir = null; + } + if (basedir == null) { // if no basedir and no includes, nothing to do: if (nullIncludes) { @@ -839,7 +846,10 @@ public class DirectoryScanner includes = nullIncludes ? null : includes; excludes = nullExcludes ? null : excludes; } + } catch (IOException ex) { + throw new BuildException(ex); } finally { + basedir = savedBase; synchronized (scanLock) { scanning = false; scanLock.notifyAll(); diff --git a/src/tests/antunit/core/dirscanner-symlinks-test.xml b/src/tests/antunit/core/dirscanner-symlinks-test.xml index 3e1251207..551338ebe 100644 --- a/src/tests/antunit/core/dirscanner-symlinks-test.xml +++ b/src/tests/antunit/core/dirscanner-symlinks-test.xml @@ -66,7 +66,7 @@ - @@ -137,7 +137,7 @@ - +