Will do. Sorry.
Conor MacNeill wrote:
>
> Larry,
>
> Just for future reference, can you submit patches to ant-dev.
>
> Cheers
> Conor
>
> > -----Original Message-----
> > From: Larry V. Streepy, Jr. [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, 27 July 2001 3:56 AM
> > To: ant user mail list
> > Subject: [PATCH] Updated FTP.java
> >
> >
> > I have made one enhancement and one bug fix to FTP.java.
> >
> > 1. The enhancement is to support a "mkdir" action. With this action,
> > the specified "remotedir" is created using a normal FTP MKDIR command.
> >
> > 2. The bug fix changes the isUpToDate test to prevent a build failure
> > when the remote file doesn't exist and the action is SEND.
> >
> > Hopefully others will find these changes useful.
> >
> > Due to some problems with my source control system, I can't generate
> > a proper patch file. In the patch below, the file /tmp/FTP.java is
> > the latest version (1.6) from the ant CVS tree. The second file is
> > the one with my additions.
> >
> > Thanks.
> >
> >
> > *** /tmp/FTP.java Thu Jul 26 11:46:45 2001
> > --- FTP.java Thu Jul 26 11:33:25 2001
> > ***************
> > *** 89,94 ****
> > --- 89,95 ----
> > protected final static int GET_FILES = 1;
> > protected final static int DEL_FILES = 2;
> > protected final static int LIST_FILES = 3;
> > + protected final static int MK_DIR = 4;
> >
> > private String remotedir;
> > private String server;
> > ***************
> > *** 110,123 ****
> > "sending",
> > "getting",
> > "deleting",
> > ! "listing"
> > };
> >
> > protected final static String[] COMPLETED_ACTION_STRS = {
> > "sent",
> > "retrieved",
> > "deleted",
> > ! "listed"
> > };
> >
> > protected class FTPDirectoryScanner extends DirectoryScanner {
> > --- 111,126 ----
> > "sending",
> > "getting",
> > "deleting",
> > ! "listing",
> > ! "making directory",
> > };
> >
> > protected final static String[] COMPLETED_ACTION_STRS = {
> > "sent",
> > "retrieved",
> > "deleted",
> > ! "listed",
> > ! "directory created",
> > };
> >
> > protected class FTPDirectoryScanner extends DirectoryScanner {
> > ***************
> > *** 344,349 ****
> > --- 347,356 ----
> > {
> > this.action = LIST_FILES;
> > }
> > + else if (action.toLowerCase().equals("mkdir"))
> > + {
> > + this.action = MK_DIR;
> > + }
> > else
> > {
> > throw new BuildException("action " + action + " is
> > not supported");
> > ***************
> > *** 381,386 ****
> > --- 388,397 ----
> > {
> > throw new BuildException("listing attribute must be
> > set for list action!");
> > }
> > +
> > + if( action == MK_DIR && remotedir == null ) {
> > + throw new BuildException("remotedir attribute must
> > be set for mkdir action!");
> > + }
> > }
> >
> > /**
> > ***************
> > *** 390,396 ****
> > protected int transferFiles(FTPClient ftp, FileSet fs)
> > throws IOException, BuildException
> > {
> > ! FileScanner ds;
> >
> > if (action == SEND_FILES) {
> > ds = fs.getDirectoryScanner(project);
> > --- 401,407 ----
> > protected int transferFiles(FTPClient ftp, FileSet fs)
> > throws IOException, BuildException
> > {
> > ! DirectoryScanner ds;
> >
> > if (action == SEND_FILES) {
> > ds = fs.getDirectoryScanner(project);
> > ***************
> > *** 550,565 ****
> > log("checking date for " + remoteFile, Project.MSG_VERBOSE);
> >
> > FTPFile[] files = ftp.listFiles(remoteFile);
> > - if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
> > - {
> > - throw new BuildException(
> > - "could not date test
> > remote file: " +
> > - ftp.getReplyString());
> > - }
> >
> > if (files == null)
> > {
> > ! return false;
> > }
> >
> > long remoteTimestamp =
> > files[0].getTimestamp().getTime().getTime();
> > --- 561,580 ----
> > log("checking date for " + remoteFile, Project.MSG_VERBOSE);
> >
> > FTPFile[] files = ftp.listFiles(remoteFile);
> >
> > if (files == null)
> > {
> > ! // If we are sending files, then assume out of date.
> > ! // If we are getting files, then throw an error
> > !
> > ! if( action == SEND_FILES ) {
> > ! log("Could not date test remote file: " + remoteFile
> > ! + "assuming out of date.", Project.MSG_VERBOSE);
> > ! return false;
> > ! } else {
> > ! throw new BuildException("could not date test
> > remote file: " +
> > ! ftp.getReplyString());
> > ! }
> > }
> >
> > long remoteTimestamp =
> > files[0].getTimestamp().getTime().getTime();
> > ***************
> > *** 732,737 ****
> > --- 747,785 ----
> > }
> >
> > /**
> > + * Create the specified directory on the remote host.
> > + * @param ftp The FTP client connection
> > + * @param dir The directory to create (format must be
> > correct for host type)
> > + */
> > + protected void makeRemoteDir( FTPClient ftp, String dir )
> > + throws IOException, BuildException
> > + {
> > + if (verbose) {
> > + log("creating directory: " + dir);
> > + }
> > +
> > + if( ! ftp.makeDirectory( dir ) ) {
> > + // Both codes 550 and 553 can be produced by FTP Servers
> > + // to indicate that an attempt to create a directory has
> > + // failed because the directory already exists.
> > +
> > + int rc = ftp.getReplyCode();
> > + if( rc != 550 && rc != 553 ) {
> > + throw new BuildException( "could not create
> > directory: " +
> > + ftp.getReplyString() );
> > + }
> > +
> > + if( verbose ) {
> > + log( "directory already exists" );
> > + }
> > + } else {
> > + if( verbose ) {
> > + log( "directory created OK" );
> > + }
> > + }
> > + }
> > +
> > + /**
> > * Runs the task.
> > */
> > public void execute()
> > ***************
> > *** 786,805 ****
> > }
> > }
> >
> > ! if (remotedir != null)
> > ! {
> > ! log("changing the remote directory",
> > Project.MSG_VERBOSE);
> > ! ftp.changeWorkingDirectory(remotedir);
> > ! if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
> > {
> > ! throw new BuildException(
> > ! "could not change
> > remote directory: " +
> > ! ftp.getReplyString());
> > }
> > }
> > -
> > - log(ACTION_STRS[action] + " files");
> > - transferFiles(ftp);
> >
> > }
> > catch(IOException ex)
> > --- 834,862 ----
> > }
> > }
> >
> > ! // If the action is MK_DIR, then the specified
> > remote directory is the
> > ! // directory to create.
> > !
> > ! if( action == MK_DIR ) {
> > !
> > ! makeRemoteDir( ftp, remotedir );
> > !
> > ! } else {
> > ! if (remotedir != null)
> > {
> > ! log("changing the remote directory",
> > Project.MSG_VERBOSE);
> > ! ftp.changeWorkingDirectory(remotedir);
> > ! if
> > (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
> > ! {
> > ! throw new BuildException(
> > ! "could not
> > change remote directory: " +
> > ! ftp.getReplyString());
> > ! }
> > !
> > ! log(ACTION_STRS[action] + " files");
> > ! transferFiles(ftp);
> > }
> > }
> >
> > }
> > catch(IOException ex)
> >
> > --
> > Larry V. Streepy, Jr.
> > Chief Technical Officer and VP of Engineering
> >
> > Health Language, Inc. -- "We speak the language of healthcare"
> >
> > 970/626-5028 (office) mailto:[EMAIL PROTECTED]
> > 970/626-4425 (fax) http://www.healthlanguage.com
> >
--
Larry V. Streepy, Jr.
Chief Technical Officer and VP of Engineering
Health Language, Inc. -- "We speak the language of healthcare"
970/626-5028 (office) mailto:[EMAIL PROTECTED]
970/626-4425 (fax) http://www.healthlanguage.com