diff --git a/docs/manual/OptionalTasks/ftp.html b/docs/manual/OptionalTasks/ftp.html index 3476ee551..4f52fdc2a 100644 --- a/docs/manual/OptionalTasks/ftp.html +++ b/docs/manual/OptionalTasks/ftp.html @@ -150,6 +150,19 @@ the code to parse MS-DOS listings -any takers?
The ftp task supports any number of nested <fileset> elements to specify
+the files to be retrieved, or deleted, or listed, or whose mode you want to change.
+followsymlinks defaults to false for remote filesets.
+Remote filesets are used for all actions except put.
+
+Remote filesets do not support selectors.
+
The easiest way to describe how to send files is with a couple of examples:
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
index 6556622ff..3fdd4f868 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
@@ -177,6 +177,9 @@ public class FTP
* internal class allowing to read the contents of a remote file system
* using the FTP protocol
* used in particular for ftp get operations
+ * differences with DirectoryScanner
+ * "" (the root of the fileset) is never included in the included directories
+ * followSymlinks defaults to false
*/
protected class FTPDirectoryScanner extends DirectoryScanner {
protected FTPClient ftp = null;
@@ -189,6 +192,7 @@ public class FTP
public FTPDirectoryScanner(FTPClient ftp) {
super();
this.ftp = ftp;
+ this.setFollowSymlinks(false);
}
@@ -215,17 +219,6 @@ public class FTP
try {
String cwd = ftp.printWorkingDirectory();
- // register also the root directory of the fileset if it matches
- // include and exclude patterns
- if (isIncluded("")) {
- if (!isExcluded("")) {
- dirsIncluded.addElement("");
- } else {
- dirsExcluded.addElement("");
- }
- } else {
- dirsNotIncluded.addElement("");
- }
// always start from the current ftp working dir
scandir(".", "", true);
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/net/FTPTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/net/FTPTest.java
index 4b1b47f24..2c097ae77 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/net/FTPTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/net/FTPTest.java
@@ -157,7 +157,7 @@ public class FTPTest extends BuildFileTest{
ds.scan();
compareFiles(ds, new String[] {"alpha/beta/beta.xml",
"alpha/beta/gamma/gamma.xml"},
- new String[] {"", "alpha", "alpha/beta",
+ new String[] {"alpha", "alpha/beta",
"alpha/beta/gamma"});
}
}
@@ -218,6 +218,7 @@ public class FTPTest extends BuildFileTest{
FTP.FTPDirectoryScanner ds = myFTPTask.newScanner(ftp);
ds.setBasedir(new File(getProject().getBaseDir(), "tmp"));
ds.setIncludes(new String[] {"alpha/beta/gamma/"});
+ ds.setFollowSymlinks(true);
ds.scan();
compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"},
new String[] {"alpha/beta/gamma"});
@@ -255,6 +256,7 @@ public class FTPTest extends BuildFileTest{
FTP.FTPDirectoryScanner ds = myFTPTask.newScanner(ftp);
ds.setBasedir(new File(getProject().getBaseDir(), "tmp"));
ds.setIncludes(new String[] {"alpha/beta/gamma/"});
+ ds.setFollowSymlinks(true);
ds.scan();
compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"},
new String[] {"alpha/beta/gamma"});
@@ -481,10 +483,9 @@ public class FTPTest extends BuildFileTest{
FTP.FTPDirectoryScanner ds = myFTPTask.newScanner(ftp);
ds.setBasedir(new File(getProject().getBaseDir(), "tmp"));
ds.setExcludes(new String[] {"alpha/**"});
- ds.setFollowSymlinks(false);
ds.scan();
compareFiles(ds, new String[] {"delta/delta.xml"},
- new String[] {"", "delta"});
+ new String[] {"delta"});
ds = myFTPTask.newScanner(ftp);
if (!changeRemoteDir(remoteTmpDir)) {
@@ -492,12 +493,11 @@ public class FTPTest extends BuildFileTest{
}
ds.setBasedir(new File(getProject().getBaseDir(), "tmp"));
ds.setExcludes(new String[] {"alpha"});
- ds.setFollowSymlinks(false);
ds.scan();
compareFiles(ds, new String[] {"alpha/beta/beta.xml",
"alpha/beta/gamma/gamma.xml",
"delta/delta.xml"},
- new String[] {"", "alpha/beta", "alpha/beta/gamma", "delta"});
+ new String[] {"alpha/beta", "alpha/beta/gamma", "delta"});
}