This commit was manufactured by cvs2svn to create tag 'ANT_16_B3'.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/tags/ANT_16_B3@275742 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ReleaseInstructions b/ReleaseInstructions
index 3c199bd..a9ed058 100644
--- a/ReleaseInstructions
+++ b/ReleaseInstructions
@@ -4,50 +4,62 @@
          Stefan Bodewig
          Magesh Umasankar
 
-Note: This document was created in the context of releasing Ant 1.5.
+Note: This document was updated in the context of releasing Ant 1.6.
       Please interpret the branch names, tags, etc. according to
       your context.
 
 1.  Propose a release plan for vote.  This should set out the timetable for
-    the release under ideal circumstances.  The level of bugs reported 
-    can delay things. Generally, give a few weeks to "close" the source tree 
+    the release under ideal circumstances.  The level of bugs reported
+    can delay things. Generally, give a few weeks to "close" the source tree
     to further changes so people can finalise contributions, etc. At this time,
     the first beta will be cut and there will be then a period of beta testing,
     usually 1 month but this should be flexible.
 
 2.  Note that any mention of a deadline causes a flood of bug fixes, new tasks,
-    etc.  This needs to be managed as best it can. Some fixes will be applied, 
-    others held over. Make this clear in the release plan. The committers and 
-    particularly the release manager will need to make judgement calls here. 
+    etc.  This needs to be managed as best it can. Some fixes will be applied,
+    others held over. Make this clear in the release plan. The committers and
+    particularly the release manager will need to make judgement calls here.
     Anything too "big" is likely to be held over.
-    
-3.  Once the freeze date arrives, create a branch for the release builds. You 
-    will need to be comfortable in handling CVS branches with mutliple 
-    merge-backs to the main branch and even selected merges from the the main 
-    branch to the release branch.  
-    
+
+3.  Once the freeze date arrives, create a branch for the release builds. You
+    will need to be comfortable in handling CVS branches with mutliple
+    merge-backs to the main branch and even selected merges from the the main
+    branch to the release branch.
+
     For more information on performing branching and merging, please visit
     http://www.durak.org/cvswebsites/doc/cvs_54.php#SEC54
 
-    Label such branches ANT_15_BRANCH.
-    
-4.  Once the branch is setup, the version numbers in CVS are changed. On the 
-    branch, the build.xml version becomes 1.5Beta1 while the main branch is 
-    updated to 1.6alpha. 
-    
-    [[ TODO: Check if the documentation files also need to be updated to point 
+    Label such branches ANT_16_BRANCH.
+
+4.  Once the branch is setup, the version numbers in CVS are changed. On the
+    branch, the version property in build.xml becomes 1.6Beta,
+    while the main branch is updated to 1.7alpha.
+
+    [[ TODO: Check if the documentation files also need to be updated to point
     to the right areas of Ant's website. ]]
 
-5.  Ensure you have all the external libraries that Ant uses in your
+5.  Before a build :
+    Update the following files for version number, and commit your changes.
+
+    * docs/manual/cover.html
+    * docs/manual/credits.html
+    * build.xml (version property)
+
+    the first beta on the 1.6 branch should be called 1.6Beta1, ...
+
+    the version property in build.xml governs the output of ant -version and
+    the naming of the distribution files.
+
+6.  Ensure you have all the external libraries that Ant uses in your
     lib/optional directory.  To find out what libraries you need, execute
-    the build with -verbose option and scan for lines beginning with 
+    the build with -verbose option and scan for lines beginning with
     "Unable to load...".
 
-6.  Next bootstrap, build and run the tests.  Then build the distribution 
-    on the branch. It is important that this be a clean build. Label this with 
-    a tag ANT_15_B1.
-    
-7.  Sign the distribution files using the following simple script
+7.  Next bootstrap, build and run the tests.  Then build the distribution
+    on the branch. It is important that this be a clean build. Label this with
+    a tag ANT_16_B1.
+
+8.  Sign the distribution files using the following simple script
     #!/bin/sh
     for i in distribution/*
     do
@@ -61,46 +73,47 @@
     Before you do that, ensure that the key you use is inside the KEYS
     file in Ant's CVS repository - and that you perform a cvs update on
     the KEYS file in /www/www.apache.org/dist/ant/
-    
-    Also make sure you have sent the key that you use to a public 
+
+    Also make sure you have sent the key that you use to a public
     keyserver.
 
-8.  The beta distribution is now ready to go. Bundle it up into a tar.gz file 
+9.  The beta distribution is now ready to go. Bundle it up into a tar.gz file
     and scp to your apache account.
-    
-9.  Meanwhile, convert the WHATSNEW file into HTML for the README file on the 
-    website. See the previous release directories for examples of these files. 
+
+10. Meanwhile, convert the part of the WHATSNEW file covering the changes
+    since the last release into HTML for the README file on the
+    website. See the previous release directories for examples of these files.
     Add instructions and warnings (GNU tar format issues, etc).
 
     You may choose to use the text2html convertor present at
     http://www.aigeek.com/txt2html/
-    
+
     Name the generated file RELEASE-NOTES-x.y.z.html.
 
     [[ TODO: This must perhaps be an Ant task. ]]
 
-10. Once this is uploaded, unpack things, create the release directory, 
-    something like v1.5Beta1, push the release and RELEASE-NOTES files
+11. Once this is uploaded, unpack things, create the release directory,
+    something like v1.6Beta1, push the release and RELEASE-NOTES files
     into this directory.  Create a symbolic link named README.html
     that points to the RELEASE-NOTES.
 
     The files should go to /www/cvs.apache.org/dist/ant/ on minotaur.
 
-11. Address the available release tags in BugZilla. Create a new tag 1.5Beta1 
-    and a 1.6alpha. Assign all existing 1.5 alpha bugs to one of these release 
+12. Address the available release tags in BugZilla. Create a new tag 1.6Beta1
+    and a 1.7Alpha. Assign all existing 1.6 alpha bugs to one of these release
     labels.
-    
-12. Once that is done, do a test download to make sure everything is OK. A 
+
+13. Once that is done, do a test download to make sure everything is OK. A
     common problem may be:
-    * the file's mime type is not recognized and is interpreted as 
+    * the file's mime type is not recognized and is interpreted as
       text/plain.  Fix it by using some .htaccess magic (AddEncoding stuff)
     * Your gz.asc files are not being displayed properly (RemoveEncoing stuff)
-    
+
     If it looks OK, announce it on dev@ant and user@ant. After a few
     days pass and there are no major problems, a wider announcement is
     made (ant website, main jakarta website, announcements@jakarta.apache.org,
     etc).
-    
+
     Also ensure you:
     * Update antnews.xml (Announcement)
     * Update faq.xml (Ant's history details - not for betas)
@@ -115,29 +128,29 @@
     Announce beta releases at freshmeat.net (Stefan Bodewig is the
     owner of Ant's project entry - bug him ;-).
 
-13. As problems in the beta are discovered, there may be a need for
+14. As problems in the beta are discovered, there may be a need for
     one or more subsequent betas. The release manager makes this
     call. Each time, the versions are updated and the above process is
     repeated. Try not to have too many betas.
 
-14. Try to advertise the need for testing of the betas as much as possible.
+15. Try to advertise the need for testing of the betas as much as possible.
     This would eliminate the need to release minor patch versions like
-    we had to do when releasing Ant 1.4.  
-    
+    we had to do when releasing Ant 1.4.
+
     To monitor the number of downloads, look at the access_log
     file under /usr/local/apache2/logs
 
-15. When the final beta is considered OK, propose a vote on dev@ant to 
-    officially adopt the latest beta as the Ant 1.5 release. If it is passed, 
-    (it usually does,) this would be labelled ANT_15 and built in a similar 
+16. When the final beta is considered OK, propose a vote on dev@ant to
+    officially adopt the latest beta as the Ant 1.6 release. If it is passed,
+    (it usually does,) this would be labelled ANT_16 and built in a similar
     fashion to the above process.
 
-16. BUT
+17. BUT
 
     This time the directory you upload the files to is different and
     you'll have to do some house-keeping for the old release:
 
-    * upload the new release files to 
+    * upload the new release files to
       /www/www.apache.org/dist/ant/[source|binary].
 
     * remove the symbolic links from /www/www.apache.org/dist/ant.
@@ -147,14 +160,14 @@
     * Make sure that the symbolic link README.html points to the new
       RELEASE-NOTES.
 
-17. Change the links in /xdocs/bindownload.xml and /xdocs/srcdownload.xml,
+18. Change the links in /xdocs/bindownload.xml and /xdocs/srcdownload.xml,
     regenerate the HTML files, commit and update the site.
 
     As the mirrors may need some days to pick up the new release, you
     may want to add a note to that effect to the pages and remove it a few
     days later.
 
-18. Clean up.
+19. Clean up.
 
     * remove the remaining files of the previous release from
       /www/www.apache.org/dist/ant/[source|binary].
@@ -163,10 +176,10 @@
       /www/archive.apache.org/dist/ant/[source|binary] on minotaur,
       leave the *zip* files alone.
 
-19. Now and perhaps during previous betas any changes on the branch must 
+20. Now and perhaps during previous betas any changes on the branch must
     be merged back into the tree.
 
-20. At this point in time, the release is done and announcements are made. 
+21. At this point in time, the release is done and announcements are made.
     PGP-sign your announcement posts.
 
     [[TODO: Identify the mailing lists where announcements are to be made.
@@ -182,5 +195,5 @@
     Announce release in the usenet groups comp.lang.java.softwaretools
     and comp.lang.java.announce.
 
-21. You can now reacquaint yourself with your family and friends.
+22. You can now reacquaint yourself with your family and friends.
 
diff --git a/WHATSNEW b/WHATSNEW
index e20e2a8..6306344 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -1,5 +1,187 @@
-Changes from Ant 1.5.4 to current CVS version
-=============================================
+Changes from Ant 1.6.B2 to Ant 1.6.B3
+=====================================
+
+Changes that could break older environments:
+--------------------------------------------
+* Changed namespace processing. The namespace uri
+  of nested elements of a type or a task are now the
+  same as the type or task. Previously the namespace uri
+  of nested elements was ant's namespace uri. This change will affect users
+  of ant 1.6b1 and ant 1.6b2.
+
+* <csc>'s executable attribute defaults to mcs on non-Windows platforms.
+
+Fixed bugs:
+-----------
+* the <java> task checks that the Main method of the class to be executed is static,
+  and fails with a decent BuildException if it is not the case
+
+* a space at the end of the Ant-Version line of the default manifest has been removed
+
+* better debugging support for ApacheCatalogResolver
+  Bugzilla Report 24070.
+
+* better report of exceptions in the renaming of the old file in <zip update="true"/>
+  and the derived classes <jar>, ...
+
+* use of <parallel> and xmlns:prefix="antlib:package"
+
+* user and new arguments were swapped in PropertyHelper setNew and setUser.
+  Bugzilla Report 23966.
+
+* <style/> be able to resolve entities inside stylesheets.
+
+* <csc> and other .NET tasks : fixed Error when compiling many source files.
+  Bugzilla Report 19630.
+
+* <junit> Make properties available in timed-out tests.
+   Bugzilla Report 23935.
+
+* <junit> Pull ant-launcher.jar in the runtime as well.
+
+* <telnet> : better support for people debugging timed out reads.
+
+* <ssh> : parse properly return codes from server.
+  Also fix for Bugzilla Report 23986.
+
+* <scp> If remotedir has been omitted, make it default to "." .
+  Bugzilla Report 23987.
+
+* starteam tasks : insure proper disconnect from the server.
+  Bugzilla Report 24110.
+
+* <script>, <scriptdef>
+  fix problem : script task cannot cope with undefined task/type elements in buildfile
+  Bugzilla Report 23915.
+
+* <cvstagdiff> had a problem with aliased modules and with requests for multiple modules.
+  Bugzilla Reports 21373 and 22877.
+
+* <cvstagdiff> could not parse properly the revision number of new files with CVS 1.11.9 or higher.
+  Bugzilla Report 24406.
+
+* <ftp> null pointer exception when attempting rmdir in an empty directory.
+  Bugzilla Report 24440.
+
+* <scp> could corrupt files when transfering lots of files.
+  Bugzilla Report 24449.
+
+* <jdepend>   Fix NPE
+  Bugzilla Report 24344.
+
+
+Other changes:
+--------------
+* Attributes in the template bodies of <macrodef> are now denoted by @{attribute} instead of ${attribute}
+
+* <concat> will expand properties entered in the text of the tag
+
+* <exec> resolution behavior (resolveexecutable attribute) has been improved
+
+* running.html has been augmented with a list of the magic properties
+
+* welcome.html documentation has been updated
+
+* Change default uri from ant:core to antlib:org.apache.tools.ant
+
+* upgrade to xml-apis.jar from Xerces-J 2.6.0.
+
+* Shipped XML parser is now Xerces 2.6.0
+
+* set project for created targets.
+
+* make sure that the checkstyle stylesheets make their way into the distribution.
+
+* improve ant's own build file concerning the sources which depend upon bsf (rhino).
+
+* a number of documentation corrections.
+  Bugzilla reports 24059, 24060, 24069, 24074.
+
+* replacement of accentuated characters in the source code (actually in JavaDoc comments)
+  by UNICODE escapes.
+  Bugzilla report 23919.
+
+* load all xml resources for typedef not just the first
+  Bugzilla report 24024
+
+* <presetdef> fix so that the preset attributes are optional and
+  may be overridded (previosly the attributes were set twice)
+
+* provide stack for errors using import, ant, antcall, subant and macros
+
+* import task uses the FileUtils#resolveFile method to resolve the imported file,
+  in order to avoid trouble on Windows or Netware
+
+* ignore attributes from different URIS
+
+* <jdepend>
+  fix timeout attribute of jdepend
+  add unit tests
+  add includeruntime to allow unittests to run
+  checkstyle
+Changes from Ant 1.6.B1 to Ant 1.6.B2
+=====================================
+
+Changes that could break older environments:
+--------------------------------------------
+
+Fixed bugs:
+-----------
+
+* fix usage of mixed case names of add(typedef) introspection.
+  fix by moving the tolower method from unknownelement to introspectionhelper.
+
+* documentation added for -lib option used when starting ant via launcher
+  Bugzilla Report 23454.
+
+* user-friendly messages added for incorrect use of -lib option
+  Bugzilla Report 23454.
+
+* make <input/> be skipped when a property is already set
+  Bugzilla Report 19967.
+
+* improved cleanup of temporary files 
+  this concerns <javadoc/>, <replace/>, <zip/>, <javac/>, <cvstagdiff/>, <cab/>,
+  <replaceregexp/>, <junit/>, metamata tasks, sitraka tasks, <symlink/> 
+  temporary files are now marked with deleteOnExit
+  Bugzilla Report 17512.
+
+* Reuse the resolution logic of <property> inside <loadproperties>.
+  So <expandproperties/> is not needed any more together with <loadproperties/>
+  Bugzilla Report 17782.
+
+* Comparison of TemplateElement(s) and Attribute(s) fixed inside macrodef.
+
+* Don't silently swallow exceptions when something is wrong with adding or removing 
+  shutdown hooks , Bugzilla Report 23609.
+
+* noinform attribute for Websphere element of <ejbjar/> 
+  Bugzilla Report 23535.
+
+* <junit/> (JunitTestRunner)
+  Don't mask arbitrary exceptions when looking for a suite method.
+  Bugzilla Report 23033.
+
+* <ftp/> fix problem with relative remotedir
+  Bugzilla Report 23833.
+
+* ssh tasks : make .ssh/known_hosts optional
+
+* <vssget/>  was sending a wrong command line prefix for labels -VL-Lsome.label
+  this change fixes it to -VLsome.label instead
+
+* <zipfileset/> allow it to refer to a fileset, to which zipfileset specific attributes are added
+  this solves one frequent use case in the <war/> task
+
+Other changes:
+--------------
+
+* add an optional attribute to <import/>
+
+* upgrade protected access to public for setMacroDef for macroinstance object
+
+Changes from Ant 1.5.4 to Ant 1.6
+=================================
 
 Changes that could break older environments:
 --------------------------------------------
@@ -24,7 +206,8 @@
 * <xmlproperty> will no longer fail if the file to be loaded doesn't exist.
 
 * XML namespaces are now enabled in the XML parser, meaning XML namespace
-  declarations no longer cause errors.
+  declarations no longer cause errors. However task names containing colons
+  will cause errors unless there is a corresponding namespace uri.
 
 * The <ftp> and <telnet> tasks now require Jakarta Commons Net instead
   of the older ORO Netcomponents version.  See
@@ -63,6 +246,16 @@
   is now Hashtable<String, String[]>). This will affect third party code
   that extend Copy and override Copy#doFileOperations.
 
+* <loadproperties> didn't expand properties while <property file="..."/>
+  does, so they were not equivalent.  This has been fixed, which means
+  that propetries may get expanded twice if you use an
+  <expandproperties> filterreader.  Bugzilla Report 17782.
+
+* User defined tasks and typedefs are now handled internally in the
+  same way as predefined tasks and typedefs. Also tasks and typedefs
+  are resolved at a later stage. This causes some
+  differences especially for user defined task containers.
+
 Fixed bugs:
 -----------
 * Filter readers were not handling line endings properly.  Bugzilla
@@ -245,6 +438,15 @@
 * <junit includeantruntime="true" fork="true"> replaced the CLASSPATH instead
   of adding to it.  Bugzilla Report 14971.
 
+* <splash> could fail on JVMs that use null to indicate the system classloader.
+  Bugzilla Report 23320.
+
+* <xmlcatalog>s only worked when defined inside of tasks.  Bugzilla
+  Report 20965.
+  
+* <csc> and siblings (<vbc> <jsharpc>) handle large filesets by
+automatic use of response files.  Bugzilla report #19630
+
 Other changes:
 --------------
 * All tasks can be used outside of <target>s.  Note that some tasks
@@ -611,6 +813,28 @@
   or end of a file. Discussion started at
   http://marc.theaimsgroup.com/?l=ant-user&m=106366791228585&w=2
 
+* New task <import>
+
+* New task <macrodef>
+
+* New task <presetdef>
+
+* Ant libraries that can make use of namespaces to avoid name
+  clashes of custom tasks
+
+
+* <java> and <junit> now support <assertions>, which let you enable
+  and disable Java1.4 assertions on a package or class basis. These
+  only work when fork=true, currently.
+
+* .NET tasks expanded with VB support <vbc> and J#, via <jsharp>, 
+  <importtypelib> and <ilasm>. <csc> supports nested <src> types, 
+  <defines> for (potentially conditional) definitions, <reference>
+  filesets for references. The executable attribute lets you switch to
+  mono or other implementations -<csc> has been tested with Mono on
+  Linux and OSX.
+    
+
 Changes from Ant 1.5.3 to Ant 1.5.4
 ===================================
 
diff --git a/build.bat b/build.bat
index 4025d28..3faf80f 100755
--- a/build.bat
+++ b/build.bat
@@ -1,11 +1,10 @@
 @echo off
 
-REM   Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
+REM   Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
 REM   reserved.
 
-set OLDCLASSPATH=%CLASSPATH%
 set REAL_ANT_HOME=%ANT_HOME%
-set ANT_HOME=bootstrap
+set ANT_HOME=%~dp0\bootstrap
 if exist bootstrap\lib\ant.jar if exist bootstrap\bin\ant.bat if exist bootstrap\bin\lcp.bat if exist bootstrap\bin\antRun.bat goto runAnt
 call bootstrap.bat
 if exist bootstrap\lib\ant.jar if exist bootstrap\bin\ant.bat if exist bootstrap\bin\lcp.bat if exist bootstrap\bin\antRun.bat goto runAnt
@@ -13,21 +12,15 @@
 goto cleanup
 
 :runAnt
-set LOCALCLASSPATH=
-for %%i in (lib\optional\*.jar) do call bootstrap\bin\lcp.bat %%i
-set CLASSPATH=lib\optional\xalanj1compat.jar;%LOCALCLASSPATH%;%CLASSPATH%
-set LOCALCLASSPATH=
-
 if not "%REAL_ANT_HOME%" == "" goto install_ant
-call bootstrap\bin\ant.bat -emacs %1 %2 %3 %4 %5 %6 %7 %8 %9
+call bootstrap\bin\ant.bat -lib lib/optional %1 %2 %3 %4 %5 %6 %7 %8 %9
 goto cleanup
 
 :install_ant
-call bootstrap\bin\ant.bat -emacs -Dant.install="%REAL_ANT_HOME%" %1 %2 %3 %4 %5 %6 %7 %8 %9
+call bootstrap\bin\ant.bat -lib lib/optional -Dant.install="%REAL_ANT_HOME%" %1 %2 %3 %4 %5 %6 %7 %8 %9
 
 rem clean up
 :cleanup
 set ANT_HOME=%REAL_ANT_HOME%
 set REAL_ANT_HOME=
-set CLASSPATH=%OLDCLASSPATH%
-set OLDCLASSPATH=
+
diff --git a/build.sh b/build.sh
index 142a49f..cb14d2d 100755
--- a/build.sh
+++ b/build.sh
@@ -16,7 +16,11 @@
 esac
 
 REALANTHOME=$ANT_HOME
-ANT_HOME=bootstrap
+if [ -z "$PWD" ]; then
+    ANT_HOME=./bootstrap
+else
+    ANT_HOME="$PWD"/bootstrap
+fi
 export ANT_HOME
 
 if test ! -f bootstrap/lib/ant.jar -o  ! -x bootstrap/bin/ant -o ! -x bootstrap/bin/antRun ; then
@@ -28,31 +32,6 @@
   exit
 fi
 
-LOCALCLASSPATH=
-# add in the dependency .jar files
-DIRLIBS=lib/optional/*.jar
-for i in ${DIRLIBS}
-do
-    if [ "$i" != "${DIRLIBS}" ] ; then
-        LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
-    fi
-done
-
-# make sure the classpath is in unix format
-if $cygwin ; then
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-CLASSPATH=$LOCALCLASSPATH:$CLASSPATH
-
-# switch back to Windows format
-if $cygwin ; then
-    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-fi
-
-export CLASSPATH
-
-
 if [ "$REALANTHOME" != "" ] ; then
   if $cygwin; then
      REALANTHOME=`cygpath --path --windows "$REALANTHOME"`
@@ -62,5 +41,5 @@
   ANT_INSTALL="-emacs"
 fi
 
-bootstrap/bin/ant "$ANT_INSTALL" $*
+bootstrap/bin/ant -lib lib/optional "$ANT_INSTALL" $*
 
diff --git a/build.xml b/build.xml
index e4eca82..d236eb8 100644
--- a/build.xml
+++ b/build.xml
@@ -25,7 +25,7 @@
   -->
   <property name="Name" value="Apache Ant"/>
   <property name="name" value="ant"/>
-  <property name="version" value="1.6alpha"/>
+  <property name="version" value="1.6beta3"/>
   <property name="manifest-version" value="1.6"/>
   <property name="bootstrap.jar" value="ant-bootstrap.jar"/>
 
@@ -192,7 +192,7 @@
     <filename name="${optional.package}/XslpLiaison*"/>
   </selector>
 
-  <selector id="needs.apache.resolver">
+  <selector id="needs.apache-resolver">
     <filename name="${apache.resolver.type.package}/**"/>
   </selector>
 
@@ -200,11 +200,11 @@
     <filename name="${optional.package}/junit/**"/>
   </selector>
 
-  <selector id="needs.jakarta.regexp">
+  <selector id="needs.jakarta-regexp">
     <filename name="${regexp.package}/JakartaRegexp*"/>
   </selector>
 
-  <selector id="needs.jakarta.oro">
+  <selector id="needs.jakarta-oro">
     <or>
       <filename name="${regexp.package}/JakartaOro*"/>
       <filename name="${optional.package}/perforce/*"/>
@@ -212,7 +212,7 @@
     </or>
   </selector>
 
-  <selector id="needs.jakarta.bcel">
+  <selector id="needs.jakarta-bcel">
     <or>
       <filename name="${ant.package}/filters/util/JavaClassHelper*"/>
       <filename name="${util.package}/depend/bcel/*"/>
@@ -220,15 +220,15 @@
     </or>
   </selector>
 
-  <selector id="needs.jakarta.log4j">
+  <selector id="needs.jakarta-log4j">
     <filename name="${ant.package}/listener/Log4jListener*"/>
   </selector>
 
-  <selector id="needs.commons.logging">
+  <selector id="needs.commons-logging">
     <filename name="${ant.package}/listener/CommonsLoggingListener*"/>
   </selector>
 
-  <selector id="needs.bsf">
+  <selector id="needs.apache-bsf">
     <or>
       <filename name="${optional.package}/Script*"/>
       <filename name="${optional.package}/script/**/*"/>
@@ -270,7 +270,7 @@
     </or>
   </selector>
 
-  <selector id="needs.commons.net">
+  <selector id="needs.commons-net">
     <or>
       <filename name="${optional.package}/net/FTP*"/>
       <filename name="${optional.package}/net/RExec*"/>
@@ -327,6 +327,7 @@
 
   <patternset id="teststhatfail">
     <exclude name="${optional.package}/BeanShellScriptTest.java"/>
+    <exclude name="${optional.package}/jdepend/JDependTest.java"/>
   </patternset>
 
   <!--
@@ -554,6 +555,9 @@
     <available property="beanshell.present"
                classname="bsh.StringUtil"
                classpathref="classpath"/>
+    <available property="xerces1.present"
+               classname="org.apache.xerces.framework.XMLParser"
+               classpathref="classpath"/>
     <available property="jsch.present"
                classname="com.jcraft.jsch.Session"
                classpathref="classpath"/>
@@ -611,16 +615,16 @@
             <selector refid="needs.xalan1" unless="xalan.present"/>
             <selector refid="needs.xalan2" unless="xalan2.present"/>
             <selector refid="needs.xslp" unless="xslp.present"/>
-            <selector refid="needs.apache.resolver" unless="apache.resolver.present"/>
+            <selector refid="needs.apache-resolver" unless="apache.resolver.present"/>
             <selector refid="needs.junit" unless="junit.present"/>
-            <selector refid="needs.jakarta.regexp"
+            <selector refid="needs.jakarta-regexp"
                       unless="jakarta.regexp.present"/>
-            <selector refid="needs.jakarta.oro" unless="jakarta.oro.present"/>
-            <selector refid="needs.jakarta.bcel" unless="bcel.present"/>
-            <selector refid="needs.jakarta.log4j" unless="log4j.present"/>
-            <selector refid="needs.commons.logging"
+            <selector refid="needs.jakarta-oro" unless="jakarta.oro.present"/>
+            <selector refid="needs.jakarta-bcel" unless="bcel.present"/>
+            <selector refid="needs.jakarta-log4j" unless="log4j.present"/>
+            <selector refid="needs.commons-logging"
                       unless="commons.logging.present"/>
-            <selector refid="needs.bsf" unless="bsf.present"/>
+            <selector refid="needs.apache-bsf" unless="bsf.present"/>
             <selector refid="needs.stylebook" unless="stylebook.present"/>
             <selector refid="needs.javamail" unless="javamail.complete"/>
             <selector refid="needs.icontract" unless="icontract.present"/>
@@ -629,7 +633,7 @@
             <selector refid="needs.weblogic.ddcreator"
                       unless="ejb.DDCreator.present"/>
             <selector refid="needs.weblogic.server" unless="ejb.wls.present"/>
-            <selector refid="needs.commons.net" unless="commons.net.present"/>
+            <selector refid="needs.commons-net" unless="commons.net.present"/>
             <selector refid="needs.starteam" unless="starteam.present"/>
             <selector refid="needs.vaj" unless="vaj.present"/>
             <selector refid="needs.antlr" unless="antlr.present"/>
@@ -724,10 +728,10 @@
             <filename name="${optional.type.package}/**"/>
             <filename name="${util.package}/depend/**"/>
             <filename name="${util.package}/optional/**"/>
-            <selector refid="needs.jakarta.log4j"/>
-            <selector refid="needs.commons.logging"/>
-            <selector refid="needs.jakarta.regexp"/>
-            <selector refid="needs.jakarta.oro"/>
+            <selector refid="needs.jakarta-log4j"/>
+            <selector refid="needs.commons-logging"/>
+            <selector refid="needs.jakarta-regexp"/>
+            <selector refid="needs.jakarta-oro"/>
             <selector refid="needs.jdk1.4+"/>
             <selector refid="needs.javamail"/>
             <selector refid="ant.launcher"/>
@@ -760,13 +764,6 @@
       </fileset>
     </jar>
 
-    <jar destfile="${build.lib}/optional.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="non-core"/>
-      <metainf dir="${build.dir}" includes="LICENSE.txt"/>
-    </jar>
-
     <jar destfile="${build.lib}/${bootstrap.jar}"
          basedir="${build.classes}"
          manifest="${manifest}">
@@ -774,11 +771,11 @@
       <metainf dir="${build.dir}" includes="LICENSE.txt"/>
       <manifest>
         <attribute name="Class-Path"
-                   value="ant.jar xml-apis.jar xercesImpl.jar optional.jar xalan.jar"/>
+                   value="ant.jar xml-apis.jar xercesImpl.jar xalan.jar"/>
       </manifest>
     </jar>
 
-    <jar destfile="${build.lib}/nodeps.jar"
+    <jar destfile="${build.lib}/ant-nodeps.jar"
          basedir="${build.classes}"
          manifest="${manifest.tmp}">
       <and>
@@ -789,14 +786,14 @@
             <selector refid="needs.xalan1"/>
             <selector refid="needs.xalan2"/>
             <selector refid="needs.xslp"/>
-            <selector refid="needs.apache.resolver"/>
+            <selector refid="needs.apache-resolver"/>
             <selector refid="needs.junit"/>
-            <selector refid="needs.jakarta.regexp"/>
-            <selector refid="needs.jakarta.oro"/>
-            <selector refid="needs.jakarta.bcel"/>
-            <selector refid="needs.jakarta.log4j"/>
-            <selector refid="needs.commons.logging"/>
-            <selector refid="needs.bsf"/>
+            <selector refid="needs.jakarta-regexp"/>
+            <selector refid="needs.jakarta-oro"/>
+            <selector refid="needs.jakarta-bcel"/>
+            <selector refid="needs.jakarta-log4j"/>
+            <selector refid="needs.commons-logging"/>
+            <selector refid="needs.apache-bsf"/>
             <selector refid="needs.stylebook"/>
             <selector refid="needs.javamail"/>
             <selector refid="needs.icontract"/>
@@ -804,7 +801,7 @@
             <selector refid="needs.weblogic.ejbc"/>
             <selector refid="needs.weblogic.ddcreator"/>
             <selector refid="needs.weblogic.server"/>
-            <selector refid="needs.commons.net"/>
+            <selector refid="needs.commons-net"/>
             <selector refid="needs.starteam"/>
             <selector refid="needs.vaj"/>
             <selector refid="needs.antlr"/>
@@ -819,147 +816,42 @@
       <metainf dir="${build.dir}" includes="LICENSE.txt"/>
     </jar>
 
-    <jar destfile="${build.lib}/${optional.jars.prefix}-trax.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.trax"/>
-    </jar>
+    <macrodef name="optional-jar">
+      <attribute name="dep"/>
+      <sequential>
+        <jar destfile="${build.lib}/${optional.jars.prefix}-@{dep}.jar"
+          basedir="${build.classes}"
+          manifest="${manifest.tmp}">
+          <selector refid="needs.@{dep}"/>
+        </jar>
+      </sequential>
+    </macrodef>
 
-    <jar destfile="${build.lib}/${optional.jars.prefix}-xalan1.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.xalan1"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-xalan2.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.xalan2"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-xslp.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.xslp"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-apache-resolver.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.apache.resolver"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-junit.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.junit"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-jakarta-regexp.jar"
-         basedir="${build.classes}" manifest="${manifest.tmp}">
-      <selector refid="needs.jakarta.regexp"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-oro.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.jakarta.oro"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-bcel.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.jakarta.bcel"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-log4j.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.jakarta.log4j"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-commons-logging.jar"
-         basedir="${build.classes}" manifest="${manifest.tmp}">
-      <selector refid="needs.commons.logging"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-apache-bsf.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.bsf"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-stylebook.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.stylebook"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-javamail.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.javamail"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-icontract.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.icontract"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-netrexx.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.netrexx"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-commons-net.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.commons.net"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-starteam.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.starteam"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-vaj.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.vaj"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-antlr.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.antlr"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-jmf.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.jmf"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-jai.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.jai"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-swing.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.swing"/>
-    </jar>
-
-    <jar destfile="${build.lib}/${optional.jars.prefix}-jdepend.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.jdepend"/>
-    </jar>
+    <optional-jar dep="trax"/>
+    <optional-jar dep="xalan1"/>
+    <optional-jar dep="xalan2"/>
+    <optional-jar dep="xslp"/>
+    <optional-jar dep="apache-resolver"/>
+    <optional-jar dep="junit"/>
+    <optional-jar dep="jakarta-regexp"/>
+    <optional-jar dep="jakarta-oro"/>
+    <optional-jar dep="jakarta-bcel"/>
+    <optional-jar dep="jakarta-log4j"/>
+    <optional-jar dep="commons-logging"/>
+    <optional-jar dep="apache-bsf"/>
+    <optional-jar dep="stylebook"/>
+    <optional-jar dep="javamail"/>
+    <optional-jar dep="icontract"/>
+    <optional-jar dep="netrexx"/>
+    <optional-jar dep="commons-net"/>
+    <optional-jar dep="starteam"/>
+    <optional-jar dep="vaj"/>
+    <optional-jar dep="antlr"/>
+    <optional-jar dep="jmf"/>
+    <optional-jar dep="jai"/>
+    <optional-jar dep="swing"/>
+    <optional-jar dep="jsch"/>
+    <optional-jar dep="jdepend"/>
 
     <jar destfile="${build.lib}/${optional.jars.prefix}-weblogic.jar"
          basedir="${build.classes}"
@@ -971,12 +863,6 @@
       </or>
     </jar>
 
-    <jar destfile="${build.lib}/${optional.jars.prefix}-jsch.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="needs.jsch"/>
-    </jar>
-
   </target>
 
   <!--   Creates jar of test utility classes -->
@@ -1118,7 +1004,7 @@
             <include name="changelog.xsl"/>
             <include name="jdepend.xsl"/>
             <include name="jdepend-frames.xsl"/>
-            <include name="checkstyle-frames.xsl"/>
+            <include name="checkstyle/*.xsl"/>
             <include name="log.xsl"/>
             <include name="tagdiff.xsl"/>
         </fileset>
@@ -1456,6 +1342,13 @@
 
       <selector refid="conditional-patterns"/>
     </javac>
+    
+    <!-- Used by AntlibTest.testAntlibResource: -->
+    <jar jarfile="${build.tests}/org/apache/tools/ant/taskdefs/test2-antlib.jar">
+        <zipfileset dir="${tests.etc.dir}" fullpath="taskdefs/test.antlib.xml">
+            <include name="taskdefs/test2.antlib.xml"/>
+        </zipfileset>
+    </jar>
   </target>
 
   <target name="dump-info" depends="dump-sys-properties,run-which"/>
@@ -1570,11 +1463,13 @@
                    unless="some.regexp.support"/>
           <exclude name="${ant.package}/types/selectors/ContainsRegexpTest.java"
                    unless="some.regexp.support"/>
-          <exclude name="${optional.package}/RhinoScriptTest.java"
+          <exclude name="${optional.package}/Rhino*.java"
                    unless="bsf.present"/>
-          <exclude name="${optional.package}/RhinoScriptTest.java"
+          <exclude name="${optional.package}/Rhino*.java"
                    unless="rhino.present"/>
           <exclude name="${optional.package}/script/*.java"
+                   unless="bsf.present"/>
+          <exclude name="${optional.package}/script/*.java"
                    unless="rhino.present"/>
           <exclude name="${optional.package}/BeanShellScriptTest.java"
                    unless="bsf.present"/>
@@ -1605,6 +1500,10 @@
           <!-- needs BSF to work -->
           <exclude name="${optional.package}/XalanLiaisonTest.java"
                    unless="bsf.present"/>
+          <exclude name="${optional.package}/XalanLiaisonTest.java"
+                   unless="xerces1.present"/>
+          <exclude name="${optional.package}/XslpLiaisonTest.java"
+                   unless="xerces1.present"/>
 
           <!-- needs resolver.jar to work -->
           <exclude name="${optional.package}/XmlValidateCatalogTest.java"
diff --git a/docs/contributors.html b/docs/contributors.html
index ee56055..e8d3b87 100644
--- a/docs/contributors.html
+++ b/docs/contributors.html
@@ -322,7 +322,7 @@
 platform (J2EE, XML, ...).
 </p>
                                 <p>
-                <b>Antoine Levy-Lambert</b> (levylambert at tiscali-dsl.de)
+                <b>Antoine Levy-Lambert</b> (antoine at apache.org)
 <br />
 Antoine is an IT consultant specialized in financial IT and
 in application management/configuration management. He has experience with
diff --git a/docs/external.html b/docs/external.html
index 368b22b..9e35467 100644
--- a/docs/external.html
+++ b/docs/external.html
@@ -161,7 +161,7 @@
     </div>
     <img style="float: left" height="10" width="10" border="0" alt="" src="./images/menu-left.gif">
     <img style="float: right" height="10" width="10" border="0" alt="" src="./images/menu-right.gif">
-  </div>  
+  </div>
       <div class="lightbluebar">&nbsp;</div>
   <div class="main">
   <div class="content">
@@ -281,6 +281,60 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
+        <a name="AntDoc"></a>
+        AntDoc
+      </h4>
+                        <p>AntDoc is a tool that generates HTML documentation from Ant
+        buildfiles; the generated HTML is inspired from what javadoc
+        yields.  AntDocGUI offers a simple Ant target launcher named
+        AntDoc GUI. Ant targets may be launched from the generated
+        AntDoc HTML pages. Integration to various IDEs is in
+        progress.</p>
+                                <p>AntDoc can be run via an Ant task, AntDoc GUI can be run
+        via an Ant task, or via a JVM launch.</p>
+                                      <table class="ForrestTable" cellspacing="1" cellpadding="4">
+              <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Compatibility:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Ant 1.4.1 and higher
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          URL:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://antdoc.free.fr/">http://antdoc.free.fr/</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Contact:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Edouard Mercier
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          License:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          The Apache Software License
+      </td>
+      </tr>
+        </table>
+                                                    <h4 class="subsection">
         <a name="Anteater"></a>
         Anteater
       </h4>
@@ -1141,6 +1195,61 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
+        <a name="Image"></a>
+        Image
+      </h4>
+                        <p>Image task generates and transforms images. It exposes the
+        imaging capability available in Java2D, Java Advanced Imaging,
+        ImageIO, etc., as set of nested elements.</p>
+                                <p>Image transformations such as "resize"
+        (scale),"overlay" (one image on another),
+        "border" (add a border), "text" (text on
+        image), "crop" (a sub-image of a bigger image),
+        "rotate", "grayscale" (change a color
+        image to shades of gray).</p>
+                                      <table class="externals" cellspacing="1" cellpadding="4">
+              <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Compatibility:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Ant 1.4
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          URL:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://www.mullassery.com/software/ANT/">http://www.mullassery.com/software/ANT/</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Contact:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://www.mullassery.com/contact/feedback.jsp">Abey Mullassery</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          License:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Apache Software License
+      </td>
+      </tr>
+        </table>
+                                                    <h4 class="subsection">
         <a name="Importscrubber"></a>
         Importscrubber
       </h4>
@@ -1188,6 +1297,54 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
+        <a name="ImTask"></a>
+        ImTask
+      </h4>
+                        <p>ImTask is a task to allow one to send an Instant
+        Message. Currently supports yahoo!, AIM, and Jabber</p>
+                                      <table class="externals" cellspacing="1" cellpadding="4">
+              <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Compatibility:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Ant 1.5 or higher
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          URL:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://imtask.sourceforge.net/">http://imtask.sourceforge.net</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Contact:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="mailto:djallstar@users.sourceforge.net">Jon Madison</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          License:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          GNU LGPL
+      </td>
+      </tr>
+        </table>
+                                                    <h4 class="subsection">
         <a name="Interactive"></a>
         Interactive
       </h4>
@@ -1995,6 +2152,45 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
+        <a name="JindentTask"></a>
+        JindentTask
+      </h4>
+                        <p>JindentTask is a very straightforward wrapping of the
+        Jindent tool, a vendor code beautifier. It enables to use
+        Jindent natively from Ant.</p>
+                                      <table class="externals" cellspacing="1" cellpadding="4">
+              <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Compatibility:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Ant 1.4.1 and higher
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          URL:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://the.edouard.mercier.free.fr/Jindent_content.php">http://the.edouard.mercier.free.fr/Jindent_content.php</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Contact:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Edouard Mercier
+      </td>
+      </tr>
+        </table>
+                                                    <h4 class="subsection">
         <a name="Jing Task"></a>
         Jing Task
       </h4>
@@ -2366,6 +2562,71 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
+        <a name="Kanaputs"></a>
+        Kanaputs
+      </h4>
+                        <p>Kanaputs is a parser for java based scripting. It is an
+        interpreter for Java. With Kanaputs you can use Java as an
+        interpreted language: no more compilation, each instruction is
+        executed when you write it.  It is a small programmation
+        language to make script files above Java.</p>
+                                <p>Kanaputs Ant Task provides a way to add any kind of
+        programmatic features in your Ant script. The code you insert
+        stays OS independent (because Kanaputs uses Java) and is
+        completely integrated with Ant as you can give Ant properties
+        to the Kanaputs code and get back the results in other
+        properties.</p>
+                                <p>Moreover, as you can invoke any kind of Java code with
+        Kanaputs, you can popup windows from your Ant file to ask the
+        user to do a choice.</p>
+                                      <table class="externals" cellspacing="1" cellpadding="4">
+              <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Compatibility:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Ant 1.2 and above
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          URL:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          
+              <a href="http://www.kanaputs.org/">http://www.kanaputs.org/</a> 
+              <a href="http://www.kanaputs.org/ant.html">http://www.kanaputs.org/ant.html</a> 
+            
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Contact:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          
+              <a href="mailto:kfra@kanaputs.org">kfra@kanaputs.org</a> 
+            
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          License:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Freeware
+      </td>
+      </tr>
+        </table>
+                                                    <h4 class="subsection">
         <a name="Macker"></a>
         Macker
       </h4>
@@ -2516,6 +2777,55 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
+        <a name="PRes"></a>
+        PRes
+      </h4>
+                        <p>PRes is short for Property Resources and will generate a Java source
+           file from name=value pair .property files which can be compiled like any
+           other class.</p>
+                                      <table class="externals" cellspacing="1" cellpadding="4">
+              <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Compatibility:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Ant 1.5 and later (may work with earlier)
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          URL:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://mseries.sourceforge.net">http://mseries.sourceforge.net</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Contact:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://web.ukonline.co.uk/mseries/contact.html">MSeries</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          License:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          LGPL
+      </td>
+      </tr>
+        </table>
+                                                    <h4 class="subsection">
         <a name="ProGuard"></a>
         ProGuard
       </h4>
@@ -2984,6 +3294,57 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
+        <a name="TestSetGenerator"></a>
+        TestSetGenerator
+      </h4>
+                        <p>The TestSetGenerator is an ant task for generating property files with
+        testsets based on the results of SQL queries and validation plug-ins. Very
+        usefull when building unit tests that make use of changing datasets. This
+        task is an extension of the Ant SQL task. Hsqldb is used for both the
+        examples and the unittests.</p>
+                                      <table class="externals" cellspacing="1" cellpadding="4">
+              <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Compatibility:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          ANT 1.4 (or later)
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          URL:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://anttestsetgen.sourceforge.net/">http://anttestsetgen.sourceforge.net/</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Contact:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="mailto:m.c.jansen@planet.nl">m.c.jansen@planet.nl</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          License:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          GPL
+      </td>
+      </tr>
+        </table>
+                                                    <h4 class="subsection">
         <a name="Tidy Imports (Tim)"></a>
         Tidy Imports (Tim)
       </h4>
diff --git a/docs/faq.html b/docs/faq.html
index 253592f..cbc50bf 100644
--- a/docs/faq.html
+++ b/docs/faq.html
@@ -233,6 +233,10 @@
   How can I include national characters like German
         umlauts in my build file?
       </a></li>
+                <li><a href="#use-zip-instead-of-jar">
+  How do I use <code>jar</code>'s <code>M</code> switch?
+      I don't want a MANIFEST.
+      </a></li>
             </ul>
                 <h4 class="toc">It doesn't work (as expected)</h4>
         <ul>
@@ -846,6 +850,19 @@
                         <pre class="code">
 &lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
 </pre>
+                    <p class="faq">
+      <a name="use-zip-instead-of-jar"></a>
+      How do I use <code>jar</code>'s <code>M</code> switch?
+      I don't want a MANIFEST.
+    </p>
+                  <p>A JAR archive is a ZIP file, so if you don't want a
+        MANIFEST you can simply use <code>&lt;zip&gt;</code>.</p>
+                        <p>If your file names contain national characters you should
+        know that Sun's <code>jar</code> utility like Ant's
+        <code>&lt;jar&gt;</code> uses UFT8 to encode their names while
+        <code>&lt;zip&gt;</code> uses your platforms default encoding.
+        Use the encoding attribute of <code>&lt;zip&gt;</code> if
+        necessary.</p>
                                 <p class="faq">
       <a name="always-recompiles"></a>
       Why does Ant always recompile all my Java files?
@@ -970,7 +987,7 @@
                         <p>You may have seen these lower-case directory names in
         WinZIP, but WinZIP is trying to be helpful (and fails).  If
         WinZIP encounters a filename that is all upper-case, it
-        assumes it has come from an old DOS box andchanges the case to
+        assumes it has come from an old DOS box and changes the case to
         all lower-case for you.</p>
                         <p>If you extract (or just check) the archive with jar, you
         will see that the names have the correct case.</p>
@@ -1103,6 +1120,28 @@
    &lt;!ENTITY include SYSTEM &quot;file:./header.xml&quot;&gt;
 ]&gt;
 </pre>
+                        <p>Starting with Ant 1.6, there is a new
+        <code>&lt;import&gt;</code> task that can (also) be used to
+        include build file fragments.  Unlike the snippets used with
+        entity includes, the referenced files have to be complete Ant
+        build files, though.</p>
+                        <p>The example above would become:</p>
+                        <pre class="code">
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;project name=&quot;test&quot; default=&quot;test&quot; basedir=&quot;.&quot;&gt;
+
+  &lt;target name=&quot;setup&quot;&gt;
+    ...
+  &lt;/target&gt;
+
+  &lt;import file=&quot;../common.xml&quot;/&gt;
+
+  ...
+
+&lt;/project&gt;
+</pre>
+                        <p>Unlike entity includes, <code>&lt;import&gt;</code> will
+        let you use Ant properties in the file name.</p>
                     <p class="faq">
       <a name="mail-logger"></a>
       How do I send an email with the result of my build
@@ -1315,6 +1354,10 @@
         <code>CLASSPATH</code> environment variable or
         <code>ANT_HOME/lib</code>" for the rest of this
         answer.</p>
+                        <p>Technically the sentence above isn't true for Ant 1.6
+        and later anymore, but the result is the same.  For the sake
+        of this discussion, <code>CLASSPATH</code> and
+        <code>ANT_HOME/lib</code> are identical.</p>
                         <p>This question collects a common type of problem: A task
         needs an external library and it has a nested classpath
         element so that you can point it to this external library, but
@@ -1367,6 +1410,8 @@
           <li>remove the class that loads the external library from
           the <code>CLASSPATH</code>.</li>
         </ol>
+                        <p><strong>Using The Second Option with Ant 1.5.4 and
+        Earlier:</strong></p>
                         <p>The easiest way to do this is to remove
         <code>optional.jar</code> from <code>ANT_HOME/lib</code>.  If
         you do so, you will have to <code>&lt;taskdef&gt;</code> all
@@ -1393,8 +1438,20 @@
         directory, in the <code>&lt;style&gt;</code> case it is one of
         the <code>*Liaison</code> classes in
         <code>org/apache/tools/ant/taskdefs/optional</code>.</p>
+                        <p><strong>Using The Second Option with Ant 1.6 and
+        later:</strong></p>
+                        <p>In Ant 1.6 <code>optional.jar</code> has been split into
+        multiple jars, each one containing classes with the same
+        dependencies on external libraries.  You can move the
+        "offending" jar out of ANT_HOME/lib.  For the
+        <code>&lt;junit&gt;</code> task it would be
+        <code>ant-junit.jar</code> and for <code>&lt;style&gt;</code>
+        it would be <code>ant-trax.jar</code>,
+        <code>ant-xalan1.jar</code> or <code>ant-xslp.jar</code> -
+        depending on the processor you use.</p>
                         <p>If you use the option to break up <code>optional.jar</code>
-        for <code>&lt;junit&gt;</code>, you still have to use a
+        for <code>&lt;junit&gt;</code> or remove
+        <code>ant-junit.jar</code>, you still have to use a
         <code>&lt;taskdef&gt;</code> with a nested
         <code>&lt;classpath&gt;</code> to define the junit task.</p>
                     <p class="faq">
diff --git a/docs/images/beta.png b/docs/images/beta.png
new file mode 100644
index 0000000..55cfa80
--- /dev/null
+++ b/docs/images/beta.png
Binary files differ
diff --git a/docs/index.html b/docs/index.html
index e806329..135068f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -169,32 +169,22 @@
   <div class="content">
     <h1 class="title">Welcome</h1>
             <h3 class="section">
-      <a name="ApacheCon 2003"></a>
-      ApacheCon 2003
+      <a name="Ant 1.6beta2"></a>
+      Ant 1.6beta2
     </h3>
-                        <a href="http://apachecon.com/2003/US/index.html">
-    <img align="right" border="0" src="http://jakarta.apache.org/images/logos/ac2003-150.gif" />
-  </a>
-                                <p>
-    <a href="http://apachecon.com/2003/US/index.html">ApacheCon US 2003</a>
-    is now open for registration. ApacheCon is the conference for all things
-    Apache. Come along and learn about a range of new technologies, meet some
-    Apache folks and share the knowledge.
-    </p>
-                        <h3 class="section">
-      <a name="Ant 1.5.4"></a>
-      Ant 1.5.4
-    </h3>
-                        <p>Apache Ant 1.5.4 is now available for
-     <a href="http://ant.apache.org/bindownload.cgi">download</a>.
-    </p>
-                                <div class="warning">
-    <div class="label">Note</div>
-    <div class="content">Ant 1.5.4 will be the last release that supports
-      JDK 1.1. The next major release of Ant, Ant 1.6, will require JDK 1.2 or
-      later
-    </div>
-    </div>
+                        <p>Apache Ant 1.6beta2 is now available for <a href="http://cvs.apache.org/dist/ant/v1.6beta2/">download</a>.  As
+       we've already said in the announcements of Ant 1.5.4, this release
+       requires JDK 1.2 or later to run.</p>
+                                <p>We encourage user to give this beta a release a try and report
+       any bugs found so that we get a chance to fix them before we make
+       the final release of Ant 1.6.</p>
+                                <p>Ant 1.6 adds a lot of new features, most prominently support
+       for XML namespaces as well as a new concept of Ant libraries that
+       makes use of namespaces to avoid name clashes of custom tasks.
+       For a longer list of fixed bugs and new features see the release
+       notes.</p>
+                                <p>The manual of Ant 1.6 is available on line
+       <a href="manual-1.6beta/"> here</a>.</p>
                         <h3 class="section">
       <a name="Apache Ant"></a>
       Apache Ant
diff --git a/docs/manual/CoreTasks/ant.html b/docs/manual/CoreTasks/ant.html
index bfecfcb..fb65ba5 100644
--- a/docs/manual/CoreTasks/ant.html
+++ b/docs/manual/CoreTasks/ant.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Ant Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -20,15 +21,20 @@
 <p>If no target attribute is supplied, the default target of the new project is
 used.</p>
 <p>By default, all of the properties of the current project will be
-available in the new project.   Alternatively, you can
-set the <i>inheritAll</i> attribute to <code>false</code> and only
+available in the new project.  Alternatively, you can set the
+<i>inheritAll</i> attribute to <code>false</code> and only
 &quot;user&quot; properties (i.e., those passed on the command-line)
 will be passed to the new project.  In either case, the set of
-properties passed to the new project will override the properties that 
-are set in the new project (See also the <a href="property.html">property task</a>).</p>
-<p>You can also set properties in the new project from the old project by
-using nested property tags. These properties are always passed regardless of the
-setting of <i>inheritAll</i>.  This allows you to parameterize your subprojects.</p>
+properties passed to the new project will override the properties that
+are set in the new project (See also the <a
+href="property.html">property task</a>).</p>
+
+<p>You can also set properties in the new project from the old project
+by using nested property tags. These properties are always passed
+to the new project and any project created in that project
+regardless of the setting of <i>inheritAll</i>.  This allows you to
+parameterize your subprojects.  Properties defined on the command line
+can not be overridden by nested &lt;property&gt; elements.</p>
 
 <p>References to data types can also be passed to the new project, but
 by default they are not.  If you set the inheritrefs attribute to
@@ -38,8 +44,9 @@
 <p>Nested <a href="#reference"><i>&lt;reference&gt;</i></a> elements
 can also be used to copy references from the calling project to the
 new project, optionally under a different id.  References taken from
-nested elements will override existing references in the new
-project.</p>
+nested elements will override existing references that have been
+defined outside of targets in the new project - but not those defined
+inside of targets.</p>
 
 <h3>Parameters</h3>
 <table border="1" cellpadding="2" cellspacing="0">
diff --git a/docs/manual/CoreTasks/antcall.html b/docs/manual/CoreTasks/antcall.html
index bfd7462..134c7f5 100644
--- a/docs/manual/CoreTasks/antcall.html
+++ b/docs/manual/CoreTasks/antcall.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>AntCall Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -21,15 +22,19 @@
 will be passed to the new project.  In either case, the set of
 properties passed to the new project will override the properties that 
 are set in the new project (See also the <a href="property.html">property task</a>).</p>
-<p>You can also set properties in the new project from the old project by
-using nested param tags. These properties are always passed regardless of the
-setting of <i>inheritAll</i>.  This allows you to parameterize your subprojects.</p>
+<p>You can also set properties in the new project from the old project
+by using nested param tags. These properties are always passed
+to the new project and any project created in that project
+regardless of the setting of <i>inheritAll</i>.  This allows you to
+parameterize your subprojects.  Properties defined on the command line
+can not be overridden by nested &lt;param&gt; elements.</p>
 
 <p>Nested <a href="#reference"><i>&lt;reference&gt;</i></a> elements can
 be used to copy references from the calling project to the new
 project, optionally under a different id.  References taken from
-nested elements will override existing references in the new
-project.</p>
+nested elements will override existing references that have been
+defined outside of targets in the new project - but not those defined
+inside of targets.</p>
 
 <p>
 When a target is invoked by antcall, all of its dependent targets will
diff --git a/docs/manual/CoreTasks/antstructure.html b/docs/manual/CoreTasks/antstructure.html
index 2893727..3cb8559 100644
--- a/docs/manual/CoreTasks/antstructure.html
+++ b/docs/manual/CoreTasks/antstructure.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>AntStructure Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/apply.html b/docs/manual/CoreTasks/apply.html
index a846bb2..71217ce 100644
--- a/docs/manual/CoreTasks/apply.html
+++ b/docs/manual/CoreTasks/apply.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apply Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -26,6 +27,10 @@
 for in the given dest.</p>
 <p>At least one fileset or filelist is required, and you must not specify more than
 one mapper.</p>
+
+<p>Note that you cannot interact with the forked program, the only way
+to send input to it is via the input and inputstring attributes.</p>
+
 <h3>Parameters</h3>
 <table border="1" cellpadding="2" cellspacing="0">
   <tr>
diff --git a/docs/manual/CoreTasks/available.html b/docs/manual/CoreTasks/available.html
index f492f58..b122f31 100644
--- a/docs/manual/CoreTasks/available.html
+++ b/docs/manual/CoreTasks/available.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Available Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/basename.html b/docs/manual/CoreTasks/basename.html
index 641c4b5..82d01b9 100644
--- a/docs/manual/CoreTasks/basename.html
+++ b/docs/manual/CoreTasks/basename.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Basename Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/buildnumber.html b/docs/manual/CoreTasks/buildnumber.html
index 3dc3b38..d585b19 100644
--- a/docs/manual/CoreTasks/buildnumber.html
+++ b/docs/manual/CoreTasks/buildnumber.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>BuildNumber Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/changelog.html b/docs/manual/CoreTasks/changelog.html
index 733fd54..ba245eb 100644
--- a/docs/manual/CoreTasks/changelog.html
+++ b/docs/manual/CoreTasks/changelog.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>ChangeLog Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/checksum.html b/docs/manual/CoreTasks/checksum.html
index 5ea92a5..db804c2 100644
--- a/docs/manual/CoreTasks/checksum.html
+++ b/docs/manual/CoreTasks/checksum.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Checksum Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/chmod.html b/docs/manual/CoreTasks/chmod.html
index bf8acc2..0de8add 100644
--- a/docs/manual/CoreTasks/chmod.html
+++ b/docs/manual/CoreTasks/chmod.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Chmod Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/common.html b/docs/manual/CoreTasks/common.html
index 4447fb7..4535dd5 100644
--- a/docs/manual/CoreTasks/common.html
+++ b/docs/manual/CoreTasks/common.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Common</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/concat.html b/docs/manual/CoreTasks/concat.html
index b25fb30..9bf717b 100644
--- a/docs/manual/CoreTasks/concat.html
+++ b/docs/manual/CoreTasks/concat.html
@@ -3,6 +3,7 @@
     <head>
       <meta http-equiv="Content-Language" content="en-us">
       <title>Concat</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
     </head>
 
     <body>
diff --git a/docs/manual/CoreTasks/condition.html b/docs/manual/CoreTasks/condition.html
index 78a00c6..51ae8b3 100644
--- a/docs/manual/CoreTasks/condition.html
+++ b/docs/manual/CoreTasks/condition.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Condition Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/conditions.html b/docs/manual/CoreTasks/conditions.html
index 40f25b9..e344874 100644
--- a/docs/manual/CoreTasks/conditions.html
+++ b/docs/manual/CoreTasks/conditions.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Conditions Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/copy.html b/docs/manual/CoreTasks/copy.html
index e49ca88..53045a6 100644
--- a/docs/manual/CoreTasks/copy.html
+++ b/docs/manual/CoreTasks/copy.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Copy Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/copydir.html b/docs/manual/CoreTasks/copydir.html
index 2eecb92..29d9b62 100644
--- a/docs/manual/CoreTasks/copydir.html
+++ b/docs/manual/CoreTasks/copydir.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Copydir Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/copyfile.html b/docs/manual/CoreTasks/copyfile.html
index e7ad864..831210f 100644
--- a/docs/manual/CoreTasks/copyfile.html
+++ b/docs/manual/CoreTasks/copyfile.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Copyfile Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/cvs.html b/docs/manual/CoreTasks/cvs.html
index 8612f08..9fa7853 100644
--- a/docs/manual/CoreTasks/cvs.html
+++ b/docs/manual/CoreTasks/cvs.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>CVS Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -54,7 +55,10 @@
   </tr>
   <tr>
     <td valign="top">dest</td>
-    <td valign="top">the directory where the checked out files should be placed.</td>
+    <td valign="top">the directory where the checked out files should
+    be placed.  Note that this is different from CVS's -d command line
+    switch as Ant will never shorten pathnames to avoid empty
+    directories.</td>
     <td align="center" valign="top">No, default is project's basedir.</td>
   </tr>
   <tr>
@@ -165,8 +169,8 @@
 <p>Updates from the head of repository ignoring sticky bits (<code>-A</code>) and creating any new directories as necessary (<code>-d</code>).</p>
 <p>Note: the text of the command is passed to cvs &quot;as-is&quot; so any cvs options should appear
 before the command, and any command options should appear after the command as in the diff example
-above. See <a href="http://www.cvshome.org/docs/manual/cvs-1.11.6/cvs.html" target="_top">the cvs manual</a> for details,
-specifically the <a href="http://www.cvshome.org/docs/manual/cvs-1.11.6/cvs_16.html" target="_top">Guide to CVS commands</a></p>
+above. See <a href="http://www.cvshome.org/docs/manual/cvs-1.11.7/cvs.html" target="_top">the cvs manual</a> for details,
+specifically the <a href="http://www.cvshome.org/docs/manual/cvs-1.11.7/cvs_16.html" target="_top">Guide to CVS commands</a></p>
 <hr>
 <p align="center">Copyright &copy; 2000-2003 Apache Software
 Foundation.  All rights Reserved.</p>
diff --git a/docs/manual/CoreTasks/cvspass.html b/docs/manual/CoreTasks/cvspass.html
index b26c1c5..7e8c676 100644
--- a/docs/manual/CoreTasks/cvspass.html
+++ b/docs/manual/CoreTasks/cvspass.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>CVSPass Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/cvstagdiff.html b/docs/manual/CoreTasks/cvstagdiff.html
index 1d7f502..b000770 100644
--- a/docs/manual/CoreTasks/cvstagdiff.html
+++ b/docs/manual/CoreTasks/cvstagdiff.html
@@ -2,6 +2,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>CvsTagDiff Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 <h2><a name="cvstagdiff">CvsTagDiff</a></h2>
@@ -47,11 +48,6 @@
     <td valign="top">The file in which to write the diff report.</td>
     <td align="center" valign="top">Yes</td>
   </tr>
-  <tr>
-    <td valign="top">rootdir</td>
-    <td valign="top">Root directory for the package, if different from the package name.</td>
-    <td align="center" valign="top">No</td>
-  </tr>
 </table>
 
 <h3>Parameters inherited from the <code>cvs</code> task</h3>
@@ -78,7 +74,10 @@
   </tr>
   <tr>
     <td valign="top">package</td>
-    <td valign="top">the package/module to analyze.</td>
+    <td valign="top">the package/module to analyze.<br>
+    Since ant 1.6
+    multiple packages separated by spaces are possible.
+    aliases corresponding to different modules are also possible</td>
     <td align="center" valign="top">Yes</td>
   </tr>
   <tr>
@@ -131,16 +130,14 @@
 
 <pre>  &lt;cvstagdiff
                 destfile=&quot;tagdiff.xml&quot;
-                package=&quot;ant&quot;
-                rootdir=&quot;apache/ant&quot;
-                startDate=&quot;2002-01-01&quot;
-                endDate=&quot;2002-31-01&quot;
+                package=&quot;ant jakarta-gump&quot;
+                startDate=&quot;2003-01-01&quot;
+                endDate=&quot;2003-31-01&quot;
   /&gt;</pre>
 
 <p>Generates a tagdiff report for all the changes that have been made
-in the <code>ant</code> module in january 2002, with <code>rootdir</code> indicating that
-the actual location of the <code>ant</code> module in cvs is <code>apache/ant</code>
-rather than <code>ant</code>. In this example <code>cvsRoot</code>
+in the <code>ant</code> and <code>jakarta-gump</code> modules in january 2003.
+In this example <code>cvsRoot</code>
 has not been set. The current <code>cvsRoot</code> will be used (assuming the build is started
 from a folder stored in <code>cvs</code>.
 It writes these changes into the file <code>tagdiff.xml</code>.</p>
@@ -160,9 +157,17 @@
         &lt;/style&gt;
 </pre>
 
-<h4>Sample Output</h4>
+<h4>Output</h4>
 <p>
-The cvsroot and package attributes of the tagdiff element are new in ant 1.6.
+The cvsroot and package attributes of the tagdiff element are new in ant 1.6.<br>
+Notes on entry attributes :
+<table border="1">
+<tr><th>Attribute</th><th>Comment</th></tr>
+<tr><td>name</td><td>when reporting on one package, the package name is removed from the output</td></tr>
+<tr><td>revision</td><td>supplied for files which exist at the end of the reporting period</td></tr>
+<tr><td>prevrevision</td><td>supplied for files which exist at the beginning of the reporting period.<br>
+Old CVS servers do not supply it for deleted files. CVS 1.12.2 supplies it.</td></tr>
+</table>
 </p>
 <pre>
 &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
diff --git a/docs/manual/CoreTasks/defaultexcludes.html b/docs/manual/CoreTasks/defaultexcludes.html
index c9395f8..4743cb3 100644
--- a/docs/manual/CoreTasks/defaultexcludes.html
+++ b/docs/manual/CoreTasks/defaultexcludes.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>DefaultExcludes Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/delete.html b/docs/manual/CoreTasks/delete.html
index 98d25d3..d2055c8 100644
--- a/docs/manual/CoreTasks/delete.html
+++ b/docs/manual/CoreTasks/delete.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Delete Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/deltree.html b/docs/manual/CoreTasks/deltree.html
index 08dd2b9..5280774 100644
--- a/docs/manual/CoreTasks/deltree.html
+++ b/docs/manual/CoreTasks/deltree.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Deltree Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/dependset.html b/docs/manual/CoreTasks/dependset.html
index dfd578a..5ec3ce0 100644
--- a/docs/manual/CoreTasks/dependset.html
+++ b/docs/manual/CoreTasks/dependset.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>DependSet Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/dirname.html b/docs/manual/CoreTasks/dirname.html
index 9255f01..d0e8df2 100644
--- a/docs/manual/CoreTasks/dirname.html
+++ b/docs/manual/CoreTasks/dirname.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Dirname Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/ear.html b/docs/manual/CoreTasks/ear.html
index 58c7ae8..6461ed7 100644
--- a/docs/manual/CoreTasks/ear.html
+++ b/docs/manual/CoreTasks/ear.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>EAR Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/echo.html b/docs/manual/CoreTasks/echo.html
index 7553f24..113715c 100644
--- a/docs/manual/CoreTasks/echo.html
+++ b/docs/manual/CoreTasks/echo.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Echo Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/exec.html b/docs/manual/CoreTasks/exec.html
index 385b5ae..d257c85 100644
--- a/docs/manual/CoreTasks/exec.html
+++ b/docs/manual/CoreTasks/exec.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Exec Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -13,6 +14,9 @@
 the command is only executed when Ant is run on one of the specified operating
 systems.</p>
 
+<p>Note that you cannot interact with the forked program, the only way
+to send input to it is via the input and inputstring attributes.</p>
+
 <h4>Cygwin Users</h4>
 <p>In general the &lt;exec&gt; task will not understand paths such as /bin/sh for 
 the executable parameter. This is because the Java VM in which Ant is running is a 
@@ -20,20 +24,27 @@
 </p>
  
 <h4>OpenVMS Users</h4>
-
 <p>The command specified using <code>executable</code> and
 <code>&lt;arg&gt;</code> elements is executed exactly as specified
-inside a temporary DCL script.  This means that paths have to be
-written in VMS style.  It is also required that the logical
-<code>JAVA$FORK_SUPPORT_CHDIR</code> is set to <code>TRUE</code> (see
-the <i>JDK Release Notes</i>).</p>
- 
+inside a temporary DCL script.  This has some implications:
+<ul>
+<li>paths have to be written in VMS style</li>
+<li>if your <code>executable</code> points to a DCL script remember to
+prefix it with an <code>@</code>-sign
+(e.g. <code>executable="@[FOO]BAR.COM"</code>), just as you would in a
+DCL script</li>
+</ul>
+For <code>&lt;exec&gt;</code> to work in an environment with a Java VM
+older than version 1.4.1-2 it is also <i>required</i> that the logical
+<code>JAVA$FORK_SUPPORT_CHDIR</code> is set to <code>TRUE</code> in
+the job table (see the <i>JDK Release Notes</i>).</p>
+
 <p>Please note that the Java VM provided by HP doesn't follow OpenVMS'
 conventions of exit codes.  If you run a Java VM with this task, the
 task may falsely claim that an error occured (or silently ignore an
 error).  Don't use this task to run <code>JAVA.EXE</code>, use a
 <code>&lt;java&gt;</code> task with the <code>fork</code> attribute
-set ti <code>true</code> instead as this task will follow the VM's
+set to <code>true</code> instead as this task will follow the VM's
 interpretation of exit codes.</p>
 
 <h3>Parameters</h3>
diff --git a/docs/manual/CoreTasks/fail.html b/docs/manual/CoreTasks/fail.html
index d679539..1fce1dc 100644
--- a/docs/manual/CoreTasks/fail.html
+++ b/docs/manual/CoreTasks/fail.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Fail Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/filter.html b/docs/manual/CoreTasks/filter.html
index e579ac4..9750206 100644
--- a/docs/manual/CoreTasks/filter.html
+++ b/docs/manual/CoreTasks/filter.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Filter Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/fixcrlf.html b/docs/manual/CoreTasks/fixcrlf.html
index dfa478e..c418c4c 100644
--- a/docs/manual/CoreTasks/fixcrlf.html
+++ b/docs/manual/CoreTasks/fixcrlf.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>FixCRLF Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/genkey.html b/docs/manual/CoreTasks/genkey.html
index e89cbd9..4bddd45 100644
--- a/docs/manual/CoreTasks/genkey.html
+++ b/docs/manual/CoreTasks/genkey.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>GenKey Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/get.html b/docs/manual/CoreTasks/get.html
index f51c195..56b43fc 100644
--- a/docs/manual/CoreTasks/get.html
+++ b/docs/manual/CoreTasks/get.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Get Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -84,12 +85,12 @@
 <pre>  &lt;get src=&quot;http://ant.apache.org/&quot; dest=&quot;help/index.html&quot;/&gt;</pre>
 <p>Gets the index page of http://ant.apache.org/, and stores it in the file <code>help/index.html</code>.</p>
 
-<pre>  &lt;get src=&quot;http://jakarta.apache.org/builds/tomcat/nightly/ant.zip&quot; 
-    dest=&quot;optional.jar&quot; 
+<pre>  &lt;get src=&quot;http://www.apache.org/dist/ant/KEYS&quot; 
+    dest=&quot;KEYS&quot; 
     verbose=&quot;true&quot;
     usetimestamp=&quot;true&quot;/&gt;</pre>
 <p>
-Gets the nightly ant build from the tomcat distribution, if the local copy
+Gets the PGP keys of Ant's (current and past) release managers, if the local copy
 is missing or out of date. Uses the verbose option 
 for progress information.
 </p>
diff --git a/docs/manual/CoreTasks/gunzip.html b/docs/manual/CoreTasks/gunzip.html
index 07e6cd6..1a195d8 100644
--- a/docs/manual/CoreTasks/gunzip.html
+++ b/docs/manual/CoreTasks/gunzip.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>GUnZip Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/gzip.html b/docs/manual/CoreTasks/gzip.html
index 3fe9205..d411ddb 100644
--- a/docs/manual/CoreTasks/gzip.html
+++ b/docs/manual/CoreTasks/gzip.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>GZip Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/import.html b/docs/manual/CoreTasks/import.html
index 6317069..884fe49 100644
--- a/docs/manual/CoreTasks/import.html
+++ b/docs/manual/CoreTasks/import.html
@@ -3,6 +3,7 @@
 <head>
   <meta http-equiv="Content-Language" content="en-us">
   <title>Import Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
   <h2><a name="import">Import</a></h2>
@@ -83,6 +84,15 @@
       </td>
       <td valign="top" align="center">Yes</td>
     </tr>
+    <tr>
+      <td valign="top">optional<br>
+      </td>
+      <td valign="top">
+        if true, do not issue stop the build if the file does not exist,
+        default is false.<br>
+      </td>
+      <td valign="top" align="center">No</td>
+    </tr>
   </tbody>
 </table>
 <h3><br>
diff --git a/docs/manual/CoreTasks/input.html b/docs/manual/CoreTasks/input.html
index 2209c62..36e34e8 100644
--- a/docs/manual/CoreTasks/input.html
+++ b/docs/manual/CoreTasks/input.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Input Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -118,4 +119,4 @@
 <p align="center">Copyright &copy; 2001-2003 Apache Software Foundation. All rights
 Reserved.</p>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/manual/CoreTasks/jar.html b/docs/manual/CoreTasks/jar.html
index 61a1dc1..3c144bc 100644
--- a/docs/manual/CoreTasks/jar.html
+++ b/docs/manual/CoreTasks/jar.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Jar Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/java.html b/docs/manual/CoreTasks/java.html
index c2b9f85..f725ff3 100644
--- a/docs/manual/CoreTasks/java.html
+++ b/docs/manual/CoreTasks/java.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Java Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -14,6 +15,10 @@
 <p>
 If odd things go wrong when you run this task, set fork="true" to use a new
 JVM.
+
+<p>Note that you cannot interact with a forked VM, the only way to
+send input to it is via the input and inputstring attributes.</p>
+
 <h3>Parameters</h3>
 <table border="1" cellpadding="2" cellspacing="0">
   <tr>
diff --git a/docs/manual/CoreTasks/javac.html b/docs/manual/CoreTasks/javac.html
index 192643d..fae0fd2 100644
--- a/docs/manual/CoreTasks/javac.html
+++ b/docs/manual/CoreTasks/javac.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Javac Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/javadoc.html b/docs/manual/CoreTasks/javadoc.html
index 4b5b84a..d7e08ef 100644
--- a/docs/manual/CoreTasks/javadoc.html
+++ b/docs/manual/CoreTasks/javadoc.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Javadoc Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/loadfile.html b/docs/manual/CoreTasks/loadfile.html
index 6d80843..843c967 100644
--- a/docs/manual/CoreTasks/loadfile.html
+++ b/docs/manual/CoreTasks/loadfile.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>LoadFile Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/loadproperties.html b/docs/manual/CoreTasks/loadproperties.html
index 641b5fe..220f001 100644
--- a/docs/manual/CoreTasks/loadproperties.html
+++ b/docs/manual/CoreTasks/loadproperties.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>LoadProperties Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/macrodef.html b/docs/manual/CoreTasks/macrodef.html
index 7d7fa7e..855f8d4 100644
--- a/docs/manual/CoreTasks/macrodef.html
+++ b/docs/manual/CoreTasks/macrodef.html
@@ -3,6 +3,12 @@
   <head>
     <meta http-equiv="Content-Language" content="en-us"></meta>
     <title>MacroDef Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
+    <style type="text/css">
+      <!--
+           .code { background: #EFEFEF; margin-top: }
+           -->
+    </style>
   </head>
     
   <body>
@@ -10,14 +16,14 @@
     <h2><a name="macrodef">MacroDef</a></h2>
     <h3>Description</h3>
     <p>
-      This defines a new task using a &lt;sequential&gt; or &lt;parallel&gt;
+      This defines a new task using a &lt;sequential&gt; 
       nested task as a template. Nested elements &lt;attribute&gt; and
       &lt;element&gt; are used to specify attributes and elements of
       the new task. These get substituted into the  &lt;sequential&gt;
-      or &lt;parallel&gt; task when the new task is run.
+      task when the new task is run.
     </p>
     <p>
-      Introduced in ant1.6 <font color="red">Experimental</font>.
+      <em>since Ant 1.6</em>
     </p>
     <h3>Parameters</h3>
     <table border="1" cellpadding="2" cellspacing="0">
@@ -38,17 +44,6 @@
         </td>
         <td valign="top" align="center">No</td>
       </tr>
-      <tr>
-        <td valign="top">attributestyle</td>
-        <td valign="top">
-          <em>Temporary</em>
-          this attribute specifies if the attribute is in ant style
-          (i.e. ${attributeName}) or xpath style (i.e @attributeName).
-          Valid values are "ant" and "xpath". The default value
-          is "ant".
-        </td>
-        <td valign="top" align="center">No</td>
-      </tr>
     </table>
       <h3>Parameters specified as nested elements</h3>
     <h4>attribute</h4>
@@ -60,13 +55,12 @@
     </p>
     <p>
       This attribute is placed in the body of the templated
-      task using the ant property notation - ${attribute name}.
-      Note that is not an actual ant property.
-    </p>
-    <p>
-      If the attribute style is set to "xpath", the attribute is
-      specified in the body of the template task by prefixing the
-      name with a "@".
+      task using a notation similar to the ant property notation
+      - @{attribute name}. (May be remembered as "put the substitution
+      AT this location").
+      The escape sequence @@{x} is used to allow @{x} to be
+      placed in the text without substitution of x.
+      This corresponds to the $${x} escape sequence for properties
     </p>
     <h3>Parameters</h3>
     <table border="1" cellpadding="2" cellspacing="0">
@@ -123,12 +117,12 @@
       runs it.
     </p>
     <blockquote>
-      <pre>
+<pre class=code>
 &lt;macrodef name="testing"&gt;
    &lt;attribute name="v" default="NOT SET"/&gt;
    &lt;element name="some-tasks" optional="yes"/&gt;
    &lt;sequential&gt;
-      &lt;echo&gt;v is ${v}&lt;/echo&gt;
+      &lt;echo&gt;v is @{v}&lt;/echo&gt;
       &lt;some-tasks/&gt;
    &lt;/sequential&gt;
 &lt;/macrodef&gt;
@@ -138,24 +132,7 @@
       &lt;echo&gt;this is a test&lt;/echo&gt;
    &lt;/some-tasks&gt;
 &lt;/testing&gt;
-      </pre>
-    </blockquote>
-    <p>
-      The following fragment sets the attribute style to "xpath"
-      for the macro definition &lt;testing&gt; and calls the
-      macro. The fragment should output "attribute is this is a test".
-    </p>
-    <blockquote>
-      <pre>
-&lt;macrodef name="testing" attributestyle="xpath"&gt;
-   &lt;attribute name="abc"/&gt;
-   &lt;sequential&gt;
-      &lt;echo&gt;attribute is @abc&lt;/echo&gt;
-   &lt;/sequential&gt;
-&lt;/macrodef&gt;
-
-&lt;testing abc="this is a test"/&gt;
-      </pre>
+</pre>
     </blockquote>
     <p>
       The following fragment defines a task called &lt;call-cc&gt; which
@@ -165,29 +142,29 @@
       <a href="http://ant-contrib.sourceforge.net/">ant-contrib</a> project.
     </p>
     <blockquote>
-      <pre>
+<pre class="code">
 &lt;macrodef name="call-cc"&gt;
    &lt;attribute name="target"/&gt;
    &lt;attribute name="link"/&gt;
    &lt;attribute name="target.dir"/&gt;
    &lt;element name="cc-elements"/&gt;
    &lt;sequential&gt;
-      &lt;mkdir dir="${obj.dir}/${target}"/&gt;
-      &lt;mkdir dir="${target.dir}"/&gt;
-         &lt;cc link="${link}" objdir="${obj.dir}/${target}"
-             outfile="${target.dir}/${target}"&gt;
+      &lt;mkdir dir="${obj.dir}/@{target}"/&gt;
+      &lt;mkdir dir="@{target.dir}"/&gt;
+         &lt;cc link="@{link}" objdir="${obj.dir}/@{target}"
+             outfile="@{target.dir}/@{target}"&gt;
             &lt;compiler refid="compiler.options"/&gt;
             &lt;cc-elements/&gt;
          &lt;/cc&gt;
       &lt;/sequential&gt;
 &lt;/macrodef&gt;
-      </pre>
+</pre>
     </blockquote>
     <p>
       This then can be used as follows:
     </p>
     <blockquote>
-      <pre>
+<pre class="code">
 &lt;call-cc target="unittests" link="executable"
          target.dir="${build.bin.dir}"&gt;
    &lt;cc-elements&gt;
@@ -198,7 +175,7 @@
       &lt;linker refid="linker-libs"/&gt;
    &lt;/cc-elements&gt;
 &lt;/call-cc&gt;
-      </pre>
+</pre>
     </blockquote>
 <hr>
 <p align="center">Copyright &copy; 2003 Apache Software
diff --git a/docs/manual/CoreTasks/mail.html b/docs/manual/CoreTasks/mail.html
index 05dacc1..ffe59d3 100644
--- a/docs/manual/CoreTasks/mail.html
+++ b/docs/manual/CoreTasks/mail.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Mail Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/manifest.html b/docs/manual/CoreTasks/manifest.html
index 1dc12f9..99c18d6 100644
--- a/docs/manual/CoreTasks/manifest.html
+++ b/docs/manual/CoreTasks/manifest.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Manifest Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/mkdir.html b/docs/manual/CoreTasks/mkdir.html
index 125389d..9c653c9 100644
--- a/docs/manual/CoreTasks/mkdir.html
+++ b/docs/manual/CoreTasks/mkdir.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Mkdir Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/move.html b/docs/manual/CoreTasks/move.html
index bb32351..0c3abcc 100644
--- a/docs/manual/CoreTasks/move.html
+++ b/docs/manual/CoreTasks/move.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Move Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -157,7 +158,7 @@
 <p><b>Append <code>&quot;.bak&quot;</code> to the names of all files
 in a directory.</b></p>
 <pre>
-  &lt;move todir=&quot;my/src/dir&quot;&gt;
+  &lt;move todir=&quot;my/src/dir&quot; includeemptydirs=&quot;false&quot;&gt;
     &lt;fileset dir=&quot;my/src/dir&quot;&gt;
       &lt;exclude name=&quot;**/*.bak&quot;/&gt;
     &lt;/fileset&gt;
diff --git a/docs/manual/CoreTasks/pack.html b/docs/manual/CoreTasks/pack.html
index ab21952..b8013da 100644
--- a/docs/manual/CoreTasks/pack.html
+++ b/docs/manual/CoreTasks/pack.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>GZip/BZip2 Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/parallel.html b/docs/manual/CoreTasks/parallel.html
index 3a0db82..a16c591 100644
--- a/docs/manual/CoreTasks/parallel.html
+++ b/docs/manual/CoreTasks/parallel.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Parallel Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/patch.html b/docs/manual/CoreTasks/patch.html
index 5bfa28d..6403cc7 100644
--- a/docs/manual/CoreTasks/patch.html
+++ b/docs/manual/CoreTasks/patch.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Patch Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/pathconvert.html b/docs/manual/CoreTasks/pathconvert.html
index 2d407dc..39830be 100644
--- a/docs/manual/CoreTasks/pathconvert.html
+++ b/docs/manual/CoreTasks/pathconvert.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>PathConvert Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/presetdef.html b/docs/manual/CoreTasks/presetdef.html
index 5980586..0029e83 100644
--- a/docs/manual/CoreTasks/presetdef.html
+++ b/docs/manual/CoreTasks/presetdef.html
@@ -3,6 +3,7 @@
   <head>
     <meta http-equiv="Content-Language" content="en-us"></meta>
     <title>PreSetDef Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
   </head>
   
   <body>
@@ -15,7 +16,12 @@
       or elements preset.
     </p>
     <p>
-      Introduced in ant1.6 <font color="red">Experimental</font>.
+      <em>since Ant 1.6</em>
+    </p>
+    <p>
+      The resolution of properties in any of the attributes or
+      nested text takes place with the definition is used and <em>not</em>
+      when the preset definition is defined.
     </p>
     <h3>Parameters</h3>
     <table border="1" cellpadding="2" cellspacing="0">
@@ -43,35 +49,102 @@
       This nested element can be any other type or task. The attributes
       and elements that need to be preset are placed here.
     </p>
-
+    
     <h3>Examples</h3>
-    <p>
-      The following fragment defines a javac task with the debug and deprecation
+      The following fragment defines a javac task with the debug, deprecation
+      srcdir and destdir
       attributes set. It also has a src element to source files from a generated
       directory.
-    </p>
     <blockquote>
-      <pre>
+<pre class="code">
 &lt;presetdef name="my.javac"&gt;
-   &lt;javac debug="${debug}" deprecation="${deprecation}"&gt;
+   &lt;javac debug="${debug}" deprecation="${deprecation}"
+          srcdir="${src.dir}" destdir="${classes.dir}"&gt;
       &lt;src path="${gen.dir}"/&gt;
    &lt;/javac&gt;
 &lt;/presetdef&gt;
-      </pre>
+</pre>
+    </blockquote>
+      This can be used as a normal javac task - example:
+    <blockquote>
+<pre class="code">
+&lt;my.javac/&gt;
+</pre>
+    </blockquote>
+      The attributes specified in the preset task may be overridden - i.e.
+      they may be seen as optional attributes - example:
+    <blockquote>
+<pre class="code">
+&lt;my.javac srcdir="${test.src}" deprecation="no"/&gt;
+</pre>
+    </blockquote>
+      One may put a presetdef definition in an antlib.
+      For example suppose the jar file antgoodies.jar has
+      the antlib.xml as follows:
+    <blockquote>
+<pre class="code">
+&lt;antlib&gt;
+   &lt;taskdef resource="com/acme/antgoodies/tasks.properties"/&gt;
+   &lt;!-- Implement the common use of the javac command --&gt;
+   &lt;presetdef name="javac"&gt;
+      &lt;javac deprecation="${deprecation}" debug="${debug}"
+             srcdir="src" destdir="classes"/&gt;
+   &lt;/presetdef&gt;
+&lt;/antlib&gt;
+</pre>
+    </blockquote>
+      One may then use this in a build file as follows:
+    <blockquote>
+<pre class="code">
+&lt;project default="example" xmlns:antgoodies="antlib:com.acme.antgoodies"&gt;
+   &lt;target name="example"&gt;
+      &lt;!-- Compile source --&gt;
+      &lt;antgoodies:javac srcdir="src/main"/&gt;
+      &lt;!-- Compile test code --&gt;
+      &lt;antgoodies:javac srcdir="src/test"/&gt;
+   &lt;/target&gt;
+&lt;/project&gt;
+</pre>
     </blockquote>
     <p>
-      This can be used as a normal javac task - example:
+      The following is an example of evaluation of properties when the
+      definition is used:
     </p>
-    <blockquote>
-      <pre>
-&lt;my.javac src="${src.dir}" destdir="${classes.dir}"/&gt;
-      </pre>
-    </blockquote>
+     <blockquote>
+<pre class="code">
+&lt;target name="defineandcall"&gt;
+   &lt;presetdef name="showmessage"&gt;
+      &lt;echo&gt;message is '${message}'&lt;/echo&gt;
+   &lt;/presetdef&gt;
+   &lt;showmessage/&gt;
+   &lt;property name="message" value="Message 1"/&gt;
+   &lt;showmessage/&gt;
+   &lt;antcall target="called"&gt;
+      &lt;param name="message" value="Message 2"/&gt;
+   &lt;/antcall&gt;
+&lt;/target&gt;
+&lt;target name="called"&gt;
+   &lt;showmessage/&gt;
+&lt;/target&gt;
+</pre>
+     </blockquote>
+     <p>
+        The command ant defineandcall results in the output:
+     </p>
+     <blockquote>
+<pre class="code">
+defineandcall:
+[showmessage] message is '${message}'
+[showmessage] message is 'Message 1'
 
-<hr>
-<p align="center">Copyright &copy; 2003 Apache Software
-Foundation. All rights Reserved.</p>
-
-</body>
+called:
+[showmessage] message is 'Message 2'
+</pre>
+     </blockquote>
+    <hr></hr>
+    <p align="center">Copyright &copy; 2003 Apache Software
+      Foundation. All rights Reserved.</p>
+    
+  </body>
 </html>
 
diff --git a/docs/manual/CoreTasks/property.html b/docs/manual/CoreTasks/property.html
index f6cc115..b56030d 100644
--- a/docs/manual/CoreTasks/property.html
+++ b/docs/manual/CoreTasks/property.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Property Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/recorder.html b/docs/manual/CoreTasks/recorder.html
index 8503104..ea87051 100644
--- a/docs/manual/CoreTasks/recorder.html
+++ b/docs/manual/CoreTasks/recorder.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Recorder Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/rename.html b/docs/manual/CoreTasks/rename.html
index ccf0e26..880348f 100644
--- a/docs/manual/CoreTasks/rename.html
+++ b/docs/manual/CoreTasks/rename.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Rename Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/replace.html b/docs/manual/CoreTasks/replace.html
index 38e26b5..b5938ee 100644
--- a/docs/manual/CoreTasks/replace.html
+++ b/docs/manual/CoreTasks/replace.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Replace Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/rmic.html b/docs/manual/CoreTasks/rmic.html
index ae58823..dc0a1f6 100644
--- a/docs/manual/CoreTasks/rmic.html
+++ b/docs/manual/CoreTasks/rmic.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Rmic Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/sequential.html b/docs/manual/CoreTasks/sequential.html
index edab21a..2eaa963 100644
--- a/docs/manual/CoreTasks/sequential.html
+++ b/docs/manual/CoreTasks/sequential.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Sequential Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/signjar.html b/docs/manual/CoreTasks/signjar.html
index 30dade6..1d9e676 100644
--- a/docs/manual/CoreTasks/signjar.html
+++ b/docs/manual/CoreTasks/signjar.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>SignJar Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/sleep.html b/docs/manual/CoreTasks/sleep.html
index 61c65dd..325cf16 100644
--- a/docs/manual/CoreTasks/sleep.html
+++ b/docs/manual/CoreTasks/sleep.html
@@ -2,6 +2,7 @@
 
 <head>
 <title>Sleep Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/sql.html b/docs/manual/CoreTasks/sql.html
index 52b3726..b967256 100644
--- a/docs/manual/CoreTasks/sql.html
+++ b/docs/manual/CoreTasks/sql.html
@@ -2,6 +2,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>SQL Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
@@ -180,9 +181,6 @@
 <p><code>Sql</code>'s <em>classpath</em> attribute is a <a
 href="../using.html#path">PATH like structure</a> and can also be set via a nested
 <em>classpath</em> element. It is used to load the JDBC classes.</p>
-<p>
-The 
-</p>
 
 <h3>Examples</h3>
 <blockquote><pre>&lt;sql
diff --git a/docs/manual/CoreTasks/style.html b/docs/manual/CoreTasks/style.html
index a8f11b8..5d4e896 100644
--- a/docs/manual/CoreTasks/style.html
+++ b/docs/manual/CoreTasks/style.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Xslt/Style Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/subant.html b/docs/manual/CoreTasks/subant.html
index 6aed7f6..34f6d64 100644
--- a/docs/manual/CoreTasks/subant.html
+++ b/docs/manual/CoreTasks/subant.html
@@ -4,6 +4,7 @@
   <meta http-equiv="Content-Language" content="en-us">
   <title>Subant
  Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body bgcolor="#ffffff" text="#000000" link="#525D76"
@@ -18,7 +19,6 @@
           <td valign="bottom">
             <font size="+3" face="arial,helvetica,sanserif"><strong>Subant
  Task</strong></font>
-            <br><font face="arial,helvetica,sanserif"><i>EXPERIMENTAL:</i> This task is experimental and may be under continual change till Ant1.6 ships; it may even be omitted from the product.</font>
           </td>
           <td>
             <!-- PROJECT LOGO -->
@@ -47,15 +47,11 @@
 
       <tr><td><blockquote>
 <p>
-            <i>EXPERIMENTAL:</i> This task is experimental and may be under continual
-            change till Ant1.6 ships; it may even be omitted from the product.
-        </p>
-<p>
         Calls a given target for all defined sub-builds. This is an extension
         of ant for bulk project execution.
 
         <strong>This task must no be used outside of a
-        <code>target</code> if it invoces the same build file it is
+        <code>target</code> if it invokes the same build file it is
         part of.</strong>
 
         </p>
diff --git a/docs/manual/CoreTasks/sync.html b/docs/manual/CoreTasks/sync.html
index 7d24a0c..30920ed 100644
--- a/docs/manual/CoreTasks/sync.html
+++ b/docs/manual/CoreTasks/sync.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Sync Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/tar.html b/docs/manual/CoreTasks/tar.html
index a9d6b27..a7c5518 100644
--- a/docs/manual/CoreTasks/tar.html
+++ b/docs/manual/CoreTasks/tar.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Tar Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/taskdef.html b/docs/manual/CoreTasks/taskdef.html
index 21c56c7..df730b7 100644
--- a/docs/manual/CoreTasks/taskdef.html
+++ b/docs/manual/CoreTasks/taskdef.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>TaskDef Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/tempfile.html b/docs/manual/CoreTasks/tempfile.html
index 78ce88c..d1a75aa 100644
--- a/docs/manual/CoreTasks/tempfile.html
+++ b/docs/manual/CoreTasks/tempfile.html
@@ -4,6 +4,7 @@
   <meta http-equiv="Content-Language" content="en-us">
   <title>Tempfile
  Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body bgcolor="#ffffff" text="#000000" link="#525D76"
diff --git a/docs/manual/CoreTasks/touch.html b/docs/manual/CoreTasks/touch.html
index eb3922b..6257c71 100644
--- a/docs/manual/CoreTasks/touch.html
+++ b/docs/manual/CoreTasks/touch.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Touch Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/tstamp.html b/docs/manual/CoreTasks/tstamp.html
index fb96983..cc63404 100644
--- a/docs/manual/CoreTasks/tstamp.html
+++ b/docs/manual/CoreTasks/tstamp.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>TStamp Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -41,7 +42,7 @@
 The Tstamp task supports a <code>&lt;format&gt;</code> nested element that
 allows a property to be set to the current date and time in a given format.
 The date/time patterns are as defined in the Java
-<a href="http://java.sun.com/products/jdk/1.2/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat</a> class.
+<a href="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat</a> class.
 The format element also allows offsets to be applied to the time to generate different time values.
 <br><br>
 <table width="60%" border="1" cellpadding="2" cellspacing="0">
@@ -139,8 +140,7 @@
 
 
 <hr>
-<p align="center">Copyright &copy; 2000-2002 Apache Software Foundation. All rights Reserved.</p>
+<p align="center">Copyright &copy; 2000-2003 Apache Software Foundation. All rights Reserved.</p>
 
 </body>
 </html>
-
diff --git a/docs/manual/CoreTasks/typedef.html b/docs/manual/CoreTasks/typedef.html
index a85e614..b71f50a 100644
--- a/docs/manual/CoreTasks/typedef.html
+++ b/docs/manual/CoreTasks/typedef.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Typedef Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -73,7 +74,12 @@
   </tr>
   <tr>
     <td valign="top">resource</td>
-    <td valign="top">Name of the resouce to load definitions from.</td>
+    <td valign="top">
+    Name of the resource to load definitions from.
+    If there is multiple resources of this name in the classpath, and the
+    format is "properties", the first resource will be loaded, otherwise
+    all the resources will be loaded.
+    </td>
     <td valign="top" align="center">No</td>
   </tr>
   <tr>
@@ -138,9 +144,8 @@
   <tr>
     <td valign="top">uri</td>
     <td valign="top">
-      <font color="red">Experimental</font>
       The uri that this definition should live in.
-      (introduced in ant1.6 <font color="red">Experimental</font>)
+      <em>since Ant1.6</em>
     </td>
     <td valign="top" align="center">No</td>
   </tr>
diff --git a/docs/manual/CoreTasks/unpack.html b/docs/manual/CoreTasks/unpack.html
index 2ebc478..4fc7b58 100644
--- a/docs/manual/CoreTasks/unpack.html
+++ b/docs/manual/CoreTasks/unpack.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>GUnzip/BUnzip2 Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/untar.html b/docs/manual/CoreTasks/untar.html
index 796be64..a90561c 100644
--- a/docs/manual/CoreTasks/untar.html
+++ b/docs/manual/CoreTasks/untar.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Untar Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/unzip.html b/docs/manual/CoreTasks/unzip.html
index 0dc4f95..6824ceb 100644
--- a/docs/manual/CoreTasks/unzip.html
+++ b/docs/manual/CoreTasks/unzip.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Unzip Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/uptodate.html b/docs/manual/CoreTasks/uptodate.html
index 70bb68d..8a8b174 100644
--- a/docs/manual/CoreTasks/uptodate.html
+++ b/docs/manual/CoreTasks/uptodate.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Uptodate Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -70,7 +71,10 @@
 <p>The nested <code>&lt;mapper&gt;</code> element allows you to specify
 a set of target files to check for being up-to-date with respect to a
 set of source files.</p>
-
+   <p>
+      The mapper "to" attribute is relative to the target file, or to
+      the "dir" attribute of the nested srcfiles element.
+   </p>
 <h3>Examples</h3>
 <pre>  &lt;uptodate property=&quot;xmlBuild.notRequired&quot; targetfile=&quot;${deploy}\xmlClasses.jar&quot; &gt;
     &lt;srcfiles dir= &quot;${src}/xml&quot; includes=&quot;**/*.dtd&quot;/&gt;
@@ -111,9 +115,30 @@
 if <code>/usr/local/bin/testit</code> is newer than
 <code>${build}/.flagfile</code>.</p>
 </p>
+  <p>
+    The following shows usage of a relative mapper.
+  </p>
+  <pre>
+    &lt;uptodate property="checkUptodate.uptodate"&gt;
+      &lt;srcfiles dir="src" includes="*" /&gt;
+      &lt;mapper type="merge" to="../dest/output.done"/&gt;
+    &lt;/uptodate&gt;
+    &lt;echo message="checkUptodate result: ${checkUptodate.uptodate}" /&gt;
+  </pre>
+  <p>
+    The previous example can be a bit confusing, so it may be better to
+    use absolute paths:
+  </p>
+  <pre>
+    &lt;property name="dest.dir" location="dest"/&gt;
+    &lt;uptodate property="checkUptodate.uptodate"&gt;
+      &lt;srcfiles dir="src" includes="*" /&gt;
+      &lt;mapper type="merge" to="${dest.dir}/output.done"/&gt;
+    &lt;/uptodate&gt;
+  </pre>
 
 <hr>
-<p align="center">Copyright &copy; 2000-2002 Apache Software Foundation.
+<p align="center">Copyright &copy; 2000-2003 Apache Software Foundation.
 All rights Reserved.</p>
 
 </body>
diff --git a/docs/manual/CoreTasks/waitfor.html b/docs/manual/CoreTasks/waitfor.html
index 301fc9b..6dd7a06 100644
--- a/docs/manual/CoreTasks/waitfor.html
+++ b/docs/manual/CoreTasks/waitfor.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>WaitFor Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/war.html b/docs/manual/CoreTasks/war.html
index 30c500e..3b5682b 100644
--- a/docs/manual/CoreTasks/war.html
+++ b/docs/manual/CoreTasks/war.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>WAR Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTasks/whichresource.html b/docs/manual/CoreTasks/whichresource.html
index 5e80c49..39f29df 100644
--- a/docs/manual/CoreTasks/whichresource.html
+++ b/docs/manual/CoreTasks/whichresource.html
@@ -4,6 +4,7 @@
   <meta http-equiv="Content-Language" content="en-us">
   <title>Whichresource
  Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body bgcolor="#ffffff" text="#000000" link="#525D76"
diff --git a/docs/manual/CoreTasks/xmlproperty.html b/docs/manual/CoreTasks/xmlproperty.html
index 3c337d3..1ac853a 100644
--- a/docs/manual/CoreTasks/xmlproperty.html
+++ b/docs/manual/CoreTasks/xmlproperty.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>XmlProperty Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -8,7 +9,8 @@
 <h2><a name="xmlproperty">XmlProperty</a></h2>
 <h3>Description</h3>
 <p>
-Loads property values from a valid xml file.  This XML property file:
+Loads property values from a well-formed xml file. There are no other restrictions
+than "well-formed". You can choose the layout you want. For example this XML property file:
 <pre>
   &lt;root&gt;
     &lt;properties&gt;
@@ -16,7 +18,7 @@
     &lt;/properties&gt;
   &lt;/root&gt;
 </pre>
-is roughly equivalent to this java property file:
+is roughly equivalent to this Java property file:
 <pre>
   root.properties.foo = bar
 </pre>
@@ -25,7 +27,7 @@
 By default, this load
 does <em>no</em> processing of the input.  In particular, unlike the
 <a href="property.html">Property task</a>, property references
-(i.e., ${foo}) are not resolved.
+(i.e., <samp>${foo}</samp>) are not resolved.
 <p>
 <a name="semanticAttributes">
 <h3>Semantic Attributes</h3>
@@ -95,10 +97,10 @@
     <td valign="top">Keep the xml root tag as the
                      first value in the property name.</td>
     <td valign="top" align="center">No, default is <i>true</i>.</td>
-  </tr>  
+  </tr>
   <tr>
     <td valign="top">validate</td>
-    <td valign="top">Validate the input file.</td>
+    <td valign="top">Validate the input file (e.g. by a DTD). Otherwise the XML must only be well-formed.</td>
     <td valign="top" align="center">No, default is <i>false</i>.</td>
   </tr>
   <tr>
@@ -112,7 +114,7 @@
                      See the <a href="#semanticAttributes">Semantic Attributes</a>
                      section for more information.</td>
     <td valign="top" align="center">No, default is <i>false</i>.</td>
-  </tr>  
+  </tr>
   <tr>
     <td valign="top">includeSemanticAttribute</td>
     <td valign="top">Include the semantic attribute name
@@ -138,7 +140,7 @@
 
 <p>Here is an example xml file that does not have any semantic attributes.</p>
 
-<pre> 
+<pre>
    &lt;root-tag myattr="true"&gt;
     &lt;inner-tag someattr="val"&gt;Text&lt;/inner-tag&gt;
     &lt;a2&gt;&lt;a3&gt;&lt;a4&gt;false&lt;/a4&gt;&lt;/a3&gt;&lt;/a2&gt;
@@ -250,11 +252,10 @@
   &lt;/classpath&gt;
 </pre>
 
-<hr/>
+<hr>
 
-<p align="center">Copyright &copy; 2002 Apache Software Foundation. All rights
+<p align="center">Copyright &copy; 2002-2003 Apache Software Foundation. All rights
 Reserved.</p>
 
 </body>
 </html>
-
diff --git a/docs/manual/CoreTasks/zip.html b/docs/manual/CoreTasks/zip.html
index 3a4addc..19a324f 100644
--- a/docs/manual/CoreTasks/zip.html
+++ b/docs/manual/CoreTasks/zip.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Zip Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTypes/antlib.html b/docs/manual/CoreTypes/antlib.html
index d252273..d434442 100644
--- a/docs/manual/CoreTypes/antlib.html
+++ b/docs/manual/CoreTypes/antlib.html
@@ -3,25 +3,19 @@
   <head>
     <meta http-equiv="Content-Language" content="en-us"></meta>
     <title>AntLib</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
   </head>
 
   <body>
     <h2><a name="antlib">Antlib</a></h2>
-    <p>
-      <i>EXPERIMENTAL:</i> The antlib concept and implementation is experimental
-      and may be under continual change until Ant1.6 ships.
-      The contents of this page uses the experimental tasks
-      &lt;macrodef&gt; and &lt;presetdef&gt; which may not be in
-      Ant1.6.
-    </p>
     <h3>Description</h3>
     <p>
       An antlib file is an xml file with a root element of "antlib".
       Antlib's elements are ant definition tasks - like
       <a href="../CoreTasks/typedef.html">Typedef</a>
       and <a href="../CoreTasks/taskdef.html">Taskdef</a>,
-      or any ant task that implements
-      <code>org.apache.tools.ant.taskdefs.AntlibInterface</code>.
+      or any ant task that extends
+      <code>org.apache.tools.ant.taskdefs.AntlibDefinition</code>.
     </p>
     <p>
       A group of tasks and types may be defined together in an antlib
@@ -96,7 +90,7 @@
       &lt;attribute name="dir"/&gt;
       &lt;sequential&gt;
          &lt;antcontrib:shellscript shell="bash"&gt;  &lt;!-- HERE --&gt;
-            ls -Rl ${dir}
+            ls -Rl @{dir}
          &lt;/antcontrib:shellscript&gt;
       &lt;/sequential&gt;
    &lt;/macrodef&gt;
@@ -116,7 +110,7 @@
     </blockquote>
     <p>
       The requirement that the resource is in the default classpath
-      may be removed before Ant 1.6 is released.
+      may be removed in future versions of Ant.</p>
     </p>
     <h3><a name="currentnamespace">Current namespace</a></h3>
     <p>
@@ -139,10 +133,10 @@
       &lt;element name="do"/&gt;
       &lt;sequential&gt;
          &lt;current:if&gt;
-            &lt;current:isallowed test="${action}"/&gt;
-            &lt;then&gt;
-               &lt;do/&gt;
-            &lt;/then&gt;
+            &lt;current:isallowed test="@{action}"/&gt;
+            &lt;current:then&gt;
+               &lt;current:do/&gt;
+            &lt;/current:then&gt;
          &lt;/current:if&gt;
       &lt;/sequential&gt;
    &lt;/macrodef&gt;
diff --git a/docs/manual/CoreTypes/assertions.html b/docs/manual/CoreTypes/assertions.html
index c78b91a..be9e6d3 100644
--- a/docs/manual/CoreTypes/assertions.html
+++ b/docs/manual/CoreTypes/assertions.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Assertions type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -147,11 +148,15 @@
 Example: set system assertions and all org.apache packages except
 for ant, and the class org.apache.tools.ant.Main.
 <pre>
-&lt;assertions enableSystemAssertions="true" &gt;
-  &lt;enable package="org.apache" /&gt;
-  &lt;disable package="org.apache.ant" /&gt;
-  &lt;enable class="org.apache.tools.ant.Main"/&gt;
-&lt;/assertions&gt;
+    &lt;java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath"&gt;
+      &lt;assertions enableSystemAssertions="true" &gt;
+        &lt;enable package="org.apache" /&gt;
+        &lt;disable package="org.apache.ant" /&gt;
+        &lt;enable class="org.apache.tools.ant.Main"/&gt;
+      &lt;/assertions&gt;
+    &lt;/java&gt;
 </pre>
 
 <h5>Example: disabled and anonymous package assertions</h5>
@@ -170,10 +175,14 @@
 
 <pre>
 &lt;assertions id="project.assertions" &gt;
-  &lt;enable project="org.apache.test" /&gt;
+  &lt;enable package="org.apache.test" /&gt;
 &lt;/assertions&gt;
 
-&lt;assertions refid="project.assertions" /&gt;
+&lt;java fork="true" failonerror="true"
+  classname="${classname}"
+  classpathref="assert.classpath"&gt;
+  &lt;assertions refid="project.assertions"/&gt;
+&lt;/java&gt;
 </pre>
 
 <hr>
diff --git a/docs/manual/CoreTypes/custom-programming.html b/docs/manual/CoreTypes/custom-programming.html
index 48e63b3..804ea2b 100644
--- a/docs/manual/CoreTypes/custom-programming.html
+++ b/docs/manual/CoreTypes/custom-programming.html
@@ -1,9 +1,9 @@
 <html>
   <head>
     <meta http-equiv="Content-Language" content="en-us"></meta>
-    <title>Custom Components</title>
+<title>Custom Components</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
   </head>
-
   <body>
     <h2>Custom Components</h2>
     <h3>Overview</h3>
@@ -55,10 +55,10 @@
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.taskdefs.condition.Condition;
 
-public class AllUpperCaseCondition extends Condition {
+public class AllUpperCaseCondition implements Condition {
     private String value;
 
-    // The setter for the &quot;value&quot; attribute
+    // The setter for the "value" attribute
     public void setValue(String value) {
         this.value = value;
     }
@@ -69,7 +69,7 @@
             throw new BuildException("value attribute is not set");
         }
         return value.toUpperCase().equals(value);
-   }        
+   }
 }
       </pre>
     </blockquote>
@@ -82,7 +82,7 @@
 &lt;typedef
     name="alluppercase"
     classname="com.mydomain.AllUpperCaseCondition"
-    classpath="${mydomain.classes"/&gt;
+    classpath="${mydomain.classes}"/&gt;
       </pre>
     </blockquote>
     <p>
@@ -132,7 +132,7 @@
 &lt;typedef
     name="javaselector"
     classname="com.mydomain.JavaSelector"
-    classpath="${mydomain.classes"/&gt;
+    classpath="${mydomain.classes}"/&gt;
       </pre>
     </blockquote>
         <p>
@@ -148,7 +148,7 @@
 &lt;/copy&gt;
       </pre>
     </blockquote>
-     
+
       <p>
         One may use
         <code>org.apache.tools.ant.types.selectors.BaseSelector</code>,
@@ -164,7 +164,7 @@
         last chance to check your settings for consistency because it
         calls <code>verifySettings()</code>. Override this method and
         call <code>setError()</code> within it if you detect any
-        problems in how your selector is set up.</p>
+        problems in how your selector is set up.
     </p>
     <p>
       To write custom selector containers one should extend
@@ -229,7 +229,7 @@
     </p>
     <p>
       The custom selector was the pre ant 1.6 way of defining custom selectors.
-      This method is still supported for backward compatiblity.
+      This method is still supported for backward compatibility.
     </p>
     <p>You can write your own selectors and use them within the selector
       containers by specifying them within the &lt;custom&gt; tag.</p>
@@ -292,14 +292,14 @@
     </p>
 
     <blockquote><pre>
-&lt;fileset dir=&quot;${mydir}&quot; includes=&quot;**/*&quot;&gt;
-    &lt;custom classname=&quot;com.mydomain.MySelector&quot;&gt;
-        &lt;param name=&quot;myattribute&quot; value=&quot;myvalue&quot;/&gt;
+&lt;fileset dir="${mydir}" includes="**/*"&gt;
+    &lt;custom classname="com.mydomain.MySelector"&gt;
+        &lt;param name="myattribute" value="myvalue"/&gt;
     &lt;/custom&gt;
 &lt;/fileset&gt;
       </pre></blockquote>
 
-    
+
     <p>The core selectors that can also be used as custom selectors
       are</p>
 
@@ -325,9 +325,9 @@
     to use the selector through <code>&lt;custom&gt;</code>.</p>
 
     <blockquote><pre>
-&lt;fileset dir=&quot;${doc.path}&quot; includes=&quot;**/*&quot;&gt;
-    &lt;custom classname=&quot;org.apache.tools.ant.types.selectors.DepthSelector&quot;&gt;
-        &lt;param name=&quot;max&quot; value=&quot;1&quot;/&gt;
+&lt;fileset dir="${doc.path}" includes="**/*"&gt;
+    &lt;custom classname="org.apache.tools.ant.types.selectors.DepthSelector"&gt;
+        &lt;param name="max" value="1"/&gt;
     &lt;/custom&gt;
 &lt;/fileset&gt;
       </pre></blockquote>
@@ -364,7 +364,7 @@
                 count++;
                 if ((count % 2) == 1) {
                     return c;
-                }   
+                }
               }
           }
       }
@@ -391,8 +391,8 @@
 }
       </pre>
     </blockquote>
-      
-      
+
+
     <hr></hr>
     <p align="center">Copyright &copy; 2003 Apache Software Foundation. All rights
       Reserved.</p>
diff --git a/docs/manual/CoreTypes/description.html b/docs/manual/CoreTypes/description.html
index f548f70..1e65c9b 100644
--- a/docs/manual/CoreTypes/description.html
+++ b/docs/manual/CoreTypes/description.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTypes/dirset.html b/docs/manual/CoreTypes/dirset.html
index c84ae13..91c9342 100644
--- a/docs/manual/CoreTypes/dirset.html
+++ b/docs/manual/CoreTypes/dirset.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>DirSet Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTypes/filelist.html b/docs/manual/CoreTypes/filelist.html
index a97c04e..f712bff 100644
--- a/docs/manual/CoreTypes/filelist.html
+++ b/docs/manual/CoreTypes/filelist.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>FileList Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTypes/fileset.html b/docs/manual/CoreTypes/fileset.html
index 0abce07..563d75e 100644
--- a/docs/manual/CoreTypes/fileset.html
+++ b/docs/manual/CoreTypes/fileset.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>FileSet Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -35,7 +36,11 @@
   <tr>
     <td valign="top">dir</td>
     <td valign="top">the root of the directory tree of this FileSet.</td>
-    <td valign="top" align="center">Yes</td>
+    <td valign="middle" align="center" rowspan="2">Either dir or file must be specified</td>
+  </tr>
+  <tr>
+    <td valign="top">file</td>
+    <td valign="top">shortcut for specifying a single file fileset</td>
   </tr>
   <tr>
     <td valign="top">defaultexcludes</td>
diff --git a/docs/manual/CoreTypes/filterchain.html b/docs/manual/CoreTypes/filterchain.html
index 89f26ad..41cbbb2 100644
--- a/docs/manual/CoreTypes/filterchain.html
+++ b/docs/manual/CoreTypes/filterchain.html
@@ -3,6 +3,7 @@
 <HTML>
 <HEAD>
   <TITLE>FilterChains and FilterReaders</TITLE>
+  <link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </HEAD>
 
 <BODY>
@@ -1260,6 +1261,8 @@
 <p>
 The script is provided with an object <i>self</i> that has
 getToken() and setToken(String) methods.
+The getToken() method returns the current token. The setToken(String)
+method replaces the current token.
 </p>
 
 This filter may be used directly within a filterchain.<p>
@@ -1286,16 +1289,30 @@
 
 <H4>Examples:</H4>
 
-Convert to uppercase.
+Convert to uppercase:
 <BLOCKQUOTE><PRE>
 &lt;tokenfilter&gt;
     &lt;scriptfilter language="javascript"&gt;
         self.setToken(self.getToken().toUpperCase());
     &lt;/scriptfilter&gt;
 &lt;/tokenfilter&gt;
-
 </PRE></BLOCKQUOTE>
 
+Remove lines containing the string "bad" while
+copying text files:
+  <blockquote>
+    <pre>
+&lt;copy todir="dist"&gt;
+  &lt;fileset dir="src" includes="**/*.txt"/&gt;
+  &lt;scriptfilter language="beanshell"&gt;
+      if (self.getToken().indexOf("bad") != -1) {
+          self.setToken(null);
+      }
+  &lt;/scriptfilter&gt;
+&lt;/copy&gt;
+    </pre>
+  </blockquote>
+
 <H4>Custom tokenizers and string filters</H4>
 
 Custom string filters and tokenizers may be plugged in by
@@ -1337,4 +1354,4 @@
 <HR>
 
 <P align=center>Copyright &copy; 2002-2003 Apache Software Foundation. All rights
-Reserved.</P></BODY></HTML>
\ No newline at end of file
+Reserved.</P></BODY></HTML>
diff --git a/docs/manual/CoreTypes/filterset.html b/docs/manual/CoreTypes/filterset.html
index 82b3fa0..e38b555 100644
--- a/docs/manual/CoreTypes/filterset.html
+++ b/docs/manual/CoreTypes/filterset.html
@@ -3,16 +3,17 @@
 <HTML>
 <HEAD>
   <TITLE>FilterSet Type</TITLE>
+  <link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </HEAD>
 
 <BODY>
 <H2><A name="filterset">FilterSet</A></H2>
 
 <P>FilterSets are groups of filters. Filters can be defined as token-value
-pairs 
-or be read in from a file. FilterSets can appear inside tasks that support this 
+pairs
+or be read in from a file. FilterSets can appear inside tasks that support this
 feature or at the same level as <CODE>&lt;target&gt;</CODE> - i.e., as
-children of 
+children of
 <CODE>&lt;project&gt;</CODE>.</P>
 
 <p>FilterSets support the <code>id</code> and <code>refid</code>
@@ -23,13 +24,13 @@
 filters.</p>
 
 <p>In addition, FilterSets can specify
-<code>begintoken</code> and/or 
+<code>begintoken</code> and/or
 <code>endtoken</code> attributes to define what to match.</p>
-<p>Filtersets are used for doing 
+<p>Filtersets are used for doing
 replacements in tasks such as <code>&lt;copy&gt;</code>, etc.</p>
 
 <p>
-<strong>Note: </strong>When a filterset is used in an operation, the files are 
+<strong>Note: </strong>When a filterset is used in an operation, the files are
 processed in text mode and the filters applied line by line. This means that
 the copy operations will typically corrupt binary files. When applying filters
 you should ensure that the set of files being filtered are all text files.
@@ -89,7 +90,7 @@
   </TR>
   <TR>
     <TD vAlign=top>file</TD>
-    <TD vAlign=top>A properties file of 
+    <TD vAlign=top>A properties file of
       name-value pairs from which to load the tokens.</TD>
     <TD vAlign=top align="center">Yes</TD>
   </TR>
@@ -98,7 +99,7 @@
 <H4>Examples</H4>
 
 <p>You are copying the <code>version.txt</code> file to the <code>dist</code>
-directory from the <code>build</code> directory 
+directory from the <code>build</code> directory
 but wish to replace the token <code>&#64;DATE&#64;</code> with today's date.</p>
 <BLOCKQUOTE><PRE>
 &lt;copy file=&quot;${build.dir}/version.txt&quot; toFile=&quot;${dist.dir}/version.txt&quot;&gt;
@@ -109,7 +110,7 @@
 </PRE></BLOCKQUOTE>
 
 <p>You are copying the <code>version.txt</code> file to the <code>dist</code>
-directory from the build directory 
+directory from the build directory
 but wish to replace the token <code>%DATE*</code> with today's date.</p>
 <BLOCKQUOTE><PRE>
 &lt;copy file=&quot;${build.dir}/version.txt&quot; toFile=&quot;${dist.dir}/version.txt&quot;&gt;
diff --git a/docs/manual/CoreTypes/mapper.html b/docs/manual/CoreTypes/mapper.html
index 359201b..eb6882d 100644
--- a/docs/manual/CoreTypes/mapper.html
+++ b/docs/manual/CoreTypes/mapper.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Mapper Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -72,6 +73,7 @@
 <code>&lt;classpath&gt;</code>, as well - that is,
 a <a href="../using.html#path">path</a>-like structure.</p>
 <h3>The built-in mapper types are:</h3>
+<p>All built-in mappers are case-sensitive.</p>
 <h4><a name="identity-mapper">identity</a></h4>
 <p>The target file name is identical to the source file name. Both
 <code>to</code> and <code>from</code> will be ignored.</p>
diff --git a/docs/manual/CoreTypes/patternset.html b/docs/manual/CoreTypes/patternset.html
index 08d8322..a5a95c3 100644
--- a/docs/manual/CoreTypes/patternset.html
+++ b/docs/manual/CoreTypes/patternset.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>PatternSet Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTypes/permissions.html b/docs/manual/CoreTypes/permissions.html
index 983d594..87248ce 100644
--- a/docs/manual/CoreTypes/permissions.html
+++ b/docs/manual/CoreTypes/permissions.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Permissions type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTypes/propertyset.html b/docs/manual/CoreTypes/propertyset.html
index 8b642c6..3d71246 100644
--- a/docs/manual/CoreTypes/propertyset.html
+++ b/docs/manual/CoreTypes/propertyset.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>PropertySet Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTypes/selectors-program.html b/docs/manual/CoreTypes/selectors-program.html
index 15a225c..ac42500 100755
--- a/docs/manual/CoreTypes/selectors-program.html
+++ b/docs/manual/CoreTypes/selectors-program.html
@@ -2,6 +2,7 @@
   <head>
     <meta http-equiv="Content-Language" content="en-us">
     <title>Programming Selectors in Ant</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
   </head>
 
   <body>
@@ -246,4 +247,4 @@
     Foundation. All rights Reserved.</p>
   </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/manual/CoreTypes/selectors.html b/docs/manual/CoreTypes/selectors.html
index fad6ec0..023ded3 100755
--- a/docs/manual/CoreTypes/selectors.html
+++ b/docs/manual/CoreTypes/selectors.html
@@ -2,6 +2,7 @@
   <head>
     <meta http-equiv="Content-Language" content="en-us">
     <title>Selectors in Ant</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
   </head>
 
   <body>
@@ -186,6 +187,8 @@
     <code>&lt;mapper&gt;</code> element is specified, the
     <code>identity</code> type mapper is used.</p>
 
+    <p>The <code>&lt;depend&gt;</code> selector is case-sensitive.</p>
+
     <table border="1" cellpadding="2" cellspacing="0">
       <tr>
         <td valign="top"><b>Attribute</b></td>
@@ -354,6 +357,9 @@
     <a href="#selectcontainers">selector container</a> is desired.
     </p>
 
+    <p>The <code>&lt;filename&gt;</code> selector is
+    case-sensitive.</p>
+
     <table border="1" cellpadding="2" cellspacing="0">
       <tr>
         <td valign="top"><b>Attribute</b></td>
@@ -407,6 +413,8 @@
     <code>&lt;mapper&gt;</code> element is specified, the
     <code>identity</code> type mapper is used.</p>
 
+    <p>The <code>&lt;present&gt;</code> selector is case-sensitive.</p>
+
     <table border="1" cellpadding="2" cellspacing="0">
       <tr>
         <td valign="top"><b>Attribute</b></td>
@@ -597,7 +605,7 @@
 
     <a name="modified"></a>
     <h4>Modified Selector</h4>
-    <p>The &lt;modified&gt; computes a value for a file, compares that
+    <p>The &lt;modified&gt; selector computes a value for a file, compares that
     to the value stored in a cache and select the file, if these two values
     differ.</p>
     <p>Because this selector is highly configurable the order in which the selection is done
@@ -606,7 +614,7 @@
         <li> get the cached value from the configured cache (absolute path as key) </li>
         <li> get the new value from the configured algorithm </li>
         <li> compare these two values with the configured comparator </li>
-        <li> update the cache if needed and wished </li>
+        <li> update the cache if needed and requested </li>
         <li> do the selection according to the comparison result </li>
         </ol>
     The comparison, computing of the hashvalue and the store is done by implementation
@@ -714,6 +722,17 @@
           </ul>
         </td>
       </tr>
+      <tr><td colspan="2"><font size="+1"><b> Comparator´s </b></font></td></tr>
+      <tr>
+        <td valign="top"> equal </td>
+        <td valign="top"> Very simple object comparison. </td>
+      </tr>
+      <tr>
+        <td valign="top"> rule </td>
+        <td valign="top"> Uses <i>java.text.RuleBasedCollator</i> for Object
+          comparison.
+        </td>
+      </tr>
     </table>
 
     <p>Here are some examples of how to use the Modified Selector:</p>
@@ -1181,4 +1200,3 @@
 </html>
 
 
-
diff --git a/docs/manual/CoreTypes/xmlcatalog.html b/docs/manual/CoreTypes/xmlcatalog.html
index 3ad445d..65352f7 100644
--- a/docs/manual/CoreTypes/xmlcatalog.html
+++ b/docs/manual/CoreTypes/xmlcatalog.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>XMLCatalog Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/CoreTypes/zipfileset.html b/docs/manual/CoreTypes/zipfileset.html
index ddc7618..a82085b 100644
--- a/docs/manual/CoreTypes/zipfileset.html
+++ b/docs/manual/CoreTypes/zipfileset.html
@@ -3,6 +3,7 @@
 <head>
   <meta http-equiv="Content-Language" content="en-us">
   <title>ZipFileSet Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 <h2><a name="fileset">ZipFileSet</a></h2>
@@ -21,7 +22,7 @@
   </li>
 </ul>
 <p><code>&lt;zipfileset&gt;</code> supports all attributes of <code>&lt;<a
- href="file:///C:/dev/gnu/ant/docs/manual/CoreTypes/fileset.html">fileset</a>&gt;</code>
+ href="fileset.html">fileset</a>&gt;</code>
 in addition to those listed below.<br>
 </p>
 <p>Since Ant 1.6, a zipfileset can be defined with the <span
diff --git a/docs/manual/Integration/VAJAntTool.html b/docs/manual/Integration/VAJAntTool.html
index 05e6f48..7fc6f85 100644
--- a/docs/manual/Integration/VAJAntTool.html
+++ b/docs/manual/Integration/VAJAntTool.html
@@ -4,6 +4,7 @@
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta http-equiv="Content-Language" content="en-us">
   <title>Visual Age for Java Tasks and Plugin User Manual</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
diff --git a/docs/manual/Integration/jext-plugin.html b/docs/manual/Integration/jext-plugin.html
index 7beac6b..0d09b04 100644
--- a/docs/manual/Integration/jext-plugin.html
+++ b/docs/manual/Integration/jext-plugin.html
@@ -4,6 +4,7 @@
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta http-equiv="Content-Language" content="en-us">
   <title>Apache AntWork Plugin for the Jext - Java Text Editor</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
@@ -39,4 +40,4 @@
 <hr>
 <p align="center">Copyright &copy; 2001-2002 Apache Software Foundation. All rights
 Reserved.</p>
-</body></html>
\ No newline at end of file
+</body></html>
diff --git a/docs/manual/OptionalTasks/BorlandEJBTasks.html b/docs/manual/OptionalTasks/BorlandEJBTasks.html
index 276d54a..9482af0 100644
--- a/docs/manual/OptionalTasks/BorlandEJBTasks.html
+++ b/docs/manual/OptionalTasks/BorlandEJBTasks.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Borland EJB Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/BorlandGenerateClient.html b/docs/manual/OptionalTasks/BorlandGenerateClient.html
index ce72d09..d993cd3 100644
--- a/docs/manual/OptionalTasks/BorlandGenerateClient.html
+++ b/docs/manual/OptionalTasks/BorlandGenerateClient.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>BorlandGenerateClient Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/antlr.html b/docs/manual/OptionalTasks/antlr.html
index 1de0f98..ab8b698 100644
--- a/docs/manual/OptionalTasks/antlr.html
+++ b/docs/manual/OptionalTasks/antlr.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>ANTLR Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/attrib.html b/docs/manual/OptionalTasks/attrib.html
index 3c5f444..ad35e34 100644
--- a/docs/manual/OptionalTasks/attrib.html
+++ b/docs/manual/OptionalTasks/attrib.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Ant User Manual</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/cab.html b/docs/manual/OptionalTasks/cab.html
index 3079497..462cb28 100644
--- a/docs/manual/OptionalTasks/cab.html
+++ b/docs/manual/OptionalTasks/cab.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Cab Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/ccm.html b/docs/manual/OptionalTasks/ccm.html
index 37aab7a..fcd9017 100644
--- a/docs/manual/OptionalTasks/ccm.html
+++ b/docs/manual/OptionalTasks/ccm.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Continuus Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/chgrp.html b/docs/manual/OptionalTasks/chgrp.html
index b37555c..cf6b428 100644
--- a/docs/manual/OptionalTasks/chgrp.html
+++ b/docs/manual/OptionalTasks/chgrp.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Chgrp Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/chown.html b/docs/manual/OptionalTasks/chown.html
index 2eda7e3..fdd1a03 100644
--- a/docs/manual/OptionalTasks/chown.html
+++ b/docs/manual/OptionalTasks/chown.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Chown Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/clearcase.html b/docs/manual/OptionalTasks/clearcase.html
index 164c52f..e78572b 100644
--- a/docs/manual/OptionalTasks/clearcase.html
+++ b/docs/manual/OptionalTasks/clearcase.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Clearcase Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/csc.html b/docs/manual/OptionalTasks/csc.html
new file mode 100644
index 0000000..e1381453
--- /dev/null
+++ b/docs/manual/OptionalTasks/csc.html
@@ -0,0 +1,515 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Csc
+ Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Csc
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Compiles C# source into executables or modules.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Compiles C# source into executables or modules. csc.exe on Windows or mcs on any other platform must be on the execute path, unless another executable or the full path to that executable is specified in the <tt>executable</tt> parameter <p> All parameters are optional: &lt;csc/&gt; should suffice to produce a debug build of all *.cs files. However, naming an <tt>destFile</tt>stops the csc compiler from choosing an output name from random, and allows the dependency checker to determine if the file is out of date. <p> The task is a directory based task, so attributes like <b>includes="*.cs" </b> and <b>excludes="broken.cs"</b> can be used to control the files pulled in. By default, all *.cs files from the project folder down are included in the command. When this happens the output file -if not specified- is taken as the first file in the list, which may be somewhat hard to control. Specifying the output file with <tt>destFile</tt> seems prudent. <p> <p> For more complex source trees, nested <tt>src</tt> elemements can be supplied. When such an element is present, the implicit fileset is ignored. This makes sense, when you think about it :) <p> References to external files can be made through the references attribute, or (since Ant1.6), via nested &lt;reference&gt; filesets. With the latter, the timestamps of the references are also used in the dependency checking algorithm. <p> Example <pre>&lt;csc optimize=&quot;true&quot; debug=&quot;false&quot; docFile=&quot;documentation.xml&quot; warnLevel=&quot;4&quot; unsafe=&quot;false&quot; targetType=&quot;exe&quot; incremental=&quot;false&quot; mainClass = &quot;MainApp&quot; destFile=&quot;NetApp.exe&quot; &gt; &lt;src dir="src" includes="*.cs" /&gt; &lt;reference file="${testCSC.dll}" /&gt; &lt;define name="RELEASE" /&gt; &lt;define name="DEBUG" if="debug.property"/&gt; &lt;define name="def3" unless="def3.property"/&gt; &lt;/csc&gt; </pre>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">additionalmodules</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of modules to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="26">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">debug</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the debug flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">definitions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of defined constants.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the destination directory of files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of exe/library to create.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">docfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">file for generated XML documentation</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">executable</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the name of the program, overriding the defaults. Can be used to set the full path to a program, or to switch to an alternate implementation of the command, such as the Mono or Rotor versions -provided they use the same command line arguments as the .NET framework edition</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra options which are not explicitly supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, fail on compilation errors.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">filealign</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the file alignment. Valid values are 0,512, 1024, 2048, 4096, 8192, and 16384, 0 means 'leave to the compiler'</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">int</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">fullpaths</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, print the full path of files on errors.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">includedefaultreferences</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, automatically includes the common assemblies in dotnet, and tells the compiler to link in mscore.dll. set the automatic reference inclusion flag on or off this flag controls the /nostdlib option in CSC</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">incremental</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the incremental compilation flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">mainclass</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the name of main class for executables.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">noconfig</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">A flag that tells the compiler not to read in the compiler settings files 'csc.rsp' in its bin directory and then the local directory</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">optimize</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enables optimization flag.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">outputfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">The output file. This is identical to the destFile attribute.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">referencefiles</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path of references to include. Wildcards should work.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">references</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of DLLs to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the source directory of the files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">targettype</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the target type to one of exe|library|module|winexe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">"exe", "library", "module", "winexe"</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">unsafe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enables the unsafe keyword.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">utf8output</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, require all compiler output to be in UTF8 format.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">warnlevel</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Level of warning currently between 1 and 4 with 4 being the strictest.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">int</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32icon</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the filename of icon to include.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32res</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the filename of a win32 resource (.RES) file to include. This is not a .NET resource, but what Windows is used to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>define</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetDefine)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a define to the list of definitions
+<short-description><![CDATA[Add a define to the list of definitions.]]></short-description>
+<description>
+            <![CDATA[add a define to the list of definitions]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>reference</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new reference fileset to the compilation
+<short-description><![CDATA[Add a new reference fileset to the compilation.]]></short-description>
+<description>
+            <![CDATA[add a new reference fileset to the compilation]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>resource</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetResource)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        link or embed a resource
+<short-description><![CDATA[Link or embed a resource.]]></short-description>
+<description>
+            <![CDATA[link or embed a resource]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>src</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new source directory to the compile
+<short-description><![CDATA[Add a new source directory to the compile.]]></short-description>
+<description>
+            <![CDATA[add a new source directory to the compile]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/depend.html b/docs/manual/OptionalTasks/depend.html
index 6d48337..bf1a5fb 100644
--- a/docs/manual/OptionalTasks/depend.html
+++ b/docs/manual/OptionalTasks/depend.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Depend Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/dotnet.html b/docs/manual/OptionalTasks/dotnet.html
index 2122d2e..e874e8d 100644
--- a/docs/manual/OptionalTasks/dotnet.html
+++ b/docs/manual/OptionalTasks/dotnet.html
@@ -1,622 +1,205 @@
 <html>
 <head>
 <title>.NET Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
-<body>
 <h1>.NET tasks</h1>
-
-
-
-<hr>
-<h2>&lt;CSC&gt;</h2>
-
-This task compiles CSharp source into executables or modules.
-
-This task compiles CSharp source into executables or modules. The task will
-only work on win2K/XP or other platforms with csc.exe or an equivalent.
-CSC must be on the execute path.
-
-<p>
-All parameters are optional: &lt;csc/&gt; should suffice to produce a debug
-build of all *.cs files. References to external files do require explicit 
-enumeration, so are one of the first attributes to consider adding. </p>
-
-<p>
-
-The task is a directory based task, so attributes like 
-<b>includes=&quot;**/*.cs&quot;</b> and 
-<b>excludes=&quot;broken.cs&quot;</b> can be used to control 
-the files pulled in. By default, 
-all *.cs files from the project folder down are included in the command. 
-When this happens the destFile -if not specified-
-is taken as the first file in the list, which may be somewhat hard to control.
-Specifying the output file with <b>'destfile'</b> seems prudent. </p>
-<p>
-Also, dependency checking only works if destfile is set.
-
-<table border="1" cellpadding="2" cellspacing="0">
-  <tr>
-    <td valign="top"><b>Attribute</b></td>
-    <td valign="top"><b>Description</b></td>
-    <td align="center" valign="top"><b>Example Values</b></td>
-  </tr>
-
-<tr>
-    <td valign="top">additionalModules</td>
-    <td valign="top">Semicolon separated list of modules to refer to</td>
-    </tr>
-  <tr>
-    <td valign="top">defaultexcludes</td>
-    <td valign="top">indicates whether default excludes should be used or not
-      </td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">definitions</td>
-    <td valign="top">defined constants</td>
-    <td valign="top"> &quot;RELEASE;BETA1&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">debug</td>
-    <td valign="top">include debug information</td>
-    <td valign="top">&quot;true&quot;(default)</td>
-    </tr>
-
-<tr>
-    <td valign="top">destFile</td>
-    <td valign="top">name of exe/library to create</td>
-    <td valign="top">&quot;example.exe&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">docFile</td>
-    <td valign="top">name of file for documentation</td>
-    <td valign="top">&quot;doc.xml&quot;</td>
-    </tr>
-  <tr>
-    <td valign="top">excludes</td>
-    <td valign="top">comma- or space-separated list of patterns of files that must be
-      excluded. No files (except default excludes) are excluded when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">excludesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an exclude pattern</td>
-  </tr>
-  <tr>
-    <td valign="top">extraOptions</td>
-    <td valign="top">Any extra options which aren't explicitly 
-        supported by the CSharp task </td>
-    <td>&quot;/warnaserror+ /baseaddress:0x12840000&quot;</td>
-  </tr>
-
-  <tr>
-    <td valign="top">failOnError</td>
-    <td valign="top">Should a failed compile halt the build?</td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-  </tr>
-  
-  <tr>
-    <td valign="top">fileAlign</td>
-    <td valign="top">
-     set the file alignment.
-     Valid values are 0,512, 1024, 2048, 4096, 8192, and 16384
-     0 means 'leave to the compiler'    
-    </td>
-    <td valign="top">512</td>
-  </tr>
-  <tr>
-    <td valign="top">fullpaths</td>
-    <td valign="top">print the full path of files on on errors</td>
-  </tr>
-    
-  <tr>
-    <td valign="top">includes</td>
-    <td valign="top">comma- or space-separated list of patterns of files that must be
-      included. All files are included when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">includeDefaultReferences</td>
-    <td valign="top">Flag which when true automatically includes
-    the common assemblies in dotnet, and tells the compiler to link in
-    mscore.dll
-    </td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-  </tr>
-
-  <tr>
-    <td valign="top">includesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an include pattern</td>
-  </tr>
-
-<tr>
-    <td valign="top">incremental</td>
-    <td valign="top">Incremental build flag. Avoid till it works</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">mainClass</td>
-    <td valign="top">name of main class for executables</td>
-    <td valign="top">&quot;com.example.project.entrypoint&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">noConfig</td>
-    <td valign="top">a flag which tells the compiler not
-    to read in the compiler settings files 'csc.rsp' in its
-    bin directory and then the local directory</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">optimize</td>
-    <td valign="top">optimisation flag</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">references</td>
-    <td valign="top">Semicolon separated list of dlls to refer to</td>
-    <td valign="top">&quot;mylib.dll;nunit.dll&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">referenceFiles </td>
-    <td valign="top">Ant Path descriptioon of references to include. 
-    Wildcards should work. </td>
-    <td valign="top"></td>
-    </tr>
-    
-<tr>
-    <td valign="top">srcDir</td>
-    <td valign="top">source directory (default = project directory)</td>
-    <td valign="top">&quot;.&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">targetType</td>
-    <td valign="top">Type of target</td>
-    <td valign="top">&quot;exe&quot;, &quot;module&quot;, &quot;winexe&quot; or &quot;library&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">unsafe</td>
-    <td valign="top">enable the <b>unsafe</b> keyword</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">utf8output</td>
-    <td valign="top">require all compiler output to be in utf-8 format</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">warnLevel</td>
-    <td valign="top">level of warning currently between 1 and 4 with 4
-    being the strictest. </td>
-    <td valign="top">&quot;1&quot;-&quot;4&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">win32Icon</td>
-    <td valign="top">filename of icon to include</td>
-    <td valign="top">&quot;res/myicon.ico&quot;</td>
-   </tr>
-<tr>
-    <td valign="top">win32res</td>
-    <td valign="top">filename of a win32 resource (.RES)file to include
-    This is not a .NET resource, but it what windows is used to.</td>
-    <td valign="top">&quot;res/myapp.res&quot;</td>
-   </tr>
-
-</table>
-<p>
-Example
-</p>
-<pre>&lt;csc
-        optimize=&quot;true&quot;
-        debug=&quot;false&quot;
-        docFile=&quot;documentation.xml&quot;
-        warnLevel=&quot;4&quot;
-        unsafe=&quot;false&quot;
-        targetType=&quot;exe&quot;
-        incremental=&quot;false&quot;
-        definitions=&quot;RELEASE&quot;
-        excludes=&quot;src/unicode_class.cs&quot;
-        mainClass = &quot;MainApp&quot;
-        destFile=&quot;NetApp.exe&quot;
-        /&gt;   
-</pre>
-<hr>
-<h2>&lt;VBC&gt;</h2>
-
-This task compiles VisualBasic.NET source into executables or modules.
-
-This task compiles VisualBasic.NET source into executables or modules. 
-The task will only work on win2K/XP or other platforms with vbc.exe 
-or an equivalent. VBC must be on the execute path.
-
-<p>
-All parameters are optional: &lt;vbc/&gt; should suffice to produce a debug
-build of all *.vb files. References to external files do require explicit 
-enumeration, so are one of the first attributes to consider adding. </p>
-
-<p>
-
-The task is a directory based task, so attributes like 
-<b>includes=&quot;**/*.vb&quot;</b> and 
-<b>excludes=&quot;broken.vb&quot;</b> can be used to control 
-the files pulled in. By default, 
-all *.vb files from the project folder down are included in the command. 
-When this happens the destFile -if not specified-
-is taken as the first file in the list, which may be somewhat hard to control.
-Specifying the output file with <b>'destfile'</b> seems prudent. </p>
-<p>
-Also, dependency checking only works if destfile is set.
-
-<table border="1" cellpadding="2" cellspacing="0">
-  <tr>
-    <td valign="top"><b>Attribute</b></td>
-    <td valign="top"><b>Description</b></td>
-    <td align="center" valign="top"><b>Example Values</b></td>
-  </tr>
-
-<tr>
-    <td valign="top">additionalModules</td>
-    <td valign="top">Semicolon separated list of modules to refer to</td>
-    </tr>
-  <tr>
-    <td valign="top">defaultexcludes</td>
-    <td valign="top">indicates whether default excludes should be used or not
-      </td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">definitions</td>
-    <td valign="top">defined constants</td>
-    <td valign="top"> &quot;RELEASE;BETA1&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">debug</td>
-    <td valign="top">include debug information</td>
-    <td valign="top">&quot;true&quot;(default)</td>
-    </tr>
-
-<tr>
-    <td valign="top">destFile</td>
-    <td valign="top">name of exe/library to create</td>
-    <td valign="top">&quot;example.exe&quot;</td>
-    </tr>
-  <tr>
-    <td valign="top">excludes</td>
-    <td valign="top">comma- or space-separated list of patterns of files that must be
-      excluded. No files (except default excludes) are excluded when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">excludesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an exclude pattern</td>
-  </tr>
-  <tr>
-    <td valign="top">extraOptions</td>
-    <td valign="top">Any extra options which aren't explicitly 
-        supported by the VisualBasicCompile task </td>
-    <td>&quot;/warnaserror+ /baseaddress:0x12840000&quot;</td>
-  </tr>
-
-  <tr>
-    <td valign="top">failOnError</td>
-    <td valign="top">Should a failed compile halt the build?</td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-  </tr>
-  <tr>
-    <td valign="top">imports</td>
-    <td valign="top">comma-separated list of global imports for namespaces
-	   in referenced metadata files.</td>
-  </tr>
-  <tr>
-    <td valign="top">includes</td>
-    <td valign="top">comma- or space-separated list of patterns of files that must be
-      included. All files are included when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">includesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an include pattern</td>
-  </tr>
-<tr>
-    <td valign="top">mainClass</td>
-    <td valign="top">name of main class for executables</td>
-    <td valign="top">&quot;com.example.project.entrypoint&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">optimize</td>
-    <td valign="top">optimisation flag</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">optionCompare</td>
-    <td valign="top">Text or binary string comparisons.</td>
-    <td valign="top">&quot;text&quot; or &quot;binary&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">optionExplicit</td>
-    <td valign="top">Require explicit declaration of variables?</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">optionStrict</td>
-    <td valign="top">Enforce strict language semantics?</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">references</td>
-    <td valign="top">Semicolon separated list of dlls to refer to</td>
-    <td valign="top">&quot;mylib.dll;nunit.dll&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">referenceFiles </td>
-    <td valign="top">Ant Path descriptioon of references to include. 
-    Wildcards should work. </td>
-    <td valign="top"></td>
-    </tr>
-<tr>
-    <td valign="top">removeIntChecks</td>
-    <td valign="top">Remove integer checks?</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">rootNamespace</td>
-    <td valign="top">Root namespace for all type declarations.</td>
-    <td valign="top">com.example</td>
-    </tr>
-    
-<tr>
-    <td valign="top">srcDir</td>
-    <td valign="top">source directory (default = project directory)</td>
-    <td valign="top">&quot;.&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">targetType</td>
-    <td valign="top">Type of target</td>
-    <td valign="top">&quot;exe&quot;, &quot;module&quot;, &quot;winexe&quot; or &quot;library&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">utf8output</td>
-    <td valign="top">require all compiler output to be in utf-8 format</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">warnLevel</td>
-    <td valign="top">level of warning currently between 1 and 4 with 4
-    being the strictest. </td>
-    <td valign="top">&quot;1&quot;-&quot;4&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">win32Icon</td>
-    <td valign="top">filename of icon to include</td>
-    <td valign="top">&quot;res/myicon.ico&quot;</td>
-   </tr>
-<tr>
-    <td valign="top">win32res</td>
-    <td valign="top">filename of a win32 resource (.RES)file to include
-    This is not a .NET resource, but it what windows is used to.</td>
-    <td valign="top">&quot;res/myapp.res&quot;</td>
-   </tr>
-
-</table>
-<p>
-Example
-</p>
-<pre>&lt;vbc
-        optimize=&quot;true&quot;
-        debug=&quot;false&quot;
-        warnLevel=&quot;4&quot;
-        targetType=&quot;exe&quot;
-        definitions=&quot;RELEASE&quot;
-        excludes=&quot;src/unicode_class.vb&quot;
-        mainClass = &quot;MainApp&quot;
-        destFile=&quot;NetApp.exe&quot;
-        optionExplicit=&quot;true&quot;
-        optionCompare=&quot;text&quot;
-        /&gt;   
-</pre>
-<hr>
-<h2>&lt;ilasm&gt;</h2>
-<p>Task to assemble .net 'Intermediate Language' files.
-The task will only work on windows until other platforms support csc.exe or 
-an equivalent. ilasm.exe must be on the execute path too.
-</p>
-<p>
-All parameters are optional: &lt;il/&gt; should suffice to produce a debug
-build of all *.il files.
-The option set is roughly compatible with the CSharp class;
-even though the command line options are only vaguely
-equivalent. [The low level commands take things like /OUT=file,
-csc wants /out:file ... /verbose is used some places; /quiet here in
-ildasm... etc.] It would be nice if someone made all the command line
-tools consistent (and not as brittle as the java cmdline tools) 
-</p>
-
-<p>
-
-The task is a directory based task, so attributes like <b>includes=&quot;*.il&quot;</b> and 
-<b>excludes=&quot;broken.il&quot;</b> can be used to control the files pulled in. 
-Each file is built on its own, producing an appropriately named output file unless
-manually specified with <b>outfile</b>
-</p>
-
-
-<table border="1" cellpadding="2" cellspacing="0">
-  <tr>
-    <td valign="top"><b>Attribute</b></td>
-    <td valign="top"><b>Description</b></td>
-    <td align="center" valign="top"><b>Example</b></td>
-  </tr>
-
-  <tr>
-    <td valign="top">defaultexcludes</td>
-    <td valign="top">indicates whether default excludes should be used or not
-      (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.</td>
-  </tr>
-
-  <tr>
-    <td valign="top">debug</td>
-    <td valign="top">include debug information</td>
-    <td valign="top">true (default)</td>
-  </tr>
-
-  <tr>
-    <td valign="top">excludes</td>
-    <td valign="top">comma separated list of patterns of files that must be
-      excluded. No files (except default excludes) are excluded when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">excludesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an exclude pattern</td>
-  </tr>
-  <tr>
-    <td valign="top">extraOptions</td>
-    <td valign="top">Any extra options which aren't explicitly 
-        supported by the ilasm task, primarily because they
-                arent really documented: use ilasm /? to see them</td>
-    <td></td>
-  </tr>
-  
-  <tr>
-      <td valign="top">failOnError</td>
-      <td valign="top">Should a failed compile halt the build?</td>
-      <td valign="top">&quot;true&quot;(default)</td>
-      </tr>
-  <tr>
-    <td valign="top">fullpaths</td>
-    <td valign="top">Should error text provide the full path to files</td>
-    <td valign="top">&quot;true&quot;(default)</td>
-  </tr>    
-  <tr>
-    <td valign="top">includes</td>
-    <td valign="top">comma separated list of patterns of files that must be
-      included. All files are included when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">includesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an include pattern</td>
-  </tr>
-  <tr>
-    <td valign="top">keyfile</td>
-    <td valign="top">the name of a file containing a private key, with which
-      the assembly output is checksumed and then MD5 signed 
-      to have a <i>strong name</i></td>
-  </tr>
-<tr>
-    <td valign="top">listing</td>
-    <td valign="top">Produce a listing (off by default). Listings go to the
-    current output stream</td>
-    <td valign="top">&quot;on&quot;, &quot;off&quot; (default)</td>
-    </tr>
-<tr>
-    <td valign="top">outputFile</td>
-    <td valign="top">filename of output</td>
-    <td valign="top">&quot;example.exe&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">resourceFile</td>
-    <td valign="top">name of resource file to include</td>
-    <td valign="top">&quot;resources.res&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">srcDir</td>
-    <td valign="top">source directory (default = project directory)</td>
-    <td valign="top"></td>
-    </tr>
-<tr>
-    <td valign="top">targetType</td>
-    <td valign="top">Type of target. library means DLL is output. </td>
-    <td valign="top">&quot;exe&quot;(default), &quot;library&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">verbose</td>
-    <td valign="top">output progress messages</td>
-    <td valign="top">&quot;on&quot;, &quot;off&quot; (default)</td>
-    </tr>
-
-</table>
-<p>
-Example</p>
-<pre>&lt;ilasm
-        outputFile=&quot;app.exe&quot;
-        verbose=&quot;on&quot;
-        listing=&quot;on&quot;
-        owner=&quot;secret&quot;
-        /&gt;
-</pre>
-<h2>&lt;WsdlToDotnet&gt;</h2>
-Why add a wrapper to the MS WSDL tool? 
-So that you can verify that your web services, be they written with Axis or
-anyone else's SOAP toolkit, work with .NET clients.
-<p>
-This task is dependency aware when using a file as a source and destination;
-so if you &lt;get&gt; the file (with <code>usetimestamp="true"</code>) then
-you only rebuild stuff when the WSDL file is changed. Of course,
-if the server generates a new timestamp every time you ask for the WSDL,
-this is not enough...use the &lt;filesmatch&gt; &lt;condition&gt; to
-to byte for byte comparison against a cached WSDL file then make
-the target conditional on that test failing.   
+<h2>Introduction</h2>
  
-<table border="1" cellpadding="2" cellspacing="0">
-  <tr>
-    <td valign="top"><b>Attribute</b></td>
-    <td valign="top"><b>Description</b></td>
-    <td align="center" valign="top"><b>Example</b></td>
-  </tr>
-  <tr>
-    <td valign="top">destFile</td>
-    <td valign="top">name of file to generate. Required</td>
-    <td valign="top">ApacheNet.cs</td>
-  </tr> 
-  <tr>
-    <td valign="top">srcFile</td>
-    <td valign="top">name of WSDL file to use. 
-      Required if url is not set</td>
-    <td valign="top">service.wsdl</td>
-  </tr>
-   <tr>
-    <td valign="top">url</td>
-    <td valign="top">url to retrive WSDL from.
-    required if srcFile is unset</td>
-    <td valign="top">http://localhost/service?wsdl</td>
-  </tr>  
-  <tr>
-    <td valign="top">server</td>
-    <td valign="top">generate server stubs, not client proxy code.
-      optional; default false</td>
-    <td valign="top">"false"(default)</td>
-  </tr> 
-  <tr>
-    <td valign="top">namespace</td>
-    <td valign="top">namespace to place  the source in.
-      optional; default ""</td>
-    <td valign="top">Apache.Net</td>
-  </tr> 
-  <tr>
-    <td valign="top">language</td>
-    <td valign="top">language; one of "CS", "JS", or "VB"
-      optional; </td>
-    <td valign="top"> "CS" (default)</td>
-  </tr> 
-  <tr>
-    <td valign="top">failOnError</td>
-    <td valign="top">Should failure halt the build?</td>
-    <td valign="top">"true"(default)</td>
-  </tr>
-  <tr>
-    <td valign="top">extraOptions</td>
-    <td valign="top">Any extra options which aren't explicitly 
-        supported by the task, like all the proxy server config stuff</td>
-    <td></td>
-  </tr>  
- 
-  </table>
-<hr>
+
+Ant support for .NET goes back to before .NET was released, and
+continues to be expanded based on user demand. Users writing nothing but
+a .NET application, may want to look at the .NET-based
+<A href="http://nant.sourceforge.net/">NAnt</A> project, that supports
+both the Microsoft and the Ximian managed <A
+href="http://go-mono.com/">Mono</A> project's implementation of the
+.NET framework.
+<p>
+
+Over time, the .NET tasks in Ant have tended to evolve to meet a few
+limited needs. Firstly, developers working with complex deployment problems may
+want to use ant to use the fairly advanced deployment tasks Ant ships
+with. Secondly, anyone who has a cross-platform project can use these
+tasks to cover the .NET side of the problem. Here, cross-platform can
+mean more than just Java and .NET: the C++ tasks in the ant-contrib
+project on sourceforge can be used with Ant to do native C++ and .NET
+cross development if that is your need. Finally, Ant support for .NET
+lets one automate .NET development under an automated build process,
+such as AntHill or Cruise Control. 
+
+<p>
+
+What this means is that the Ant tasks for .NET support do not get as
+much rigorous use as the Java tools, and are evolving more slowly -that
+includes the time for support calls to change. But as a consequence,
+developers working on .NET support have more freedom to play around with
+the code. It also means that the fairly unusual set of tasks supported
+by ant enable a few interesting operations that can not be performed any
+other way: 
+<ol>
+
+<li>Integrating with a Java based SOAP Service -generating C# code from
+the server's WSDL and running it against the server. 
+</li>
+<li>Building and deploying a C#-based Web Service, then using the Apache
+Axis tasks to create JUnit tests to call the endpoints.
+
+<li>Patching .NET type libraries to work with more complex IDL than the
+basic &lt;importtypelib&gt; wrapper around tlbimport supports. Hence the
+disassembler and the reassembler.
+</li>
+
+</ol>
+Needless to say, possible does not mean easy. 
+<A href="http://www.manning.com/hatcher/chap15.pdf">Chapter 15</A> of
+Java Development with Ant covers the first of these, using the Ant1.5
+version of the tasks. Going the other way -generating Java client
+code and JUnit testcases is covered in 
+<A href="http://www.iseran.com/Steve/papers/interop/">The Wondrous curse
+of Interop</A>. The final trick, IDL and Typelib abuse, is not
+documented as we do not want to encourage such an ugly practice. It,
+can, however, be done if absolutely necessary. The trick is a sequence
+of &lt;importtypelib/&gt;, &lt;ildasm&gt;, &lt;replace&gt; and finally 
+&lt;ilasm&gt;.
+
+<h2>Task List</h2>
+
+<table border="0" >
+<tr>
+  <td><a href="csc.html">Csc</a></td>
+  <td>Compiles C# code</td>
+</tr>  
+
+<tr>
+  <td><a href="vbc.html">vbc</a></td>
+  <td>Compiles VB.Net code</td>
+</tr>  
+
+<tr>
+  <td><a href="jsharp.html">jsharp</a></td>
+  <td>Compiles J# files</td>
+</tr>  
+
+<tr>
+  <td><a href="ildasm.html">ildasm</a></td>
+  <td>Disassembles .NET executables and libraries</td>
+</tr>  
+
+<tr>
+  <td><a href="ilasm.html">ilasm</a></td>
+  <td>Assembles .il files</td>
+</tr>  
+
+<tr>
+  <td><a href="wsdltodotnet.html">WsdlToDotnet</a></td>
+  <td>Generates .NET code (C# or VB) from a WSDL file</td>
+</tr>  
+
+<tr>
+  <td><a href="ImportTypelib.html">ImportTypelib</a></td>
+  <td>Imports a COM type library into .NET</td>
+</tr>  
+
+</table>
+
 
 <hr>
 <h2> Change Log </h2>
 
+<h4>Ant1.6</h4>
+This revision goes along with NET 1.1, though there is no reason why
+it should not work on other versions.
+<p>
+
+<ol>
+<li>vbc task</li>
+<li>jsharp task</li>
+<li>mono support</li>
+<li>ilasm</li>
+<li>tlbimport</li>
+<li>Reference filesets in the compiler tasks</li>
+<li>definitions in the compiler tasks</li>
+<li>multiple source filesets in the compiler tasks. If these are used, the
+implicit fileset is disabled</li>
+</ol>
+
+The compile tasks: vbc, jsharp, and csc, all contain lots of common code
+in a shared base class: if you can use one you should be able to use
+another. 
+
+<h4>Ant 1.5</h4>
+This revision goes along with NET 1.0 (SP1) 
+<ol>
+<li>CSC: added filealign</li>
+<li>CSC: added reference to office.dll</li>
+<li>CSC: dependency checking! only if destFile is set!
+<li>WsdlToDotnet written
+</ol>
+
+<h4>Version 0.4</h4>
+This is the beta-2 revision of the tasks. 
+<ol>
+<li>ILASM: pulled the owner attribute, added keyfile for giving binaries a strong name
+(MD5 hash of the checksum)</li>
+<li>CSC: added win32res , noConfig, utf8output, fullpaths</li>
+<li>CSC: </li>
+</ol>
+ 
+<h4>Version 0.3</h4>
+
+The changes here reflect Beta-1 of the dotnet SDK and experience of use in 
+more complex projects. This build does not work with the older SDK, 
+primarily because the automatic reference feature references libraries
+only found in the new SDK version.  
+<p>
+External changes</p>
+<ul>
+<li>Recursive inclusion of .cs and .il files</li>
+
+<li>Documentation enhanced, includes examples and details of all parameters</li>
+
+<li>The csc task automatically includes the common dotnet assemblies, so
+there is no need to remember to refer to 'System.dll', 'System.Web.Services',
+ etc. This feature can be disabled by setting the 'includeDefaultReferences' 
+ flag to false. </li>
+
+ <li> References can also be referred to using the ReferenceFiles parameter, which
+is an ant path specification. The old 'references' string is still retained.</li>
+<li> An 'extraoptions' attribute enables the build file to include any CSC options
+which are not explicitly supported in the CSC task. </li>
+</ul>
+
+Internal changes
+<ul>
+<li>Some minor refactoring (move common code a method)</li>
+<li>Application of Jedits JavaStyle task resulted in a major reshaping of
+the codebase and the insertion of a blank line every second line. Significant
+effort was required to revert some (but not all) changes.</li>
+<li>Removed throws clause from methods which can't throw exception<hr>
+<h2> Change Log </h2>
+
+<h4>Ant1.6</h4>
+This revision goes along with NET 1.1, though there is no reason why
+it should not work on other versions.
+<p>
+
+<ol>
+<li>vbc task</li>
+<li>jsharp task</li>
+<li>mono support</li>
+<li>ilasm</li>
+<li>tlbimport</li>
+<li>Reference filesets in the compiler tasks</li>
+<li>definitions in the compiler tasks</li>
+<li>multiple source filesets in the compiler tasks. If these are used, the
+implicit fileset is disabled</li>
+</ol>
+
+The compile tasks: vbc, jsharp, and csc, all contain lots of common code
+in a shared base class: if you can use one you should be able to use
+another. 
+
 <h4>Version 0.5</h4>
 This revision goes along with NET 1.0 (SP1) 
 <ol>
@@ -680,9 +263,24 @@
 
 <h4>Version 0.1</h4>
 Initial proof of concept; very rudimentary support for CSC only. 
+s </li>
+</ul>
+
+The test harness has been expanded to include unicode source file  
+(the build works but the rest of the system has 'issues' with high unicode
+package and method names)
+
+<h4>Version 0.2</h4>
+First public edition, added to the ant cvs tree. Tested on the PDC build of 
+the dotnet SDK only, and still immature. The command execution code was 
+refactored out into a 'NetCommand' class for re-use. The Ilasm task was added
+at this time.
+
+<h4>Version 0.1</h4>
+Initial proof of concept; very rudimentary support for CSC only. 
 
 
-<p align="center">Copyright &copy; 2000-2002 Apache Software Foundation. All rights
+<p align="center">Copyright &copy; 2000-2003 Apache Software Foundation. All rights
 Reserved.</p>
 
 </body>
diff --git a/docs/manual/OptionalTasks/echoproperties.html b/docs/manual/OptionalTasks/echoproperties.html
index 05c52a8..12c6209 100644
--- a/docs/manual/OptionalTasks/echoproperties.html
+++ b/docs/manual/OptionalTasks/echoproperties.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Echoproperties Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/ejb.html b/docs/manual/OptionalTasks/ejb.html
index 1db596d..ea6bf01 100644
--- a/docs/manual/OptionalTasks/ejb.html
+++ b/docs/manual/OptionalTasks/ejb.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>EJB Tasks</title>
 
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/ftp.html b/docs/manual/OptionalTasks/ftp.html
index 29e5abc..69f5fa3 100644
--- a/docs/manual/OptionalTasks/ftp.html
+++ b/docs/manual/OptionalTasks/ftp.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>FTP Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/icontract.html b/docs/manual/OptionalTasks/icontract.html
index de1db61..05e45f9 100644
--- a/docs/manual/OptionalTasks/icontract.html
+++ b/docs/manual/OptionalTasks/icontract.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>IContract Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/ilasm.html b/docs/manual/OptionalTasks/ilasm.html
new file mode 100644
index 0000000..ded2c42
--- /dev/null
+++ b/docs/manual/OptionalTasks/ilasm.html
@@ -0,0 +1,289 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Ilasm
+ Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Ilasm
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Assembles .NET Intermediate Language files.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Assembles .NET Intermediate Language files. ilasm.exe must be on the execute path, unless another executable or the full path to that executable is specified in the <tt>executable</tt> parameter <p> <p> All parameters are optional: &lt;il/&gt; should suffice to produce a debug build of all *.il files. The option set is roughly compatible with the CSharp class; even though the command line options are only vaguely equivalent. [The low level commands take things like /OUT=file, csc wants /out:file ... /verbose is used some places; /quiet here in ildasm... etc.] It would be nice if someone made all the command line tools consistent (and not as brittle as the java cmdline tools) <p> <p> The task is a directory based task, so attributes like <b>includes="*.il" </b> and <b>excludes="broken.il"</b> can be used to control the files pulled in. You can also use nested &lt;src&gt filesets to refer to source. <p>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">debug</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the debug flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="10">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of exe/library to create.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra options which are not explicitly supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, fails if ilasm tool fails.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">keyfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">the name of a file containing a private key.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">listing</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, produce a listing (off by default).</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">outputfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the output file; identical to setDestFile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">resourcefile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">name of resource file to include.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the source directory of the files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">verbose</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enable verbose ILASM output.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>reference</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new reference fileset to the compilation
+<short-description><![CDATA[Add a new reference fileset to the compilation.]]></short-description>
+<description>
+            <![CDATA[add a new reference fileset to the compilation]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>src</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new source directory to the compile
+<short-description><![CDATA[Add a new source directory to the compile.]]></short-description>
+<description>
+            <![CDATA[add a new source directory to the compile]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/ildasm.html b/docs/manual/OptionalTasks/ildasm.html
new file mode 100644
index 0000000..cf3fcf9
--- /dev/null
+++ b/docs/manual/OptionalTasks/ildasm.html
@@ -0,0 +1,339 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Ildasm
+ Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Ildasm
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Task to take a .NET or Mono -generated managed executable and turn it into ILASM assembly code.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Task to take a .NET or Mono -generated managed executable and turn it into ILASM assembly code. Useful when converting imported typelibs into assembler before patching and recompiling, as one has to do when doing advanced typelib work. <p> As well as generating the named output file, the ildasm program will also generate resource files <code>Icons.resources</code> <code>Message.resources</code> and a .res file whose filename stub is derived from the source in ways to obscure to determine. There is no way to control whether or not these files are created, or where they are created (they are created in the current directory; their names come from inside the executable and may be those used by the original developer). This task creates the resources in the directory specified by <code>resourceDir</code> if set, else in the same directory as the <code>destFile</code>. <p> This task requires the .NET SDK installed and ildasm on the path. To disassemble using alternate CLR systems, set the executable attribute to the name/path of the alternate implementation -one that must support all the classic ildasm commands. <p> Dependency logic: the task executes the command if the output file is missing or older than the source file. It does not take into account changes in the options of the task, or timestamp differences in resource files. When the underlying ildasm executable fails for some reason, it leaves the .il file in place with some error message. To prevent this from confusing the dependency logic, the file specified by the <code>dest</code> attribute is <i>always</i> deleted after an unsuccessful build.
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">assembler</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">enable (default) or disable assembly language in the output</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="17">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">bytes</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">enable or disable (default) the original bytes as comments</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">the output file (required)</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">encoding</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Select the output encoding: ascii, utf8 or unicode</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">"ascii", "utf8", "unicode"</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">executable</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">override the name of the executable (normally ildasm) or set its full path. Do not set a relative path, as the ugly hacks needed to create resource files in the dest directory force us to change to this directory before running the application. i.e use &lt;property location&gt to create an absolute path from a relative one before setting this value.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">header</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">include header information; default false.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">item</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">name a single item to decode; a class or a method e.g item="Myclass::method" or item="namespace1::namespace2::Myclass:method(void(int32))</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">linenumbers</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">include line number information; default=false</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">metadata</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">include metadata information</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">progressbar</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">show a graphical progress bar in a window during the process; off by default</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">quoteallnames</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">quote all names.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">rawexceptionhandling</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">enable raw exception handling (default = false)</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">resourcedir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of the directory for resources to be created. We cannot control their names, but we can say where they get created. If not set, the directory of the dest file is used</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">showsource</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">include the source as comments (default=false)</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">sourcefile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">the file to disassemble -required</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">alternate name for sourceFile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">visibility</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">visibility options: one or more of the following, with + signs to concatenate them: <pre> pub : Public pri : Private fam : Family asm : Assembly faa : Family and Assembly foa : Family or Assembly psc : Private Scope </pre> e.g. visibility="pub+pri". Family means <code>protected</code> in C#;</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/image.html b/docs/manual/OptionalTasks/image.html
index 7167978..f6bfe43 100644
--- a/docs/manual/OptionalTasks/image.html
+++ b/docs/manual/OptionalTasks/image.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Image Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/importtypelib.html b/docs/manual/OptionalTasks/importtypelib.html
new file mode 100644
index 0000000..2ea8827
--- /dev/null
+++ b/docs/manual/OptionalTasks/importtypelib.html
@@ -0,0 +1,207 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Importtypelib
+ Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Importtypelib
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Import a COM type library into the .NET framework.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Import a COM type library into the .NET framework. <p> This task is a wrapper to .NET's tlbimport; it imports a tlb file to a NET assembly by generating a binary assembly (.dll) that contains all the binding metadata. It uses date timestamps to minimise rebuilds. <p> Example <pre> &lt;importtypelib srcfile="xerces.tlb" destfile="xerces.dll" namespace="Apache.Xerces"/&gt; </pre>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">name the output file. required</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="6">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set any extra options that are not yet supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">namespace</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">what namespace is the typelib to be in. required</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">what is the source .tlb file? required.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">unsafe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">do you want unsafe code.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">usesysarray</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set this to map a COM SafeArray to the System.Array class</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/jarlib-available.html b/docs/manual/OptionalTasks/jarlib-available.html
index ceb97b9..e242d2e 100644
--- a/docs/manual/OptionalTasks/jarlib-available.html
+++ b/docs/manual/OptionalTasks/jarlib-available.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>jarlib-available Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/jarlib-display.html b/docs/manual/OptionalTasks/jarlib-display.html
index f115cf7..8b64c88 100644
--- a/docs/manual/OptionalTasks/jarlib-display.html
+++ b/docs/manual/OptionalTasks/jarlib-display.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>jarlib-display Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/jarlib-manifest.html b/docs/manual/OptionalTasks/jarlib-manifest.html
index 951b839..8030cdc 100644
--- a/docs/manual/OptionalTasks/jarlib-manifest.html
+++ b/docs/manual/OptionalTasks/jarlib-manifest.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>jarlib-manifest Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/jarlib-resolve.html b/docs/manual/OptionalTasks/jarlib-resolve.html
index 9b3c3ab..057d35e 100644
--- a/docs/manual/OptionalTasks/jarlib-resolve.html
+++ b/docs/manual/OptionalTasks/jarlib-resolve.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>jarlib-resolve Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/javacc.html b/docs/manual/OptionalTasks/javacc.html
index 619be88..efa4cf3 100644
--- a/docs/manual/OptionalTasks/javacc.html
+++ b/docs/manual/OptionalTasks/javacc.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>JavaCC Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/javah.html b/docs/manual/OptionalTasks/javah.html
index 9a2acbb..bbaa4d3 100644
--- a/docs/manual/OptionalTasks/javah.html
+++ b/docs/manual/OptionalTasks/javah.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Javah Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/jdepend.html b/docs/manual/OptionalTasks/jdepend.html
index 61d3893..ab3fbda 100644
--- a/docs/manual/OptionalTasks/jdepend.html
+++ b/docs/manual/OptionalTasks/jdepend.html
@@ -5,6 +5,7 @@
    <title>JDepend Task</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Language" content="en-us">
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -72,6 +73,12 @@
     <td ALIGN=CENTER VALIGN=TOP>No</td>
   </tr>
   <tr>
+    <td VALIGN=TOP>includeruntime</td>
+    <td VALIGN=TOP>Implicitly add the classes required to run jdepend
+    in forked mode. (Ignored if fork is disabled). Since ant 1.6.</td>
+    <td ALIGN=CENTER VALIGN=TOP>No, default is "no".</td>
+  </tr>
+  <tr>
     <td VALIGN=TOP>classpathref</td>
     <td VALIGN=TOP>the classpath to use, given as reference to a PATH defined elsewhere.</td>
     <td ALIGN=CENTER VALIGN=TOP>No</td>
diff --git a/docs/manual/OptionalTasks/jjdoc.html b/docs/manual/OptionalTasks/jjdoc.html
index e48abb5..83fb3f9 100644
--- a/docs/manual/OptionalTasks/jjdoc.html
+++ b/docs/manual/OptionalTasks/jjdoc.html
@@ -4,6 +4,7 @@
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Language" content="en-us">
    <title>JJDoc Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
diff --git a/docs/manual/OptionalTasks/jjtree.html b/docs/manual/OptionalTasks/jjtree.html
index 51b74d5..2ac20e1 100644
--- a/docs/manual/OptionalTasks/jjtree.html
+++ b/docs/manual/OptionalTasks/jjtree.html
@@ -4,6 +4,7 @@
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Language" content="en-us">
    <title>JJTree Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
diff --git a/docs/manual/OptionalTasks/jlink.html b/docs/manual/OptionalTasks/jlink.html
index 185df36..dcfce91 100644
--- a/docs/manual/OptionalTasks/jlink.html
+++ b/docs/manual/OptionalTasks/jlink.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>JLink Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
diff --git a/docs/manual/OptionalTasks/jpcoverage.html b/docs/manual/OptionalTasks/jpcoverage.html
index 51c3ec5..9d803cf 100644
--- a/docs/manual/OptionalTasks/jpcoverage.html
+++ b/docs/manual/OptionalTasks/jpcoverage.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>JProbe Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
diff --git a/docs/manual/OptionalTasks/jsharp.html b/docs/manual/OptionalTasks/jsharp.html
new file mode 100644
index 0000000..f232993
--- /dev/null
+++ b/docs/manual/OptionalTasks/jsharp.html
@@ -0,0 +1,455 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Jsharp
+ Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Jsharp
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Compile J# source down to a managed .NET application.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Compile J# source down to a managed .NET application. <p> J# is not Java. But it is the language closest to Java in the .NET framework. This task compiles jsharp source (.java files), and generates a .NET managed exe or dll. <p>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">additionalmodules</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of modules to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="21">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">baseaddress</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"></font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">debug</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the debug flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the destination directory of files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of exe/library to create.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">executable</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the name of the program, overriding the defaults. Can be used to set the full path to a program, or to switch to an alternate implementation of the command, such as the Mono or Rotor versions -provided they use the same command line arguments as the .NET framework edition</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra options which are not explicitly supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, fail on compilation errors.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">includedefaultreferences</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, automatically includes the common assemblies in dotnet, and tells the compiler to link in mscore.dll. set the automatic reference inclusion flag on or off this flag controls the /nostdlib option in CSC</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">mainclass</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the name of main class for executables.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">optimize</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enables optimization flag.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">purejava</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">do we want pure java (default, true) or corrupted J#?</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">referencefiles</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path of references to include. Wildcards should work.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">references</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of DLLs to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">securescoping</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Make package scoped code visible to the current assembly only (default: false) .NET does not have package scoping. Instead it has assembly, private and public. By default, package content is public to all.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the source directory of the files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">targettype</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the target type to one of exe|library|module|winexe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">"exe", "library", "module", "winexe"</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">utf8output</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, require all compiler output to be in UTF8 format.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">warnlevel</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Level of warning currently between 1 and 4 with 4 being the strictest.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">int</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32icon</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the filename of icon to include.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32res</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the filename of a win32 resource (.RES) file to include. This is not a .NET resource, but what Windows is used to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>define</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetDefine)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a define to the list of definitions
+<short-description><![CDATA[Add a define to the list of definitions.]]></short-description>
+<description>
+            <![CDATA[add a define to the list of definitions]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>reference</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new reference fileset to the compilation
+<short-description><![CDATA[Add a new reference fileset to the compilation.]]></short-description>
+<description>
+            <![CDATA[add a new reference fileset to the compilation]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>resource</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetResource)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        link or embed a resource
+<short-description><![CDATA[Link or embed a resource.]]></short-description>
+<description>
+            <![CDATA[link or embed a resource]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>src</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new source directory to the compile
+<short-description><![CDATA[Add a new source directory to the compile.]]></short-description>
+<description>
+            <![CDATA[add a new source directory to the compile]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/jspc.html b/docs/manual/OptionalTasks/jspc.html
index 44e8c91..c02a5ef 100644
--- a/docs/manual/OptionalTasks/jspc.html
+++ b/docs/manual/OptionalTasks/jspc.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>JSPC Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/junit.html b/docs/manual/OptionalTasks/junit.html
index f840299..0a07c73 100644
--- a/docs/manual/OptionalTasks/junit.html
+++ b/docs/manual/OptionalTasks/junit.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>JUnit Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
diff --git a/docs/manual/OptionalTasks/junitreport.html b/docs/manual/OptionalTasks/junitreport.html
index ecf98c2..b1e0c3b 100644
--- a/docs/manual/OptionalTasks/junitreport.html
+++ b/docs/manual/OptionalTasks/junitreport.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>JUnitReport Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/maudit.html b/docs/manual/OptionalTasks/maudit.html
index cfa5142..63e9d2e 100644
--- a/docs/manual/OptionalTasks/maudit.html
+++ b/docs/manual/OptionalTasks/maudit.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>MAudit Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/mimemail.html b/docs/manual/OptionalTasks/mimemail.html
index 2f38e5c..3085e6c 100644
--- a/docs/manual/OptionalTasks/mimemail.html
+++ b/docs/manual/OptionalTasks/mimemail.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>MimeMail Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/mmetrics.html b/docs/manual/OptionalTasks/mmetrics.html
index 50caa6c..d14bc5a 100644
--- a/docs/manual/OptionalTasks/mmetrics.html
+++ b/docs/manual/OptionalTasks/mmetrics.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>MMetrics Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/mparse.html b/docs/manual/OptionalTasks/mparse.html
index 9ffd5a6..9e8b27c 100644
--- a/docs/manual/OptionalTasks/mparse.html
+++ b/docs/manual/OptionalTasks/mparse.html
@@ -4,6 +4,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>MParse Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/native2ascii.html b/docs/manual/OptionalTasks/native2ascii.html
index 21b6057..f008da0 100644
--- a/docs/manual/OptionalTasks/native2ascii.html
+++ b/docs/manual/OptionalTasks/native2ascii.html
@@ -1,4 +1,5 @@
 <html>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
   <head><title>Native2Ascii Task</title></head>
   <body>
     <h2>Native2Ascii</h2>
diff --git a/docs/manual/OptionalTasks/netrexxc.html b/docs/manual/OptionalTasks/netrexxc.html
index 0ce5251..c3e6d3b 100644
--- a/docs/manual/OptionalTasks/netrexxc.html
+++ b/docs/manual/OptionalTasks/netrexxc.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>NetRexxC Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/perforce.html b/docs/manual/OptionalTasks/perforce.html
index 97c72e2..bd53620 100644
--- a/docs/manual/OptionalTasks/perforce.html
+++ b/docs/manual/OptionalTasks/perforce.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>Perforce Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 <h1>Perforce Tasks User Manual</h1>
@@ -22,10 +23,10 @@
 <br>
 <h2><a name="intro">Introduction</a></h2>
 <p>These tasks provide an interface to the <a href="http://www.perforce.com" target="_top">Perforce</a> SCM.
-The <code>org.apache.tools.ant.taskdefs.optional.perforce</code> package consists of a simple framework to support 
-p4 functionality as well as some Ant tasks encapsulating frequently used (by me :-) p4 commands. 
-However, the addition of new p4 commands is a pretty simple task (see the source). 
-Although it is possible to use these commands on the desktop, 
+The <code>org.apache.tools.ant.taskdefs.optional.perforce</code> package consists of a simple framework to support
+p4 functionality as well as some Ant tasks encapsulating frequently used (by me :-) p4 commands.
+However, the addition of new p4 commands is a pretty simple task (see the source).
+Although it is possible to use these commands on the desktop,
 they were primarily intended to be used by automated build systems.</p>
 
 <p><b>Note:</b> These tasks require the <a href="http://jakarta.apache.org/oro" target="_top">oro 2.0.XXX</a> regular
@@ -79,7 +80,7 @@
         <td><a href="#p4revert">P4Revert</a></td>
         <td>Revert files</td>
     </tr>
-	    
+
     <tr>
         <td><a href="#p4add">P4Add</a></td>
         <td>Add files</td>
@@ -103,7 +104,7 @@
 </table>
 
 <h3>General P4 Properties</h3>
-<p>Each p4 task requires a number of settings, either through build-wide properties, individual attributes 
+<p>Each p4 task requires a number of settings, either through build-wide properties, individual attributes
 or environment variables. These are
 </p>
 <table border="1" cellpadding="2" cellspacing="0">
@@ -147,7 +148,7 @@
 <p> Your local installation of Perforce may require other settings (e.g.
 P4PASSWD, P4CONFIG). Many of these settings can be set using the globalopts
 attribute (described below), but not all. If a setting cannot be set
-by the command-line options, then it can only be set outside of Ant as an 
+by the command-line options, then it can only be set outside of Ant as an
 environment variable.
 </p>
 <p>
@@ -245,7 +246,7 @@
 
 <h2><a name="p4change">P4Change</a></h2>
 <h3>Description:</h3>
-<p>Request a new changelist from the Perforce server. 
+<p>Request a new changelist from the Perforce server.
 This task sets the ${p4.change} property which can then be passed to <A HREF="#p4submit">P4Submit</A>,
 <A HREF="#p4edit">P4Edit</A>, or <a HREF="#p4add">P4Add</A>, or <a HREF="#p4delete">P4Delete</A>,
 then to <A HREF="#p4submit">P4Submit</A>.
@@ -384,7 +385,8 @@
   </tr>
   <tr>
     <td valign="top">view</td>
-    <td valign="top">client view to use for label</td>
+    <td valign="top">client view to use for label<br/>
+    The view can contain multiple lines separated by ; or :</td>
     <td valign="top" align="center">No</td>
   </tr>
   <tr>
@@ -403,9 +405,10 @@
 <h3>Examples</h3>
 <pre>
 &lt;p4label
-	name=&quot;NightlyBuild:${DSTAMP}:${TSTAMP}&quot; 
+	name=&quot;NightlyBuild:${DSTAMP}:${TSTAMP}&quot;
 	desc=&quot;Auto Nightly Build&quot;
 	lock=&quot;locked&quot;
+	label=&quot;//firstdepot/...;//secondepot/foo/bar/...&quot;
 /&gt;
 </pre>
 <hr>
@@ -614,7 +617,7 @@
     <td valign="top">Revert only unchanged files (p4 revert -a)</td>
     <td valign="top" align="center">No</td>
   </tr>
-  
+
 </table>
 
 <h3>Examples</h3>
@@ -643,7 +646,7 @@
   <tr>
     <td valign="top">commandlength</td>
     <td valign="top">A positive integer specifying the maximum length
-        of the commandline when calling Perforce to add the files. 
+        of the commandline when calling Perforce to add the files.
         Defaults to 450, higher values mean faster execution,
         but also possible failures.</td>
     <td valign="top" align="center">No</td>
@@ -655,7 +658,7 @@
 associated with the default changelist.</td>
     <td valign="top" align="center">No</td>
   </tr>
-  
+
 </table>
 
 <h3>Examples</h3>
@@ -920,7 +923,6 @@
 <pre>
 &lt;p4resolve
     view=&quot;//depot/projects/projectfoo/main/src/Blah.java...&quot;
-    change=&quot;${p4.change}&quot;
     resolvemode=&quot;automatic&quot;/&gt;
 </pre>
 
@@ -942,12 +944,12 @@
     <td valign="top">V1.1</td>
     <td valign="top">Fixed cross platform (NT/Unix) bug<br>
     Refactored p4 output handling code<br>
-    Refactored exec'ing code</td>    
+    Refactored exec'ing code</td>
 </tr>
 <tr>
     <td valign="top">Jan 2003</td>
     <td valign="top">V1.2</td>
-    <td valign="top">Added globalopts to P4Base to allow 
+    <td valign="top">Added globalopts to P4Base to allow
                      additional global options to be set.<br>
                      Added p4fstat task</td>
 </tr>
diff --git a/docs/manual/OptionalTasks/propertyfile.html b/docs/manual/OptionalTasks/propertyfile.html
index 91d0e3e..fd19b64 100644
--- a/docs/manual/OptionalTasks/propertyfile.html
+++ b/docs/manual/OptionalTasks/propertyfile.html
@@ -2,6 +2,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>PropertyFile Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/pvcstask.html b/docs/manual/OptionalTasks/pvcstask.html
index b136473..f2917f7 100644
--- a/docs/manual/OptionalTasks/pvcstask.html
+++ b/docs/manual/OptionalTasks/pvcstask.html
@@ -4,6 +4,7 @@
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Language" content="en-us">
    <title>PVCS task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
diff --git a/docs/manual/OptionalTasks/renameextensions.html b/docs/manual/OptionalTasks/renameextensions.html
index 6e42364..ec0369a 100644
--- a/docs/manual/OptionalTasks/renameextensions.html
+++ b/docs/manual/OptionalTasks/renameextensions.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>RenameExtensions Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/replaceregexp.html b/docs/manual/OptionalTasks/replaceregexp.html
index eca4f20..aa9e878 100644
--- a/docs/manual/OptionalTasks/replaceregexp.html
+++ b/docs/manual/OptionalTasks/replaceregexp.html
@@ -3,11 +3,11 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>ReplaceRegExp Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
-
 <body>
 
-<h2><a name="replace">ReplaceRegExp</a></h2>
+<h2><a name="replaceregexp">ReplaceRegExp</a></h2>
 <h3>Description</h3>
 <p>ReplaceRegExp is a directory based task for replacing the
 occurrence of a given regular expression with a substitution pattern
@@ -20,28 +20,7 @@
 <p>Similar to <a href="../CoreTypes/mapper.html#regexp-mapper">regexp
 type mappers</a> this task needs a supporting regular expression
 library and an implementation of
-<code>org.apache.tools.ant.util.regexp.Regexp</code>.  Ant comes with
-implementations for
-<a href="http://java.sun.com/j2se/1.4/docs/api/java/util/regex/package-summary.html" target="_top">the java.util.regex package of JDK 1.4</a>,
-<a href="http://jakarta.apache.org/regexp/" target="_top">jakarta-regexp</a>
-and <a href="http://jakarta.apache.org/oro/" target="_top">jakarta-ORO</a>,
-but you will still need the library itself.</p>
-<p>
-<i>
-There are cross-platform issues for matches related to line terminator.
-For example if you use $ to anchor your regular expression on the end of a line
-the results might be very different depending on both your platform and the regular
-expression library you use. It is 'highly recommended' that you test your pattern on
-both Unix and Windows platforms before you rely on it.
-<ul>
-    <li>Jakarta Oro defines a line terminator as '\n' and is consistent with Perl.</li>
-    <li>Jakarta RegExp uses a system-dependant line terminator.</li>
-    <li>JDK 1.4 uses '\n', '\r\n', '\u0085', '\u2028', '\u2029' as a default
-    but is configured in the wrapper to use only '\n' (UNIX_LINE)</li>
-</ul>
-We <b>strongly</b> recommend that you use Jakarta Oro.
-</i>
-</p>
+<code>org.apache.tools.ant.util.regexp.Regexp</code>. See details <a href="#implementation">below</a>. </p>
 
 <h3>Parameters</h3>
 <table border="1" cellpadding="2" cellspacing="0">
@@ -74,6 +53,7 @@
                      i : Case Insensitive.  Do not consider case in the match<br />
                      m : Multiline.  Treat the string as multiple lines of input, using "^" and "$" as the start or end of any line, respectively, rather than start or end of string.<br />
                      s : Singleline.  Treat the string as a single line of input, using "." to match any character, including a newline, which normally, it would not match.<br />
+    </td>
     <td valign="top" align="center">No</td>
   </tr>
   <tr>
@@ -100,6 +80,47 @@
 <p>replaces occurrences of the property name &quot;OldProperty&quot;
  with &quot;NewProperty&quot; in a properties file, preserving the existing
 value, in the file <code>${src}/build.properties</code></p>
+<a name="implementation"/>
+<h3>Choice of regular expression implementation</h3>
+<p>
+Ant comes with
+wrappers for
+<a href="http://java.sun.com/j2se/1.4/docs/api/java/util/regex/package-summary.html" target="_top">the java.util.regex package of JDK 1.4</a>,
+<a href="http://jakarta.apache.org/regexp/" target="_top">jakarta-regexp</a>
+and <a href="http://jakarta.apache.org/oro/" target="_top">jakarta-ORO</a>,
+See <a href="../install.html#librarydependencies">installation dependencies</a>
+ concerning the supporting libraries.</p>
+<p>
+The system property <code>ant.regexp.regexpimpl</code> governs which regular expression implementation will be chosen.
+Possible values for this property are :
+<ul>
+<li>
+org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp
+</li>
+<li>
+org.apache.tools.ant.util.regexp.JakartaOroRegexp
+</li>
+<li>
+org.apache.tools.ant.util.regexp.JakartaRegexpRegexp
+</li>
+</ul>
+It can also be another implementation of the interface <code>org.apache.tools.ant.util.regexp.Regexp</code>.
+If <code>ant.regexp.regexpimpl</code> is not defined, ant checks in the order Jdk14Regexp, JakartaOroRegexp,
+ JakartaRegexp for the availability of the corresponding library. The first of these 3 which is found will be used.</p>
+<p>
+There are cross-platform issues for matches related to line terminator.
+For example if you use $ to anchor your regular expression on the end of a line
+the results might be very different depending on both your platform and the regular
+expression library you use. It is 'highly recommended' that you test your pattern on
+both Unix and Windows platforms before you rely on it.
+<ul>
+    <li>Jakarta Oro defines a line terminator as '\n' and is consistent with Perl.</li>
+    <li>Jakarta RegExp uses a system-dependant line terminator.</li>
+    <li>JDK 1.4 uses '\n', '\r\n', '\u0085', '\u2028', '\u2029' as a default
+    but is configured in the wrapper to use only '\n' (UNIX_LINE)</li>
+</ul>
+<em>We <b>strongly</b> recommend that you use Jakarta Oro.</em>
+</p>
 <h3>Parameters specified as nested elements</h3>
 <p>This task supports a nested <a href="../CoreTypes/fileset.html">FileSet</a>
    element.</p>
@@ -107,14 +128,14 @@
    the regular expression.  You can use this element to refer to a previously
    defined regular expression datatype instance.</p>
 <blockquote>
-     &lt;regexp id="id" pattern="expression"/&gt;<br />
+     &lt;regexp id="id" pattern="alpha(.+)beta"/&gt;<br />
      &lt;regexp refid="id"/&gt;
 </blockquote>
 <p>This task supports a nested <i>Substitution</i> element to specify
    the substitution pattern.  You can use this element to refer to a previously
    defined substitution pattern datatype instance.</p>
 <blockquote>
-     &lt;substitution id="id" pattern="expression"/&gt;<br />
+     &lt;substitution id="id" expression="beta\1alpha"/&gt;<br />
      &lt;substitution refid="id"/&gt;
 </blockquote>
 <h3>Examples</h3>
@@ -151,8 +172,8 @@
 &lt;html&gt; &lt;body&gt;
  &lt;h1&gt; T E S T &lt;/h1&gt; &lt;/body&gt;&lt;/html&gt;
 </pre>
-
-<hr>
+</p>
+<hr/>
 <p align="center">Copyright &copy; 2001-2003 Apache Software Foundation. All rights
 Reserved.</p>
 
diff --git a/docs/manual/OptionalTasks/rexec.html b/docs/manual/OptionalTasks/rexec.html
index 504a7dc..d7b2a3c 100644
--- a/docs/manual/OptionalTasks/rexec.html
+++ b/docs/manual/OptionalTasks/rexec.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>RExec Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/rpm.html b/docs/manual/OptionalTasks/rpm.html
index 670b837..9ec5ad6 100644
--- a/docs/manual/OptionalTasks/rpm.html
+++ b/docs/manual/OptionalTasks/rpm.html
@@ -2,6 +2,7 @@
 
 <head>
 <title>Rpm Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/scp.html b/docs/manual/OptionalTasks/scp.html
index 29892be..4b846fa 100644
--- a/docs/manual/OptionalTasks/scp.html
+++ b/docs/manual/OptionalTasks/scp.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>SCP Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -20,7 +21,7 @@
 in the Ant distribution.  See <a
 href="../install.html#librarydependencies">Library Dependencies</a>
 for more information.  This task has been tested with jsch-0.1.2 to
-jsch-0.1.7.</p>
+jsch-0.1.9.</p>
 
 <h3>Parameters</h3>
 <table border="1" cellpadding="2" cellspacing="0">
@@ -53,7 +54,10 @@
   </tr>
   <tr>
     <td valign="top">trust</td>
-    <td valign="top">This trusts all unknown hosts if set to yes/true.</td>
+    <td valign="top">This trusts all unknown hosts if set to yes/true.<br>
+      <strong>Note</strong> If you set this to false (the default), the
+      host you connect to must be listed in your knownhosts file, this
+      also implies that the file exists.</td>
     <td valian="top" align="center">No, defaults to No.</td>
   </tr>
   <tr>
@@ -66,8 +70,7 @@
   </tr>
   <tr>
     <td valign="top">failonerror</td>
-     <td valign="top">Log a warning message, but do not stop the build,
-       when the transfer does not work.
+     <td valign="top">Whether to halt the build if the transfer fails.
      </td>
      <td valign="top" align="center">No; defaults to true.</td>
   </tr>
diff --git a/docs/manual/OptionalTasks/script.html b/docs/manual/OptionalTasks/script.html
index 3ef8a12..928a12c 100644
--- a/docs/manual/OptionalTasks/script.html
+++ b/docs/manual/OptionalTasks/script.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Script Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -161,10 +162,8 @@
       <font color=blue>fs.setIncludes(includes)</font>;
       fs.setExcludes(excludes);
 
-      // Get the files of that fileset
+      // Get the files (array) of that fileset
       ds = fs.getDirectoryScanner(project);
-
-      // Get the source files (array)
       srcFiles = ds.getIncludedFiles();
 
       // iterate over that array
@@ -186,7 +185,7 @@
 &lt;/project&gt;
 </pre></blockquote>
 <p>We want to use the Java API. Because we don´t want always typing the package signature
-we do an import. Rhino knows to different methods for import statements: one for packages
+we do an import. Rhino knows two different methods for import statements: one for packages
 and one for a single class. By default only the <i>java</i> packages are available, so
 <i>java.lang.System</i> can be directly imported with <code>importClass/importPackage</code>.
 For other packages you have to prefix the full classified name with <i>Package</i>.
@@ -213,4 +212,4 @@
 Reserved.</p>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/manual/OptionalTasks/scriptdef.html b/docs/manual/OptionalTasks/scriptdef.html
new file mode 100755
index 0000000..3e2cc28
--- /dev/null
+++ b/docs/manual/OptionalTasks/scriptdef.html
@@ -0,0 +1,191 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<title>Scriptdef Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
+</head>
+
+<body>
+
+<h2><a name="script">Script</a></h2>
+<h3>Description</h3>
+<p>Scriptdef can be used to define an Ant task using a scripting language. Ant
+scripting languages supported by
+<a href="http://jakarta.apache.org/bsf" target="_top">Apache BSF</a> may be
+used to define the script. Scriptdef provides a mechanism to encapsulate
+control logic from a build within an Ant task minimizing the need for
+proviuding control style tasks in Ant itself. Complex logic can be made
+available while retaining the simple structure of an Ant build file. Scriptdef
+is also useful for prototyping new custom tasks. Certainly as the complexity
+of the script increases it would be better to migrate the task definition
+into a Java based custom task.
+</p>
+
+<p><b>Note:</b> This task depends on external libraries not included in the
+Ant distribution. See
+<a href="../install.html#librarydependencies">Library Dependencies</a>
+for more information.</p>
+
+<p>The attributes and nested elements supported by the task may be defined
+using &lt;attribute&gt; and &lt;element&gt; nested elements. These are
+available to the script that implements the task as two collection style
+script variables <code>attributes</code> and <code>elements</code>. The
+elements in the <code>attributes</code> collection may be accessed by the
+attribute name. The <code>elements</code> collection is accessed by the nested
+element name. This will return a list of all instances of the nested element.
+The instances in this list may be accessed by an integer index.
+</p>
+
+<p>The name "project" is a pre-defined reference to the Ant Project. For
+more information on writing scripts, please refer to the
+<a href="script.html">&lt;script&gt;</a> task
+</p>
+
+<h3>Parameters</h3>
+<table border="1" cellpadding="2" cellspacing="0">
+  <tr>
+    <td valign="top"><b>Attribute</b></td>
+    <td valign="top"><b>Description</b></td>
+    <td align="center" valign="top"><b>Required</b></td>
+  </tr>
+  <tr>
+    <td valign="top">name</td>
+    <td valign="top">the name of the task to be created using the script</td>
+    <td valign="top" align="center">Yes</td>
+  </tr>
+  <tr>
+    <td valign="top">language</td>
+    <td valign="top">The programming language the script is written in.
+      Must be a supported Apache BSF language</td>
+    <td valign="top" align="center">Yes</td>
+  </tr>
+  <tr>
+    <td valign="top">src</td>
+    <td valign="top">The location of the script as a file, if not inline</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+</table>
+
+<h3>Nested elements</h3>
+<h4>attribute</h4>
+<table border="1" cellpadding="2" cellspacing="0">
+  <tr>
+    <td valign="top"><b>Attribute</b></td>
+    <td valign="top"><b>Description</b></td>
+    <td align="center" valign="top"><b>Required</b></td>
+  </tr>
+  <tr>
+    <td valign="top">name</td>
+    <td valign="top">the name of the attribute</td>
+    <td valign="top" align="center">Yes</td>
+  </tr>
+</table>
+
+<h4>element</h4>
+<table border="1" cellpadding="2" cellspacing="0">
+  <tr>
+    <td valign="top"><b>Attribute</b></td>
+    <td valign="top"><b>Description</b></td>
+    <td align="center" valign="top"><b>Required</b></td>
+  </tr>
+  <tr>
+    <td valign="top">name</td>
+    <td valign="top">the name of the nested element to be supported by the
+                     task defined by the script</td>
+    <td valign="top" align="center">Yes</td>
+  </tr>
+  <tr>
+    <td valign="top">classname</td>
+    <td valign="top">the classname of the class to be used for the nested element.
+         This specifies the class directly and is an alternative to specifying
+         the Ant type name.</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+  <tr>
+    <td valign="top">type</td>
+    <td valign="top">This is the name of an Ant task or type which is to
+        be used when this element is to be created. This is an alternative
+        to specifying the class name directly</td>
+    <td valign="top" align="center">No</td>
+  </tr>
+</table>
+
+
+
+<h3>Examples</h3>
+
+<p>
+The following definition creates a task which supprts an attribute called
+attr and two nested elements, one being a fileset and the other a path. When
+executed, the resulting task logs the value of the attribute and the basedir
+of the first fileset.
+</p>
+
+<pre>
+  &lt;scriptdef name=&quot;scripttest&quot; language=&quot;javascript&quot;&gt;
+    &lt;attribute name=&quot;attr1&quot;/&gt;
+    &lt;element name=&quot;fileset&quot; type=&quot;fileset&quot;/&gt;
+    &lt;element name=&quot;path&quot; type=&quot;path&quot;/&gt;
+    &lt;![CDATA[
+
+      project.log(&quot;Hello from script&quot;);
+      project.log(&quot;Attribute attr1 = &quot; + attributes.get(&quot;attr1&quot;));
+      project.log(&quot;First fileset basedir = &quot;
+        + elements.get(&quot;fileset&quot;).get(0).getDir(project));
+
+    ]]&gt;
+  &lt;/scriptdef&gt;
+
+  &lt;scripttest attr1=&quot;test&quot;&gt;
+    &lt;path&gt;
+      &lt;pathelement location=&quot;src&quot;/&gt;
+    &lt;/path&gt;
+    &lt;fileset dir=&quot;src&quot;/&gt;
+    &lt;fileset dir=&quot;main&quot;/&gt;
+  &lt;/scripttest&gt;
+</pre>
+
+<p>
+The following variation on the above script lists the number of fileset elements
+and iterates through them
+</p>
+<pre>
+  &lt;scriptdef name=&quot;scripttest2&quot; language=&quot;javascript&quot;&gt;
+    &lt;element name=&quot;fileset&quot; type=&quot;fileset&quot;/&gt;
+    &lt;![CDATA[
+      filesets = elements.get(&quot;fileset&quot;);
+      project.log(&quot;Number of filesets = &quot; + filesets.size());
+      for (i = 0; i &lt; filesets.size(); ++i) {
+        project.log(&quot;fileset &quot; + i + &quot; basedir = &quot;
+          + filesets.get(i).getDir(project));
+      }
+    ]]&gt;
+  &lt;/scriptdef&gt
+
+  &lt;scripttest2&gt;
+    &lt;fileset dir=&quot;src&quot;/&gt;
+    &lt;fileset dir=&quot;main&quot;/&gt;
+  &lt;/scripttest2&gt;
+</pre>
+
+<p>
+When a script has a syntax error, the scriptdef name will be listed in the
+error. For example in the above script, removing the closing curly bracket
+would result in this error
+</p>
+
+<p><code>build.xml:15: SyntaxError: missing } in compound
+statement (scriptdef &lt;scripttest2&gt;; line 10)</code></p>
+
+<p>
+Script errors are only detected when a script task is actually executed.
+</p>
+
+
+<hr>
+<p align="center">Copyright &copy; 2000-2003 Apache Software Foundation. All rights
+Reserved.</p>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/serverdeploy.html b/docs/manual/OptionalTasks/serverdeploy.html
index dc18fa3..910efd4 100644
--- a/docs/manual/OptionalTasks/serverdeploy.html
+++ b/docs/manual/OptionalTasks/serverdeploy.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>ServerDeploy Task</title>
 
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -316,4 +317,4 @@
 <hr>
 <p align="center">Copyright &copy; 2002 Apache Software Foundation. All rights Reserved.</p>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/manual/OptionalTasks/setproxy.html b/docs/manual/OptionalTasks/setproxy.html
index 8688e37..cb12c43 100644
--- a/docs/manual/OptionalTasks/setproxy.html
+++ b/docs/manual/OptionalTasks/setproxy.html
@@ -4,6 +4,7 @@
   <meta http-equiv="Content-Language" content="en-us">
   <title>Setproxy
  Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body bgcolor="#ffffff" text="#000000" link="#525D76"
@@ -128,6 +129,21 @@
     <!-- Attribute -->
     <tr>
         <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">proxyPassword</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+          Set the password for the proxy. Used only if the proxyUser is set.<br>
+          <em>since Ant 1.6</em>
+        </font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
           <font color="#000000" size="-1" face="arial,helvetica,sanserif">proxyPort</font>
         </td>
         <td bgcolor="#eeeeee" valign="top" align="left">
@@ -142,6 +158,22 @@
     <!-- Attribute -->
     <tr>
         <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">proxyUser</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+          set the proxy user. Probably requires a password to accompany this
+          setting. Default=""<br>
+          <em>since Ant 1.6</em>
+        </font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
           <font color="#000000" size="-1" face="arial,helvetica,sanserif">socksProxyHost</font>
         </td>
         <td bgcolor="#eeeeee" valign="top" align="left">
diff --git a/docs/manual/OptionalTasks/sos.html b/docs/manual/OptionalTasks/sos.html
index 9cdc72a..accf31d 100644
--- a/docs/manual/OptionalTasks/sos.html
+++ b/docs/manual/OptionalTasks/sos.html
@@ -5,6 +5,7 @@
   <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
   <title>SOS Tasks</title>
 
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 
diff --git a/docs/manual/OptionalTasks/sound.html b/docs/manual/OptionalTasks/sound.html
index 294a46a..fcfbebb 100644
--- a/docs/manual/OptionalTasks/sound.html
+++ b/docs/manual/OptionalTasks/sound.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Sound Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/splash.html b/docs/manual/OptionalTasks/splash.html
index 6ac3281..c837aa2 100644
--- a/docs/manual/OptionalTasks/splash.html
+++ b/docs/manual/OptionalTasks/splash.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Ant User Manual</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/sshexec.html b/docs/manual/OptionalTasks/sshexec.html
index 4b8d35b..e7cbfcc 100644
--- a/docs/manual/OptionalTasks/sshexec.html
+++ b/docs/manual/OptionalTasks/sshexec.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>SSHEXEC Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -18,8 +19,9 @@
 <p><b>Note:</b> This task depends on external libraries not included
 in the Ant distribution.  See <a
 href="../install.html#librarydependencies">Library Dependencies</a>
-for more information.  This task has been tested with jsch-0.1.7 and
-won't work with earlier versions of jsch..</p>
+for more information.  This task has been tested with jsch-0.1.7 to
+jsch-0.1.9 and won't work with versions of jsch earlier than
+0.1.7.</p>
 
 <h3>Parameters</h3>
 <table border="1" cellpadding="2" cellspacing="0">
@@ -45,7 +47,11 @@
   </tr>
   <tr>
     <td valign="top">trust</td>
-    <td valign="top">This trusts all unknown hosts if set to yes/true.</td>
+
+    <td valign="top">This trusts all unknown hosts if set to yes/true.<br>
+      <strong>Note</strong> If you set this to false (the default), the
+      host you connect to must be listed in your knownhosts file, this
+      also implies that the file exists.</td>
     <td valian="top" align="center">No, defaults to No.</td>
   </tr>
   <tr>
@@ -58,8 +64,7 @@
   </tr>
   <tr>
     <td valign="top">failonerror</td>
-     <td valign="top">Log a warning message, but do not stop the build,
-       when the transfer does not work.
+     <td valign="top">Whether to halt the build if the command does not complete successfully.
      </td>
      <td valign="top" align="center">No; defaults to true.</td>
   </tr>
diff --git a/docs/manual/OptionalTasks/starteam.html b/docs/manual/OptionalTasks/starteam.html
index 64de0f5..c8b99dc 100644
--- a/docs/manual/OptionalTasks/starteam.html
+++ b/docs/manual/OptionalTasks/starteam.html
@@ -2,6 +2,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>StarTeam Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 <h1>StarTeam Support</h1>
@@ -26,7 +27,8 @@
 is not sufficient for getting these tasks to work properly.</b>  These tasks also require a 
 fully-installed and fully-licensed version of the StarGate Runtime.  This is part 
 of a StarTeam client installation or may be installed separately.  The full client
-install is not required.
+install is not required.  In particular, the Windows path must include the directory where 
+the StarGate Runtime <CODE>.dll</CODE> files are installed.
 </p><p>
 Earlier versions of Ant (prior to 1.5.2) did not have this restriction because they
 were not as dependent on the StarTeam runtime - which the newer versions use to access
@@ -565,16 +567,21 @@
     <td align="center" valign="top">yes</td>
   </tr> 
   <tr>
+    <td valign="top">description</td>
+    <td valign="top">A description of the label to be stored in the StarTeam project.</td>
+    <td align="center" valign="top">yes</td>
+  </tr>
+  <tr>
     <td valign="top">revisionlabel</td>
     <td valign="top">Yes means that the label attribute is to be saved as a &quot;revision label&quot;.  No (default) means that it will be saved as a &quot;view label&quot;</td>
     <td align="center" valign="top">no</td>
   </tr> 
   <tr>
     <td valign="top">buildlabel</td>
-    <td valign="top">Yes (default) means that the label attribute is to be saved as a &quot;build label&quot;.  
+    <td valign="top">Yes means that the label attribute is to be saved as a &quot;build label&quot;.  
       This means that Change Requests which have an &quot;AddressedIn&quot; field value of &quot;next build&quot;
        will have this label assigned to that field when the label is created.  
-       No means that no CRs will have this label assigned to them.  This will have no effect if <b>revisionlabel</b> is also true.  </td>
+       No (default) means that no CRs will have this label assigned to them.  This will have no effect if <b>revisionlabel</b> is also true.  </td>
     <td align="center" valign="top">no</td>
   </tr> 
 
@@ -583,11 +590,6 @@
     <td valign="top">The timestamp of the build that will be stored with the label.  Must be formatted <code>yyyyMMddHHmmss</code></td>
     <td align="center" valign="top">no</td>
   </tr>
-  <tr>
-    <td valign="top">description</td>
-    <td valign="top">A description of the label to be stored in the StarTeam project.</td>
-    <td align="center" valign="top">no</td>
-  </tr>
 </table>
 
 <h3>Examples</h3>
diff --git a/docs/manual/OptionalTasks/stylebook.html b/docs/manual/OptionalTasks/stylebook.html
index 92e6d59..736605d 100644
--- a/docs/manual/OptionalTasks/stylebook.html
+++ b/docs/manual/OptionalTasks/stylebook.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>StyleBook Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/symlink.html b/docs/manual/OptionalTasks/symlink.html
index e7a840c..d71e572 100644
--- a/docs/manual/OptionalTasks/symlink.html
+++ b/docs/manual/OptionalTasks/symlink.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Symlink Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/telnet.html b/docs/manual/OptionalTasks/telnet.html
index 4dc567f..f275b91 100644
--- a/docs/manual/OptionalTasks/telnet.html
+++ b/docs/manual/OptionalTasks/telnet.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Telnet Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/test.html b/docs/manual/OptionalTasks/test.html
index 6999fad..c92afba 100644
--- a/docs/manual/OptionalTasks/test.html
+++ b/docs/manual/OptionalTasks/test.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Test Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/translate.html b/docs/manual/OptionalTasks/translate.html
index 66c769e..1d6ca93 100644
--- a/docs/manual/OptionalTasks/translate.html
+++ b/docs/manual/OptionalTasks/translate.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Translate Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTasks/vbc.html b/docs/manual/OptionalTasks/vbc.html
new file mode 100644
index 0000000..b643d17
--- /dev/null
+++ b/docs/manual/OptionalTasks/vbc.html
@@ -0,0 +1,490 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Vbc
+ Task</title>
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Vbc
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">This task compiles Visual Basic.NET source into executables or modules.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        This task compiles Visual Basic.NET source into executables or modules. The task requires vbc.exe on the execute path, unless it or an equivalent program is specified in the <tt>executable</tt> parameter <p> All parameters are optional: &lt;vbc/&gt; should suffice to produce a debug build of all *.vb files. <p> The task is a directory based task, so attributes like <tt>includes=&quot;**\/*.vb&quot;</tt> and <tt>excludes=&quot;broken.vb&quot;</tt> can be used to control the files pulled in. By default, all *.vb files from the project folder down are included in the command. When this happens the destFile -if not specified- is taken as the first file in the list, which may be somewhat hard to control. Specifying the output file with <tt>destfile</tt> is prudent. </p> <p> Also, dependency checking only works if destfile is set. As with &lt;csc&gt; nested <tt>src</tt> filesets of source, reference filesets, definitions and resources can be provided. <p> Example </p> <pre>&lt;vbc optimize=&quot;true&quot; debug=&quot;false&quot; warnLevel=&quot;4&quot; targetType=&quot;exe&quot; definitions=&quot;RELEASE&quot; excludes=&quot;src/unicode_class.vb&quot; mainClass = &quot;MainApp&quot; destFile=&quot;NetApp.exe&quot; optionExplicit=&quot;true&quot; optionCompare=&quot;text&quot; references="System.Xml,System.Web.Xml" &gt; &lt;reference file="${testCSC.dll}" /&gt; &lt;define name="RELEASE" /&gt; &lt;define name="DEBUG" if="debug.property"/&gt; &lt;define name="def3" unless="def2.property"/&gt; &lt;/vbc&gt; </pre>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">additionalmodules</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of modules to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="24">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">debug</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the debug flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the destination directory of files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of exe/library to create.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">executable</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the name of the program, overriding the defaults. Can be used to set the full path to a program, or to switch to an alternate implementation of the command, such as the Mono or Rotor versions -provided they use the same command line arguments as the .NET framework edition</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra options which are not explicitly supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, fail on compilation errors.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">imports</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Declare global imports for namespaces in referenced metadata files.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">includedefaultreferences</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, automatically includes the common assemblies in dotnet, and tells the compiler to link in mscore.dll. set the automatic reference inclusion flag on or off this flag controls the /nostdlib option in CSC</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">mainclass</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the name of main class for executables.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">optimize</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enables optimization flag.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">optioncompare</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Specify binary- or text-style string comparisons. Defaults to "binary"</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">optionexplicit</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Whether to require explicit declaration of variables.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">optionstrict</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Enforce strict language semantics.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">referencefiles</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path of references to include. Wildcards should work.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">references</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of DLLs to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">removeintchecks</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Whether to remove integer checks. Default false.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">rootnamespace</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Specifies the root namespace for all type declarations.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the source directory of the files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">targettype</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the target type to one of exe|library|module|winexe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">"exe", "library", "module", "winexe"</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">utf8output</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, require all compiler output to be in UTF8 format.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">warnlevel</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Level of warning currently between 1 and 4 with 4 being the strictest.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">int</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32icon</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the filename of icon to include.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32res</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the filename of a win32 resource (.RES) file to include. This is not a .NET resource, but what Windows is used to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>define</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetDefine)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a define to the list of definitions
+<short-description><![CDATA[Add a define to the list of definitions.]]></short-description>
+<description>
+            <![CDATA[add a define to the list of definitions]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>reference</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new reference fileset to the compilation
+<short-description><![CDATA[Add a new reference fileset to the compilation.]]></short-description>
+<description>
+            <![CDATA[add a new reference fileset to the compilation]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>resource</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetResource)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        link or embed a resource
+<short-description><![CDATA[Link or embed a resource.]]></short-description>
+<description>
+            <![CDATA[link or embed a resource]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>src</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new source directory to the compile
+<short-description><![CDATA[Add a new source directory to the compile.]]></short-description>
+<description>
+            <![CDATA[add a new source directory to the compile]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/vss.html b/docs/manual/OptionalTasks/vss.html
index 9cc4b15..1e423f6 100644
--- a/docs/manual/OptionalTasks/vss.html
+++ b/docs/manual/OptionalTasks/vss.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <title>Microsoft Visual SourceSafe(VSS) Tasks</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 <body>
 <h1>Microsoft Visual SourceSafe Tasks User Manual</h1>
diff --git a/docs/manual/OptionalTasks/wljspc.html b/docs/manual/OptionalTasks/wljspc.html
index ed33eed..51387f9 100644
--- a/docs/manual/OptionalTasks/wljspc.html
+++ b/docs/manual/OptionalTasks/wljspc.html
@@ -1,4 +1,5 @@
 <html>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 <head><title>WLJSPC Task</title></head>
 <body>
 <h1>wljspc</h1>
diff --git a/docs/manual/OptionalTasks/wsdltodotnet.html b/docs/manual/OptionalTasks/wsdltodotnet.html
new file mode 100644
index 0000000..770505d
--- /dev/null
+++ b/docs/manual/OptionalTasks/wsdltodotnet.html
@@ -0,0 +1,231 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Wsdltodotnet
+ Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Wsdltodotnet
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Converts a WSDL file or URL resource into a .NET language.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Converts a WSDL file or URL resource into a .NET language. Why add a wrapper to the MS WSDL tool? So that you can verify that your web services, be they written with Axis or anyone else's SOAP toolkit, work with .NET clients. This task is dependency aware when using a file as a source and destination; so if you &lt;get&gt; the file (with <code>usetimestamp="true"</code>) then you only rebuild stuff when the WSDL file is changed. Of course, if the server generates a new timestamp every time you ask for the WSDL, this is not enough...use the &lt;filesmatch&gt; &lt;condition&gt; to to byte for byte comparison against a cached WSDL file then make the target conditional on that test failing. See "Creating an XML Web Service Proxy", "wsdl.exe" docs in the framework SDK documentation
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Name of the file to generate. Required</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="8">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra WSDL.EXE options which aren't explicitly supported by the ant wrapper task; optional</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Whether or not a failure should halt the build. Optional - default is <code>true</code>.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">language</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the language; one of "CS", "JS", or "VB" optional, default is CS for C# source</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">namespace</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">namespace to place the source in. optional; default ""</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">server</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">flag to enable server side code generation; optional, default=false</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">The local WSDL file to parse; either url or srcFile is required.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">url</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the URL to fetch. Fetching is by wsdl.exe; Ant proxy settings are ignored; either url or srcFile is required.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/xmlvalidate.html b/docs/manual/OptionalTasks/xmlvalidate.html
index aea5f38..926680c 100644
--- a/docs/manual/OptionalTasks/xmlvalidate.html
+++ b/docs/manual/OptionalTasks/xmlvalidate.html
@@ -2,6 +2,7 @@
 
 <head>
 <title>XMLValidate Task</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTypes/classfileset.html b/docs/manual/OptionalTypes/classfileset.html
index b72b398..bc185f4 100644
--- a/docs/manual/OptionalTypes/classfileset.html
+++ b/docs/manual/OptionalTypes/classfileset.html
@@ -2,6 +2,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>ClassFileSet Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTypes/extension.html b/docs/manual/OptionalTypes/extension.html
index 2c28218..9a498e6 100644
--- a/docs/manual/OptionalTypes/extension.html
+++ b/docs/manual/OptionalTypes/extension.html
@@ -2,6 +2,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Extension Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/OptionalTypes/extensionset.html b/docs/manual/OptionalTypes/extensionset.html
index 6ea1f96..066cb3d 100644
--- a/docs/manual/OptionalTypes/extensionset.html
+++ b/docs/manual/OptionalTypes/extensionset.html
@@ -2,6 +2,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>ExtensionSet Type</title>
+<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/antexternal.html b/docs/manual/antexternal.html
index fc46a93..2fecb8c 100644
--- a/docs/manual/antexternal.html
+++ b/docs/manual/antexternal.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>InputHandler</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/anttaskslist.html b/docs/manual/anttaskslist.html
index b11c7e2..e309a66 100644
--- a/docs/manual/anttaskslist.html
+++ b/docs/manual/anttaskslist.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/base_task_classes.html b/docs/manual/base_task_classes.html
index 6a5bf9a..d1ea165 100644
--- a/docs/manual/base_task_classes.html
+++ b/docs/manual/base_task_classes.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Tasks Desinged for Extension</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/conceptstypeslist.html b/docs/manual/conceptstypeslist.html
index 3ec9ed6..da14c31 100644
--- a/docs/manual/conceptstypeslist.html
+++ b/docs/manual/conceptstypeslist.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -15,6 +16,7 @@
 <a href="CoreTasks/common.html">Common Attributes</a><br>
 
 <h3>Core Types</h3>
+<a href="CoreTypes/assertions.html">Assertions Type</a><br>
 <a href="CoreTypes/description.html">Description Type</a><br>
 <a href="dirtasks.html">Directory-based Tasks</a><br>
 <a href="CoreTypes/dirset.html">DirSet</a><br>
diff --git a/docs/manual/coretasklist.html b/docs/manual/coretasklist.html
index 2b8359c..2e01b6e 100644
--- a/docs/manual/coretasklist.html
+++ b/docs/manual/coretasklist.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/cover.html b/docs/manual/cover.html
index a6caeea..c917716 100644
--- a/docs/manual/cover.html
+++ b/docs/manual/cover.html
@@ -3,20 +3,21 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant 1.6 User Manual</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body bgcolor="#FFFFFF">
 <div align="center"> 
   <h1><img src="../images/ant_logo_large.gif" width="190" height="120"></h1>
   <h1>Apache Ant 1.6 Manual</h1>
-  <p align="left">This is the manual for version 1.6alpha of 
+  <p align="left">This is the manual for version 1.6 of 
   <a href="http://ant.apache.org/index.html">Apache Ant</a>. 
     If your version 
     of Ant (as verified with <tt>ant -version</tt>) is older or newer than this 
     version then this is not the correct manual set. Please use the documentation 
     appropriate to your current version. Also, if you are using a version
     older than the most recent release, we recommend an upgrade to fix bugs
-    as well as provide new functionality </p>
+    as well as provide new functionality. </p>
   <p>&nbsp;</p>
 </div>
 <hr>
diff --git a/docs/manual/credits.html b/docs/manual/credits.html
index e9e9fff..e728407 100644
--- a/docs/manual/credits.html
+++ b/docs/manual/credits.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual - Credits</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -26,6 +27,7 @@
   <li>Diane Holt (<a href="mailto:holtdl@yahoo.com">holtdl@yahoo.com</a>)</li>
   <li>Bill Kelly (<a href="mailto:bill.kelly@softwired-inc.com">bill.kelly@softwired-inc.com</a>)</li>
   <li>Arnout J. Kuiper (<a href="mailto:ajkuiper@wxs.nl">ajkuiper@wxs.nl</a>)</li>
+  <li>Antoine Lévy-Lambert</li>
   <li>Conor MacNeill</li>
   <li>Jan Matèrne</li>
   <li>Stefano Mazzocchi (<a href="mailto:stefano@apache.org">stefano@apache.org</a>)</li>
@@ -43,7 +45,7 @@
 </ul>
 
 <center>
-<p>Version: 1.6alpha<br>
+<p>Version: 1.6<br>
 $Id$</p>
 </center>
 <hr>
@@ -51,4 +53,4 @@
 Reserved.</p>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/manual/develop.html b/docs/manual/develop.html
index a19e1c1..91b8232 100644
--- a/docs/manual/develop.html
+++ b/docs/manual/develop.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Writing Your Own Task</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -18,7 +19,7 @@
     name of the method must begin with <code>set</code>, followed by the
     attribute name, with the first character of the name in uppercase, and the rest in
 
-    lowercase.  That is, to support an attribute named
+    lowercase<a href="#footnote-1"><sup>*</sup></a>.  That is, to support an attribute named
     <code>file</code> you create a method <code>setFile</code>.
     Depending on the type of the argument, Ant will perform some
     conversions for you, see <a href="#set-magic">below</a>.</li>
@@ -52,6 +53,11 @@
 itself.</li>
 </ol>
 
+<hr>
+<p><a name="footnote-1">*</a> Actually the case of the letters after
+the first one doesn't really matter to Ant, using all lower case is a
+good convention, though.</p>
+
 <h3>The Life-cycle of a Task</h3>
 <ol>
   <li>The task gets instantiated using a no-argument constructor, at parser
@@ -188,7 +194,9 @@
 For the options 2 and 3, Ant has to create an instance of
 <code>NestedInner</code> before it can pass it to the task, this
 means, <code>NestedInner</code> must have a <code>public</code> no-arg
-constructor.  This is the only difference between options 1 and 2.</p>
+  constructor or a <code>public</code> one-arg constructor
+  taking a Project class as a parameter.
+This is the only difference between options 1 and 2.</p>
 
 <p>The difference between 2 and 3 is what Ant has done to the object
 before it passes it to the method.  <code>addInner</code> will receive
@@ -201,6 +209,106 @@
 the methods will be called, but we don't know which, this depends on
 the implementation of your Java virtual machine.</p>
 
+  <h3><a name="nestedtype">Nested Types</a></h3>
+If your task needs to nest an arbitary type that has been defined
+  using &lt;taskdef&gt; you have two options.
+  <ol>
+    <li><code>public void add(Type type)</code></li>
+    <li><code>public void addConfigured(Type type)</code></li>
+  </ol>
+  The difference between 1 and 2 is the same as between 2 and 3 in the
+  previous section.
+  <p>
+    For example suppose one wanted to handle objects object of type
+    org.apache.tools.ant.taskdefs.condition.Condition, one may
+    have a class:
+  </p>
+  <blockquote>
+  <pre>
+public class MyTask extends Task {
+    private List conditions = new ArrayList();
+    public void add(Condition c) {
+        conditions.add(c);
+    }
+    public void execute() {
+     // iterator over the conditions
+    }
+}
+  </pre>
+  </blockquote>
+  <p>
+    One may define and use this class like this:
+  </p>
+  <blockquote>
+    <pre>
+&lt;taskdef name="mytask" classname="MyTask" classpath="classes"/&gt;
+&lt;typedef name="condition.equals"
+         classname="org.apache.tools.ant.taskdefs.conditions.Equals"/&gt;
+&lt;mytask&gt;
+    &lt;condition.equals arg1="${debug}" arg2="true"/&gt;
+&lt;/mytask&gt;
+    </pre>
+  </blockquote>
+  <p>
+    A more complicated example follows:
+  </p>
+  <blockquote>
+    <pre>
+public class Sample {
+    public static class MyFileSelector implements FileSelector {
+         public void setAttrA(int a) {}
+         public void setAttrB(int b) {}
+         public void add(Path path) {}
+         public boolean isSelected(File basedir, String filename, File file) {
+             return true;
+         }
+     }
+
+    interface MyInterface {
+        void setVerbose(boolean val);
+    }        
+
+    public static class BuildPath extends Path {
+        public BuildPath(Project project) {
+            super(project);
+        }
+        
+        public void add(MyInterface inter) {}
+        public void setUrl(String url) {}
+    }
+
+    public static class XInterface implements MyInterface {
+        public void setVerbose(boolean x) {}
+        public void setCount(int c) {}
+    }
+}
+    </pre>
+  </blockquote>
+  <p>
+    This class defines a number of static classes that implement/extend
+    Path, MyFileSelector and MyInterface. These may be defined and used
+    as follows:
+  </p>
+  <pre>
+    <blockquote>
+&lt;typedef name="myfileselector" classname="Sample$MyFileSelector"
+         classpath="classes" loaderref="classes"/&gt;
+&lt;typedef name="buildpath" classname="Sample$BuildPath"
+         classpath="classes" loaderref="classes"/&gt;
+&lt;typedef name="xinterface" classname="Sample$XInterface"
+         classpath="classes" loaderref="classes"/&gt;
+
+&lt;copy todir="copy-classes"&gt;
+   &lt;fileset dir="classes"&gt;
+      &lt;myfileselector attra="10" attrB="-10"&gt;
+         &lt;buildpath path="." url="abc"&gt;
+            &lt;xinterface count="4"/&gt;
+         &lt;/buildpath&gt;
+      &lt;/myfileselector&gt;
+   &lt;/fileset&gt;
+&lt;/copy&gt;
+    </blockquote>
+  </pre>
 <h3><a name="taskcontainer">TaskContainer</a></h3>
 
 <p>The <code>TaskContainer</code> consists of a single method,
diff --git a/docs/manual/developlist.html b/docs/manual/developlist.html
index cb6007e..c477606 100644
--- a/docs/manual/developlist.html
+++ b/docs/manual/developlist.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/dirtasks.html b/docs/manual/dirtasks.html
index b57af5d..4934f4a 100644
--- a/docs/manual/dirtasks.html
+++ b/docs/manual/dirtasks.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Directory-based Tasks</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/feedback.html b/docs/manual/feedback.html
index 592fb62..fb0211e 100644
--- a/docs/manual/feedback.html
+++ b/docs/manual/feedback.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual - Feedback</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/ide.html b/docs/manual/ide.html
index 67c5a37..d7589c7 100644
--- a/docs/manual/ide.html
+++ b/docs/manual/ide.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>IDE Integration</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -32,11 +33,11 @@
     </a>
   </li>
   <li>
-    <a href="http://jde.sunsite.dk/">
-      Emacs JDE
+    <a href="http://jdee.sunsite.dk/">
+      JDEE (Java Development Environment for Emacs)
     </a> has built-in text ANT integration: selection of target through text
     field, execution, hyperlink to compilation errors. Installation: built-in
-    JDE  2.2.8 or later. Configuration: through customize menu
+    JDEE 2.2.8 or later. Configuration: through customize menu
     "Jde Build Function"
   </li>
   <li>
diff --git a/docs/manual/index.html b/docs/manual/index.html
index 97c50bc..45023d0 100644
--- a/docs/manual/index.html
+++ b/docs/manual/index.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <frameset cols="26%,74%">
diff --git a/docs/manual/inputhandler.html b/docs/manual/inputhandler.html
index b73eb42..c23fcca 100644
--- a/docs/manual/inputhandler.html
+++ b/docs/manual/inputhandler.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>InputHandler</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/install.html b/docs/manual/install.html
index 163f3eb..c6f98d4 100644
--- a/docs/manual/install.html
+++ b/docs/manual/install.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Installing Ant</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -52,13 +53,9 @@
 
 <p>
 For the current version of Ant, you will also need a JDK installed on
-your system, version 1.1 or later. Some tasks work better on post-1.1 systems;
-some tasks only work on Java 1.2 and successors.
-A future version of Ant -Ant 2.0- will require JDK 1.2 or later, though
-Ant 1.x strives to retain 1.1 compatibility.
+your system, version 1.2 or later.
 </p><p>
-<strong>Note: </strong>The Microsoft JVM/JDK is not adequate on its own, although the MS
-compiler is supported.
+<strong>Note: </strong>The Microsoft JVM/JDK is not supported.
 </p>
 <p>
 <strong>Note #2: </strong>If a JDK is not present, only the JRE runtime, then many tasks will not work.
@@ -367,7 +364,10 @@
   </tr>
   <tr>
     <td>BeanShell JAR(s)</td>
-    <td>BeanShell with script task</td>
+    <td>BeanShell with script task.
+      <br/>
+    <strong>Note</strong>: Ant 1.6 and later require BeanShell version 1.3 or
+      later</td>
     <td><a href="http://www.beanshell.org/" target="_top">http://www.beanshell.org/</a></td>
   </tr>
   <tr>
@@ -434,14 +434,10 @@
         target="_top">http://www.clarkware.com/software/JDepend.html</a></td>
   </tr>
   <tr>
-    <td>resolver.jar <b>after the 1.0 release</b></td>
+    <td>resolver.jar <b>1.1beta or later</b></td>
     <td>xmlcatalog datatype <em>only if support for external catalog files is desired</em></td>
-    <td><a href="http://xml.apache.org/dist/commons/"
-    target="_top">http://xml.apache.org/dist/commons/</a> for released
-    versions, <a
-    href="http://gump.covalent.net/jars/latest/xml-commons/"
-    target="_top">http://gump.covalent.net/jars/latest/xml-commons/</a>
-    for a nightly snapshot.</td>
+    <td><a href="http://xml.apache.org/commons/"
+    target="_top">http://xml.apache.org/commons/</a>.</td>
   </tr>
   <tr>
     <td>jsch.jar</td>
diff --git a/docs/manual/installlist.html b/docs/manual/installlist.html
index ae6e2ca..1f4a585 100644
--- a/docs/manual/installlist.html
+++ b/docs/manual/installlist.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/intro.html b/docs/manual/intro.html
index b010c46..8c2b0c6 100644
--- a/docs/manual/intro.html
+++ b/docs/manual/intro.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual - Introduction</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/listeners.html b/docs/manual/listeners.html
index a4f38cb..7a412f5 100644
--- a/docs/manual/listeners.html
+++ b/docs/manual/listeners.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Listeners &amp; Loggers</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/optionaltasklist.html b/docs/manual/optionaltasklist.html
index 95427a2..4c7d452 100644
--- a/docs/manual/optionaltasklist.html
+++ b/docs/manual/optionaltasklist.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -60,6 +61,7 @@
 <a href="OptionalTasks/setproxy.html">Setproxy</a><br>
 <a href="OptionalTasks/scp.html">Scp</a><br>
 <a href="OptionalTasks/script.html">Script</a><br>
+<a href="OptionalTasks/scriptdef.html">Scriptdef</a><br>
 <a href="OptionalTasks/sound.html">Sound</a><br>
 <a href="OptionalTasks/sos.html">SourceOffSite</a><br>
 <a href="OptionalTasks/splash.html">Splash</a><br>
diff --git a/docs/manual/platform.html b/docs/manual/platform.html
index 174dc35..d50f019 100644
--- a/docs/manual/platform.html
+++ b/docs/manual/platform.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Platform Issues</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <h1>Platform Issues</h1>
diff --git a/docs/manual/running.html b/docs/manual/running.html
index 4a0a770..4f1eb56 100644
--- a/docs/manual/running.html
+++ b/docs/manual/running.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Running Apache Ant</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -78,19 +79,21 @@
 <h3><a name="options">Command-line Options Summary</a></h3>
 <pre>ant [options] [target [target2 [target3] ...]]
 Options:
-  -help                  print this message
-  -projecthelp           print project help information
+  -help, -h              print this message
+  -projecthelp, -p       print project help information
   -version               print the version information and exit
   -diagnostics           print information that might be helpful to
                          diagnose or report problems.
   -quiet, -q             be extra quiet
   -verbose, -v           be extra verbose
-  -debug                 print debugging information
-  -emacs                 produce logging information without adornments
+  -debug, -d             print debugging information
+  -emacs, -e             produce logging information without adornments
+  -lib &lt;path&gt;            specifies a path to search for jars and classes
   -logfile &lt;file&gt;        use given file for log
     -l     &lt;file&gt;                ''
   -logger &lt;classname&gt;    the class which is to perform logging
   -listener &lt;classname&gt;  add an instance of class as a project listener
+  -noinput               do not allow interactive input
   -buildfile &lt;file&gt;      use given buildfile
     -file    &lt;file&gt;              ''
     -f       &lt;file&gt;              ''
@@ -100,8 +103,8 @@
   -propertyfile &lt;name&gt;   load all properties from file with -D
                          properties taking precedence
   -inputhandler &lt;class&gt;  the class which will handle input requests
-  -find &lt;file&gt;           search for buildfile towards the root of the
-                         filesystem and use it
+  -find &lt;file&gt;           (s)earch for buildfile towards the root of
+    -s  &lt;file&gt;           the filesystem and use it
 </pre>
 <p>For more information about <code>-logger</code> and
 <code>-listener</code> see
@@ -109,6 +112,45 @@
 <p>For more information about <code>-inputhandler</code> see
 <a href="inputhandler.html">InputHandler</a>.
 
+<h3><a name="libs">Library Directories</a></h3>
+<p>
+Prior to Ant 1.6, all jars in the ANT_HOME/lib would be added to the CLASSPATH
+used to run Ant. This was done in the scripts that started Ant. From Ant 1.6,
+two directories are scanned by default and more can be added as required. The
+default directories scanned are ANT_HOME/lib and a user specific directory,
+${user.home}/.ant/lib. This arrangement allows the Ant installation to be
+shared by many users while still allowing each user to deploy additional jars.
+Such additional jars could be support jars for Ant's optional tasks or jars
+containing third-party tasks to be used in the build. It also allows the main Ant
+installation to be locked down which will please system adminstrators.
+</p>
+
+<p>
+Additional directories to be searched may be added by using the -lib option.
+The -lib option specifies a search path. Any jars or classes in the directories
+of the path will be added to Ant's classloader. The order in which jars are
+added to the classpath is as follows
+</p>
+
+<ul>
+  <li>-lib jars in the order specified by the -lib elements on the command line</li>
+  <li>jars from ${user.home}/.ant/lib</li>
+  <li>jars from ANT_HOME/lib</li>
+</ul>
+
+<p>
+Note that the CLASSPATH environment variable is passed to Ant using a -lib
+option. Ant itself is started with a very minimalistic classpath.
+</p>
+
+<p>
+The location of ${user.home}/.ant/lib is somewhat dependent on the JVM. On Unix
+systems ${user.home} maps to the user's home directory whilst on recent
+versions of Windows it will be somewhere such as
+C:\Documents&nbsp;and&nbsp;Settings\username\.ant\lib. You should consult your
+JVM documentation for more details.
+</p>
+
 <h3>Examples</h3>
 <blockquote>
   <pre>ant</pre>
@@ -132,6 +174,13 @@
 the target called <code>dist</code>, setting the <code>build</code> property
 to the value <code>build/classes</code>.</p>
 
+<blockquote>
+  <pre>ant -lib /home/ant/extras</pre>
+</blockquote>
+<p>runs Ant picking up additional task and support jars from the
+/home/ant/extras location
+</p>
+
 <h3><a name="files">Files</a></h3>
 
 <p>The Ant wrapper script for Unix will source (read and evaluate) the
@@ -162,6 +211,187 @@
   to find, even if the file is called <code>build.xml</code>.
 </ul>
 
+<h3><a name="sysprops">Java System Properties</a></h3>
+<p>Some of Ants core classes ant tasks can be configured via system properties.</p>
+<p>So here the result of a search through the codebase. Because system properties are
+available via Project instance, I searched for them with a
+<pre>
+    grep -r -n "getPropert" * > ..\grep.txt
+</pre>
+command. After that I filtered out the often-used but not-so-important values (most of them
+read-only values): <i>path.separator, ant.home, basedir, user.dir, os.name, ant.file,
+line.separator, java.home, java.version, java.version, user.home, java.class.path</i><br>
+And I filtered out the <i>getPropertyHelper</i> access.</p>
+<table border="1">
+<tr>
+  <th>property name</th>
+  <th>valid values /default value</th>
+  <th>description</th>
+</tr>
+<tr>
+  <td><code>ant.input.properties</code></td>
+  <td>filename (required)</td>
+  <td>Name of the file holding the values for the
+      <a href="inputhandler.html">PropertyFileInputHandler</a>.
+  </td>
+</tr>
+<tr>
+  <td><code>ant.logger.defaults</code></td>
+  <!-- add the blank after the slash, so the browser can do a line break -->
+  <td>filename (optional, default '/org/ apache/ tools/ ant/ listener/ defaults.properties')</td>
+  <td>Name of the file holding the color mappings for the
+      <a href="listeners.html#AnsiColorLogger">AnsiColorLogger</a>.
+  </td>
+</tr>
+<tr>
+  <td><code>ant.netrexxc.*</code></td>
+  <td>several formats</td>
+  <td>Use specified values as defaults for <a href="OptionalTasks/netrexxc.html">netrexxc</a>.
+  </td>
+</tr>
+<tr>
+  <td><code>ant.PropertyHelper</code></td>
+  <td>ant-reference-name (optional)</td>
+  <td>Specify the PropertyHelper to use. The object must be of the type
+      org.apache.tools.ant.PropertyHelper. If not defined an object of
+      org.apache.tools.ant.PropertyHelper will be used as PropertyHelper.
+  </td>
+</tr>
+<tr>
+  <td><code>ant.regexp.regexpimpl</code></td>
+  <td>classname</td>
+  <td>classname for a RegExp implementation; if not set Ant tries to
+      find another (Jdk14, Oro...);
+      <a href="CoreTypes/mapper.html#regexp-mapper">RegExp-Mapper</a>
+      "Choice of regular expression implementation"
+  </td>
+</tr>
+<tr>
+  <td><code>ant.reuse.loader</code></td>
+  <td>boolean</td>
+  <td>allow to reuse classloaders
+      used in org.apache.tools.ant.util.ClasspathUtil
+  </td>
+</tr>
+<tr>
+  <td><code>ant.XmlLogger.stylesheet.uri</code></td>
+  <td>filename (default 'log.xsl')</td>
+  <td>Name for the stylesheet to include in the logfile by
+      <a href="listeners.html#XmlLogger">XmlLogger</a>.
+  </td>
+</tr>
+<tr>
+  <td><code>build.compiler</code></td>
+  <td>name</td>
+  <td>Specify the default compiler to use.
+      see <a href="CoreTasks/javac.html">javac</a>,
+      <a href="OptionalTasks/ejb.html#ejbjar_weblogic">EJB Tasks</a>
+      (compiler attribute),
+      <a href="OptionalTasks/icontract.html">IContract</a>,
+      <a href="OptionalTasks/javah.html">javah</a>
+  </td>
+</tr>
+<tr>
+  <td><code>build.compiler.emacs</code></td>
+  <td>boolean (default false)</td>
+  <td>Enable emacs-compatible error messages.
+      see <a href="CoreTasks/javac.html">javac</a> "Jikes Notes"
+  </td>
+</tr>
+<tr>
+  <td><code>build.compiler.fulldepend</code></td>
+  <td>boolean (default false)</td>
+  <td>Enable full dependency checking
+      see <a href="CoreTasks/javac.html">javac</a> "Jikes Notes"
+  </td>
+</tr>
+<tr>
+  <td><code>build.compiler.jvc.extensions</code></td>
+  <td>boolean (default true)</td>
+  <td>enable Microsoft extensions of their java compiler
+      see <a href="CoreTasks/javac.html">javac</a> "Jvc Notes"
+  </td>
+</tr>
+<tr>
+  <td><code>build.compiler.pedantic</code></td>
+  <td>boolean (default false)</td>
+  <td>Enable pedantic warnings.
+      see <a href="CoreTasks/javac.html">javac</a> "Jikes Notes"
+  </td>
+</tr>
+<tr>
+  <td><code>build.compiler.warnings</code></td>
+  <td>Deprecated flag</td>
+  <td> see <a href="CoreTasks/javac.html">javac</a> "Jikes Notes" </td>
+</tr>
+<tr>
+  <td><code>build.rmic</code></td>
+  <td>name</td>
+  <td>control the <a href="CoreTasks/rmic.html">rmic</a> compiler </td>
+</tr>
+<tr>
+  <td><code>build.sysclasspath</code></td>
+  <td>"only", something else</td>
+  <td>only: current threads get the actual class loader
+      (AntClassLoader.setThreadContextLoader()).
+      else: use core loader as default (ComponentHelper.initTasks()). Disable
+      changing the classloader (oata.taskdefs.Classloader.execute() experimental
+      task).
+      <!-- somewhere documented in the manual?? -->
+  </td>
+</tr>
+<tr>
+  <td><code>file.encoding</code></td>
+  <td>name of a supported character set (e.g. UTF-8, ISO-8859-1, US-ASCII)</td>
+  <td>use as default character set of email messages; use as default for source-, dest- and bundleencoding
+      in <a href="OptionalTasks/translate.html">translate</a> <br>
+      see JavaDoc of <a target="_blank" href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html">java.nio.charset.Charset</a>
+      for more information about character sets (not used in Ant, but has nice docs).
+  </td>
+</tr>
+<tr>
+  <td><code>jikes.class.path</code></td>
+  <td>path</td>
+  <td>The specified path is added to the classpath if jikes is used as compiler.</td>
+</tr>
+<tr>
+  <td><code>MailLogger.properties.file, MailLogger.*</code></td>
+  <td>filename (optional, defaults derived from Project instance)</td>
+  <td>Name of the file holding properties for sending emails by the
+      <a href="listeners.html#MailLogger">MailLogger</a>. Override properties set
+      inside the buildfile or via command line.
+  </td>
+</tr>
+<tr>
+  <td><code>org.apache.tools.ant.ProjectHelper</code></td>
+  <!-- add the blank after the slash, so the browser can do a line break -->
+  <td>classname (optional, default 'org. apache. tools. ant. ProjectHelper')</td>
+  <td>specifies the classname to use as ProjectHelper. The class must extend
+      org.apache.tools.ant.ProjectHelper.
+  </td>
+</tr>
+<tr>
+  <td><code>p4.port, p4.client, p4.user</code></td>
+  <td>several formats</td>
+  <td>Specify defaults for port-, client- and user-setting of the
+      <a href="OptionalTasks/perforce.html">perforce</a> tasks.
+  </td>
+</tr>
+<tr>
+  <td><code>websphere.home
+  <td>path</td>
+  <td>Points to home directory of websphere.
+      see <a href="OptionalTasks/ejb.html#ejbjar_websphere">EJB Tasks</a>
+  </td>
+</tr>
+<tr>
+  <td><code>XmlLogger.file
+  <td>filename (default 'log.xml')</td>
+  <td>Name for the logfile for <a href="listeners.html#MailLogger">MailLogger</a>.
+  </td>
+</tr>
+</table>
+
 <h2><a name="cygwin">Cygwin Users</a></h2>
 <p>The Unix launch script that come with Ant works correctly with Cygwin. You
 should not have any problems launching Ant form the Cygwin shell. It is important
@@ -207,24 +437,39 @@
 
 <h2><a name="viajava">Running Ant via Java</a></h2>
 <p>If you have installed Ant in the do-it-yourself way, Ant can be started
-with:</p>
+with two entry points:</p>
 <blockquote>
   <pre>java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]</pre>
 </blockquote>
 
-<p>These instructions actually do exactly the same as the <code>ant</code>
-command. The options and target are the same as when running Ant with the <code>ant</code>
-command. This example assumes you have set your classpath to include:</p>
+<blockquote>
+  <pre>java -Dant.home=c:\ant org.apache.tools.ant.launch.Launcher [options] [target]</pre>
+</blockquote>
+
+<p>
+The first method runs Ant's traditional entry point. The second method uses
+the Ant Launcher introduced in Ant 1.6. The former method does not support
+the -lib option and all required classes are loaded from the CLASSPATH. You must
+ensure that all required jars are available. At a minimum the CLASSPATH should
+include:
+</p>
+
 <ul>
-<li><code>ant.jar</code></li>
+<li><code>ant.jar</code> and <code>ant-launcher.jar</code></li>
 <li>jars/classes for your XML parser</li>
 <li>the JDK's required jar/zip files</li>
 </ul>
+
+<p>
+The latter method supports the -lib option and will load jars from the
+specified ANT_HOME. You should start the latter with the most minimal
+classpath possible, generally just the ant-launcher.jar.
+</p>
+
 <br>
 <hr>
 <p align="center">Copyright &copy; 2000-2003 Apache Software Foundation. All rights
 Reserved.</p>
 
 </body>
-</html>
-
+</html>
\ No newline at end of file
diff --git a/docs/manual/runninglist.html b/docs/manual/runninglist.html
index 587aad9..1bfbca3 100644
--- a/docs/manual/runninglist.html
+++ b/docs/manual/runninglist.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -13,12 +14,13 @@
 <h3>Running Ant</h3>
 <a href="running.html#commandline">Command Line</a><br>
 &nbsp;&nbsp;<a href="running.html#options">Options</a><br>
+&nbsp;&nbsp;<a href="running.html#libs">Library Directories</a><br>
 &nbsp;&nbsp;<a href="running.html#files">Files</a><br>
 &nbsp;&nbsp;<a href="running.html#envvars">Environment Variables</a><br>
+&nbsp;&nbsp;<a href="running.html#sysprops">Java System Properties</a><br>
 &nbsp;&nbsp;<a href="running.html#cygwin">Cygwin Users</a><br>
 &nbsp;&nbsp;<a href="running.html#os2">OS/2 Users</a><br>
 <a href="running.html#viajava">Running Ant via Java</a><br>
 
 </body>
 </html>
-
diff --git a/docs/manual/stylesheets/antmanual.css b/docs/manual/stylesheets/antmanual.css
new file mode 100644
index 0000000..365ad50
--- /dev/null
+++ b/docs/manual/stylesheets/antmanual.css
@@ -0,0 +1,56 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowlegement:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software
+ *    Foundation" must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ *    nor may "Apache" appear in their names without prior written
+ *    permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+body {
+    background-image:url(/images/beta.png)
+}
diff --git a/docs/manual/sysclasspath.html b/docs/manual/sysclasspath.html
index e348f58..c64b58e 100644
--- a/docs/manual/sysclasspath.html
+++ b/docs/manual/sysclasspath.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>build.sysclasspath</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/tasksoverview.html b/docs/manual/tasksoverview.html
index 703ca0c..d637633 100644
--- a/docs/manual/tasksoverview.html
+++ b/docs/manual/tasksoverview.html
@@ -3,6 +3,7 @@
   <meta http-equiv="Content-Language" content="en-us">
   <title>Overview of Ant Tasks</title>
   <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
@@ -426,7 +427,7 @@
 
   <tr valign="top">
     <td nowrap><a href="CoreTasks/subant.html">Subant</a></td>
-    <td><p><i>EXPERIMENTAL:</i> This task is experimental and may be under continual change till Ant1.6 ships; it may even be omitted from the product. <p> Calls a given target for all defined sub-builds. This is an extension of ant for bulk project execution.</p></td>
+    <td><p> Calls a given target for all defined sub-builds. This is an extension of ant for bulk project execution.</p></td>
   </tr>
 
   <tr valign="top">
@@ -589,6 +590,11 @@
   </tr>
 
   <tr valign="top">
+    <td nowrap><a href="CoreTasks/sync.html">Sync</a></td>
+    <td><p>Synchronize two directory trees.</p></td>
+  </tr>
+
+  <tr valign="top">
     <td nowrap><a href="CoreTasks/tempfile.html">Tempfile</a></td>
     <td><p>Generates a name for a new temporary file and sets the specified
      property to that name.</p></td>
@@ -725,6 +731,12 @@
   </tr>
 
   <tr valign="top">
+    <td nowrap><a href="CoreTasks/defaultexcludes.html">Defaultexcludes</a></td>
+    <td><p>Modify the list of default exclude patterns from within
+    your build file.</p></td>
+  </tr>
+
+  <tr valign="top">
     <td nowrap><a href="CoreTasks/echo.html">Echo</a></td>
     <td><p>Echoes text to <code>System.out</code> or to a file.</p></td>
   </tr>
@@ -859,6 +871,12 @@
   </tr>
 
   <tr valign="top">
+    <td nowrap><a href="CoreTasks/import.html">Import</a></td>
+    <td><p>Import another build file and potentially override targets
+    in it with targets of your own.</p></td>
+  </tr>
+
+  <tr valign="top">
     <td nowrap><a href="OptionalTasks/javacc.html">JavaCC</a></td>
     <td><p>Invokes the
      <a HREF="http://javacc.dev.java.net/" target="_top">
@@ -891,6 +909,11 @@
   </tr>
 
   <tr valign="top">
+    <td nowrap><a href="CoreTasks/macrodef.html">Macrodef</a></td>
+    <td><p>Define a new task as a macro built-up upon other tasks.</p></td>
+  </tr>
+
+  <tr valign="top">
     <td nowrap><a href="OptionalTasks/mparse.html">MParse</a></td>
     <td><p>Invokes the Metamata <a HREF="http://www.metamata.com/parse.html">
      MParse</a> compiler-compiler on a grammar file.</p></td>
@@ -905,6 +928,12 @@
   </tr>
 
   <tr valign="top">
+    <td nowrap><a href="CoreTasks/presetdef.html">Presetdef</a></td>
+    <td><p>Define a new task by instrumenting an existing task with
+    default values for attributes or child elements.</p>
+  </tr>
+
+  <tr valign="top">
     <td nowrap><a href="OptionalTasks/translate.html">Translate</a></td>
     <td><p>Identifies keys in files, delimited by special tokens, and
      translates them with values read from resource bundles.</p></td>
@@ -914,6 +943,7 @@
     <td nowrap><a href="CoreTasks/style.html">Xslt/Style</a></td>
     <td><p>Processes a set of documents via XSLT.</p></td>
   </tr>
+
 </table>
 
 <p></p>
@@ -1013,8 +1043,13 @@
   </tr>
 
   <tr valign="top">
+    <td nowrap><a href="CoreTasks/whichresource.html">Whichresource</a></td>
+    <td><p>Find a class or resource.</p></td>
+  </tr>
+
+  <tr valign="top">
     <td nowrap><a href="CoreTasks/xmlproperty.html">XmlProperty</a></td>
-    <td><p>Loads property values from a valid XML file.</p></td>
+    <td><p>Loads property values from a well-formed XML file.</p></td>
   </tr>
 </table>
 
@@ -1041,17 +1076,32 @@
   </tr>
 
   <tr valign="top">
-    <td nowrap><a href="OptionalTasks/telnet.html">Telnet</a></td>
-    <td><p>Task to automate a remote <i>telnet</i> session. This task uses
-     nested <code>&lt;read&gt;</code> and <code>&lt;write&gt;</code> tags
-     to indicate strings to wait for and specify text to send.</p></td>
+    <td nowrap><a href="OptionalTasks/rexec.html">Rexec</a></td>
+    <td><p>Task to automate a remote rexec session.</p></td>
   </tr>
+
+  <tr valign="top">
+    <td nowrap><a href="OptionalTasks/scp.html">Scp</a></td>
+    <td><p>Copy files to or from a remote server using SSH.</p></td>
+  </tr>
+
   <tr valign="top">
     <td nowrap><a href="OptionalTasks/setproxy.html">setproxy</a></td>
     <td><p>Sets Java's web proxy properties, so that tasks and code run
  in the same JVM can have through-the-firewall access to remote web sites.</p></td>
   </tr>
 
+  <tr valign="top">
+    <td nowrap><a href="OptionalTasks/sshexec.html">Sshexec</a></td>
+    <td><p>Execute a command on a remote server using SSH.</p></td>
+  </tr>
+
+  <tr valign="top">
+    <td nowrap><a href="OptionalTasks/telnet.html">Telnet</a></td>
+    <td><p>Task to automate a remote <i>telnet</i> session. This task uses
+     nested <code>&lt;read&gt;</code> and <code>&lt;write&gt;</code> tags
+     to indicate strings to wait for and specify text to send.</p></td>
+  </tr>
 
 </table>
 
diff --git a/docs/manual/toc.html b/docs/manual/toc.html
index 0a05a46..b301c4b 100644
--- a/docs/manual/toc.html
+++ b/docs/manual/toc.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/tutorial-writing-tasks.html b/docs/manual/tutorial-writing-tasks.html
index 9484109..57038df 100644
--- a/docs/manual/tutorial-writing-tasks.html
+++ b/docs/manual/tutorial-writing-tasks.html
@@ -8,6 +8,7 @@
   .output { color: #FFFFFF; background: #837A67; }
   -->
   </style>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 <body>
 <h1>Tutorial: Writing Tasks</h1>
@@ -756,4 +757,4 @@
 Reserved.</p>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/docs/manual/using.html b/docs/manual/using.html
index e49be65..8259768 100644
--- a/docs/manual/using.html
+++ b/docs/manual/using.html
@@ -3,6 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <title>Writing a Simple Buildfile</title>
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/manual/usinglist.html b/docs/manual/usinglist.html
index f37d49d..edea772 100644
--- a/docs/manual/usinglist.html
+++ b/docs/manual/usinglist.html
@@ -4,6 +4,7 @@
 <meta http-equiv="Content-Language" content="en-us">
 <title>Apache Ant User Manual</title>
 <base target="mainFrame">
+<link rel="stylesheet" type="text/css" href="stylesheets/antmanual.css">
 </head>
 
 <body>
diff --git a/docs/projects.html b/docs/projects.html
index b38a774..6c7274a 100644
--- a/docs/projects.html
+++ b/docs/projects.html
@@ -161,7 +161,7 @@
     </div>
     <img style="float: left" height="10" width="10" border="0" alt="" src="./images/menu-left.gif">
     <img style="float: right" height="10" width="10" border="0" alt="" src="./images/menu-right.gif">
-  </div>  
+  </div>
       <div class="lightbluebar">&nbsp;</div>
   <div class="main">
   <div class="content">
@@ -275,59 +275,6 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
-        <a name="AntDoc"></a>
-        AntDoc
-      </h4>
-                        <p>AntDoc is a tool that generates HTML documentation from Ant
-        buildfiles; the generated HTML is inspired from what javadoc
-        yields. It also offers a simple Ant target launcher named
-        AntDoc GUI. Ant targets may be launched from the generated
-        AntDoc HTML pages.</p>
-                                <p>AntDoc can be run via an Ant task, AntDoc GUI can be run
-        via an Ant task, or via a JVM launch.</p>
-                                      <table class="ForrestTable" cellspacing="1" cellpadding="4">
-              <tr>
-                      <th colspan="1" rowspan="1"
-      valign="top" align="left">
-          Compatibility:
-      </th>
-                          <td colspan="1" rowspan="1"
-      valign="top" align="left">
-          Ant 1.4.1 and higher
-      </td>
-      </tr>
-                  <tr>
-                      <th colspan="1" rowspan="1"
-      valign="top" align="left">
-          URL:
-      </th>
-                          <td colspan="1" rowspan="1"
-      valign="top" align="left">
-          <a href="http://antdoc.free.fr/">http://antdoc.free.fr/</a>
-      </td>
-      </tr>
-                  <tr>
-                      <th colspan="1" rowspan="1"
-      valign="top" align="left">
-          Contact:
-      </th>
-                          <td colspan="1" rowspan="1"
-      valign="top" align="left">
-          <a href="mailto:antdoc@noos.fr">Edouard Mercier</a>
-      </td>
-      </tr>
-                  <tr>
-                      <th colspan="1" rowspan="1"
-      valign="top" align="left">
-          License:
-      </th>
-                          <td colspan="1" rowspan="1"
-      valign="top" align="left">
-          The Apache Software License
-      </td>
-      </tr>
-        </table>
-                                                    <h4 class="subsection">
         <a name="Antelope"></a>
         Antelope
       </h4>
@@ -488,6 +435,56 @@
       </tr>
         </table>
                                                     <h4 class="subsection">
+        <a name="Invicta"></a>
+        Invicta
+      </h4>
+                        <p>Invicta is a build management tool. Using simple project definition files,
+          it generates powerful build scripts (such as ANT) while hiding their
+          complexity. Invicta is a modular framework that allows developing additional
+          components and output types.</p>
+                                      <table class="ForrestTable" cellspacing="1" cellpadding="4">
+              <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Compatibility:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          Ant 1.5 and higher
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          URL:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://invicta.sf.net/">http://invicta.sf.net/</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          Contact:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          <a href="http://invicta.sf.net/contact.html">Project Mailing Lists and Administrators</a>
+      </td>
+      </tr>
+                  <tr>
+                      <th colspan="1" rowspan="1"
+      valign="top" align="left">
+          License:
+      </th>
+                          <td colspan="1" rowspan="1"
+      valign="top" align="left">
+          LGPL.
+      </td>
+      </tr>
+        </table>
+                                                    <h4 class="subsection">
         <a name="Krysalis Centipede"></a>
         Krysalis Centipede
       </h4>
diff --git a/lib/README b/lib/README
index b0dd4d9..7374d9e 100644
--- a/lib/README
+++ b/lib/README
@@ -2,14 +2,13 @@
 Dependencies for a list of the jar requirements for various optional
 tasks and features.
 
-This directory contains xercesImpl.jar from the 2.5.0 release of
+This directory contains xercesImpl.jar from the 2.6.0 release of
 Apache Xerces.  For more information or newer releases see
 <http://xml.apache.org/xerces2-j/>.  See the file LICENSE.xerces for
 the terms of distribution.
 
-It also contains xml-apis.jar, an Apache-controlled collection of
-standard classes from the 1.0b2 release of the Apache XML-Commons
-release.  For more information or newer releases see
+It also contains xml-apis.jar from the 2.6.0 release of Apache Xerces.
+For more information or newer releases see
 <http://xml.apache.org/commons/>.  See the files LICENSE.dom and
 LICENSE.sax for the terms of distribution.
 
diff --git a/lib/xercesImpl.jar b/lib/xercesImpl.jar
index 5e446b3..7053631 100644
--- a/lib/xercesImpl.jar
+++ b/lib/xercesImpl.jar
Binary files differ
diff --git a/lib/xml-apis.jar b/lib/xml-apis.jar
index 8331d27..2dd8377 100644
--- a/lib/xml-apis.jar
+++ b/lib/xml-apis.jar
Binary files differ
diff --git a/src/etc/testcases/filters/concat.xml b/src/etc/testcases/filters/concat.xml
index 4fe1951..2c61182 100644
--- a/src/etc/testcases/filters/concat.xml
+++ b/src/etc/testcases/filters/concat.xml
@@ -19,7 +19,7 @@
 
   <target name="testFilterReaderNoArgs" depends="init">
     <copy file="input/concatfilter.test"
-          tofile="result/concat.filterReaderNoArgs.test">
+          tofile="result/concat.FilterReaderNoArgs.test">
       <filterchain>
         <filterreader classname="org.apache.tools.ant.filters.ConcatFilter"/>
       </filterchain>
@@ -28,7 +28,7 @@
 
   <target name="testFilterReaderPrepend" depends="init">
     <copy file="input/concatfilter.test"
-          tofile="result/concat.filterReaderPrepend.test">
+          tofile="result/concat.FilterReaderPrepend.test">
       <filterchain>
         <filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
           <param name="prepend" value="result/prepend.txt"/>
@@ -39,7 +39,7 @@
 
   <target name="testFilterReaderAppend" depends="init">
     <copy file="input/concatfilter.test"
-          tofile="result/concat.filterReaderAppend.test">
+          tofile="result/concat.FilterReaderAppend.test">
       <filterchain>
         <filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
           <param name="append" value="result/append.txt"/>
@@ -50,7 +50,7 @@
 
   <target name="testFilterReaderPrependAppend" depends="init">
     <copy file="input/concatfilter.test"
-          tofile="result/concat.filterReaderPrependAppend.test">
+          tofile="result/concat.FilterReaderPrependAppend.test">
       <filterchain>
         <filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
           <param name="prepend" value="result/prepend.txt"/>
@@ -63,7 +63,7 @@
   <target name="testConcatFilter" depends="init">
     <typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
     <copy file="input/concatfilter.test"
-          tofile="result/concat.concatfilter.test">
+          tofile="result/concat.ConcatFilter.test">
       <filterchain>
         <concatfilter/>
       </filterchain>
@@ -73,7 +73,7 @@
   <target name="testConcatFilterPrepend" depends="init">
     <typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
     <copy file="input/concatfilter.test"
-          tofile="result/concat.concatfilterPrepend.test">
+          tofile="result/concat.ConcatFilterPrepend.test">
       <filterchain>
         <concatfilter prepend="result/prepend.txt"/>
       </filterchain>
@@ -83,7 +83,7 @@
   <target name="testConcatFilterAppend" depends="init">
     <typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
     <copy file="input/concatfilter.test"
-          tofile="result/concat.concatfilterAppend.test">
+          tofile="result/concat.ConcatFilterAppend.test">
       <filterchain>
         <concatfilter append="result/append.txt"/>
       </filterchain>
@@ -93,7 +93,7 @@
   <target name="testConcatFilterPrependAppend" depends="init">
     <typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
     <copy file="input/concatfilter.test"
-          tofile="result/concat.concatfilterPrependAppend.test">
+          tofile="result/concat.ConcatFilterPrependAppend.test">
       <filterchain>
         <concatfilter prepend="result/prepend.txt" append="result/append.txt"/>
       </filterchain>
diff --git a/src/etc/testcases/taskdefs/antlib.xml b/src/etc/testcases/taskdefs/antlib.xml
index cc41aca..c9ac986 100644
--- a/src/etc/testcases/taskdefs/antlib.xml
+++ b/src/etc/testcases/taskdefs/antlib.xml
@@ -14,6 +14,22 @@
     <mytask/>
   </target>
 
+  <target name="antlib.resource">
+    <typedef resource="taskdefs/test.antlib.xml">
+        <classpath>
+            <!-- To load the task classes: -->
+            <path refid="testclasses"/>
+            <!-- For test.antlib.xml: -->
+            <pathelement location=".."/>
+            <!-- For test2.antlib.xml: -->
+            <pathelement location="${testcases.dir}/org/apache/tools/ant/taskdefs/test2-antlib.jar"/>
+        </classpath>
+    </typedef>
+    <mytask/>
+    <echo>-and-then-</echo>
+    <mytask2/>
+  </target>
+
   <target name="ns.current">
     <typedef file="antlib.current-test.xml" uri="abc"/>
     <x:useecho2 xmlns:x="abc"/>
diff --git a/src/etc/testcases/taskdefs/available.xml b/src/etc/testcases/taskdefs/available.xml
index 8552234..0318816 100644
--- a/src/etc/testcases/taskdefs/available.xml
+++ b/src/etc/testcases/taskdefs/available.xml
@@ -114,6 +114,7 @@
       <classpath>
         <pathelement location="${java.home}/lib/rt.jar" />
         <pathelement location="${java.home}/lib/classes.zip" />
+        <pathelement location="${java.home}/lib/graphics.jar" /> <!-- IBM JDK -->
         <pathelement location="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar" />
         <pathelement location="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/ui.jar" />
       </classpath>
diff --git a/src/etc/testcases/taskdefs/import/bad.xml b/src/etc/testcases/taskdefs/import/bad.xml
new file mode 100644
index 0000000..fa2931c
--- /dev/null
+++ b/src/etc/testcases/taskdefs/import/bad.xml
@@ -0,0 +1,3 @@
+<project>
+<<<
+</project>
diff --git a/src/etc/testcases/taskdefs/import/import_bad_import.xml b/src/etc/testcases/taskdefs/import/import_bad_import.xml
new file mode 100644
index 0000000..3bb6782
--- /dev/null
+++ b/src/etc/testcases/taskdefs/import/import_bad_import.xml
@@ -0,0 +1,3 @@
+<project>
+  <import file="bad.xml"/>
+</project>
diff --git a/src/etc/testcases/taskdefs/macrodef.xml b/src/etc/testcases/taskdefs/macrodef.xml
index 8a67d47..67e4024 100644
--- a/src/etc/testcases/taskdefs/macrodef.xml
+++ b/src/etc/testcases/taskdefs/macrodef.xml
@@ -4,7 +4,7 @@
     <macrodef name="my.echo">
       <attribute name="text"/>
       <sequential>
-        <echo message="${text}"/>
+        <echo message="@{text}"/>
       </sequential>
     </macrodef>
     <my.echo text="Hello World"/>
@@ -14,17 +14,37 @@
     <macrodef name="my.echo">
       <attribute name="text"/>
       <sequential>
-        <echo>${text}</echo>
+        <echo>@{text}</echo>
       </sequential>
     </macrodef>
     <my.echo text="Inner Text"/>
   </target>
 
+  <target name="duplicate.attribute">
+    <macrodef name="my.echo">
+      <attribute name="text"/>
+      <attribute name="text"/>
+      <sequential>
+        <echo>@{text}</echo>
+      </sequential>
+    </macrodef>
+  </target>
+
+  <target name="duplicate.element">
+    <macrodef name="my.echo">
+      <element name="text"/>
+      <element name="text"/>
+      <sequential>
+        <text/>
+      </sequential>
+    </macrodef>
+  </target>
+
   <target name="uri">
     <macrodef name="echo" uri="abc">
       <attribute name="text"/>
       <sequential>
-        <echo message="${text}"/>
+        <echo message="@{text}"/>
       </sequential>
     </macrodef>
     <x:echo xmlns:x="abc" text="Hello World"/>
@@ -45,14 +65,14 @@
     </nested>
   </target>
 
-  <target name="xpathstyle">
-    <macrodef name="testing" attributestyle="xpath">
-      <attribute name="abc"/>
+  <target name="double">
+    <macrodef name="double">
+      <attribute name="prop"/>
       <sequential>
-        <echo>attribute is @abc@abc</echo>
+        <echo>@@{prop} is '@{prop}', value of $${@{prop}} is '${@{prop}}'</echo>
       </sequential>
     </macrodef>
-
-    <testing abc="this is a test"/>
+    <property name="property" value="A property value"/>
+    <double prop="property"/>
   </target>
 </project>
diff --git a/src/etc/testcases/taskdefs/optional/dotnet.xml b/src/etc/testcases/taskdefs/optional/dotnet.xml
index 2eed369..68f6486 100644
--- a/src/etc/testcases/taskdefs/optional/dotnet.xml
+++ b/src/etc/testcases/taskdefs/optional/dotnet.xml
@@ -90,12 +90,27 @@
    <echo> dotnetapps.found=${dotnetapps.found}</echo>
 
    <condition property="mono.executable" value="mono">
-      <or>
-        <available file="mono"     filepath="${env.PATH}" />
-        <available file="mono.exe" filepath="${env.PATH}" />
-      </or>
+      <and>
+        <not>
+          <os family="mac"/>
+        </not>
+        <or>
+          <available file="mono"     filepath="${env.PATH}" />
+          <available file="mono.exe" filepath="${env.PATH}" />
+        </or>
+      </and>
    </condition>
    <property name="mono.executable" value="mint"/>
+
+   <!-- now set a prop of the compiler name to whatever we found --> 
+   <condition property="cs.compiler" value="csc">
+      <isset property="csc.found"/>
+   </condition>   
+
+   <condition property="cs.compiler" value="mcs">
+      <isset property="mcs.found"/>
+   </condition>   
+   
   </target>
 
   <target name="init" depends="probe_for_apps">
@@ -141,8 +156,7 @@
     <csc
       destFile="${testCSC.exe}"
       targetType="exe"
-      executable="mcs"
-      includedefaultreferences="false"
+      includedefaultreferences="true"
       >
     </csc>
     <available property="app.created" file="${testCSC.exe}"/>
@@ -178,8 +192,7 @@
       destFile="${testCSC.exe}"
       targetType="exe"
       srcDir="."
-      executable="mcs"
-      includedefaultreferences="false"
+      includedefaultreferences="true"
       >
     </csc>
     <available property="app.created" file="${testCSC.exe}"/>
@@ -212,8 +225,7 @@
     <csc
       destFile="${testCSC.dll}"
       targetType="library"
-      executable="mcs"
-      includedefaultreferences="false"
+      includedefaultreferences="true"
       >
       <src dir="${src.dir}" includes="example2.cs"/>
     </csc>
@@ -250,8 +262,7 @@
     <csc
       destFile="${testCscReferences.exe}"
       targetType="exe"
-      executable="mcs"
-      includedefaultreferences="false"
+      includedefaultreferences="true"
       >
       <src file="${src.dir}/example.cs"/>
       <reference file="${testCSC.dll}" />
@@ -329,6 +340,21 @@
     <exec executable="${jsharp.exe}" failonerror="true" />
   </target>
 
+  <target name="testCSCresponseFile" depends="validate_csc" >
+    <property name="testCSCresponseFile.exe"
+      location="${build.dir}/testCSCresponseFile.exe" />
+    <csc
+      destFile="${testCSCresponseFile.exe}"
+      targetType="exe"
+      executable="${cs.compiler}"
+      useResponseFile="true"
+      >
+    </csc>
+    <available property="app.created" file="${testCSCresponseFile.exe}"/>
+    <fail unless="app.created">No app ${testCSCresponseFile.exe} created</fail>
+    <delete file="${testCSCresponseFile.exe}"/>
+  </target>  
+
 
 </project>
 
diff --git a/src/etc/testcases/taskdefs/optional/jdepend/jdepend.xml b/src/etc/testcases/taskdefs/optional/jdepend/jdepend.xml
new file mode 100644
index 0000000..fb468ce
--- /dev/null
+++ b/src/etc/testcases/taskdefs/optional/jdepend/jdepend.xml
@@ -0,0 +1,53 @@
+<project>
+  <property name="testclasses" location="../../../../../../build/testcases"/>
+  
+  <path id="all-test-classes.id">
+    <pathelement location="../../../../build/testcases" />
+    <pathelement path="${java.class.path}" />
+  </path>
+
+  <path id="example-classes.id">
+    <pathelement location="${testclasses}/org/apache/tools/ant/util/facade" />
+  </path>
+
+  <path id="test-classes.id">
+    <pathelement location="${testclasses}" />
+  </path>
+
+  <target name="simple">
+    <jdepend>
+      <classespath refid="example-classes.id"/>
+    </jdepend>
+  </target>
+
+  <target name="xml">
+    <jdepend format="xml">
+      <classespath refid="example-classes.id"/>
+    </jdepend>
+  </target>
+
+  <target name="fork">
+    <jdepend fork="yes" includeruntime="yes">
+      <classespath refid="example-classes.id"/>
+    </jdepend>
+  </target>
+
+  <target name="fork-xml">
+    <jdepend fork="yes" format="xml" includeruntime="yes">
+      <classespath refid="example-classes.id"/>
+    </jdepend>
+  </target>
+
+  <target name="fork-timeout">
+    <jdepend fork="yes" timeout="10" includeruntime="yes">
+      <classespath refid="test-classes.id"/>
+    </jdepend>
+  </target>
+
+  <target name="fork-timeout-not">
+    <jdepend fork="yes" timeout="100000" includeruntime="yes">
+      <classespath refid="example-classes.id"/>
+    </jdepend>
+  </target>
+
+</project>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/optional/net/ftp.xml b/src/etc/testcases/taskdefs/optional/net/ftp.xml
index e9c7e59..d647d31 100644
--- a/src/etc/testcases/taskdefs/optional/net/ftp.xml
+++ b/src/etc/testcases/taskdefs/optional/net/ftp.xml
@@ -4,9 +4,9 @@
     <property name="ftp.host" value="localhost"/>
     <property name="ftp.port" value="21" />
     <property name="ftp.password" value="sunshine" />
+    <property name="ftp.filesep" value="/"/>
     <property name="tmp.dir" location="tmp"/>
     <property name="tmp.get.dir" location="tmp.get"/>
-    <property name="ftp.filesep" value="/"/>
     <fileset dir="${tmp.get.dir}" id="fileset-destination-with-selector">
         <include name="alpha/**"/>
         <filename name="**/alpha.xml" />
@@ -34,6 +34,7 @@
             server="${ftp.host}"
             userid="${ftp.user}"
             password="${ftp.password}"
+            separator="${ftp.filesep}"
             remotedir="${tmp.dir}">
             <fileset refid="fileset-destination-with-selector"/>
         </ftp>
@@ -57,6 +58,7 @@
             server="${ftp.host}"
             userid="${ftp.user}"
             password="${ftp.password}"
+            separator="${ftp.filesep}"
             remotedir="${tmp.dir}"
             >
             <fileset refid="fileset-destination-followsymlinks"/>
@@ -67,6 +69,7 @@
             server="${ftp.host}"
             userid="${ftp.user}"
             password="${ftp.password}"
+            separator="${ftp.filesep}"
             remotedir="${tmp.dir}"
             >
             <fileset refid="fileset-destination-nofollowsymlinks"/>
@@ -77,4 +80,29 @@
         <symlink link="${tmp.dir}/alpha/beta/gamma/gamma.xml"
             resource="${tmp.dir}/alpha/beta/beta.xml"/>
     </target>
+    <target name="ftp-delete">
+        <!-- this target can produce an error if the rmdir does not work -->
+        <!-- there can be problems with the rmdir action if the directories are not removed in a proper order -->
+        <!-- which means beginning by the leaves of the tree, going back to the trunk -->
+        <ftp action="del"
+            server="${ftp.host}"
+            userid="${ftp.user}"
+            password="${ftp.password}"
+            separator="${ftp.filesep}"
+            remotedir="${tmp.dir}">
+            <fileset dir="${tmp.get.dir}">
+                <include name="**"/>
+            </fileset>
+        </ftp>
+        <ftp action="rmdir"
+            server="${ftp.host}"
+            userid="${ftp.user}"
+            password="${ftp.password}"
+            separator="${ftp.filesep}"
+            remotedir="${tmp.dir}">
+            <fileset dir="${tmp.get.dir}">
+                <include name="**"/>
+            </fileset>
+        </ftp>
+    </target>
 </project>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/optional/script_reference.xml b/src/etc/testcases/taskdefs/optional/script_reference.xml
new file mode 100644
index 0000000..ad02008
--- /dev/null
+++ b/src/etc/testcases/taskdefs/optional/script_reference.xml
@@ -0,0 +1,10 @@
+<project name="test-reference" default="script">
+  <target name="script">
+    <script language="javascript">
+    </script>
+  </target>
+  <target name="def">
+    <taskdef name="my.echo" classname="org.apache.tools.ant.taskdefs.Echo"/>
+    <my.echo id="my.echo.ref" message="hello world"/>
+  </target>
+</project>
diff --git a/src/etc/testcases/taskdefs/optional/xmlvalidate.xml b/src/etc/testcases/taskdefs/optional/xmlvalidate.xml
index 76c26fc..7dcd5af 100644
--- a/src/etc/testcases/taskdefs/optional/xmlvalidate.xml
+++ b/src/etc/testcases/taskdefs/optional/xmlvalidate.xml
@@ -25,6 +25,16 @@
     </xmlvalidate>
   </target>
 
+  <target name="xmlcatalogViaRefid">
+    <xmlcatalog classpath="xml" id="cat">
+      <dtd publicID="-//stevo//DTD doc 1.0//EN" location="doc.dtd"/>
+    </xmlcatalog>
+    <xmlvalidate warn="false">
+      <xmlcatalog refid="cat"/>
+      <fileset dir="xml" includes="**/about.xml"/>
+    </xmlvalidate>
+  </target>
+
   <target name="xmlcatalognested">
     <xmlvalidate warn="false">
       <fileset dir="xml" includes="**/about.xml"/>
diff --git a/src/etc/testcases/taskdefs/presetdef.xml b/src/etc/testcases/taskdefs/presetdef.xml
index f623734..116ed58 100644
--- a/src/etc/testcases/taskdefs/presetdef.xml
+++ b/src/etc/testcases/taskdefs/presetdef.xml
@@ -1,20 +1,87 @@
 <project>
+  <path id="test-classes">
+    <pathelement location="../../../../build/testcases" />
+    <pathelement path="${java.class.path}" />
+  </path>
+  
   <target name="simple">
     <presetdef name="my.echo">
       <echo message="Hello world"/>
     </presetdef>
     <my.echo/>
   </target>
+
   <target name="text">
     <presetdef name="my.echo">
       <echo>Inner Text</echo>
     </presetdef>
     <my.echo/>
   </target>
+
   <target name="uri">
     <presetdef name="echo" uri="abc">
       <echo message="Hello world"/>
     </presetdef>
     <x:echo xmlns:x="abc"/>
   </target>
+
+  <target name="defaulttest">
+    <taskdef name="defaulttest"
+             classname="org.apache.tools.ant.taskdefs.PreSetDefTest$DefaultTest"
+             classpathref="test-classes"/>
+    <presetdef name="d">
+      <defaulttest attribute="true"/>
+    </presetdef>
+    <d attribute="false"/>
+  </target>
+
+  <target name="doubledefault">
+    <taskdef name="defaulttest"
+             classname="org.apache.tools.ant.taskdefs.PreSetDefTest$DefaultTest"
+             classpathref="test-classes"/>
+    <presetdef name="d">
+      <defaulttest attribute="true"/>
+    </presetdef>
+    <presetdef name="dd">
+      <d attribute="false"/>
+    </presetdef>
+    <dd/>
+    <dd attribute="true"/>
+  </target>
+
+  <target name="text.optional">
+    <presetdef name="echo.mytext">
+      <echo>MyText</echo>
+    </presetdef>
+    <echo.mytext/>
+    <echo.mytext>override text</echo.mytext>
+  </target>
+
+  <target name="element.order">
+    <presetdef name="el.order">
+      <sequential>
+        <echo>Line 1</echo>
+      </sequential>
+    </presetdef>
+    <el.order>
+      <echo>Line 2</echo>
+    </el.order>
+  </target>
+
+  <target name="element.order2">
+    <presetdef name="el.order">
+      <sequential>
+        <echo>Line 1</echo>
+      </sequential>
+    </presetdef>
+    <presetdef name="el.order2">
+      <el.order>
+        <echo>Line 2</echo>
+      </el.order>
+    </presetdef>
+    <el.order2>
+      <echo>Line 3</echo>
+    </el.order2>
+  </target>
+
 </project>
diff --git a/src/etc/testcases/taskdefs/replace.xml b/src/etc/testcases/taskdefs/replace.xml
index 079d34a..44eb0c1 100644
--- a/src/etc/testcases/taskdefs/replace.xml
+++ b/src/etc/testcases/taskdefs/replace.xml
@@ -2,6 +2,8 @@
 
 <project name="xxx-test" basedir="." default="test1">
 
+  <property name="tmp.dir" location="replace/tmp"/>
+
   <target name="test1">
     <replace/>
   </target>
@@ -41,13 +43,22 @@
     </replace>
   </target>
 
-  <target name="test9">
-    <copy file="replace/source.txt" tofile="replace/output.txt"/>
-    <loadfile srcFile="replace/value.txt" property="content"/>
-    <replace file="replace/output.txt" token="@@@Replace this@@@" value="${content}"/>
+  <target name="test9-setup">
+    <!-- this fixing of line endings is necessary because the replace task is transforming the line endings -->
+    <!-- of the replacement tokens and values to the platform default -->
+    <!-- in certain cases (checkout done with cvs of cygwin, the line endings of the various files do not match-->
+    <!-- the system property line.separator -->
+    <copy file="replace/source.txt" tofile="${tmp.dir}/output.txt"/>
+    <copy file="replace/value.txt" tofile="${tmp.dir}/value.txt" />
+    <copy file="replace/result.txt" tofile="${tmp.dir}/result.txt" />
+    <fixcrlf srcdir="${tmp.dir}" includes="*.txt"/>
+  </target>
+  <target name="test9" depends="test9-setup">
+    <loadfile srcFile="${tmp.dir}/value.txt" property="content"/>
+    <replace file="${tmp.dir}/output.txt" token="@@@Replace this@@@" value="${content}"/>
   </target>
 
   <target name="cleanup">
-      <delete file="replace/output.txt" quiet="true"/>
+      <delete dir="${tmp.dir}" quiet="true"/>
   </target>
 </project>
diff --git a/src/etc/testcases/taskdefs/replace/result.txt b/src/etc/testcases/taskdefs/replace/result.txt
index 15b2d69..a74e06e 100644
--- a/src/etc/testcases/taskdefs/replace/result.txt
+++ b/src/etc/testcases/taskdefs/replace/result.txt
@@ -4,3 +4,4 @@
 This is line four
 This is line five
 This is line six
+
diff --git a/src/etc/testcases/taskdefs/test2.antlib.xml b/src/etc/testcases/taskdefs/test2.antlib.xml
new file mode 100644
index 0000000..0e35817
--- /dev/null
+++ b/src/etc/testcases/taskdefs/test2.antlib.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<antlib>
+  <typedef 
+    name="mytask2" onerror="ignore"
+    classname="org.apache.tools.ant.taskdefs.AntlibTest$MyTask2"/>
+</antlib>
diff --git a/src/etc/testcases/taskdefs/typedef.xml b/src/etc/testcases/taskdefs/typedef.xml
index 39635f8..eeec7eb 100644
--- a/src/etc/testcases/taskdefs/typedef.xml
+++ b/src/etc/testcases/taskdefs/typedef.xml
@@ -39,11 +39,11 @@
   </target>
 
   <target name="testLocal">
-    <typedef name="local"
+    <typedef name="localtype"
              classname="org.example.types.TypedefTestType">
       <classpath refid="testclasses" />
     </typedef>
-    <local id="local" />
+    <localtype id="local" />
   </target>
 
   <target name="double-notpresent">
diff --git a/src/etc/testcases/taskdefs/xmlns.xml b/src/etc/testcases/taskdefs/xmlns.xml
index 3e8f652..f442b8c 100644
--- a/src/etc/testcases/taskdefs/xmlns.xml
+++ b/src/etc/testcases/taskdefs/xmlns.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0"?>
-<project name="test">
+<project name="test" xmlns:other="this is the other uri"
+         other:attr="this should be ignored by ant">
 
   <property name="testcases.dir" location="../../../../build/testcases"/>
 
@@ -16,6 +17,16 @@
     <test:mytask/>
   </target>
 
+  <target name="other" other:a="this is another attribute">
+    <echo other:g="abc" message="a message"/>
+  </target>
+
+  <target name="ns.attributes">
+    <taskdef name="my.echo" classname="org.apache.tools.ant.taskdefs.Echo"
+             uri="x-uri"/>
+    <x:my.echo x:message="hello world" xmlns:x="x-uri"/>
+  </target>
+
   <target name="xmlns.file" xmlns:test="this.is.a.test.uri">
     <typedef file="test.antlib.xml"
              classpathref="testclasses"
@@ -26,7 +37,7 @@
   <target name="core">
     <typedef file="test.antlib.xml"
              classpathref="testclasses"
-             uri="ant:core" />
+             uri="antlib:org.apache.tools.ant" />
     <mytask/>
   </target>
 
diff --git a/src/etc/testcases/types/addtype.xml b/src/etc/testcases/types/addtype.xml
index accc59d..9f9eff8 100644
--- a/src/etc/testcases/types/addtype.xml
+++ b/src/etc/testcases/types/addtype.xml
@@ -70,7 +70,7 @@
     <typedef loaderref="nested.loader" classpathref="nested.classes"
              name = "myvalue" 
              classname="${nested.package}AddTypeTest$MyValue"/>
- </target>
+  </target>
 
   <target name="nested.a" depends="init">
     <nested.container>
@@ -83,7 +83,7 @@
       <nested.b/>
     </nested.container>
   </target>
-
+  
   <target name="nested.c" depends="init">
     <nested.container>
       <nested.c/>
@@ -102,18 +102,21 @@
     <nested.condition.type/>
     <echo>after</echo>
   </target>
+
   <target name="condition.task" depends="init">
     <echo>before</echo>
     <nested.condition.task/>
     <echo>after</echo>
   </target>
+
   <target name="condition.condition.type" depends="init">
     <condition property="condition.condition.type">
       <nested.condition.type/>
     </condition>
   </target>
+
   <target name="condition.condition.task" depends="init">
-    <condition property="condition.condition.task">>
+    <condition property="condition.condition.task">
       <nested.condition.task/>
     </condition>
   </target>
@@ -124,4 +127,11 @@
     </myaddconfigured>
   </target>
 
+  <target name="namespacetest" xmlns:prefix="uri">
+    <typedef name="eq" uri="uri"
+             classname="org.apache.tools.ant.taskdefs.condition.Equals"/>
+    <condition property="p">
+      <prefix:eq arg1="a" arg2="b"/>
+    </condition>
+  </target>
 </project>
diff --git a/src/etc/testcases/types/assertions.xml b/src/etc/testcases/types/assertions.xml
new file mode 100644
index 0000000..d9d8a78
--- /dev/null
+++ b/src/etc/testcases/types/assertions.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+
+<project name="assertions" basedir="." default="init">
+
+  <property name="build.dir" location="assertions/build"/>
+  <property name="src.dir" location="assertions"/>
+  <property name="classname" value="AssertionTest"/>
+  
+  <path id="assert.classpath">
+    <pathelement location="${build.dir}"/>
+  </path>
+  
+  <target name="setup" >
+    <mkdir dir="${build.dir}"/>
+    <javac srcdir="${src.dir}"
+      includes="*.java"
+      source="1.4"
+      debug="true"
+      destdir="${build.dir}"
+      />
+  </target>
+  
+  <target name="teardown" >
+    <delete dir="${build.dir}"/>
+  </target>
+
+  <!-- if per-class assertions work, this run asserts -->
+  <target name="test-classname" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enablesystemassertions="true">
+        <enable class="${classname}" />
+      </assertions>
+    </java>
+  </target>
+  
+  <!-- if package works, this run asserts -->
+  <target name="test-package" depends="setup">
+    <java fork="true"  failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enableSystemAssertions="false" >
+        <enable package="..." />
+      </assertions>
+    </java>
+  </target>
+
+  <!-- this test should run the app successfully -->
+  <target name="test-empty-assertions" depends="setup">
+    <java fork="true"  failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions/>
+    </java>
+  </target>  
+
+  <!-- this test should run the app successfully -->
+  <target name="test-disable" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enableSystemAssertions="false" >
+        <enable package="..." />
+        <disable class="${classname}" />
+      </assertions>
+    </java>
+  </target>  
+
+  <!-- repeated settigns result in the last declaration winning
+    except that the rule 'classes win over packages takes priority
+    this run will assert -->
+  <target name="test-override" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enableSystemAssertions="false" >
+        <enable package="..." />
+        <disable class="${classname}" />
+        <enable class="${classname}" />
+        <disable package="..." />
+      </assertions>
+    </java>
+  </target>  
+
+  <!-- repeated settigns result in the last declaration winning;
+    this run will not assert -->
+  <target name="test-override2" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enableSystemAssertions="false" >
+        <enable package="..." />
+        <enable class="${classname}" />
+        <disable class="${classname}" />
+      </assertions>
+    </java>
+  </target>  
+  
+  <!-- if references work, this run asserts -->
+  <target name="test-references">
+  <assertions id="project.assertions" >
+    <enable package="org.apache.test" />
+    <disable package="org.apache.log4j"/>
+    <enable package="..."/>
+  </assertions>  
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions refid="project.assertions"/>
+    </java>
+  </target>
+  
+  <!-- when fork=false; we need to reject the construct -->
+  <target name="test-nofork" depends="setup">
+    <java fork="false" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enablesystemassertions="true">
+        <enable class="${classname}" />
+      </assertions>
+    </java>
+  </target>  
+
+  <!-- this throws a build error -->
+  <target name="test-multiple-assertions" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enablesystemassertions="true">
+        <enable class="${classname}" />
+      </assertions>
+      <assertions/>
+    </java>
+  </target>  
+  
+  <!-- should throw a build exception -->
+  <target name="test-reference-abuse" depends="setup">
+  <assertions id="project.assertions2" >
+    <enable package="org.apache.test" />
+    <disable package="org.apache.log4j"/>
+    <enable package="..."/>
+  </assertions>  
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions refid="project.assertions2">
+        <disable class="${classname}" />
+      </assertions>      
+    </java>
+  </target>    
+  
+</project>
diff --git a/src/etc/testcases/types/assertions/AssertionTest.java b/src/etc/testcases/types/assertions/AssertionTest.java
new file mode 100644
index 0000000..60158ca
--- /dev/null
+++ b/src/etc/testcases/types/assertions/AssertionTest.java
@@ -0,0 +1,66 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowlegement:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software
+ *    Foundation" must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ *    nor may "Apache" appear in their names without prior written
+ *    permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+ 
+
+/**
+ * this is an assertion tester
+ */
+public class AssertionTest {
+    
+    public static void main(String args[]) {
+		assert true == false : "there exist no facts that are both true and false";
+		System.out.println("Assertions are disabled");
+    }
+    
+}
diff --git a/src/etc/testcases/types/selectors.xml b/src/etc/testcases/types/selectors.xml
index 08e9d7c..0644ac5 100644
--- a/src/etc/testcases/types/selectors.xml
+++ b/src/etc/testcases/types/selectors.xml
@@ -130,8 +130,12 @@
   <target name="modifiedselectortest-scenario-prepare">
       <mkdir dir="${test.dir}/src"/>
       <copy todir="${test.dir}/src">
-          <fileset dir="${ant.home}/lib" includes="ant.jar"/>
-          <fileset dir="${ant.home}/bin"/>
+          <fileset dir="${ant.home}/lib" includes="ant.jar">
+              <type type="file"/>
+          </fileset>
+          <fileset dir="${ant.home}/bin">
+                <type type="file"/>
+          </fileset>
       </copy>
       <touch datetime="12/24/2002 4:00 pm">
           <fileset dir="${test.dir}"/>
diff --git a/src/main/org/apache/tools/ant/AntClassLoader.java b/src/main/org/apache/tools/ant/AntClassLoader.java
index dd83d1b..6c04d26 100644
--- a/src/main/org/apache/tools/ant/AntClassLoader.java
+++ b/src/main/org/apache/tools/ant/AntClassLoader.java
@@ -80,7 +80,7 @@
  * class will then use this loader rather than the system class loader.
  *
  * @author Conor MacNeill
- * @author <a href="mailto:Jesse.Glick@netbeans.com">Jesse Glick</a>
+ * @author <a href="mailto:jglick@netbeans.org">Jesse Glick</a>
  * @author Magesh Umasankar
  */
 public class AntClassLoader extends ClassLoader implements BuildListener {
diff --git a/src/main/org/apache/tools/ant/ComponentHelper.java b/src/main/org/apache/tools/ant/ComponentHelper.java
index e7cc4d6..c81f888 100644
--- a/src/main/org/apache/tools/ant/ComponentHelper.java
+++ b/src/main/org/apache/tools/ant/ComponentHelper.java
@@ -806,7 +806,7 @@
      * called for each component name, check if the
      * associated URI has been examined for antlibs.
      */
-    private void checkNamespace(String componentName) {
+    private synchronized void checkNamespace(String componentName) {
         if (componentName.indexOf(':') == -1) {
             return; // not a namespaced name
         }
diff --git a/src/main/org/apache/tools/ant/DirectoryScanner.java b/src/main/org/apache/tools/ant/DirectoryScanner.java
index 9b7b1b6..d26ffe1 100644
--- a/src/main/org/apache/tools/ant/DirectoryScanner.java
+++ b/src/main/org/apache/tools/ant/DirectoryScanner.java
@@ -65,6 +65,7 @@
 import java.util.Set;
 import java.util.Vector;
 
+import org.apache.tools.ant.taskdefs.condition.Os;
 import org.apache.tools.ant.types.Resource;
 import org.apache.tools.ant.types.ResourceFactory;
 import org.apache.tools.ant.types.selectors.FileSelector;
@@ -163,6 +164,8 @@
 public class DirectoryScanner
        implements FileScanner, SelectorScanner, ResourceFactory {
 
+    /** Is OpenVMS the operating system we're running on? */
+    private static final boolean ON_VMS = Os.isFamily("openvms");
 
     /**
      * Patterns which should be excluded by default.
@@ -725,7 +728,7 @@
                         File canonFile = myfile.getCanonicalFile();
                         String path = fileUtils.removeLeadingPath(canonBase,
                                                                   canonFile);
-                        if (!path.equals(currentelement)) {
+                        if (!path.equals(currentelement) || ON_VMS) {
                             myfile = findFile(basedir, currentelement);
                             if (myfile != null) {
                                 currentelement =
diff --git a/src/main/org/apache/tools/ant/IntrospectionHelper.java b/src/main/org/apache/tools/ant/IntrospectionHelper.java
index 2c314b7..a89d388 100644
--- a/src/main/org/apache/tools/ant/IntrospectionHelper.java
+++ b/src/main/org/apache/tools/ant/IntrospectionHelper.java
@@ -65,6 +65,7 @@
 import java.util.Locale;
 import org.apache.tools.ant.types.EnumeratedAttribute;
 import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.taskdefs.PreSetDef;
 
 /**
  * Helper class that collects the methods a task or nested element
@@ -286,11 +287,14 @@
                 if (nestedCreators.get(propName) == null) {
                     nestedTypes.put(propName, returnType);
                     nestedCreators.put(propName, new NestedCreator() {
-
                         public boolean isPolyMorphic() {
                             return false;
                         }
 
+                        public Object getRealObject() {
+                            return null;
+                        }
+
                         public Class getElementClass() {
                             return null;
                         }
@@ -332,6 +336,10 @@
                                 return true;
                             }
 
+                            public Object getRealObject() {
+                                return null;
+                            }
+
                             public Class getElementClass() {
                                 return c.getDeclaringClass();
                             }
@@ -387,6 +395,10 @@
                                 return true;
                             }
 
+                            public Object getRealObject() {
+                                return null;
+                            }
+
                             public Class getElementClass() {
                                 return c.getDeclaringClass();
                             }
@@ -594,7 +606,8 @@
     private NestedCreator getNestedCreator(Project project, Object parent,
         String elementName) throws BuildException {
 
-        NestedCreator nc = (NestedCreator) nestedCreators.get(elementName);
+        NestedCreator nc = (NestedCreator) nestedCreators.get(
+            elementName.toLowerCase(Locale.US));
         if (nc == null) {
             nc = createAddTypeCreator(project, parent, elementName);
         }
@@ -610,6 +623,56 @@
                         return null;
                     }
 
+                    public Object getRealObject() {
+                        return null;
+                    }
+
+                    public Object create(
+                        Project project, Object parent, Object ignore) {
+                        return nestedElement;
+                    }
+                    public void store(Object parent, Object child) {
+                    }
+                };
+            }
+        }
+        if (nc == null) {
+            throwNotSupported(project, parent, elementName);
+        }
+        return nc;
+    }
+
+    private NestedCreator getNestedCreator(
+        Project project, String parentUri, Object parent,
+        String elementName) throws BuildException {
+
+        String uri = ProjectHelper.extractUriFromComponentName(elementName);
+        String name = ProjectHelper.extractNameFromComponentName(elementName);
+
+        NestedCreator nc = null;
+        if (uri.equals(parentUri)) { //  || uri.equals("")) {
+            nc = (NestedCreator) nestedCreators.get(
+                name.toLowerCase(Locale.US));
+        }
+        if (nc == null) {
+            nc = createAddTypeCreator(project, parent, elementName);
+        }
+        if (nc == null && parent instanceof DynamicConfigurator) {
+            DynamicConfigurator dc = (DynamicConfigurator) parent;
+            final Object nestedElement = dc.createDynamicElement(elementName);
+            if (nestedElement != null) {
+                nc = new NestedCreator() {
+                    public boolean isPolyMorphic() {
+                        return false;
+                    }
+                    public Class getElementClass() {
+                        return null;
+                    }
+
+                    public Object getRealObject() {
+                        return null;
+                    }
+
                     public Object create(
                         Project project, Object parent, Object ignore) {
                         return nestedElement;
@@ -675,6 +738,7 @@
      * for an element of a parent.
      *
      * @param project      Project to which the parent object belongs.
+     * @param parentUri    The namespace uri of the parent object.
      * @param parent       Parent object used to create the creator object to
      *                     create and store and instance of a subelement.
      * @param elementName  Name of the element to create an instance of.
@@ -682,8 +746,9 @@
      */
 
     public Creator getElementCreator(
-        Project project, Object parent, String elementName) {
-        NestedCreator nc = getNestedCreator(project, parent, elementName);
+        Project project, String parentUri, Object parent, String elementName) {
+        NestedCreator nc = getNestedCreator(
+            project, parentUri, parent, elementName);
         return new Creator(project, parent, nc);
     }
 
@@ -696,7 +761,27 @@
      * @return true if the given nested element is supported
      */
     public boolean supportsNestedElement(String elementName) {
-        return nestedCreators.containsKey(elementName)
+        return nestedCreators.containsKey(elementName.toLowerCase(Locale.US))
+            || DynamicConfigurator.class.isAssignableFrom(bean)
+            || addTypeMethods.size() != 0;
+    }
+
+    /**
+     * Indicate if this element supports a nested element of the
+     * given name.
+     *
+     * @param parentUri   the uri of the parent
+     * @param elementName the name of the nested element being checked
+     *
+     * @return true if the given nested element is supported
+     */
+    public boolean supportsNestedElement(String parentUri, String elementName) {
+        String uri = ProjectHelper.extractUriFromComponentName(elementName);
+        String name = ProjectHelper.extractNameFromComponentName(elementName);
+
+        return (
+            nestedCreators.containsKey(name.toLowerCase(Locale.US))
+            && (uri.equals(parentUri))) // || uri.equals("")))
             || DynamicConfigurator.class.isAssignableFrom(bean)
             || addTypeMethods.size() != 0;
     }
@@ -726,7 +811,8 @@
         if (elementName == null) {
             return;
         }
-        NestedCreator ns = (NestedCreator) nestedCreators.get(elementName);
+        NestedCreator ns = (NestedCreator) nestedCreators.get(
+            elementName.toLowerCase(Locale.US));
         if (ns == null) {
             return;
         }
@@ -1111,6 +1197,14 @@
         }
 
         /**
+         * @return the real object (used currently only
+         *         for preset def)
+         */
+        public Object getRealObject() {
+            return nestedCreator.getRealObject();
+        }
+
+        /**
          * Stores the nested element object using a storage method
          * determined by introspection.
          *
@@ -1145,6 +1239,7 @@
     private interface NestedCreator {
         boolean isPolyMorphic();
         Class getElementClass();
+        Object getRealObject();
         Object create(Project project, Object parent, Object child)
             throws InvocationTargetException, IllegalAccessException, InstantiationException;
         void store(Object parent, Object child)
@@ -1250,8 +1345,14 @@
         if (addedObject == null) {
             return null;
         }
+        Object rObject = addedObject;
+        if (addedObject instanceof PreSetDef.PreSetDefinition) {
+            rObject = ((PreSetDef.PreSetDefinition) addedObject).createObject(
+                project);
+        }
         final Method method = addMethod;
         final Object nestedObject = addedObject;
+        final Object realObject = rObject;
 
         return new NestedCreator() {
             public boolean isPolyMorphic() {
@@ -1264,15 +1365,20 @@
             public Object create(Project project, Object parent, Object ignore)
                 throws InvocationTargetException, IllegalAccessException {
                 if (!method.getName().endsWith("Configured")) {
-                    method.invoke(parent, new Object[]{nestedObject});
+                    method.invoke(parent, new Object[]{realObject});
                 }
                 return nestedObject;
             }
+
+            public Object getRealObject() {
+                return realObject;
+            }
+
             public void store(Object parent, Object child)
                 throws InvocationTargetException, IllegalAccessException,
                 InstantiationException {
                 if (method.getName().endsWith("Configured")) {
-                    method.invoke(parent, new Object[]{nestedObject});
+                    method.invoke(parent, new Object[]{realObject});
                 }
             }
         };
diff --git a/src/main/org/apache/tools/ant/Main.java b/src/main/org/apache/tools/ant/Main.java
index c8aa58b..b5492dd 100644
--- a/src/main/org/apache/tools/ant/Main.java
+++ b/src/main/org/apache/tools/ant/Main.java
@@ -290,7 +290,9 @@
     }
 
     /**
-     * Process command line arguments
+     * Process command line arguments.
+     * When ant is started from Launcher, the -lib argument does not get
+     * passed through to this routine.
      *
      * @param args the command line arguments.
      *
@@ -807,6 +809,7 @@
         msg.append("  -verbose, -v           be extra verbose" + lSep);
         msg.append("  -debug, -d             print debugging information" + lSep);
         msg.append("  -emacs, -e             produce logging information without adornments" + lSep);
+        msg.append("  -lib <path>            specifies a path to search for jars and classes" + lSep);
         msg.append("  -logfile <file>        use given file for log" + lSep);
         msg.append("    -l     <file>                ''" + lSep);
         msg.append("  -logger <classname>    the class which is to perform logging" + lSep);
diff --git a/src/main/org/apache/tools/ant/ProjectHelper.java b/src/main/org/apache/tools/ant/ProjectHelper.java
index 9174973..f00ad9f 100644
--- a/src/main/org/apache/tools/ant/ProjectHelper.java
+++ b/src/main/org/apache/tools/ant/ProjectHelper.java
@@ -86,7 +86,7 @@
  */
 public class ProjectHelper {
     /** The URI for ant name space */
-    public static final String ANT_CORE_URI       = "ant:core";
+    public static final String ANT_CORE_URI    = "antlib:org.apache.tools.ant";
 
     /** The URI for antlib current definitions */
     public static final String ANT_CURRENT_URI      = "ant:current";
@@ -525,11 +525,54 @@
      * @return               The uri or "" if not present
      */
     public static String extractUriFromComponentName(String componentName) {
+        if (componentName == null) {
+            return "";
+        }
         int index = componentName.lastIndexOf(':');
         if (index == -1) {
             return "";
         }
         return componentName.substring(0, index);
     }
-//end class
+    
+    /**
+     * extract the element name from a component name
+     *
+     * @param componentName  The stringified form for {uri, name}
+     * @return               The element name of the component
+     */
+    public static String extractNameFromComponentName(String componentName) {
+        int index = componentName.lastIndexOf(':');
+        if (index == -1) {
+            return componentName;
+        }
+        return componentName.substring(index+1);
+    }
+
+    /**
+     * Add location to build exception.
+     * @param ex the build exception, if the build exception
+     *           does not include
+     * @param newLocation the location of the calling task (may be null)
+     * @return a new build exception based in the build exception with
+     *         location set to newLocation. If the original exception
+     *         did not have a location, just return the build exception
+     */
+    public static BuildException addLocationToBuildException(
+        BuildException ex, Location newLocation) {
+        if (ex.getLocation() == null || ex.getMessage() == null) {
+            return ex;
+        }
+        String errorMessage
+            = "Following error occured while executing this line"
+            + System.getProperty("line.separator")
+            + ex.getLocation().toString()
+            + ex.getMessage();
+        if (newLocation == null) {
+            return new BuildException(errorMessage);
+        } else {
+            return new BuildException(
+                errorMessage, newLocation);
+        }
+    }
 }
diff --git a/src/main/org/apache/tools/ant/PropertyHelper.java b/src/main/org/apache/tools/ant/PropertyHelper.java
index 1c4bb26..81b5587 100644
--- a/src/main/org/apache/tools/ant/PropertyHelper.java
+++ b/src/main/org/apache/tools/ant/PropertyHelper.java
@@ -381,7 +381,7 @@
             return;
         }
 
-        boolean done = setPropertyHook(ns, name, value, false, true, false);
+        boolean done = setPropertyHook(ns, name, value, false, false, true);
         if (done) {
             return;
         }
@@ -407,7 +407,7 @@
             + value, Project.MSG_DEBUG);
         userProperties.put(name, value);
 
-        boolean done = setPropertyHook(ns, name, value, false, false, true);
+        boolean done = setPropertyHook(ns, name, value, false, true, false);
         if (done) {
             return;
         }
diff --git a/src/main/org/apache/tools/ant/RuntimeConfigurable.java b/src/main/org/apache/tools/ant/RuntimeConfigurable.java
index 12236c6..f55181a 100644
--- a/src/main/org/apache/tools/ant/RuntimeConfigurable.java
+++ b/src/main/org/apache/tools/ant/RuntimeConfigurable.java
@@ -63,6 +63,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Iterator;
 
 import org.apache.tools.ant.util.CollectionUtils;
 import org.xml.sax.AttributeList;
@@ -222,7 +223,6 @@
      * @return Attribute name to attribute value map
      */
     public Hashtable getAttributeMap() {
-        // Nobody calls this method, maybe it could just be deleted?
         if (attributeMap != null) {
             return new Hashtable(attributeMap);
         } else {
@@ -464,4 +464,46 @@
         proxyConfigured = false;
         maybeConfigure(p);
     }
+
+
+    /**
+     * Apply presets, attributes and text are set if not currently set.
+     * nested elements are prepended.
+     *
+     * @param r a <code>RuntimeConfigurable</code> value
+     */
+    public void applyPreSet(RuntimeConfigurable r) {
+        // Attributes
+        if (r.attributeMap != null) {
+            for (Iterator i = r.attributeMap.keySet().iterator(); i.hasNext();) {
+                String name = (String) i.next();
+                if (attributeMap == null || attributeMap.get(name) == null) {
+                    setAttribute(name, (String) r.attributeMap.get(name));
+                }
+            }
+        }
+        // poly type
+        if (r.polyType != null && polyType == null) {
+            polyType = r.polyType;
+        }
+
+        // Children (this is a shadow of unknownElement#children)
+        if (r.children != null) {
+            List newChildren = new ArrayList();
+            newChildren.addAll(r.children);
+            if (children != null) {
+                newChildren.addAll(children);
+            }
+            children = newChildren;
+        }
+
+        // Text
+        if (r.characters != null) {
+            if (characters == null
+                || characters.toString().trim().length() == 0) {
+                characters =
+                    new StringBuffer(r.characters.toString());
+            }
+        }
+    }
 }
diff --git a/src/main/org/apache/tools/ant/Task.java b/src/main/org/apache/tools/ant/Task.java
index d1409c4..a437cb0 100644
--- a/src/main/org/apache/tools/ant/Task.java
+++ b/src/main/org/apache/tools/ant/Task.java
@@ -493,7 +493,7 @@
      *
      * @return the type of task
      */
-    protected String getTaskType() {
+    public String getTaskType() {
         return taskType;
     }
 
diff --git a/src/main/org/apache/tools/ant/UnknownElement.java b/src/main/org/apache/tools/ant/UnknownElement.java
index 2a76def..82dca75 100644
--- a/src/main/org/apache/tools/ant/UnknownElement.java
+++ b/src/main/org/apache/tools/ant/UnknownElement.java
@@ -57,8 +57,8 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
 import java.io.IOException;
+import org.apache.tools.ant.taskdefs.PreSetDef;
 
 /**
  * Wrapper class that holds all the information necessary to create a task
@@ -96,6 +96,9 @@
      */
     private List/*<UnknownElement>*/ children = null;
 
+    /** Specifies if a predefined definition has been done */
+    private boolean presetDefed = false;
+
     /**
      * Creates an UnknownElement for the given element name.
      *
@@ -333,13 +336,15 @@
      *
      * @exception BuildException if the children cannot be configured.
      */
-    protected void handleChildren(Object parent,
-                                  RuntimeConfigurable parentWrapper)
+    protected void handleChildren(
+        Object parent,
+        RuntimeConfigurable parentWrapper)
         throws BuildException {
         if (parent instanceof TypeAdapter) {
             parent = ((TypeAdapter) parent).getProxy();
         }
 
+        String parentUri = getNamespace();
         Class parentClass = parent.getClass();
         IntrospectionHelper ih = IntrospectionHelper.getHelper(parentClass);
 
@@ -349,8 +354,8 @@
             for (int i = 0; it.hasNext(); i++) {
                 RuntimeConfigurable childWrapper = parentWrapper.getChild(i);
                 UnknownElement child = (UnknownElement) it.next();
-                if (!handleChild(ih, parent, child,
-                                 childWrapper)) {
+                if (!handleChild(
+                        parentUri, ih, parent, child, childWrapper)) {
                     if (!(parent instanceof TaskContainer)) {
                         ih.throwNotSupported(getProject(), parent,
                                              child.getTag());
@@ -373,6 +378,31 @@
     }
 
     /**
+     * This is used then the realobject of the UE is a PreSetDefinition.
+     * This is also used when a presetdef is used on a presetdef
+     * The attributes, elements and text are applied to this
+     * UE.
+     *
+     * @param u an UnknownElement containing the attributes, elements and text
+     */
+    public void applyPreSet(UnknownElement u) {
+        if (presetDefed) {
+            return;
+        }
+        // Do the runtime
+        getWrapper().applyPreSet(u.getWrapper());
+        if (u.children != null) {
+            List newChildren = new ArrayList();
+            newChildren.addAll(u.children);
+            if (children != null) {
+                newChildren.addAll(children);
+            }
+            children = newChildren;
+        }
+        presetDefed = true;
+    }
+
+    /**
      * Creates a named task or data type. If the real object is a task,
      * it is configured up to the init() stage.
      *
@@ -387,9 +417,22 @@
             getProject());
         String name = ue.getComponentName();
         Object o = helper.createComponent(ue, ue.getNamespace(), name);
+
         if (o == null) {
             throw getNotFoundException("task or type", name);
         }
+
+        if (o instanceof PreSetDef.PreSetDefinition) {
+            PreSetDef.PreSetDefinition def = (PreSetDef.PreSetDefinition) o;
+            o = def.createObject(ue.getProject());
+            ue.applyPreSet(def.getPreSets());
+            if (o instanceof Task) {
+                Task task = (Task) o;
+                task.setTaskType(ue.getTaskType());
+                task.setTaskName(ue.getTaskName());
+            }
+        }
+
         if (o instanceof Task) {
             Task task = (Task) o;
             task.setOwningTarget(getOwningTarget());
@@ -512,18 +555,24 @@
      *
      * @return whether the creation has been successful
      */
-    private boolean handleChild(IntrospectionHelper ih,
-                                Object parent, UnknownElement child,
-                                RuntimeConfigurable childWrapper) {
-        // backwards compatibility - element names of nested
-        // elements have been all lower-case in Ant, except for
-        // TaskContainers
-        String childName = child.getTag().toLowerCase(Locale.US);
-        if (ih.supportsNestedElement(childName)) {
+    private boolean handleChild(
+        String parentUri,
+        IntrospectionHelper ih,
+        Object parent, UnknownElement child,
+        RuntimeConfigurable childWrapper) {
+        String childName = ProjectHelper.genComponentName(
+            child.getNamespace(), child.getTag());
+        if (ih.supportsNestedElement(parentUri, childName)) {
             IntrospectionHelper.Creator creator =
-                ih.getElementCreator(getProject(), parent, childName);
+                ih.getElementCreator(getProject(), parentUri, parent, childName);
             creator.setPolyType(childWrapper.getPolyType());
             Object realChild = creator.create();
+            if (realChild instanceof PreSetDef.PreSetDefinition) {
+                PreSetDef.PreSetDefinition def =
+                    (PreSetDef.PreSetDefinition) realChild;
+                realChild = creator.getRealObject();
+                child.applyPreSet(def.getPreSets());
+            }
             childWrapper.setCreator(creator);
             childWrapper.setProxy(realChild);
             if (realChild instanceof Task) {
@@ -552,6 +601,7 @@
             return false;
         }
         UnknownElement other = (UnknownElement) obj;
+        // Are the names the same ?
         if (!equalsString(elementName, other.elementName)) {
             return false;
         }
@@ -561,12 +611,25 @@
         if (!qname.equals(other.qname)) {
             return false;
         }
+        // Are attributes the same ?
         if (!getWrapper().getAttributeMap().equals(
                 other.getWrapper().getAttributeMap())) {
             return false;
         }
-        if (children == null) {
-            return other.children == null;
+        // Is the text the same?
+        //   Need to use equals on the string and not
+        //   on the stringbuffer as equals on the string buffer
+        //   does not compare the contents.
+        if (!getWrapper().getText().toString().equals(
+                other.getWrapper().getText().toString())) {
+            return false;
+        }
+        // Are the sub elements the same ?
+        if (children == null || children.size() == 0) {
+            return other.children == null || other.children.size() == 0;
+        }
+        if (other.children == null) {
+            return false;
         }
         if (children.size() != other.children.size()) {
             return false;
diff --git a/src/main/org/apache/tools/ant/defaultManifest.mf b/src/main/org/apache/tools/ant/defaultManifest.mf
index e3b3cba..61fc10d 100644
--- a/src/main/org/apache/tools/ant/defaultManifest.mf
+++ b/src/main/org/apache/tools/ant/defaultManifest.mf
@@ -1,3 +1,3 @@
 Manifest-Version: 1.0
-Ant-Version: Apache Ant @VERSION@ 
+Ant-Version: Apache Ant @VERSION@
 
diff --git a/src/main/org/apache/tools/ant/filters/ConcatFilter.java b/src/main/org/apache/tools/ant/filters/ConcatFilter.java
index 87d9809..3539940 100644
--- a/src/main/org/apache/tools/ant/filters/ConcatFilter.java
+++ b/src/main/org/apache/tools/ant/filters/ConcatFilter.java
@@ -76,8 +76,8 @@
  * file.</p>
  *
  * @since 1.6
- * @version 2003-09-17
- * @author Jan Matèrne
+ * @version 2003-09-23
+ * @author Jan Mat\u00e8rne
  */
 public final class ConcatFilter extends BaseParamFilterReader
     implements ChainableReader {
@@ -89,10 +89,10 @@
     private File append;
 
     /** Reader for prepend-file. */
-    private Reader prependReader = new EmptyReader();
+    private Reader prependReader = null;
 
     /** Reader for append-file. */
-    private Reader appendReader = new EmptyReader();
+    private Reader appendReader = null;
 
     /**
      * Constructor for "dummy" instances.
@@ -136,12 +136,28 @@
 
         // The readers return -1 if they end. So simply read the "prepend"
         // after that the "content" and at the end the "append" file.
-        ch = prependReader.read();
+        if (prependReader != null) {
+            ch = prependReader.read();
+            if (ch == -1) {
+                // I am the only one so I have to close the reader
+                prependReader.close();
+                prependReader = null;
+            }
+        }
         if (ch == -1) {
             ch = super.read();
         }
         if (ch == -1) {
-            ch = appendReader.read();
+            // don´t call super.close() because that reader is used
+            // on other places ...
+            if (appendReader != null) {
+                ch = appendReader.read();
+                if (ch == -1) {
+                    // I am the only one so I have to close the reader
+                    appendReader.close();
+                    appendReader = null;
+                }
+            }
         }
 
         return ch;
@@ -233,14 +249,4 @@
             appendReader = new BufferedReader(new FileReader(append));
         }
    }
-
-   /**
-    * Reader which is always at the end of file.
-    * Used for easier algorithm (polymorphism instead if-cascades).
-    */
-   private class EmptyReader extends Reader {
-       public int read(char[] ch, int i1, int i2) { return -1; }
-       public void close() { }
-   }
-
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/helper/AntXMLContext.java b/src/main/org/apache/tools/ant/helper/AntXMLContext.java
index 4e63c83..954866e 100644
--- a/src/main/org/apache/tools/ant/helper/AntXMLContext.java
+++ b/src/main/org/apache/tools/ant/helper/AntXMLContext.java
@@ -135,6 +135,7 @@
      */
     public AntXMLContext(Project project) {
         this.project = project;
+        implicitTarget.setProject(project);
         implicitTarget.setName("");
         targetVector.addElement(implicitTarget);
     }
diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
index 343e4ef..169e1d3 100644
--- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
+++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
@@ -157,6 +157,7 @@
             Target currentTarget = context.getCurrentTarget();
             try {
                 Target newCurrent = new Target();
+                newCurrent.setProject(project);
                 newCurrent.setName("");
                 context.setCurrentTarget(newCurrent);
                 parse(project, source, new RootHandler(context, mainHandler));
@@ -267,11 +268,13 @@
         } catch (FileNotFoundException exc) {
             throw new BuildException(exc);
         } catch (UnsupportedEncodingException exc) {
-              throw new BuildException("Encoding of project file is invalid.",
-                exc);
+              throw new BuildException("Encoding of project file "
+                                       + buildFileName + " is invalid.",
+                                       exc);
         } catch (IOException exc) {
-            throw new BuildException("Error reading project file: "
-                + exc.getMessage(), exc);
+            throw new BuildException("Error reading project file " 
+                                     + buildFileName + ": " + exc.getMessage(),
+                                     exc);
         } finally {
             if (inputStream != null) {
                 try {
@@ -642,9 +645,15 @@
              */
 
             for (int i = 0; i < attrs.getLength(); i++) {
+                String attrUri = attrs.getURI(i);
+                if (attrUri != null
+                    && !attrUri.equals("")
+                    && !attrUri.equals(uri)) {
+                    continue; // Ignore attributes from unknown uris
+                }
                 String key = attrs.getLocalName(i);
                 String value = attrs.getValue(i);
-
+ 
                 if (key.equals("default")) {
                     if (value != null && !value.equals("")) {
                         if (!context.isIgnoringProjectTag()) {
@@ -790,9 +799,16 @@
 
             Project project = context.getProject();
             Target target = new Target();
+            target.setProject(project);
             context.addTarget(target);
 
             for (int i = 0; i < attrs.getLength(); i++) {
+                String attrUri = attrs.getURI(i);
+                if (attrUri != null
+                    && !attrUri.equals("")
+                    && !attrUri.equals(uri)) {
+                    continue; // Ignore attributes from unknown uris
+                }
                 String key = attrs.getLocalName(i);
                 String value = attrs.getValue(i);
 
@@ -935,8 +951,9 @@
             UnknownElement task = new UnknownElement(tag);
             task.setProject(context.getProject());
             task.setNamespace(uri);
-            //XXX task.setTaskType(qname);
             task.setQName(qname);
+            task.setTaskType(
+                ProjectHelper.genComponentName(task.getNamespace(), tag));
             task.setTaskName(qname);
 
             Location location = new Location(context.getLocator().getSystemId(),
@@ -962,6 +979,12 @@
                 = new RuntimeConfigurable(task, task.getTaskName());
 
             for (int i = 0; i < attrs.getLength(); i++) {
+                String attrUri = attrs.getURI(i);
+                if (attrUri != null
+                    && !attrUri.equals("")
+                    && !attrUri.equals(uri)) {
+                    continue; // Ignore attributes from unknown uris
+                }
                 String name = attrs.getLocalName(i);
                 String value = attrs.getValue(i);
                 // PR: Hack for ant-type value
diff --git a/src/main/org/apache/tools/ant/launch/LaunchException.java b/src/main/org/apache/tools/ant/launch/LaunchException.java
new file mode 100644
index 0000000..4ca8a27
--- /dev/null
+++ b/src/main/org/apache/tools/ant/launch/LaunchException.java
@@ -0,0 +1,77 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowlegement:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software
+ *    Foundation" must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ *    nor may "Apache" appear in their names without prior written
+ *    permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.tools.ant.launch;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+/**
+ * Signals an error condition during launching
+ *
+ * @author Conro MacNeill
+ * @since Ant 1.6
+ */
+public class LaunchException extends Exception {
+
+    /**
+     * Constructs an exception with the given descriptive message.
+     *
+     * @param message A description of or information about the exception.
+     *            Should not be <code>null</code>.
+     */
+    public LaunchException(String message) {
+        super(message);
+    }
+
+}
diff --git a/src/main/org/apache/tools/ant/launch/Launcher.java b/src/main/org/apache/tools/ant/launch/Launcher.java
index 4dc5eaa..b23fe1d 100644
--- a/src/main/org/apache/tools/ant/launch/Launcher.java
+++ b/src/main/org/apache/tools/ant/launch/Launcher.java
@@ -57,6 +57,11 @@
 import java.net.URLClassLoader;
 import java.net.MalformedURLException;
 import java.io.File;
+import java.util.StringTokenizer;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
 
 /**
  *  This is a launcher for Ant.
@@ -83,6 +88,8 @@
         try {
             Launcher launcher = new Launcher();
             launcher.run(args);
+        } catch (LaunchException e) {
+            System.err.println(e.getMessage());
         } catch (Throwable t) {
             t.printStackTrace();
         }
@@ -97,7 +104,7 @@
      * @exception MalformedURLException if the URLs required for the classloader
      *            cannot be created.
      */
-    private void run(String[] args) throws MalformedURLException {
+    private void run(String[] args) throws LaunchException, MalformedURLException {
         String antHomeProperty = System.getProperty(ANTHOME_PROPERTY);
         File antHome = null;
 
@@ -114,10 +121,51 @@
         }
 
         if (!antHome.exists()) {
-            throw new IllegalStateException("Ant home is set incorrectly or "
+            throw new LaunchException("Ant home is set incorrectly or "
                 + "ant could not be located");
         }
 
+        List libPaths = new ArrayList();
+        List argList = new ArrayList();
+        String[] newArgs;
+
+        for (int i = 0; i < args.length; ++i) {
+            if (args[i].equals("-lib")) {
+                if (i == args.length - 1) {
+                    throw new LaunchException("The -lib argument must "
+                        + "be followed by a library location");
+                }
+                libPaths.add(args[++i]);
+            } else {
+                argList.add(args[i]);
+            }
+        }
+
+        if (libPaths.size() == 0) {
+            newArgs = args;
+        } else {
+            newArgs = (String[]) argList.toArray(new String[0]);
+        }
+
+        List libPathURLs = new ArrayList();
+        for (Iterator i = libPaths.iterator(); i.hasNext();) {
+            String libPath = (String) i.next();
+            StringTokenizer myTokenizer
+                = new StringTokenizer(libPath, System.getProperty("path.separator"));
+            while (myTokenizer.hasMoreElements()) {
+                File element = new File(myTokenizer.nextToken());
+                if (element.isDirectory()) {
+                    // add any jars in the directory
+                    URL[] dirURLs = Locator.getLocationURLs(element);
+                    for (int j = 0; j < dirURLs.length; ++j) {
+                        libPathURLs.add(dirURLs[j]);
+                    }
+                }
+                libPathURLs.add(element.toURL());
+            }
+        }
+
+        URL[] libJars = (URL[])libPathURLs.toArray(new URL[0]);
 
         // Now try and find JAVA_HOME
         File toolsJar = Locator.getToolsJar();
@@ -129,13 +177,14 @@
         URL[] userJars = Locator.getLocationURLs(userLibDir);
 
 
-        int numJars = userJars.length + systemJars.length;
+        int numJars = libJars.length + userJars.length + systemJars.length;
         if (toolsJar != null) {
             numJars++;
         }
         URL[] jars = new URL[numJars];
-        System.arraycopy(userJars, 0, jars, 0, userJars.length);
-        System.arraycopy(systemJars, 0, jars, userJars.length,
+        System.arraycopy(libJars, 0, jars, 0, libJars.length);
+        System.arraycopy(userJars, 0, jars, libJars.length, userJars.length);
+        System.arraycopy(systemJars, 0, jars, userJars.length + libJars.length,
             systemJars.length);
 
         if (toolsJar != null) {
@@ -146,6 +195,10 @@
         // now update the class.path property
         StringBuffer baseClassPath
             = new StringBuffer(System.getProperty("java.class.path"));
+        if (baseClassPath.charAt(baseClassPath.length() - 1)
+                == File.pathSeparatorChar) {
+            baseClassPath.setLength(baseClassPath.length() - 1);
+        }
 
         for (int i = 0; i < jars.length; ++i) {
             baseClassPath.append(File.pathSeparatorChar);
@@ -159,7 +212,7 @@
         try {
             Class mainClass = loader.loadClass(MAIN_CLASS);
             AntMain main = (AntMain) mainClass.newInstance();
-            main.startAnt(args, null, null);
+            main.startAnt(newArgs, null, null);
         } catch (Throwable t) {
             t.printStackTrace();
         }
diff --git a/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java b/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
index c03868e..ecd0745 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
@@ -571,6 +571,10 @@
     /**
      * The directory where the checked out files should be placed.
      *
+     * <p>Note that this is different from CVS's -d command line
+     * switch as Ant will never shorten pathnames to avoid empty
+     * directories.</p>
+     *
      * @param dest directory where the checked out files should be placed
      */
     public void setDest(File dest) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/Ant.java b/src/main/org/apache/tools/ant/taskdefs/Ant.java
index cd13ee5..0876f8e 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Ant.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Ant.java
@@ -378,7 +378,12 @@
                 }
             }
 
-            ProjectHelper.configureProject(newProject, new File(antFile));
+            try {
+                ProjectHelper.configureProject(newProject, new File(antFile));
+            } catch (BuildException ex) {
+                throw ProjectHelper.addLocationToBuildException(
+                    ex, getLocation());
+            }
 
             if (target == null) {
                 target = newProject.getDefaultTarget();
@@ -413,7 +418,10 @@
                 try {
                     log("Entering " + antFile + "...", Project.MSG_VERBOSE);
                     newProject.executeTarget(target);
-                } finally {
+                } catch (BuildException ex) {
+                    throw ProjectHelper.addLocationToBuildException(
+                        ex, getLocation());
+              } finally {
                     log("Exiting " + antFile + ".", Project.MSG_VERBOSE);
                 }
             }
@@ -450,10 +458,12 @@
         Set set = new HashSet();
         for (int i = properties.size() - 1; i >= 0; --i) {
             Property p = (Property) properties.get(i);
-            if (set.contains(p.getName())) {
-                properties.remove(i);
-            } else {
-                set.add(p.getName());
+            if (p.getName() != null && !p.getName().equals("")) {
+                if (set.contains(p.getName())) {
+                    properties.remove(i);
+                } else {
+                    set.add(p.getName());
+                }
             }
         }
         Enumeration e = properties.elements();
diff --git a/src/main/org/apache/tools/ant/taskdefs/AntlibDefinition.java b/src/main/org/apache/tools/ant/taskdefs/AntlibDefinition.java
index 538d708..acf3eb5 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AntlibDefinition.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AntlibDefinition.java
@@ -73,10 +73,11 @@
 
     /**
      * The URI for this definition.
-     * If the URI is "ant:core", the uri will be set to "". (This
-     * is the default uri).
-     * URIs that start with "ant:" and are not
-     * "ant:core" are reserved and are not allowed in this context.
+     * If the URI is "antlib:org.apache.tools.ant",
+     * (this is the default uri)
+     * the uri will be set to "".
+     * URIs that start with "ant:" are reserved
+     * and are not allowed in this context.
      * @param uri the namespace URI
      * @throws BuildException if a reserved URI is used
      */
diff --git a/src/main/org/apache/tools/ant/taskdefs/Classloader.java b/src/main/org/apache/tools/ant/taskdefs/Classloader.java
deleted file mode 100644
index 009d66e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Classloader.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "Ant" and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.MagicNames;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.AntClassLoader;
-import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * EXPERIMENTAL
- * Create or modifies ClassLoader. The required pathRef parameter
- * will be used to add classpath elements.
- *
- * The classpath is a regular path. Currently only file components are
- * supported (future extensions may allow URLs).
- *
- * You can modify the core loader by not specifying any name or using
- * "ant.coreLoader". (the core loader is used to load system ant
- * tasks and for taskdefs that don't specify an explicit path).
- *
- * Taskdef and typedef can use the loader you create if the name follows
- * the "ant.loader.NAME" pattern. NAME will be used as a pathref when
- * calling taskdef.
- *
- * This tasks will not modify the core loader if "build.sysclasspath=only"
- *
- * The typical use is:
- * <pre>
- *  &lt;path id="ant.deps" &gt;
- *     &lt;fileset dir="myDir" &gt;
- *        &lt;include name="junit.jar, bsf.jar, js.jar, etc"/&gt;
- *     &lt;/fileset&gt;
- *  &lt;/path&gt;
- *
- *  &lt;classloader pathRef="ant.deps" /&gt;
- *
- * </pre>
- *
- * @author Costin Manolache
- */
-public class Classloader extends Task {
-    /** @see MagicNames#SYSTEM_LOADER_REF */
-    public static final String SYSTEM_LOADER_REF = MagicNames.SYSTEM_LOADER_REF;
-
-    private String name = null;
-    private Path classpath;
-    private boolean reset = false;
-    private boolean parentFirst = true;
-    private String parentName = null;
-
-    /**
-     * Default constructor
-     */
-    public Classloader() {
-    }
-
-    /** Name of the loader. If none, the default loader will be modified
-     *
-     * @param name the name of this loader
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Reset the classloader, if it already exists. A new loader will
-     * be created and all the references to the old one will be removed.
-     * (it is not possible to remove paths from a loader). The new
-     * path will be used.
-     *
-     * @param b true if the loader is to be reset.
-     */
-    public void setReset(boolean b) {
-        this.reset = b;
-    }
-
-    public void setReverse(boolean b) {
-        this.parentFirst = !b;
-    }
-
-    public void setParentFirst(boolean b) {
-        this.parentFirst = b;
-    }
-
-    // TODO: add exceptions for delegation or reverse
-
-    // TODO
-    public void setParentName(String name) {
-        this.parentName = name;
-    }
-
-
-    /** Specify which path will be used. If the loader already exists
-     *  and is an AntClassLoader (or any other loader we can extend),
-     *  the path will be added to the loader.
-     */
-    public void setClasspathRef(Reference pathRef) throws BuildException {
-        classpath = (Path) pathRef.getReferencedObject(getProject());
-    }
-
-    /**
-     * Set the classpath to be used when searching for component being defined
-     *
-     * @param classpath an Ant Path object containing the classpath.
-     */
-    public void setClasspath(Path classpath) {
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-
-    public Path createClasspath() {
-        if (this.classpath == null) {
-            this.classpath = new Path(null);
-        }
-        return this.classpath.createPath();
-    }
-
-
-    public void execute() {
-        try {
-            // Gump friendly - don't mess with the core loader if only classpath
-            if ("only".equals(getProject().getProperty("build.sysclasspath"))
-                && (name == null || SYSTEM_LOADER_REF.equals(name))) {
-                log("Changing the system loader is disabled "
-                    + "by build.sysclasspath=only", Project.MSG_WARN);
-                return;
-            }
-
-            String loaderName = (name == null) ? SYSTEM_LOADER_REF : name;
-
-            Object obj = getProject().getReference(loaderName);
-            if (reset) {
-                // Are any other references held ? Can we 'close' the loader
-                // so it removes the locks on jars ?
-                obj = null; // a new one will be created.
-            }
-
-            // XXX maybe use reflection to addPathElement (other patterns ?)
-            if (obj != null && !(obj instanceof AntClassLoader)) {
-                log("Referenced object is not an AntClassLoader",
-                        Project.MSG_ERR);
-                return;
-            }
-
-            AntClassLoader acl = (AntClassLoader) obj;
-
-            if (acl == null) {
-                // Construct a new class loader
-                Object parent = null;
-                if (parentName != null) {
-                    parent = getProject().getReference(parentName);
-                    if (!(parent instanceof ClassLoader)) {
-                        parent = null;
-                    }
-                }
-                // TODO: allow user to request the system or no parent
-                if (parent == null) {
-                    parent = this.getClass().getClassLoader();
-                }
-
-                if (name == null) {
-                    // The core loader must be reverse
-                    //reverse=true;
-                }
-                getProject().log("Setting parent loader " + name + " "
-                    + parent + " " + parentFirst, Project.MSG_DEBUG);
-
-                // The param is "parentFirst"
-                acl = new AntClassLoader((ClassLoader) parent,
-                         getProject(), classpath, parentFirst);
-
-                getProject().addReference(loaderName, acl);
-
-                if (name == null) {
-                    // This allows the core loader to load optional tasks
-                    // without delegating
-                    acl.addLoaderPackageRoot("org.apache.tools.ant.taskdefs.optional");
-                    getProject().setCoreLoader(acl);
-                }
-            }
-            if (classpath != null) {
-                String[] list = classpath.list();
-                for (int i = 0; i < list.length; i++) {
-                    File f = new File(list[i]);
-                    if (f.exists()) {
-                        acl.addPathElement(f.getAbsolutePath());
-                        log("Adding to class loader " +  acl + " " + f.getAbsolutePath(),
-                                Project.MSG_DEBUG);
-                    }
-                }
-            }
-
-            // XXX add exceptions
-
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Concat.java b/src/main/org/apache/tools/ant/taskdefs/Concat.java
index 75ea541..e41e304 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Concat.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Concat.java
@@ -73,6 +73,7 @@
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.ProjectComponent;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.filters.util.ChainReaderHelper;
 import org.apache.tools.ant.types.FileList;
@@ -573,7 +574,7 @@
     /**
      * sub element points to a file or contains text
      */
-    public static class TextElement {
+    public static class TextElement extends ProjectComponent {
         private String   value = "";
         private boolean  trimLeading = false;
         private boolean  trim = false;
@@ -645,7 +646,7 @@
          * @param value the text to place inline
          */
         public void addText(String value) {
-            this.value += value;
+            this.value += getProject().replaceProperties(value);
         }
 
         /**
diff --git a/src/main/org/apache/tools/ant/taskdefs/Definer.java b/src/main/org/apache/tools/ant/taskdefs/Definer.java
index ab16a16..ec19b20 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Definer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Definer.java
@@ -60,6 +60,7 @@
 import java.net.URL;
 import java.util.Enumeration;
 import java.util.Locale;
+import java.util.NoSuchElementException;
 import java.util.Properties;
 
 import org.apache.tools.ant.AntTypeDefinition;
@@ -217,26 +218,41 @@
                     + "together with file or resource.";
                 throw new BuildException(msg, getLocation());
             }
-            URL url = null;
+            Enumeration/*<URL>*/ urls = null;
             if (file != null) {
-                url = fileToURL();
-            }
-            if (resource != null) {
-                url = resourceToURL(al);
-            }
-
-            if (url == null) {
-                return;
-            }
-
-            if (url.toString().toLowerCase(Locale.US).endsWith(".xml")) {
-                format = Format.XML;
-            }
-
-            if (format == Format.PROPERTIES) {
-                loadProperties(al, url);
+                final URL url = fileToURL();
+                urls = new Enumeration() {
+                    private boolean more = true;
+                    public boolean hasMoreElements() {
+                        return more;
+                    }
+                    public Object nextElement() throws NoSuchElementException {
+                        if (more) {
+                            more = false;
+                            return url;
+                        } else {
+                            throw new NoSuchElementException();
+                        }
+                    }
+                };
             } else {
-                loadAntlib(al, url);
+                urls = resourceToURLs(al);
+            }
+
+            while (urls.hasMoreElements()) {
+                URL url = (URL) urls.nextElement();
+
+                int format = this.format;
+                if (url.toString().toLowerCase(Locale.US).endsWith(".xml")) {
+                    format = Format.XML;
+                }
+
+                if (format == Format.PROPERTIES) {
+                    loadProperties(al, url);
+                    break;
+                } else {
+                    loadAntlib(al, url);
+                }
             }
         }
     }
@@ -259,9 +275,16 @@
         }
     }
 
-    private URL resourceToURL(ClassLoader classLoader) {
-        URL ret = classLoader.getResource(resource);
-        if (ret == null) {
+    private Enumeration/*<URL>*/ resourceToURLs(ClassLoader classLoader) {
+        Enumeration ret;
+        try {
+            ret = classLoader.getResources(resource);
+        } catch (IOException e) {
+            throw new BuildException(
+                "Could not fetch resources named " + resource,
+                e, getLocation());
+        }
+        if (!ret.hasMoreElements()) {
             if (onError != OnError.IGNORE) {
                 log("Could not load definitions from resource "
                     + resource + ". It could not be found.",
@@ -320,15 +343,8 @@
             antlib.setURI(getURI());
             antlib.perform();
         } catch (BuildException ex) {
-            Location exLocation = ex.getLocation();
-            if (exLocation == null) {
-                throw ex;
-            }
-            throw new BuildException(
-                "Error executing antlib"
-                + System.getProperty("line.separator")
-                + exLocation.toString()
-                + " " + ex.getMessage());
+            throw ProjectHelper.addLocationToBuildException(
+                ex, getLocation());
         }
     }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/Echo.java b/src/main/org/apache/tools/ant/taskdefs/Echo.java
index 97bc3ab..36301c9 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Echo.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Echo.java
@@ -116,6 +116,8 @@
 
     /**
      * File to write to.
+     * @param file the file to write to, if not set, echo to
+     *             standard output
      */
     public void setFile(File file) {
         this.file = file;
@@ -123,6 +125,8 @@
 
     /**
      * If true, append to existing file.
+     * @param append if true, append to existing file, default
+     *               is false.
      */
     public void setAppend(boolean append) {
         this.append = append;
@@ -130,6 +134,7 @@
 
     /**
      * Set a multiline message.
+     * @param msg the CDATA text to append to the output text
      */
     public void addText(String msg) {
         message += getProject().replaceProperties(msg);
@@ -146,6 +151,7 @@
      * </ul>
      * <p>The default is &quot;warning&quot; to ensure that messages are
      * displayed by default when using the -quiet command line option.</p>
+     * @param echoLevel the logging level
      */
     public void setLevel(EchoLevel echoLevel) {
         String option = echoLevel.getValue();
@@ -163,9 +169,13 @@
         }
     }
 
+    /**
+     * The enumerated values for the level attribute.
+     */
     public static class EchoLevel extends EnumeratedAttribute {
         /**
          * @see EnumeratedAttribute#getValues
+         * @return the strings allowed for the level attribute
          */
         public String[] getValues() {
             return new String[] {"error", "warning", "info",
diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecTask.java b/src/main/org/apache/tools/ant/taskdefs/ExecTask.java
index d6a0f40..e2ed90b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ExecTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ExecTask.java
@@ -56,11 +56,14 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Vector;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.types.Commandline;
 import org.apache.tools.ant.types.Environment;
+import org.apache.tools.ant.types.Path;
 import org.apache.tools.ant.util.FileUtils;
 
 /**
@@ -286,6 +289,16 @@
     }
 
     /**
+     * Indicates whether to attempt to resolve the executable to a
+     * file
+     *
+     * @since Ant 1.6
+     */
+    public boolean getResolveExecutable() {
+        return resolveExecutable;
+    }
+
+    /**
      * Add an environment variable to the launched process.
      *
      * @param var new environment variable
@@ -362,30 +375,62 @@
      * the full path - first try basedir, then the exec dir and then
      * fallback to the straight executable name (i.e. on ther path)
      *
+     * @param exec the name of the executable
+     * @param searchPath if true, the excutable will be looked up in
+     * the PATH environment and the absolute path is returned.
+     *
      * @return the executable as a full path if it can be determined.
+     *
+     * @since Ant 1.6
      */
-    private String resolveExecutable() {
+    protected String resolveExecutable(String exec, boolean searchPath) {
         if (!resolveExecutable) {
-            return executable;
+            return exec;
         }
 
         // try to find the executable
-        File executableFile = getProject().resolveFile(executable);
+        File executableFile = getProject().resolveFile(exec);
         if (executableFile.exists()) {
             return executableFile.getAbsolutePath();
         }
 
+        FileUtils fileUtils = FileUtils.newFileUtils();
         // now try to resolve against the dir if given
         if (dir != null) {
-            FileUtils fileUtils = FileUtils.newFileUtils();
-            executableFile = fileUtils.resolveFile(dir, executable);
+            executableFile = fileUtils.resolveFile(dir, exec);
             if (executableFile.exists()) {
                 return executableFile.getAbsolutePath();
             }
         }
 
         // couldn't find it - must be on path
-        return executable;
+        if (searchPath) {
+            Vector env = Execute.getProcEnvironment();
+            Enumeration e = env.elements();
+            Path p = null;
+            while (e.hasMoreElements()) {
+                String line = (String) e.nextElement();
+                if (line.startsWith("PATH=") || line.startsWith("Path=")) {
+                    p = new Path(getProject(), line.substring(5));
+                    break;
+                }
+            }
+
+            if (p != null) {
+                String[] dirs = p.list();
+                for (int i = 0; i < dirs.length; i++) {
+                    executableFile = fileUtils.resolveFile(new File(dirs[i]),
+                                                           exec);
+                    if (executableFile.exists()) {
+                        return executableFile.getAbsolutePath();
+                    }
+                }
+            }
+        }
+
+        // searchPath is false, or no PATH or not found - keep our
+        // fingers crossed.
+        return exec;
     }
 
     /**
@@ -400,7 +445,7 @@
      */
     public void execute() throws BuildException {
         File savedDir = dir; // possibly altered in prepareExec
-        cmdl.setExecutable(resolveExecutable());
+        cmdl.setExecutable(resolveExecutable(executable, false));
         checkConfiguration();
         if (isValidOs()) {
             try {
diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java
index 44f6e40..7794995 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Execute.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Execute.java
@@ -124,7 +124,7 @@
             // Ignore and keep trying
         }
 
-        if (Os.isFamily("mac")) {
+        if (Os.isFamily("mac") && !Os.isFamily("unix")) {
             // Mac
             shellLauncher = new MacCommandLauncher(new CommandLauncher());
         } else if (Os.isFamily("os/2")) {
@@ -621,6 +621,13 @@
      * @return the patched environment
      */
     private String[] patchEnvironment() {
+        // On OpenVMS Runtime#exec() doesn't support the environment array,
+        // so we only return the new values which then will be set in
+        // the generated DCL script, inheriting the parent process environment
+        if (Os.isFamily("openvms")) {
+                return env;
+        }
+
         Vector osEnv = (Vector) getProcEnvironment().clone();
         for (int i = 0; i < env.length; i++) {
             int pos = env[i].indexOf('=');
@@ -1119,7 +1126,7 @@
          */
         public Process exec(Project project, String[] cmd, String[] env)
             throws IOException {
-            String[] vmsCmd = {createCommandFile(cmd).getPath()};
+            String[] vmsCmd = {createCommandFile(cmd, env).getPath()};
             return super.exec(project, vmsCmd, env);
         }
 
@@ -1131,7 +1138,7 @@
          */
         public Process exec(Project project, String[] cmd, String[] env,
                             File workingDir) throws IOException {
-            String[] vmsCmd = {createCommandFile(cmd).getPath()};
+            String[] vmsCmd = {createCommandFile(cmd, env).getPath()};
             return super.exec(project, vmsCmd, env, workingDir);
         }
 
@@ -1139,17 +1146,34 @@
          * Writes the command into a temporary DCL script and returns the
          * corresponding File object.  The script will be deleted on exit.
          */
-        private File createCommandFile(String[] cmd) throws IOException {
+        private File createCommandFile(String[] cmd, String[] env)
+            throws IOException {
             File script = File.createTempFile("ANT", ".COM");
             script.deleteOnExit();
             PrintWriter out = null;
             try {
                 out = new PrintWriter(new FileWriter(script));
-                StringBuffer dclCmd = new StringBuffer("$");
-                for (int i = 0; i < cmd.length; i++) {
-                    dclCmd.append(' ').append(cmd[i]);
+
+                // add the environment as logicals to the DCL script
+                if (env != null) {
+                    int eqIndex;
+                    for (int i = 1; i < env.length ; i++) {
+                        eqIndex = env[i].indexOf('=');
+                        if (eqIndex != -1) {
+                            out.print("$ DEFINE/NOLOG ");
+                            out.print(env[i].substring(0, eqIndex));
+                            out.print(" \"");
+                            out.print(env[i].substring(eqIndex + 1));
+                            out.println('\"');
+                        }
+                    }
                 }
-                out.println(dclCmd.toString());
+
+                out.print("$ " + cmd[0]);
+                for (int i = 1; i < cmd.length ; i++) {
+                    out.println(" -");
+                    out.print(cmd[i]);
+                }
             } finally {
                 if (out != null) {
                     out.close();
diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java b/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java
index 78e94a4..df7d10a 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java
@@ -58,6 +58,7 @@
 import java.io.PrintStream;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import org.apache.tools.ant.AntClassLoader;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
@@ -159,6 +160,12 @@
                                          + classname);
             }
 
+            if ((main.getModifiers() & Modifier.STATIC) == 0) {
+                throw new BuildException("main() method in " + classname
+                    + " is not declared static");
+            }
+
+
             if (timeout == null) {
                 run();
             } else {
diff --git a/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java b/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
index 2386272..2e83dc5 100644
--- a/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
+++ b/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
@@ -404,6 +404,7 @@
             // Set up the output Writer
             try {
                 tmpFile = fileUtils.createTempFile("fixcrlf", "", null);
+                tmpFile.deleteOnExit();
                 Writer writer = (encoding == null) ? new FileWriter(tmpFile)
                     : new OutputStreamWriter(new FileOutputStream(tmpFile),
                                              encoding);
diff --git a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
index d569e55..f8a8492 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
@@ -55,17 +55,17 @@
 package org.apache.tools.ant.taskdefs;
 
 import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.ProjectHelper;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.ProjectHelper;
 import org.apache.tools.ant.Task;
+import org.apache.tools.ant.util.FileUtils;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.Vector;
 
 /**
- * <i>EXPERIMENTAL:</i> This task is experimental and may be under continual
- * change till Ant1.6 ships; it may even be omitted from the product.
  * <p>
  * Task to import another build file into the current project.
  * <p>
@@ -96,8 +96,20 @@
  */
 public class ImportTask extends Task {
     private String file;
+    private boolean optional;
+    private static final FileUtils FILE_UTILS = FileUtils.newFileUtils();
 
     /**
+     * sets the optional attribute
+     *
+     * @param optional if true ignore files that are not present,
+     *                 default is false
+     */
+    public void setOptional(boolean optional) {
+        this.optional = true;
+    }
+    
+    /**
      * the name of the file to import. How relative paths are resolved is still
      * in flux: use absolute paths for safety.
      * @param file the name of the file
@@ -138,22 +150,25 @@
         File buildFile = new File(getLocation().getFileName());
         buildFile = new File(buildFile.getAbsolutePath());
 
-        File buildFileParent = new File(buildFile.getParent());
-
         getProject().log("Importing file " + file + " from "
                          + buildFile.getAbsolutePath(), Project.MSG_VERBOSE);
 
         // Paths are relative to the build file they're imported from,
         // *not* the current directory (same as entity includes).
-        File importedFile = new File(file);
-        if (!importedFile.isAbsolute()) {
-            importedFile = new File(buildFileParent, file);
-        }
+
+        File buildFileParent = new File(buildFile.getParent());
+        File importedFile = FILE_UTILS.resolveFile(buildFileParent,  file);
 
         if (!importedFile.exists()) {
-                throw new BuildException(
-                    "Cannot find " + file + " imported from "
-                    + buildFile.getAbsolutePath());
+            String message =
+                "Cannot find " + file + " imported from "
+                + buildFile.getAbsolutePath();
+            if (optional) {
+                getProject().log(message, Project.MSG_VERBOSE);
+                return;
+            } else {
+                throw new BuildException(message);
+            }
         }
 
         importedFile = new File(getPath(importedFile));
@@ -165,7 +180,12 @@
             return;
         }
 
-        helper.parse(getProject(), importedFile);
+        try {
+            helper.parse(getProject(), importedFile);
+        } catch (BuildException ex) {
+            throw ProjectHelper.addLocationToBuildException(
+                ex, getLocation());
+        }
     }
 
     private static String getPath(File file) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/Input.java b/src/main/org/apache/tools/ant/taskdefs/Input.java
index 0997508..714d5dc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Input.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Input.java
@@ -142,6 +142,7 @@
             && getProject().getProperty(addproperty) != null) {
             log("skipping " + getTaskName() + " as property " + addproperty
                 + " has already been set.");
+            return;
         }
 
         InputRequest request = null;
@@ -164,4 +165,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Java.java b/src/main/org/apache/tools/ant/taskdefs/Java.java
index 7875bf0..9f947c0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Java.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Java.java
@@ -156,6 +156,10 @@
             throw new BuildException("You have used an attribute which is "
             + "not compatible with spawn");
         }
+        if (cmdl.getAssertions() != null && !fork) {
+            log("Assertion statements are currently ignored in non-forked mode");
+        }
+
         if (fork) {
             if (perm != null) {
                 log("Permissions can not be set this way in forked mode.", Project.MSG_WARN);
@@ -591,7 +595,10 @@
      * @since Ant 1.6
      * @param asserts assertion set
      */
-    public void setAssertions(Assertions asserts) {
+    public void addAssertions(Assertions asserts) {
+        if(cmdl.getAssertions() != null) {
+            throw new BuildException("Only one assertion declaration is allowed");
+        }
         cmdl.setAssertions(asserts);
     }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
index 8c266e5..14cf3db 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
@@ -1919,6 +1919,7 @@
             if (useExternalFile) {
                 if (tmpList == null) {
                     tmpList = fileUtils.createTempFile("javadoc", "", null);
+                    tmpList.deleteOnExit();
                     toExecute.createArgument()
                         .setValue("@" + tmpList.getAbsolutePath());
                 }
diff --git a/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java b/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java
index 5ddaf53..ef20d27 100644
--- a/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java
+++ b/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -140,10 +140,10 @@
         FileInputStream fis = null;
         BufferedInputStream bis = null;
         Reader instream = null;
+        ByteArrayInputStream tis = null;
 
         try {
             final long len = srcFile.length();
-            final int size = (int) len;
 
             //open up the file
             fis = new FileInputStream(srcFile);
@@ -155,7 +155,6 @@
             }
 
             ChainReaderHelper crh = new ChainReaderHelper();
-            crh.setBufferSize(size);
             crh.setPrimaryReader(instream);
             crh.setFilterChains(filterChains);
             crh.setProject(getProject());
@@ -168,7 +167,6 @@
                     text = text + "\n";
                 }
 
-                ByteArrayInputStream tis = null;
                 if (encoding == null) {
                     tis = new ByteArrayInputStream(text.getBytes());
                 } else {
@@ -176,16 +174,11 @@
                 }
                 final Properties props = new Properties();
                 props.load(tis);
-                final Enumeration e = props.keys();
-                while (e.hasMoreElements()) {
-                    final String key = (String) e.nextElement();
-                    final String value = props.getProperty(key);
-                    if (key != null && value != null
-                            && value.trim().length() > 0) {
-                        getProject().setNewProperty(key, value);
-                    }
-                }
-                tis.close();
+
+                Property propertyTask = 
+                    (Property) getProject().createTask("property");
+                propertyTask.setTaskName(getTaskName());
+                propertyTask.addProperties(props);
             }
 
         } catch (final IOException ioe) {
@@ -201,6 +194,13 @@
             } catch (IOException ioex) {
                 //ignore
             }
+            try {
+                if (tis != null) {
+                    tis.close();
+                }
+            } catch (IOException ioex) {
+                //ignore
+            }
         }
     }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
index 6dd19b6..0cada17 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
@@ -64,24 +64,22 @@
 import org.apache.tools.ant.ComponentHelper;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.ProjectHelper;
+import org.apache.tools.ant.RuntimeConfigurable;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.TaskContainer;
 import org.apache.tools.ant.UnknownElement;
 
-import org.apache.tools.ant.types.EnumeratedAttribute;
-
 /**
  * Describe class <code>MacroDef</code> here.
  *
  * @author Peter Reilly
  * @since Ant 1.6
  */
-public class MacroDef extends AntlibDefinition implements TaskContainer {
-    private UnknownElement nestedTask;
+public class MacroDef extends AntlibDefinition  {
+    private NestedSequential nestedSequential;
     private String     name;
     private List       attributes = new ArrayList();
-    private Map        elements = new HashMap();
-    private int        attributeStyle = AttributeStyle.ANT;
+    private Map        elements   = new HashMap();
 
     /**
      * Name of the definition
@@ -92,76 +90,81 @@
     }
 
     /**
-     * Enumerated type for attributeStyle attribute
+     * This is the sequential nested element of the macrodef.
      *
-     * @see EnumeratedAttribute
+     * @return a sequential element to be configured.
      */
-    public static class AttributeStyle extends EnumeratedAttribute {
-        /** Enumerated values */
-        public static final int ANT = 0, XPATH = 1;
+    public NestedSequential createSequential() {
+        if (this.nestedSequential != null) {
+            throw new BuildException("Only one sequential allowed");
+        }
+        this.nestedSequential = new NestedSequential();
+        return this.nestedSequential;
+    }
+
+    /**
+     * The class corresponding to the sequential nested element.
+     * This is a simple task container.
+     */
+    public static class NestedSequential implements TaskContainer {
+        private List nested = new ArrayList();
 
         /**
-         * get the values
-         * @return an array of the allowed values for this attribute.
+         * Add a task or type to the container.
+         *
+         * @param task an unknown element.
          */
-        public String[] getValues() {
-            return new String[] {"ant", "xpath"};
+        public void addTask(Task task) {
+            nested.add(task);
+        }
+
+        /**
+         * @return the list of unknown elements
+         */
+        public List getNested() {
+            return nested;
+        }
+
+        /**
+         * A compare function to compare this with another
+         * NestedSequential.
+         * It calls similar on the nested unknown elements.
+         *
+         * @param other the nested sequential to compare with.
+         * @return true if they are similar, false otherwise
+         */
+        public boolean similar(NestedSequential other) {
+            if (nested.size() != other.nested.size()) {
+                return false;
+            }
+            for (int i = 0; i < nested.size(); ++i) {
+                UnknownElement me = (UnknownElement) nested.get(i);
+                UnknownElement o = (UnknownElement) other.nested.get(i);
+                if (!me.similar(o)) {
+                    return false;
+                }
+            }
+            return true;
         }
     }
 
     /**
-     * <em>Experimental</em>
-     * I am uncertain at the moment how to encode attributes
-     * using ant style ${attribute} or xpath style @attribute.
-     * The first may get mixed up with ant properties and
-     * the second may get mixed up with xpath.
-     * The default at the moment is ant s
-     *
-     * @param style an <code>AttributeStyle</code> value
-     */
-    public void setAttributeStyle(AttributeStyle style) {
-        attributeStyle = style.getIndex();
-    }
-
-    /**
-     * <em>Experimental</em>
-     * @return the attribute style
-     */
-    public int getAttributeStyle() {
-        return attributeStyle;
-    }
-
-    /**
-     * Set the class loader.
-     * Not used
-     * @param classLoader a <code>ClassLoader</code> value
-     */
-    public void setAntlibClassLoader(ClassLoader classLoader) {
-        // Ignore
-    }
-
-    /**
-     * Add a nested task to ExtendType
-     * @param nestedTask  Nested task/type to extend
-     */
-    public void addTask(Task nestedTask) {
-        if (this.nestedTask != null) {
-            throw new BuildException("Only one sequential/Parallel allowed");
-        }
-        UnknownElement ue = (UnknownElement) nestedTask;
-        if (!ue.getNamespace().equals("")
-            || (!ue.getTag().equals("sequential")
-                && !ue.getTag().equals("parallel"))) {
-            throw new BuildException("Unsupported tag " + ue.getQName());
-        }
-        this.nestedTask = ue;
-    }
-
-    /**
-     * @return the nested task
+     * Convert the nested sequential to an unknown element
+     * @return the nested sequential as an unknown element.
      */
     public UnknownElement getNestedTask() {
-        return nestedTask;
+        UnknownElement ret = new UnknownElement("sequential");
+        ret.setTaskName("sequential");
+        ret.setNamespace("");
+        ret.setQName("sequential");
+        new RuntimeConfigurable(ret, "sequential");
+        for (int i = 0; i < nestedSequential.getNested().size(); ++i) {
+            UnknownElement e =
+                (UnknownElement) nestedSequential.getNested().get(i);
+            ret.addChild(e);
+            ret.getWrapper().addChild(e.getWrapper());
+        }
+        return ret;
     }
 
     /**
@@ -218,6 +221,14 @@
             throw new BuildException(
                 "the attribute nested element needed a \"name\" attribute");
         }
+        for (int i = 0; i < attributes.size(); ++i) {
+            if (((Attribute) attributes.get(i)).getName().equals(
+                    attribute.getName())) {
+                throw new BuildException(
+                    "the attribute " + attribute.getName()
+                    + " has already been specified");
+            }
+        }
         attributes.add(attribute);
     }
 
@@ -231,6 +242,11 @@
             throw new BuildException(
                 "the element nested element needed a \"name\" attribute");
         }
+        if (elements.get(element.getName()) != null) {
+            throw new BuildException(
+                "the element " + element.getName()
+                + " has already been specified");
+        }
         elements.put(element.getName(), element);
     }
 
@@ -239,8 +255,8 @@
      *
      */
     public void execute() {
-        if (nestedTask == null) {
-            throw new BuildException("Missing nested element");
+        if (nestedSequential == null) {
+            throw new BuildException("Missing sequential element");
         }
         if (name == null) {
             throw new BuildException("Name not specified");
@@ -319,19 +335,28 @@
             }
             Attribute other = (Attribute) obj;
             if (name == null) {
-                return other.name == null;
-            }
-            if (!name.equals(other.name)) {
+                if (other.name != null) {
+                    return false;
+                }
+            } else if (!name.equals(other.name)) {
                 return false;
             }
             if (defaultValue == null) {
-                return other.defaultValue == null;
-            }
-            if (!name.equals(other.defaultValue)) {
+                if (other.defaultValue != null) {
+                    return false;
+                }
+            } else if (!defaultValue.equals(other.defaultValue)) {
                 return false;
             }
             return true;
         }
+
+        /**
+         * @return a hash code value for this object.
+         */
+        public int hashCode() {
+            return objectHashCode(defaultValue) + objectHashCode(name);
+        }
     }
 
     /**
@@ -393,13 +418,21 @@
             }
             TemplateElement other = (TemplateElement) obj;
             if (name == null) {
-                return other.name == null;
-            }
-            if (!name.equals(other.name)) {
+                if (other.name != null) {
+                    return false;
+                }
+            } else if (!name.equals(other.name)) {
                 return false;
             }
             return optional == other.optional;
         }
+
+        /**
+         * @return a hash code value for this object.
+         */
+        public int hashCode() {
+            return objectHashCode(name) + (optional ? 1 : 0);
+        }
     }
 
     /**
@@ -435,10 +468,7 @@
             }
         }
 
-        if (attributeStyle != other.attributeStyle) {
-            return false;
-        }
-        if (!nestedTask.similar(other.nestedTask)) {
+        if (!nestedSequential.similar(other.nestedSequential)) {
             return false;
         }
         if (!attributes.equals(other.attributes)) {
@@ -451,6 +481,17 @@
     }
 
     /**
+     * @return a hash code value for this object.
+     */
+    public int hashCode() {
+        return objectHashCode(name)
+            + objectHashCode(getURI())
+            + objectHashCode(nestedSequential)
+            + objectHashCode(attributes)
+            + objectHashCode(elements);
+    }
+
+    /**
      * extends AntTypeDefinition, on create
      * of the object, the template macro definition
      * is given.
@@ -513,4 +554,12 @@
             return macroDef.equals(otherDef.macroDef);
         }
     }
+
+    private static int objectHashCode(Object o) {
+        if (o == null) {
+            return 0;
+        } else {
+            return o.hashCode();
+        }
+    }
 }
diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
index 326067c..a71cb45 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
@@ -66,10 +66,12 @@
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DynamicConfigurator;
+import org.apache.tools.ant.ProjectHelper;
+import org.apache.tools.ant.RuntimeConfigurable;
+import org.apache.tools.ant.Target;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.TaskContainer;
 import org.apache.tools.ant.UnknownElement;
-import org.apache.tools.ant.RuntimeConfigurable;
 
 /**
  * The class to be placed in the ant type definition.
@@ -82,7 +84,8 @@
 public class MacroInstance extends Task implements DynamicConfigurator {
     private MacroDef macroDef;
     private Map      map = new HashMap();
-    private Map      elements = new HashMap();
+    private Map      nsElements = null;
+    private Map      presentElements = new HashMap();
     private Hashtable localProperties = new Hashtable();
 
     /**
@@ -90,7 +93,7 @@
      *
      * @param macroDef a <code>MacroDef</code> value
      */
-    protected void setMacroDef(MacroDef macroDef) {
+    public void setMacroDef(MacroDef macroDef) {
         this.macroDef = macroDef;
     }
 
@@ -112,17 +115,33 @@
      *                        has already been seen
      */
     public Object createDynamicElement(String name) throws BuildException {
-        if (macroDef.getElements().get(name) == null) {
+        if (getNsElements().get(name) == null) {
             throw new BuildException("unsupported element " + name);
         }
-        if (elements.get(name) != null) {
+        if (presentElements.get(name) != null) {
             throw new BuildException("Element " + name + " already present");
         }
         Element ret = new Element();
-        elements.put(name, ret);
+        presentElements.put(name, ret);
         return ret;
     }
 
+    private Map getNsElements() {
+        if (nsElements == null) {
+            nsElements = new HashMap();
+            String myUri = ProjectHelper.extractUriFromComponentName(
+                getTaskType());
+            for (Iterator i = macroDef.getElements().entrySet().iterator();
+                 i.hasNext();) {
+                Map.Entry entry = (Map.Entry) i.next();
+                nsElements.put(ProjectHelper.genComponentName(
+                                   myUri, (String) entry.getKey()),
+                               entry.getValue());
+            }
+        }
+        return nsElements;
+    }
+
     /**
      * Embedded element in macro instance
      */
@@ -146,92 +165,89 @@
         }
     }
 
-    private String macroSubsAnt(String s, Map macroMapping) {
+    private static final int STATE_NORMAL         = 0;
+    private static final int STATE_EXPECT_BRACKET = 1;
+    private static final int STATE_EXPECT_NAME    = 2;
+    private static final int STATE_EXPECT_EXCAPE  = 3;
+
+    private String macroSubs(String s, Map macroMapping) {
+        if (s == null) {
+            return null;
+        }
         StringBuffer ret = new StringBuffer();
-        StringBuffer macroName = new StringBuffer();
+        StringBuffer macroName = null;
         boolean inMacro = false;
+        int state = STATE_NORMAL;
         for (int i = 0; i < s.length(); ++i) {
-            if (s.charAt(i) == '$') {
-                inMacro = true;
-            } else {
-                if (inMacro) {
-                    if (s.charAt(i) == '{') {
-                        continue;
-                    } else if (s.charAt(i) == '}') {
+            char ch = s.charAt(i);
+            switch (state) {
+                case STATE_NORMAL:
+                    if (ch == '@') {
+                        state = STATE_EXPECT_BRACKET;
+                    } else {
+                        ret.append(ch);
+                    }
+                    break;
+                case STATE_EXPECT_BRACKET:
+                    if (ch == '{') {
+                        state = STATE_EXPECT_NAME;
+                        macroName = new StringBuffer();
+                    } else if (ch == '@') {
+                        state = STATE_EXPECT_EXCAPE;
+                    } else {
+                        state = STATE_NORMAL;
+                        ret.append('@');
+                        ret.append(ch);
+                    }
+                    break;
+                case STATE_EXPECT_NAME:
+                    if (ch == '}') {
+                        state = STATE_NORMAL;
                         String name = macroName.toString();
                         String value = (String) macroMapping.get(name);
                         if (value == null) {
-                            ret.append("${" + name + "}");
+                            ret.append("@{" + name + "}");
                         } else {
                             ret.append(value);
                         }
-                        macroName = new StringBuffer();
-                        inMacro = false;
+                        macroName = null;
                     } else {
-                        macroName.append(s.charAt(i));
+                        macroName.append(ch);
                     }
-                } else {
-                    ret.append(s.charAt(i));
-                }
+                    break;
+                case STATE_EXPECT_EXCAPE:
+                    state = STATE_NORMAL;
+                    if (ch == '{') {
+                        ret.append("@");
+                    } else {
+                        ret.append("@@");
+                    }
+                    ret.append(ch);
+                    break;
+                default:
+                    break;
             }
         }
+        switch (state) {
+            case STATE_NORMAL:
+                break;
+            case STATE_EXPECT_BRACKET:
+                ret.append('@');
+                break;
+            case STATE_EXPECT_NAME:
+                ret.append("@{");
+                ret.append(macroName.toString());
+                break;
+            case STATE_EXPECT_EXCAPE:
+                ret.append("@@");
+                break;
+            default:
+                break;
+        }
 
         return ret.toString();
     }
 
-    private String macroSubsXPath(String s, Map macroMapping) {
-        StringBuffer ret = new StringBuffer();
-        StringBuffer macroName = new StringBuffer();
-        boolean inMacro = false;
-        for (int i = 0; i < s.length(); ++i) {
-            char c = s.charAt(i);
-            if (!inMacro) {
-                if (c == '@') {
-                    inMacro = true;
-                } else {
-                    ret.append(c);
-                }
-            } else {
-                if (MacroDef.isValidNameCharacter(c)) {
-                    macroName.append(c);
-                } else {
-                    inMacro = false;
-                    String name = macroName.toString();
-                    String value = (String) macroMapping.get(name);
-                    if (value == null) {
-                        ret.append("@" + name);
-                    } else {
-                        ret.append(value);
-                    }
-                    if (c == '@') {
-                        inMacro = true;
-                    } else {
-                        ret.append(c);
-                    }
-                    macroName = new StringBuffer();
-                }
-            }
-        }
-        if (inMacro) {
-            String name = macroName.toString();
-            String value = (String) macroMapping.get(name);
-            if (value == null) {
-                ret.append("@" + name);
-            } else {
-                ret.append(value);
-            }
-        }
-        return ret.toString();
-    }
-
-    private String macroSubs(String s, Map macroMapping) {
-        if (macroDef.getAttributeStyle() == MacroDef.AttributeStyle.ANT) {
-            return macroSubsAnt(s, macroMapping);
-        } else {
-            return macroSubsXPath(s, macroMapping);
-        }
-    }
-
     private UnknownElement copy(UnknownElement ue) {
         UnknownElement ret = new UnknownElement(ue.getTag());
         ret.setNamespace(ue.getNamespace());
@@ -239,7 +255,13 @@
         ret.setQName(ue.getQName());
         ret.setTaskName(ue.getTaskName());
         ret.setLocation(ue.getLocation());
-        ret.setOwningTarget(getOwningTarget());
+        if (getOwningTarget() == null) {
+            Target t = new Target();
+            t.setProject(getProject());
+            ret.setOwningTarget(t);
+        } else {
+            ret.setOwningTarget(getOwningTarget());
+        }
         RuntimeConfigurable rc = new RuntimeConfigurable(
             ret, ue.getTaskName());
         rc.setPolyType(ue.getWrapper().getPolyType());
@@ -257,15 +279,15 @@
         while (e.hasMoreElements()) {
             RuntimeConfigurable r = (RuntimeConfigurable) e.nextElement();
             UnknownElement unknownElement = (UnknownElement) r.getProxy();
-            String tag = unknownElement.getTag();
+            String tag = unknownElement.getTaskType();
             MacroDef.TemplateElement templateElement =
-                (MacroDef.TemplateElement) macroDef.getElements().get(tag);
+                (MacroDef.TemplateElement) getNsElements().get(tag);
             if (templateElement == null) {
                 UnknownElement child = copy(unknownElement);
                 rc.addChild(child.getWrapper());
                 ret.addChild(child);
             } else {
-                Element element = (Element) elements.get(tag);
+                Element element = (Element) presentElements.get(tag);
                 if (element == null) {
                     if (!templateElement.isOptional()) {
                         throw new BuildException(
@@ -294,12 +316,12 @@
     public void execute() {
         localProperties = new Hashtable();
         Set copyKeys = new HashSet(map.keySet());
-        for (int i = 0; i < macroDef.getAttributes().size(); ++i) {
-            MacroDef.Attribute attribute =
-                (MacroDef.Attribute) macroDef.getAttributes().get(i);
+        for (Iterator i = macroDef.getAttributes().iterator(); i.hasNext();) {
+            MacroDef.Attribute attribute = (MacroDef.Attribute) i.next();
             String value = (String) map.get(attribute.getName());
             if (value == null) {
                 value = attribute.getDefault();
+                value = macroSubs(value, localProperties);
             }
             if (value == null) {
                 throw new BuildException(
@@ -308,6 +330,9 @@
             localProperties.put(attribute.getName(), value);
             copyKeys.remove(attribute.getName());
         }
+        if (copyKeys.contains("id")) {
+            copyKeys.remove("id");
+        }
         if (copyKeys.size() != 0) {
             throw new BuildException(
                 "Unknown attribute" + (copyKeys.size() > 1 ? "s " : " ")
@@ -317,6 +342,11 @@
         // need to set the project on unknown element
         UnknownElement c = copy(macroDef.getNestedTask());
         c.init();
-        c.perform();
+        try {
+            c.perform();
+        } catch (BuildException ex) {
+            throw ProjectHelper.addLocationToBuildException(
+                ex, getLocation());
+        }
     }
 }
diff --git a/src/main/org/apache/tools/ant/taskdefs/Manifest.java b/src/main/org/apache/tools/ant/taskdefs/Manifest.java
index 49957f8..a4ec215 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Manifest.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Manifest.java
@@ -619,6 +619,10 @@
                     if (classpathAttribute == null) {
                         storeAttribute(attribute);
                     } else {
+                        warnings.addElement("Multiple Class-Path attributes "
+                            + "are supported but violate the Jar "
+                            + "specification and may not be correctly "
+                            + "processed in all environments");
                         Enumeration e = attribute.getValues();
                         while (e.hasMoreElements()) {
                             String value = (String) e.nextElement();
diff --git a/src/main/org/apache/tools/ant/taskdefs/PreSetDef.java b/src/main/org/apache/tools/ant/taskdefs/PreSetDef.java
index b43860c..19a8d0c 100644
--- a/src/main/org/apache/tools/ant/taskdefs/PreSetDef.java
+++ b/src/main/org/apache/tools/ant/taskdefs/PreSetDef.java
@@ -77,10 +77,9 @@
  * @author Peter Reilly
  * @since Ant 1.6
  */
-public class PreSetDef extends Task implements AntlibInterface, TaskContainer {
+public class PreSetDef extends AntlibDefinition implements TaskContainer {
     private UnknownElement nestedTask;
     private String         name;
-    private String         uri;
 
     /**
      * Name of the definition
@@ -89,29 +88,6 @@
      public void setName(String name) {
         this.name = name;
     }
-    /**
-     * The URI for this definition.
-     * @param uri the namespace URI
-     * @throws BuildException if uri is not allowed
-     */
-    public void setURI(String uri) throws BuildException {
-        if (uri.equals(ProjectHelper.ANT_CORE_URI)) {
-            uri = "";
-        }
-        if (uri.startsWith("ant:")) {
-            throw new BuildException("Attempt to use a reserved URI " + uri);
-        }
-        this.uri = uri;
-    }
-    /**
-     * Set the class loader.
-     * Not used
-     * @param classLoader a <code>ClassLoader</code> value
-     */
-    public void setAntlibClassLoader(ClassLoader classLoader) {
-        // Ignore
-    }
-
 
     /**
      * Add a nested task to predefine attributes and elements on
@@ -140,7 +116,7 @@
             throw new BuildException("Name not specified");
         }
 
-        name = ProjectHelper.genComponentName(uri, name);
+        name = ProjectHelper.genComponentName(getURI(), name);
 
         ComponentHelper helper = ComponentHelper.getComponentHelper(
             getProject());
@@ -154,26 +130,52 @@
                 "Unable to find typedef " + componentName);
         }
 
-        MyAntTypeDefinition newDef = new MyAntTypeDefinition(def, nestedTask);
+        PreSetDefinition newDef = new PreSetDefinition(def, nestedTask);
 
         newDef.setName(name);
 
         helper.addDataTypeDefinition(newDef);
     }
 
-    private static class MyAntTypeDefinition extends AntTypeDefinition {
+    /**
+     * This class contains the unknown element and the object
+     * that is predefined.
+     * @see AntTypeDefinition
+     */
+    public static class PreSetDefinition extends AntTypeDefinition {
         private AntTypeDefinition parent;
         private UnknownElement    element;
 
-        public MyAntTypeDefinition(AntTypeDefinition parent, UnknownElement el) {
+        /**
+         * Creates a new <code>PresetDefinition</code> instance.
+         *
+         * @param parent The parent of this predefintion.
+         * @param el     The predefined attributes, nested elements and text.
+         */
+        public PreSetDefinition(AntTypeDefinition parent, UnknownElement el) {
+            if (parent instanceof PreSetDefinition) {
+                PreSetDefinition p = (PreSetDefinition) parent;
+                el.applyPreSet(p.element);
+                parent = p.parent;
+            }
             this.parent = parent;
             this.element = el;
         }
 
+        /**
+         * Override so that it is not allowed
+         *
+         * @param clazz a <code>Class</code> value
+         */
         public void setClass(Class clazz) {
             throw new BuildException("Not supported");
         }
 
+        /**
+         * Override so that it is not allowed
+         *
+         * @param className a <code>String</code> value
+         */
         public void setClassName(String className) {
             throw new BuildException("Not supported");
         }
@@ -224,6 +226,7 @@
 
         /**
          * get the exposed class for this definition.
+         * @param project the current project
          * @return the exposed class
          */
         public Class getExposedClass(Project project) {
@@ -251,19 +254,38 @@
         /**
          * create an instance of the definition.
          * The instance may be wrapped in a proxy class.
+         * This is a special version of create for IH and UE.
          * @param project the current project
          * @return the created object
          */
-        public Object create(Project project) {
+        public Object createObject(Project project) {
             Object o = parent.create(project);
             if (o == null) {
                 return null;
             }
-            element.configure(o);
             return o;
         }
 
         /**
+         * @return the predefined attributes, elements and text as
+         *         a UnknownElement
+         */
+        public UnknownElement getPreSets() {
+            return element;
+        }
+
+        /**
+         * Fake create an object, used by IH and UE to see that
+         * this is a predefined object.
+         *
+         * @param project the current project
+         * @return this object
+         */
+        public Object create(Project project) {
+            return this;
+        }
+
+        /**
          * Equality method for this definition
          *
          * @param other another definition
@@ -277,7 +299,7 @@
             if (other.getClass() != getClass()) {
                 return false;
             }
-            MyAntTypeDefinition otherDef = (MyAntTypeDefinition) other;
+            PreSetDefinition otherDef = (PreSetDefinition) other;
             if (!parent.sameDefinition(otherDef.parent, project)) {
                 return false;
             }
@@ -302,7 +324,7 @@
             if (!other.getClass().getName().equals(getClass().getName())) {
                 return false;
             }
-            MyAntTypeDefinition otherDef = (MyAntTypeDefinition) other;
+            PreSetDefinition otherDef = (PreSetDefinition) other;
             if (!parent.similarDefinition(otherDef.parent, project)) {
                 return false;
             }
diff --git a/src/main/org/apache/tools/ant/taskdefs/ProcessDestroyer.java b/src/main/org/apache/tools/ant/taskdefs/ProcessDestroyer.java
index c3ff0bc..8a59902 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ProcessDestroyer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ProcessDestroyer.java
@@ -116,8 +116,10 @@
             removeShutdownHookMethod =
                 Runtime.class.getMethod("removeShutdownHook", paramTypes);
             // wait to add shutdown hook as needed
-        } catch (Exception e) {
+        } catch (NoSuchMethodException e) {
             // it just won't be added as a shutdown hook... :(
+        } catch (Exception e) {
+            e.printStackTrace();
         }
     }
 
@@ -133,9 +135,9 @@
                 addShutdownHookMethod.invoke(Runtime.getRuntime(), args);
                 added = true;
             } catch (IllegalAccessException e) {
-                // it just won't be added as a shutdown hook... :(
+                e.printStackTrace();
             } catch (InvocationTargetException e) {
-                // it just won't be added as a shutdown hook... :(
+                e.printStackTrace();
             }
         }
     }
@@ -157,6 +159,7 @@
                 }
                 // start the hook thread, a unstarted thread may not be
                 // eligible for garbage collection
+                // Cf.: http://developer.java.sun.com/developer/bugParade/bugs/4533087.html
                 destroyProcessThread.setShouldDestroy(false);
                 destroyProcessThread.start();
                 // this should return quickly, since Process.destroy()
@@ -169,7 +172,9 @@
                 destroyProcessThread = null;
                 added = false;
             } catch (IllegalAccessException e) {
+                e.printStackTrace();
             } catch (InvocationTargetException e) {
+                e.printStackTrace();
             }
         }
     }
diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java
index 8d23d91..048a4dd 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Replace.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java
@@ -399,6 +399,7 @@
 
         File temp = fileUtils.createTempFile("rep", ".tmp",
                                              fileUtils.getParentFile(src));
+        temp.deleteOnExit();
 
         Reader reader = null;
         Writer writer = null;
diff --git a/src/main/org/apache/tools/ant/taskdefs/SubAnt.java b/src/main/org/apache/tools/ant/taskdefs/SubAnt.java
index a5faa0b..7f1338f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/SubAnt.java
+++ b/src/main/org/apache/tools/ant/taskdefs/SubAnt.java
@@ -72,9 +72,6 @@
 
 
 /**
- * <i>EXPERIMENTAL:</i> This task is experimental and may be under continual
- * change till Ant1.6 ships; it may even be omitted from the product.
- * <p>
  * Calls a given target for all defined sub-builds. This is an extension
  * of ant for bulk project execution.
  * <p>
diff --git a/src/main/org/apache/tools/ant/taskdefs/Zip.java b/src/main/org/apache/tools/ant/taskdefs/Zip.java
index 8eefd3e..56120ad 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Zip.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Zip.java
@@ -416,15 +416,20 @@
                 renamedFile =
                     fileUtils.createTempFile("zip", ".tmp",
                                              fileUtils.getParentFile(zipFile));
+                renamedFile.deleteOnExit();
 
                 try {
                     fileUtils.rename(zipFile, renamedFile);
                 } catch (SecurityException e) {
-                    throw new BuildException("Not allowed to rename old file "
-                                             + "to temporary file");
+                    throw new BuildException(
+                        "Not allowed to rename old file ("
+                        + zipFile.getAbsolutePath()
+                        + ") to temporary file");
                 } catch (IOException e) {
-                    throw new BuildException("Unable to rename old file "
-                                             + "to temporary file");
+                    throw new BuildException(
+                        "Unable to rename old file ("
+                        + zipFile.getAbsolutePath()
+                        + ") to temporary file");
                 }
             }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
index 6dd3e08..83c1741 100644
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
@@ -445,6 +445,7 @@
                         userDir = new File(userDirName);
                     }
                     tmpFile = fileUtils.createTempFile("files", "", userDir);
+                    tmpFile.deleteOnExit();
                     out = new PrintWriter(new FileWriter(tmpFile));
                     for (int i = firstFileName; i < args.length; i++) {
                         if (quoteFiles && args[i].indexOf(" ") > -1) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java
index 4b2c983..4f63cc5 100644
--- a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java
+++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java
@@ -62,6 +62,8 @@
 import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
 import java.util.Vector;
+import java.util.StringTokenizer;
+
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.AbstractCvsTask;
@@ -113,7 +115,11 @@
     /**
      * Token to identify a new file in the rdiff log
      */
-    static final String FILE_IS_NEW = " is new; current revision ";
+    static final String FILE_IS_NEW = " is new;";
+    /**
+     * Token to identify the revision
+     */
+    static final String REVISION = "revision ";
 
     /**
      * Token to identify a modified file in the rdiff log
@@ -239,12 +245,17 @@
             addCommandArgument("-D");
             addCommandArgument(myendDate);
         }
-        addCommandArgument(mypackage);
+        // support multiple packages
+        StringTokenizer myTokenizer = new StringTokenizer(mypackage);
+        while (myTokenizer.hasMoreTokens()) {
+            addCommandArgument(myTokenizer.nextToken());
+        }
         // force command not to be null
         setCommand("");
         File tmpFile = null;
         try {
             tmpFile = myfileUtils.createTempFile("cvstagdiff", ".log", null);
+            tmpFile.deleteOnExit();
             setOutput(tmpFile);
 
             // run the cvs command
@@ -279,15 +290,21 @@
             reader = new BufferedReader(new FileReader(tmpFile));
 
             // entries are of the form:
+            //CVS 1.11
             // File module/filename is new; current revision 1.1
+            //CVS 1.11.9
+            // File module/filename is new; cvstag_2003_11_03_2  revision 1.1
             // or
             // File module/filename changed from revision 1.4 to 1.6
             // or
             // File module/filename is removed; not included in
             // release tag SKINLF_12
-
+            //CVS 1.11.9
+            // File testantoine/antoine.bat is removed; TESTANTOINE_1 revision 1.1.1.1
+            //
             // get rid of 'File module/"
-            int headerLength = FILE_STRING.length() + mypackage.length() + 1;
+            String toBeRemoved = FILE_STRING + mypackage + "/";
+            int headerLength = toBeRemoved.length();
             Vector entries = new Vector();
 
             String line = reader.readLine();
@@ -296,13 +313,25 @@
 
             while (null != line) {
                 if (line.length() > headerLength) {
-                    line = line.substring(headerLength);
+                    if (line.startsWith(toBeRemoved)) {
+                        line = line.substring(headerLength);
+                    } else {
+                        line = line.substring(FILE_STRING.length());
+                    }
 
                     if ((index = line.indexOf(FILE_IS_NEW)) != -1) {
+//CVS 1.11
+//File apps/websphere/lib/something.jar is new; current revision 1.2
+//CVS 1.11.9
+//File apps/websphere/lib/something.jar is new; cvstag_2003_11_03_2 revision 1.2
                         // it is a new file
                         // set the revision but not the prevrevision
                         String filename = line.substring(0, index);
-                        String rev = line.substring(index + FILE_IS_NEW.length());
+                        String rev = null;
+                        int indexrev = -1;
+                        if ((indexrev = line.indexOf(REVISION, index)) != -1) {
+                            rev = line.substring(indexrev + REVISION.length());
+                        }
                         entry = new CvsTagEntry(filename, rev);
                         entries.addElement(entry);
                         log(entry.toString(), Project.MSG_VERBOSE);
@@ -323,7 +352,12 @@
                     } else if ((index = line.indexOf(FILE_WAS_REMOVED)) != -1) {
                         // it is a removed file
                         String filename = line.substring(0, index);
-                        entry = new CvsTagEntry(filename);
+                        String rev = null;
+                        int indexrev = -1;
+                        if ((indexrev = line.indexOf(REVISION, index)) != -1) {
+                            rev = line.substring(indexrev + REVISION.length());
+                        }
+                        entry = new CvsTagEntry(filename, null, rev);
                         entries.addElement(entry);
                         log(entry.toString(), Project.MSG_VERBOSE);
                     }
diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagEntry.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagEntry.java
index 61e3535..8c8a30a 100644
--- a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagEntry.java
+++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagEntry.java
@@ -91,8 +91,11 @@
     public String toString() {
         StringBuffer buffer = new StringBuffer();
         buffer.append(m_filename);
-        if ((m_revision == null) && (m_prevRevision == null)) {
+        if ((m_revision == null)) {
             buffer.append(" was removed");
+            if(m_prevRevision != null) {
+                buffer.append("; previous revision was ").append(m_prevRevision);
+            }
         } else if (m_revision != null && m_prevRevision == null) {
             buffer.append(" is new; current revision is ")
                 .append(m_revision);
diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
index e259c02..c400791 100644
--- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties
+++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
@@ -70,7 +70,6 @@
 concat=org.apache.tools.ant.taskdefs.Concat
 cvstagdiff=org.apache.tools.ant.taskdefs.cvslib.CvsTagDiff
 tempfile=org.apache.tools.ant.taskdefs.TempFile
-classloader=org.apache.tools.ant.taskdefs.Classloader
 import=org.apache.tools.ant.taskdefs.ImportTask
 whichresource=org.apache.tools.ant.taskdefs.WhichResource
 subant=org.apache.tools.ant.taskdefs.SubAnt
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java b/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
index 6c24803..e68e824 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
@@ -192,6 +192,7 @@
     protected File createListFile(Vector files)
         throws IOException {
         File listFile = fileUtils.createTempFile("ant", "", null);
+        listFile.deleteOnExit();
 
         PrintWriter writer = new PrintWriter(new FileOutputStream(listFile));
 
@@ -322,6 +323,7 @@
 
                 if (!doVerbose) {
                     outFile = fileUtils.createTempFile("ant", "", null);
+                    outFile.deleteOnExit();
                     exec.setOutput(outFile);
                 }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/IContract.java b/src/main/org/apache/tools/ant/taskdefs/optional/IContract.java
index 5a75590..8981217 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/IContract.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/IContract.java
@@ -87,7 +87,7 @@
  * <p/>
  * Thanks to Rainer Schmitz for enhancements and comments.
  *
- * @author <a href="mailto:aslak.hellesoy@bekk.no">Aslak Helles�a>
+ * @author <a href="mailto:aslak.hellesoy@bekk.no">Aslak Helles\u00f8y</a>
  *
  * <p/>
  * <table border="1" cellpadding="2" cellspacing="0">
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
index 708c6b3..8955fc4 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
@@ -58,11 +58,14 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileReader;
+import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.InputStreamReader;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.Reader;
+import java.io.Writer;
 import java.util.Vector;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
@@ -318,17 +321,20 @@
     protected void doReplace(File f, int options)
          throws IOException {
         File temp = fileUtils.createTempFile("replace", ".txt", null);
+        temp.deleteOnExit();
 
         Reader r = null;
-        FileWriter w = null;
+        Writer w = null;
 
         try {
             if (encoding == null) {
                 r = new FileReader(f);
+                w = new FileWriter(temp);
             } else {
                 r = new InputStreamReader(new FileInputStream(f), encoding);
+                w = new OutputStreamWriter(new FileOutputStream(temp),
+                                           encoding);
             }
-            w = new FileWriter(temp);
 
             BufferedReader br = new BufferedReader(r);
             BufferedWriter bw = new BufferedWriter(w);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
index 4d5feb7..8ef1313 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
@@ -64,6 +64,7 @@
 import java.io.OutputStream;
 import java.util.Vector;
 import java.util.Enumeration;
+import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParserFactory;
 import javax.xml.transform.ErrorListener;
 import javax.xml.transform.Source;
@@ -86,6 +87,7 @@
 import org.apache.tools.ant.util.JAXPUtils;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
 /**
@@ -199,7 +201,8 @@
      * @return the configured source instance matching the stylesheet.
      * @throws Exception if there is a problem creating the source.
      */
-    private Source getSource(InputStream is, File infile) throws Exception {
+    private Source getSource(InputStream is, File infile) 
+        throws ParserConfigurationException, SAXException {
         // todo: is this comment still relevant ??
         // FIXME: need to use a SAXSource as the source for the transform
         // so we can plug in our own entity resolver
@@ -216,6 +219,8 @@
                     + "parser doesn't support SAX");
             }
         } else {
+            // WARN: Don't use the StreamSource(File) ctor. It won't work with
+            // xalan prior to 2.2 because of systemid bugs.
             src = new StreamSource(is);
         }
         src.setSystemId(JAXPUtils.getSystemId(infile));
@@ -226,9 +231,8 @@
      * Read in templates from the stylesheet
      */
     private void readTemplates()
-        throws IOException, TransformerConfigurationException {
-        // WARN: Don't use the StreamSource(File) ctor. It won't work with
-        // xalan prior to 2.2 because of systemid bugs.
+        throws IOException, TransformerConfigurationException, 
+               ParserConfigurationException, SAXException {
 
         // Use a stream so that you can close it yourself quickly
         // and avoid keeping the handle until the object is garbaged.
@@ -239,10 +243,7 @@
             xslStream
                 = new BufferedInputStream(new FileInputStream(stylesheet));
             templatesModTime = stylesheet.lastModified();
-            StreamSource src = new StreamSource(xslStream);
-            // Always set the systemid to the source for imports, includes...
-            // in xsl and xml...
-            src.setSystemId(JAXPUtils.getSystemId(stylesheet));
+            Source src = getSource(xslStream, stylesheet);
             templates = getFactory().newTemplates(src);
         } finally {
             if (xslStream != null) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
index 77de9c9..52516a4 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
@@ -70,86 +70,64 @@
 
 import java.io.File;
 
+import org.apache.tools.ant.taskdefs.condition.Os;
+
 // ====================================================================
 
 /**
  *  Compiles C# source into executables or modules.
  *
- *  The task will only work on win2K until other platforms support
- *  csc.exe or an equivalent. CSC.exe must be on the execute path too. <p>
- *
- *  All parameters are optional: &lt;csc/&gt; should suffice to produce a debug
- *  build of all *.cs files. References to external files do require explicit
- *  enumeration, so are one of the first attributes to consider adding. <p>
- *
+ * csc.exe on Windows or mcs on other platforms must be on the execute path, unless another executable
+ * or the full path to that executable is specified in the <tt>executable</tt>
+ * parameter
+ * <p>
+ * All parameters are optional: &lt;csc/&gt; should suffice to produce a debug
+ * build of all *.cs files. However, naming an <tt>destFile</tt>stops the
+ * csc compiler from choosing an output name from random, and
+ * allows the dependency checker to determine if the file is out of date.
+ * <p>
  *  The task is a directory based task, so attributes like <b>includes="*.cs"
  *  </b> and <b>excludes="broken.cs"</b> can be used to control the files pulled
  *  in. By default, all *.cs files from the project folder down are included in
  *  the command. When this happens the output file -if not specified- is taken
  *  as the first file in the list, which may be somewhat hard to control.
- *  Specifying the output file with <b>'outfile'</b> seems prudent. <p>
+ *  Specifying the output file with <tt>destFile</tt> seems prudent. <p>
  *
- *  <p>
+ * <p>
+ * For more complex source trees, nested <tt>src</tt> elemements can be
+ * supplied. When such an element is present, the implicit fileset is ignored.
+ * This makes sense, when you think about it :)
+ * <p>
  *
- *  TODO
- *  <ol>
- *    <li> is incremental build still broken in beta-1?
- *    <li> is Win32Icon broken?
- *    <li> all the missing options
- *  </ol>
- *  <p>
+ * References to external files can be made through the references attribute,
+ * or (since Ant1.6), via nested &lt;reference&gt; filesets. With the latter,
+ * the timestamps of the references are also used in the dependency
+ * checking algorithm.
+ * <p>
  *
- *  History
- *  <Table>
+ * Example
  *
- *    <tr>
- *
- *      <td>
- *        0.3
- *      </td>
- *
- *      <td>
- *        Beta 1 edition
- *      </td>
- *
- *      <td>
- *        To avoid having to remember which assemblies to include, the task
- *        automatically refers to the main dotnet libraries in Beta1.
- *      </tr>
- *
- *      <tr>
- *
- *        <td>
- *          0.2
- *        </td>
- *
- *        <td>
- *          Slightly different
- *        </td>
- *
- *        <td>
- *          Split command execution to a separate class;
- *        </tr>
- *
- *        <tr>
- *
- *          <td>
- *            0.1
- *          </td>
- *
- *          <td>
- *            "I can't believe it's so rudimentary"
- *          </td>
- *
- *          <td>
- *            First pass; minimal builds only support;
- *          </tr>
- *
- *        </table>
+ * <pre>&lt;csc
+ * 	optimize=&quot;true&quot;
+ * 	debug=&quot;false&quot;
+ * 	docFile=&quot;documentation.xml&quot;
+ * 	warnLevel=&quot;4&quot;
+ * 	unsafe=&quot;false&quot;
+ * 	targetType=&quot;exe&quot;
+ * 	incremental=&quot;false&quot;
+ * 	mainClass = &quot;MainApp&quot;
+ * 	destFile=&quot;NetApp.exe&quot;
+ * 	&gt;
+ * 	     &lt;src dir="src" includes="*.cs" /&gt;
+ *       &lt;reference file="${testCSC.dll}" /&gt;
+ *       &lt;define name="RELEASE" /&gt;
+ *       &lt;define name="DEBUG" if="debug.property"/&gt;
+ *       &lt;define name="def3" unless="def3.property"/&gt;
+ *    &lt;/csc&gt;
+ * </pre>
  *
  *
- * @author      Steve Loughran steve_l@iseran.com
- * @version     0.5
+ * @author      Steve Loughran
  * @ant.task    name="csc" category="dotnet"
  * @since Ant 1.3
  */
@@ -214,7 +192,7 @@
         unsafe = false;
         noconfig = false;
         definitions = null;
-        setExecutable("csc");
+        setExecutable(Os.isFamily("windows") ? "csc" : "mcs");
     }
 
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotnetCompile.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotnetCompile.java
index e6ab0ff..85c3112 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotnetCompile.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotnetCompile.java
@@ -115,7 +115,7 @@
     /**
      *  flag to enable automatic reference inclusion
      */
-    private boolean includeDefaultReferences;
+    private boolean includeDefaultReferences = true;
 
     /**
      *  icon for incorporation into apps
@@ -205,6 +205,11 @@
      */
     protected Vector referenceFilesets = new Vector();
 
+    /**
+     * flag to set to to use @file based command cache
+     */
+    private boolean useResponseFile = false;
+    private static final int AUTOMATIC_RESPONSE_FILE_THRESHOLD = 64;
 
     /**
      *  constructor inits everything and set up the search pattern
@@ -313,7 +318,7 @@
      * in dotnet, and tells the compiler to link in mscore.dll.
      *
      *  set the automatic reference inclusion flag on or off this flag controls
-     *  the string of references and the /nostdlib option in CSC
+     *  the /nostdlib option in CSC
      *
      *@param  f  on/off flag
      */
@@ -642,8 +647,6 @@
     }
 
 
-
-
     /**
      * add a define to the list of definitions
      * @param define
@@ -798,6 +801,25 @@
         return "**/*." + getFileExtension();
     }
 
+    /**
+     * getter for flag
+     * @return
+     */
+    public boolean isUseResponseFile() {
+        return useResponseFile;
+    }
+
+    /**
+     * Flag to turn on response file use; default=false.
+     * When set the command params are saved to a file and
+     * this is passed in with @file. The task automatically switches
+     * to this mode with big commands; this option is here for
+     * testing and emergencies
+     * @param useResponseFile
+     */
+    public void setUseResponseFile(boolean useResponseFile) {
+        this.useResponseFile = useResponseFile;
+    }
 
     /**
      *  do the work by building the command line and then calling it
@@ -808,6 +830,9 @@
              throws BuildException {
         validate();
         NetCommand command = createNetCommand();
+        //set up response file options
+        command.setAutomaticResponseFileThreshold(AUTOMATIC_RESPONSE_FILE_THRESHOLD);
+        command.setUseResponseFile(useResponseFile);
         //fill in args
         fillInSharedParameters(command);
         addResources(command);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
index 6cb3236..718c40b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
@@ -69,9 +69,11 @@
 import org.apache.tools.ant.types.FileSet;
 
 /**
- *  Assembles .NET Intermediate Language files. The task will only work
- *  on win2K until other platforms support csc.exe or an equivalent. ilasm.exe
- *  must be on the execute path too. <p>
+ * Assembles .NET Intermediate Language files.
+ * ilasm.exe must be on the execute path, unless another executable
+ * or the full path to that executable is specified in the <tt>executable</tt>
+ * parameter
+ *  <p>
  *
  *  <p>
  *
@@ -82,13 +84,13 @@
  *  /out:file ... /verbose is used some places; /quiet here in ildasm... etc.]
  *  It would be nice if someone made all the command line tools consistent (and
  *  not as brittle as the java cmdline tools) <p>
- *
+ *  <p>
  *  The task is a directory based task, so attributes like <b>includes="*.il"
  *  </b> and <b>excludes="broken.il"</b> can be used to control the files pulled
  *  in. You can also use nested &lt;src&gt filesets to refer to source.
- *
- * @author     Steve Loughran steve_l@iseran.com
- * @version    0.6
+ * <p>
+ * 
+ * @author     Steve Loughran
  * @ant.task    name="ilasm" category="dotnet"
  */
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ildasm.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ildasm.java
index dde841d..5075635 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ildasm.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ildasm.java
@@ -56,6 +56,7 @@
 import org.apache.tools.ant.types.EnumeratedAttribute;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
+import org.apache.tools.ant.Project;
 import org.apache.tools.ant.util.FileUtils;
 
 import java.io.File;
@@ -65,7 +66,7 @@
  * into ILASM assembly code. Useful when converting imported typelibs into
  * assembler before patching and recompiling, as one has to do when doing
  * advanced typelib work.
- *
+ * <p>
  * As well as generating the named output file, the ildasm program
  * will also generate resource files <code>Icons.resources</code>
  * <code>Message.resources</code> and a .res file whose filename stub is derived
@@ -76,13 +77,13 @@
  * creates the resources in the directory specified by <code>resourceDir</code> if
  * set, else in the same directory as the <code>destFile</code>.
  *
- *
+ * <p>
  * This task requires the .NET SDK installed and ildasm on the path.
  * To disassemble using alternate CLR systems, set the executable attribute
  * to the name/path of the alternate implementation -one that must
  * support all the classic ildasm commands.
  *
- *
+ * <p>
  * Dependency logic: the task executes the command if the output file is missing
  * or older than the source file. It does not take into account changes
  * in the options of the task, or timestamp differences in resource files.
@@ -90,6 +91,7 @@
  * .il file in place with some error message. To prevent this from confusing
  * the dependency logic, the file specified by the <code>dest</code>
  * attribute is <i>always</i> deleted after an unsuccessful build.
+ * @ant.task category="dotnet"
  */
 public class Ildasm extends Task {
 
@@ -351,16 +353,26 @@
     }
 
     /**
-     *
-     * @return
+     * Test for disassembly being needed; use existence and granularity
+     * correct date stamps
+     * @return true iff a rebuild is required.
      */
     private boolean isDisassemblyNeeded() {
         if (!destFile.exists()) {
+            log("Destination file does not exist: a build is required",
+                    Project.MSG_VERBOSE);
             return true;
         }
         long sourceTime = sourceFile.lastModified();
         long destTime = destFile.lastModified();
-        return sourceTime > (destTime + FileUtils.newFileUtils().getFileTimestampGranularity());
+        if(sourceTime > (destTime + FileUtils.newFileUtils().getFileTimestampGranularity())) {
+            log("Source file is newer than the dest file: a rebuild is required",
+                    Project.MSG_VERBOSE);
+            return true;
+        } else {
+            log("The .il file is up to date", Project.MSG_VERBOSE);
+            return false;
+        }
 
     }
     /**
@@ -369,6 +381,9 @@
      */
     public void execute() throws BuildException {
         validate();
+        if(!isDisassemblyNeeded()) {
+            return;
+        }
         NetCommand command = new NetCommand(this, "ildasm", executable);
         command.setFailOnError(true);
         //fill in args
@@ -422,6 +437,7 @@
         } catch (BuildException e) {
             //forcibly delete the output file in case of trouble
             if (destFile.exists()) {
+                log("Deleting destination file as it may be corrupt");
                 destFile.delete();
             }
             //then rethrow the exception
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/ImportTypelib.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/ImportTypelib.java
index 1c0e9bf..f361836 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/ImportTypelib.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/ImportTypelib.java
@@ -57,16 +57,28 @@
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.FileUtils;
 
 import java.io.File;
 
 /**
- * Wrapper to .NET's tlbimport; imports a tlb file to a NET assembly
+ * Import a COM type library into the .NET framework.
+ * <p>
+ *
+ * This task is a wrapper to .NET's tlbimport; it imports a tlb file to a NET assembly
  * by generating a binary assembly (.dll) that contains all the binding
- * metadata. Uses date timestamps to minimise rebuilds.
+ * metadata. It uses date timestamps to minimise rebuilds.
+ * <p>
+ * Example
+ * <pre>
+ *     &lt;importtypelib
+ *       srcfile="xerces.tlb"
+ *       destfile="xerces.dll"
+ *       namespace="Apache.Xerces"/&gt;
+ * </pre>
  * @since Ant 1.6
  * @author steve loughran
- * @ant.task    name="ImportTypelib" category="dotnet"
+ * @ant.task category="dotnet"
  */
 public class ImportTypelib extends Task {
 
@@ -162,7 +174,7 @@
             throw new BuildException(
                     "destination file is a directory");
         }
-        if (srcFile != null || !srcFile.exists()) {
+        if (srcFile == null || !srcFile.exists()) {
             throw new BuildException(
                     "source file does not exist");
         }
@@ -176,6 +188,31 @@
     }
 
     /**
+     * Test for disassembly being needed; use existence and granularity
+     * correct date stamps
+     * @return true iff a rebuild is required.
+     */
+    private boolean isExecuteNeeded() {
+        if (!destFile.exists()) {
+            log("Destination file does not exist: a build is required",
+                    Project.MSG_VERBOSE);
+            return true;
+        }
+        long sourceTime = srcFile.lastModified();
+        long destTime = destFile.lastModified();
+        if (sourceTime > (destTime + FileUtils.newFileUtils().getFileTimestampGranularity())) {
+            log("Source file is newer than the dest file: a rebuild is required",
+                    Project.MSG_VERBOSE);
+            return true;
+        } else {
+            log("The output file is up to date", Project.MSG_VERBOSE);
+            return false;
+        }
+
+    }
+
+
+    /**
      * Create a typelib command
      * @exception BuildException if something goes wrong with the build
      */
@@ -185,9 +222,7 @@
             + " to assembly " + destFile
             + " in namespace " + namespace, Project.MSG_VERBOSE);
         //rebuild unless the dest file is newer than the source file
-        if (srcFile.exists() && destFile.exists()
-            && srcFile.lastModified() <= destFile.lastModified()) {
-            log("The typelib is up to date", Project.MSG_VERBOSE);
+        if(!isExecuteNeeded()) {
             return;
         }
 
@@ -205,5 +240,6 @@
             command.addArgument("/unsafe");
         }
         command.addArgument(extraOptions);
+        command.runCommand();
     }
 }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/JSharp.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/JSharp.java
index 65ce8f6..344e22f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/JSharp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/JSharp.java
@@ -58,14 +58,18 @@
 
 /**
  * Compile J# source down to a managed .NET application.
+ * <p>
  * J# is not Java. But it is the language closest to Java in the .NET framework.
- * This task compiles jsharp source (assumes a .jsl extension, incidentally), and
+ * This task compiles jsharp source (.java files), and
  * generates a .NET managed exe or dll.
- * See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vjsharp/html/vjoriMicrosoftVisualJ.asp
- * for vjc command options in glory detail.
+ * <p>
+ *
+ * @see <A=ref="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vjsharp/html/vjoriMicrosoftVisualJ.asp">
+ * Visual J++ online documentation</a>
+ *
  * @author Steve Loughran
  * @since ant1.6
- * @ant.task    name="jsharpc" category="dotnet"
+ * @ant.task category="dotnet" name="jsharpc"
  */
 public class JSharp extends DotnetCompile {
 
@@ -120,14 +124,12 @@
         return ";";
     }
 
-
-
     /**
      * Get the extension of filenames to compile.
      * @return The string extension of files to compile.
      */
     public String getFileExtension() {
-        return ".jsl";
+        return ".java";
     }
 
     /**
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java
index 64badbe..f5a9122 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java
@@ -65,12 +65,17 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.io.BufferedOutputStream;
+import java.io.FileNotFoundException;
 import java.util.Hashtable;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.util.FileUtils;
 import org.apache.tools.ant.taskdefs.Execute;
 import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
 import org.apache.tools.ant.taskdefs.LogStreamHandler;
@@ -131,6 +136,21 @@
     private File directory;
 
     /**
+     * flag to set to to use @file based command cache
+     */
+    private boolean useResponseFile=false;
+
+    /**
+     * name of a temp file; may be null
+     */
+    private File temporaryCommandFile;
+
+    /**
+     * internal threshold for auto-switch
+     */
+    private int automaticResponseFileThreshold = 64;
+
+    /**
      *  constructor
      *
      *@param  title        (for logging/errors)
@@ -232,6 +252,38 @@
     }
 
     /**
+     * getter
+     * @return response file state
+     */
+    public boolean isUseResponseFile() {
+        return useResponseFile;
+    }
+
+    /**
+     * set this to true to always use the response file
+     * @param useResponseFile
+     */
+    public void setUseResponseFile(boolean useResponseFile) {
+        this.useResponseFile = useResponseFile;
+    }
+
+    /**
+     * getter for threshold
+     * @return 0 for disabled, or a threshold for enabling response files
+     */
+    public int getAutomaticResponseFileThreshold() {
+        return automaticResponseFileThreshold;
+    }
+
+    /**
+     * set threshold for automatically using response files -use 0 for off
+     * @param automaticResponseFileThreshold
+     */
+    public void setAutomaticResponseFileThreshold(int automaticResponseFileThreshold) {
+        this.automaticResponseFileThreshold = automaticResponseFileThreshold;
+    }
+
+    /**
      *  set up the command sequence..
      */
     protected void prepareExecutor() {
@@ -272,7 +324,7 @@
                 //in verbose mode we always log stuff
                 logVerbose(commandLine.describeCommand());
             }
-            executable.setCommandline(commandLine.getCommandline());
+            setExecutableCommandLine();
             err = executable.execute();
             if (Execute.isFailure(err)) {
                 if (failOnError) {
@@ -283,6 +335,54 @@
             }
         } catch (IOException e) {
             throw new BuildException(title + " failed: " + e, e, owner.getLocation());
+        } finally {
+            if (temporaryCommandFile != null) {
+                temporaryCommandFile.delete();
+            }
+        }
+    }
+
+    /**
+     * set the executable command line
+     */
+    private void setExecutableCommandLine() {
+
+        String[] commands = commandLine.getCommandline();
+        //always trigger file mode if commands are big enough
+        if (automaticResponseFileThreshold>0 &&
+                commands.length > automaticResponseFileThreshold) {
+            useResponseFile = true;
+        }
+        if (!useResponseFile || commands.length <= 1) {
+            //the simple action is to send the command line in as is
+            executable.setCommandline(commands);
+        } else {
+            //but for big operations, we save all the params to a temp file
+            //and set @tmpfile as the command -then we remember to delete the tempfile
+            //afterwards
+            FileOutputStream fos = null;
+            FileUtils fileUtils = FileUtils.newFileUtils();
+
+            temporaryCommandFile = fileUtils.createTempFile("cmd", ".txt", null);
+            owner.log("Using response file"+temporaryCommandFile,Project.MSG_VERBOSE);
+
+            try {
+                fos = new FileOutputStream(temporaryCommandFile);
+                PrintWriter out = new PrintWriter(new BufferedOutputStream(fos));
+                //start at 1 because element 0 is the executable name
+                for (int i = 1; i < commands.length; ++i) {
+                    out.println(commands[i]);
+                }
+                out.flush();
+                out.close();
+            } catch (IOException ex) {
+                throw new BuildException("saving command stream to " + temporaryCommandFile, ex);
+            }
+
+            String newCommandLine[] = new String[2];
+            newCommandLine[0] = commands[0];
+            newCommandLine[1] = "@" + temporaryCommandFile.getAbsolutePath();
+            executable.setCommandline(newCommandLine);
         }
     }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/VisualBasicCompile.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/VisualBasicCompile.java
index e5e9bb2..737cbdd 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/VisualBasicCompile.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/VisualBasicCompile.java
@@ -59,13 +59,52 @@
 
 /**
  * This task compiles Visual Basic.NET source into executables or modules.
- * The task will only work on win2K until other platforms support vbc.exe or
- * an equivalent. VBC.exe must be on the execute path, too.
+ * The task requires vbc.exe on the execute path, unless it or an equivalent
+ * program is specified in the <tt>executable</tt> parameter
  *
  * <p>
  * All parameters are optional: &lt;vbc/&gt; should suffice to produce a debug
  * build of all *.vb files.
  *
+ * <p>
+
+ * The task is a directory based task, so attributes like
+ * <tt>includes=&quot;**\/*.vb&quot;</tt> and
+ * <tt>excludes=&quot;broken.vb&quot;</tt> can be used to control
+ * the files pulled in. By default,
+ * all *.vb files from the project folder down are included in the command.
+ * When this happens the destFile -if not specified-
+ * is taken as the first file in the list, which may be somewhat hard to control.
+   Specifying the output file with <tt>destfile</tt> is prudent.
+ </p>
+ <p>
+ * Also, dependency checking only works if destfile is set.
+ *
+ * As with &lt;csc&gt; nested <tt>src</tt> filesets of source,
+ * reference filesets, definitions and resources can be provided.
+ *
+ * <p>
+ * Example
+ * </p>
+ * <pre>&lt;vbc
+ *   optimize=&quot;true&quot;
+ *   debug=&quot;false&quot;
+ *   warnLevel=&quot;4&quot;
+ *   targetType=&quot;exe&quot;
+ *   definitions=&quot;RELEASE&quot;
+ *   excludes=&quot;src/unicode_class.vb&quot;
+ *   mainClass = &quot;MainApp&quot;
+ *   destFile=&quot;NetApp.exe&quot;
+ *   optionExplicit=&quot;true&quot;
+ *   optionCompare=&quot;text&quot;
+ *   references="System.Xml,System.Web.Xml"
+ *   &gt;
+ *          &lt;reference file="${testCSC.dll}" /&gt;
+ *          &lt;define name="RELEASE" /&gt;
+ *          &lt;define name="DEBUG" if="debug.property"/&gt;
+ *          &lt;define name="def3" unless="def2.property"/&gt;
+ *   &lt;/vbc&gt;
+ </pre>
  * @author Brian Felder bfelder@providence.org
  * @author Steve Loughran
  * @ant.task    name="vbc" category="dotnet"
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/WsdlToDotnet.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/WsdlToDotnet.java
index 2eeb8e4..d0ce89d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/WsdlToDotnet.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/WsdlToDotnet.java
@@ -60,11 +60,23 @@
 /**
  * Converts a WSDL file or URL resource into a .NET language.
  *
+ * Why add a wrapper to the MS WSDL tool?
+ * So that you can verify that your web services, be they written with Axis or
+ *anyone else's SOAP toolkit, work with .NET clients.
+ *
+ *This task is dependency aware when using a file as a source and destination;
+ *so if you &lt;get&gt; the file (with <code>usetimestamp="true"</code>) then
+ *you only rebuild stuff when the WSDL file is changed. Of course,
+ *if the server generates a new timestamp every time you ask for the WSDL,
+ *this is not enough...use the &lt;filesmatch&gt; &lt;condition&gt; to
+ *to byte for byte comparison against a cached WSDL file then make
+ *the target conditional on that test failing.
+
  * See "Creating an XML Web Service Proxy", "wsdl.exe" docs in
  * the framework SDK documentation
- * @author      Steve Loughran steve_l@iseran.com
+ * @author      Steve Loughran 
  * @version     0.5
- * @ant.task    name="wsdltodotnet" category="dotnet"
+ * @ant.task    category="dotnet"
  * @since       Ant 1.5
  */
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
index 05105a1..289f392 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
@@ -275,9 +275,9 @@
     /**
      * Flag to disable informational messages; optional, default false.
      *
-     * @param noinfom
+     * @param noinform if true disables informational messages
      */
-    public void setNoinform(boolean noinfom) {
+    public void setNoinform(boolean noinform) {
         this.noinform = noinform;
     }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java b/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java
index d6cb01c..0e082ab 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -238,7 +238,11 @@
         throws BuildException {
         try {
             final JarFile jarFile = new JarFile(file);
-            return jarFile.getManifest();
+            Manifest m = jarFile.getManifest();
+            if (m == null) {
+                throw new BuildException(file + " doesn't have a MANIFEST");
+            }
+            return m;
         } catch (final IOException ioe) {
             throw new BuildException(ioe.getMessage(), ioe);
         }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java
index 3f2c6d7..450aa3d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java
@@ -61,6 +61,7 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.util.Vector;
+import java.util.Enumeration;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
@@ -73,6 +74,7 @@
 import org.apache.tools.ant.types.Path;
 import org.apache.tools.ant.types.PatternSet;
 import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.util.LoaderUtils;
 
 /**
  * Runs JDepend tests.
@@ -90,24 +92,27 @@
     //private CommandlineJava commandline = new CommandlineJava();
 
     // required attributes
-    private Path _sourcesPath; // Deprecated!
-    private Path _classesPath; // Use this going forward
+    private Path sourcesPath; // Deprecated!
+    private Path classesPath; // Use this going forward
 
     // optional attributes
-    private File _outputFile;
-    private File _dir;
-    private Path _compileClasspath;
-    private boolean _haltonerror = false;
-    private boolean _fork = false;
-    //private Integer _timeout = null;
+    private File outputFile;
+    private File dir;
+    private Path compileClasspath;
+    private boolean haltonerror = false;
+    private boolean fork = false;
+    private Long timeout = null;
 
-    private String _jvm = null;
+    private String jvm = null;
     private String format = "text";
     private PatternSet defaultPatterns = new PatternSet();
 
     private static Constructor packageFilterC;
     private static Method setFilter;
 
+    private boolean includeRuntime = false;
+    private Path runtimeClasses = null;
+
     static {
         try {
             Class packageFilter =
@@ -124,54 +129,83 @@
         }
     }
 
-    public JDependTask() {
+    /**
+     * If true,
+     *  include jdepend.jar in the forked VM.
+     *
+     * @param b include ant run time yes or no
+     * @since Ant 1.6
+     */
+    public void setIncluderuntime(boolean b) {
+        includeRuntime = b;
     }
 
-    /*
-      public void setTimeout(Integer value) {
-      _timeout = value;
-      }
+    /**
+     * Set the timeout value (in milliseconds).
+     *
+     * <p>If the operation is running for more than this value, the jdepend
+     * will be canceled. (works only when in 'fork' mode).</p>
+     * @param value the maximum time (in milliseconds) allowed before
+     * declaring the test as 'timed-out'
+     * @see #setFork(boolean)
+     */
+    public void setTimeout(Long value) {
+        timeout = value;
+    }
 
-      public Integer getTimeout() {
-      return _timeout;
-      }
-    */
+    /**
+     * @return the timeout value
+     */
+    public Long getTimeout() {
+        return timeout;
+    }
 
     /**
      * The output file name.
      *
-     * @param outputFile
+     * @param outputFile the output file name
      */
     public void setOutputFile(File outputFile) {
-        _outputFile = outputFile;
+        this.outputFile = outputFile;
     }
 
+    /**
+     * @return the output file name
+     */
     public File getOutputFile() {
-        return _outputFile;
+        return outputFile;
     }
 
     /**
      * Whether or not to halt on failure. Default: false.
+     * @param haltonerror the value to set
      */
-    public void setHaltonerror(boolean value) {
-        _haltonerror = value;
+    public void setHaltonerror(boolean haltonerror) {
+        this.haltonerror = haltonerror;
     }
 
+    /**
+     * @return the value of the haltonerror attribute
+     */
     public boolean getHaltonerror() {
-        return _haltonerror;
+        return haltonerror;
     }
 
     /**
      * If true, forks into a new JVM. Default: false.
      *
-     * @param   value   <tt>true</tt> if a JVM should be forked, otherwise <tt>false<tt>
+     * @param   value   <tt>true</tt> if a JVM should be forked,
+     *                  otherwise <tt>false<tt>
      */
     public void setFork(boolean value) {
-        _fork = value;
+        fork = value;
     }
 
+    /**
+     * @return the value of the fork attribute
+     */
     public boolean getFork() {
-        return _fork;
+        return fork;
     }
 
     /**
@@ -182,47 +216,49 @@
      * @see #setFork(boolean)
      */
     public void setJvm(String value) {
-        _jvm = value;
+        jvm = value;
 
     }
 
     /**
      * Adds a path to source code to analyze.
+     * @return a source path
      * @deprecated
      */
     public Path createSourcespath() {
-        if (_sourcesPath == null) {
-            _sourcesPath = new Path(getProject());
+        if (sourcesPath == null) {
+            sourcesPath = new Path(getProject());
         }
-        return _sourcesPath.createPath();
+        return sourcesPath.createPath();
     }
 
     /**
      * Gets the sourcepath.
-     *
+     * @return the sources path
      * @deprecated
      *
      */
     public Path getSourcespath() {
-        return _sourcesPath;
+        return sourcesPath;
     }
 
     /**
      * Adds a path to class code to analyze.
+     * @return a classes path
      */
     public Path createClassespath() {
-        if (_classesPath == null) {
-            _classesPath = new Path(getProject());
+        if (classesPath == null) {
+            classesPath = new Path(getProject());
         }
-        return _classesPath.createPath();
+        return classesPath.createPath();
     }
 
     /**
      * Gets the classespath.
-     *
+     * @return the classes path
      */
     public Path getClassespath() {
-        return _classesPath;
+        return classesPath;
     }
 
     /**
@@ -231,42 +267,52 @@
      * @see #setFork(boolean)
      */
     public void setDir(File dir) {
-        _dir = dir;
+        this.dir = dir;
     }
 
+    /**
+     * @return the dir attribute
+     */
     public File getDir() {
-        return _dir;
+        return dir;
     }
 
     /**
      * Set the classpath to be used for this compilation.
+     * @param classpath a class path to be used
      */
     public void setClasspath(Path classpath) {
-        if (_compileClasspath == null) {
-            _compileClasspath = classpath;
+        if (compileClasspath == null) {
+            compileClasspath = classpath;
         } else {
-            _compileClasspath.append(classpath);
+            compileClasspath.append(classpath);
         }
     }
 
-    /** Gets the classpath to be used for this compilation. */
+    /**
+     * Gets the classpath to be used for this compilation.
+     * @return the class path used for compilation
+     */
     public Path getClasspath() {
-        return _compileClasspath;
+        return compileClasspath;
     }
 
     /**
      * Adds a path to the classpath.
+     * @return a classpath
      */
     public Path createClasspath() {
-        if (_compileClasspath == null) {
-            _compileClasspath = new Path(getProject());
+        if (compileClasspath == null) {
+            compileClasspath = new Path(getProject());
         }
-        return _compileClasspath.createPath();
+        return compileClasspath.createPath();
     }
 
     /**
      * Create a new JVM argument. Ignored if no JVM is forked.
-     * @return  create a new JVM argument so that any argument can be passed to the JVM.
+     * @param commandline the commandline to create the argument on
+     * @return  create a new JVM argument so that any argument can
+     *          be passed to the JVM.
      * @see #setFork(boolean)
      */
     public Commandline.Argument createJvmarg(CommandlineJava commandline) {
@@ -275,6 +321,7 @@
 
     /**
      * Adds a reference to a classpath defined elsewhere.
+     * @param r a classpath reference
      */
     public void setClasspathRef(Reference r) {
         createClasspath().setRefid(r);
@@ -282,11 +329,15 @@
 
     /**
      * add a name entry on the exclude list
+     * @return a pattern for the excludes
      */
     public PatternSet.NameEntry createExclude() {
         return defaultPatterns.createExclude();
     }
 
+    /**
+     * @return the excludes patterns
+     */
     public PatternSet getExcludes() {
         return defaultPatterns;
     }
@@ -294,15 +345,23 @@
     /**
      * The format to write the output in, "xml" or "text".
      *
-     * @param ea
+     * @param ea xml or text
      */
     public void setFormat(FormatAttribute ea) {
         format = ea.getValue();
     }
 
+    /**
+     * A class for the enumerated attribute format,
+     * values are xml and text.
+     * @see EnumeratedAttribute
+     */
     public static class FormatAttribute extends EnumeratedAttribute {
         private String [] formats = new String[]{"xml", "text"};
 
+        /**
+         * @return the enumerated values
+         */
         public String[] getValues() {
             return formats;
         }
@@ -317,6 +376,48 @@
      */
     private static final int ERRORS = 1;
 
+    /**
+     * Search for the given resource and add the directory or archive
+     * that contains it to the classpath.
+     *
+     * <p>Doesn't work for archives in JDK 1.1 as the URL returned by
+     * getResource doesn't contain the name of the archive.</p>
+     *
+     * @param resource resource that one wants to lookup
+     * @since Ant 1.6
+     */
+    private void addClasspathEntry(String resource) {
+        /*
+         * pre Ant 1.6 this method used to call getClass().getResource
+         * while Ant 1.6 will call ClassLoader.getResource().
+         *
+         * The difference is that Class.getResource expects a leading
+         * slash for "absolute" resources and will strip it before
+         * delegating to ClassLoader.getResource - so we now have to
+         * emulate Class's behavior.
+         */
+        if (resource.startsWith("/")) {
+            resource = resource.substring(1);
+        } else {
+            resource = "org/apache/tools/ant/taskdefs/optional/jdepend/"
+                + resource;
+        }
+
+        File f = LoaderUtils.getResourceSource(getClass().getClassLoader(),
+                                               resource);
+        if (f != null) {
+            log("Found " + f.getAbsolutePath(), Project.MSG_DEBUG);
+            runtimeClasses.createPath().setLocation(f);
+        } else {
+            log("Couldn\'t find " + resource, Project.MSG_DEBUG);
+        }
+    }
+
+    /**
+     * execute the task
+     *
+     * @exception BuildException if an error occurs
+     */
     public void execute() throws BuildException {
 
         CommandlineJava commandline = new CommandlineJava();
@@ -328,8 +429,8 @@
                 commandline.setClassname("jdepend.xmlui.JDepend");
             }
 
-        if (_jvm != null) {
-            commandline.setVm(_jvm);
+        if (jvm != null) {
+            commandline.setVm(jvm);
         }
         if (getSourcespath() == null && getClassespath() == null) {
             throw new BuildException("Missing classespath required argument");
@@ -342,7 +443,7 @@
 
         // execute the test and get the return code
         int exitValue = JDependTask.ERRORS;
-        //boolean wasKilled = false;
+        boolean wasKilled = false;
         if (!getFork()) {
             exitValue = executeInVM(commandline);
         } else {
@@ -350,21 +451,22 @@
             exitValue = executeAsForked(commandline, watchdog);
             // null watchdog means no timeout, you'd better not check with null
             if (watchdog != null) {
-                //info will be used in later version do nothing for now
-                //wasKilled = watchdog.killedProcess();
+                wasKilled = watchdog.killedProcess();
             }
         }
 
         // if there is an error/failure and that it should halt, stop
         // everything otherwise just log a statement
-        boolean errorOccurred = exitValue == JDependTask.ERRORS;
+        boolean errorOccurred = exitValue == JDependTask.ERRORS || wasKilled;
 
         if (errorOccurred) {
+            String errorMessage = "JDepend FAILED"
+                + (wasKilled ? " - Timed out" : "");
+
             if  (getHaltonerror()) {
-                throw new BuildException("JDepend failed",
-                                         getLocation());
+                throw new BuildException(errorMessage, getLocation());
             } else {
-                log("JDepend FAILED", Project.MSG_ERR);
+                log(errorMessage, Project.MSG_ERR);
             }
         }
     }
@@ -376,6 +478,10 @@
 
     /**
      * Execute inside VM.
+     *
+     * @param commandline the command line
+     * @return the return value of the mvm
+     * @exception BuildException if an error occurs
      */
     public int executeInVM(CommandlineJava commandline) throws BuildException {
         jdepend.textui.JDepend jdepend;
@@ -489,13 +595,18 @@
      * Execute the task by forking a new JVM. The command will block until
      * it finishes. To know if the process was destroyed or not, use the
      * <tt>killedProcess()</tt> method of the watchdog class.
+     * @param commandline the commandline for forked jvm
      * @param  watchdog   the watchdog in charge of cancelling the test if it
-     * exceeds a certain amount of time. Can be <tt>null</tt>, in this case
-     * the test could probably hang forever.
+     * exceeds a certain amount of time. Can be <tt>null</tt>.
+     * @return the result of running the jdepend
+     * @throws BuildException in case of error
      */
     // JL: comment extracted from JUnitTask (and slightly modified)
     public int executeAsForked(CommandlineJava commandline,
                                ExecuteWatchdog watchdog) throws BuildException {
+        runtimeClasses = new Path(getProject());
+        addClasspathEntry("/jdepend/textui/JDepend.class");
+
         // if not set, auto-create the ClassPath from the project
         createClasspath();
 
@@ -506,38 +617,67 @@
             createJvmarg(commandline).setValue(getClasspath().toString());
         }
 
+        if (includeRuntime) {
+            Vector v = Execute.getProcEnvironment();
+            Enumeration e = v.elements();
+            while (e.hasMoreElements()) {
+                String s = (String) e.nextElement();
+                if (s.startsWith("CLASSPATH=")) {
+                    commandline.createClasspath(getProject()).createPath()
+                        .append(new Path(getProject(),
+                                         s.substring("CLASSPATH=".length()
+                                                     )));
+                }
+            }
+            log("Implicitly adding " + runtimeClasses + " to CLASSPATH",
+                Project.MSG_VERBOSE);
+            commandline.createClasspath(getProject()).createPath()
+                .append(runtimeClasses);
+        }
+
         if (getOutputFile() != null) {
             // having a space between the file and its path causes commandline
             // to add quotes around the argument thus making JDepend not taking
             // it into account. Thus we split it in two
             commandline.createArgument().setValue("-file");
-            commandline.createArgument().setValue(_outputFile.getPath());
+            commandline.createArgument().setValue(outputFile.getPath());
             // we have to find a cleaner way to put this output
         }
 
-        // This is deprecated - use classespath in the future
-        String[] sourcesPath = getSourcespath().list();
-        for (int i = 0; i < sourcesPath.length; i++) {
-            File f = new File(sourcesPath[i]);
+        if (getSourcespath() != null) {
+            // This is deprecated - use classespath in the future
+            String[] sourcesPath = getSourcespath().list();
+            for (int i = 0; i < sourcesPath.length; i++) {
+                File f = new File(sourcesPath[i]);
 
-            // not necessary as JDepend would fail, but why loose some time?
-            if (!f.exists() || !f.isDirectory()) {
-                throw new BuildException("\"" + f.getPath() + "\" does not "
-                                         + "represent a valid directory. JDepend would fail.");
+                // not necessary as JDepend would fail, but why loose
+                // some time?
+                if (!f.exists() || !f.isDirectory()) {
+                    throw new BuildException("\"" + f.getPath() 
+                                             + "\" does not represent a valid"
+                                             + " directory. JDepend would"
+                                             + " fail.");
+                }
+                commandline.createArgument().setValue(f.getPath());
             }
-            commandline.createArgument().setValue(f.getPath());
         }
 
-        // This is the new way - use classespath - code is the same for now
-        String[] classesPath = getClassespath().list();
-        for (int i = 0; i < classesPath.length; i++) {
-            File f = new File(classesPath[i]);
-            // not necessary as JDepend would fail, but why loose some time?
-            if (!f.exists() || !f.isDirectory()) {
-                throw new BuildException("\"" + f.getPath() + "\" does not "
-                                         + "represent a valid directory. JDepend would fail.");
+        if (getClassespath() != null) {
+            // This is the new way - use classespath - code is the
+            // same for now
+            String[] classesPath = getClassespath().list();
+            for (int i = 0; i < classesPath.length; i++) {
+                File f = new File(classesPath[i]);
+                // not necessary as JDepend would fail, but why loose
+                // some time?
+                if (!f.exists() || !f.isDirectory()) {
+                    throw new BuildException("\"" + f.getPath() 
+                                             + "\" does not represent a valid"
+                                             + " directory. JDepend would"
+                                             + " fail.");
+                }
+                commandline.createArgument().setValue(f.getPath());
             }
-            commandline.createArgument().setValue(f.getPath());
         }
 
         Execute execute = new Execute(new LogStreamHandler(this,
@@ -562,15 +702,12 @@
     /**
      * @return <tt>null</tt> if there is a timeout value, otherwise the
      * watchdog instance.
+     * @throws BuildException in case of error
      */
     protected ExecuteWatchdog createWatchdog() throws BuildException {
-
-        return null;
-        /*
-          if (getTimeout() == null) {
-          return null;
-          }
-          return new ExecuteWatchdog(getTimeout().intValue());
-        */
+        if (getTimeout() == null) {
+            return null;
+        }
+        return new ExecuteWatchdog(getTimeout().longValue());
     }
 }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
index 8ac0100..4fa47e0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
@@ -568,7 +568,10 @@
      * @since Ant 1.6
      * @param asserts assertion set
      */
-    public void setAssertions(Assertions asserts) {
+    public void addAssertions(Assertions asserts) {
+        if (commandline.getAssertions() != null) {
+            throw new BuildException("Only one assertion declaration is allowed");
+        }
         commandline.setAssertions(asserts);
     }
 
@@ -615,6 +618,7 @@
     public void init() {
         antRuntimeClasses = new Path(getProject());
         addClasspathEntry("/junit/framework/TestCase.class");
+        addClasspathEntry("/org/apache/tools/ant/launch/AntMain.class");
         addClasspathEntry("/org/apache/tools/ant/Task.class");
         addClasspathEntry("/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.class");
     }
@@ -766,6 +770,7 @@
         File propsFile =
             FileUtils.newFileUtils().createTempFile("junit", ".properties",
                 tmpDir != null ? tmpDir : getProject().getBaseDir());
+        propsFile.deleteOnExit();
         cmd.createArgument().setValue("propsfile="
                                       + propsFile.getAbsolutePath());
         Hashtable p = getProject().getProperties();
@@ -1124,6 +1129,8 @@
 
     private void logTimeout(FormatterElement[] feArray, JUnitTest test) {
         createClassLoader();
+        test.setCounts(1, 0, 1);
+        test.setProperties(getProject().getProperties());
         for (int i = 0; i < feArray.length; i++) {
             FormatterElement fe = feArray[i];
             File outFile = getOutput(fe, test);
@@ -1153,9 +1160,8 @@
                             OutputStream out) {
         formatter.setOutput(out);
         formatter.startTestSuite(test);
-        test.setCounts(0, 0, 1);
         Test t = new Test() {
-            public int countTestCases() { return 0; }
+            public int countTestCases() { return 1; }
             public void run(TestResult r) {
                 throw new AssertionFailedError("Timeout occurred");
             }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
index 985dcbe..c67b6e1 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
@@ -247,11 +247,9 @@
             try {
                 // check if there is a suite method
                 suiteMethod = testClass.getMethod("suite", new Class[0]);
-            } catch (Exception e) {
+            } catch (NoSuchMethodException e) {
                 // no appropriate suite method found. We don't report any
-                // error here since it might be perfectly normal. We don't
-                // know exactly what is the cause, but we're doing exactly
-                // the same as JUnit TestRunner do. We swallow the exceptions.
+                // error here since it might be perfectly normal.
             }
             if (suiteMethod != null) {
                 // if there is a suite method available, then try
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
index fb7c0ad..cdfb268 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -198,12 +198,12 @@
      * <p>A Test is finished.
      */
     public void endTest(Test test) {
+        if (Boolean.TRUE.equals(failed.get(test))) {
+            return;
+        }
         synchronized (wri) {
             wri.print("Testcase: "
                       + JUnitVersionHelper.getTestCaseName(test));
-            if (Boolean.TRUE.equals(failed.get(test))) {
-                return;
-            }
             Long l = (Long) testStarts.get(test);
             double seconds = 0;
             // can be null if an error occured in setUp
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java
index 88a238f..bc3708b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java
@@ -320,7 +320,10 @@
     }
 
     protected final File createTmpFile() {
-        return FileUtils.newFileUtils().createTempFile("metamata", ".tmp", getProject().getBaseDir());
+        File tmpFile = FileUtils.newFileUtils()
+            .createTempFile("metamata", ".tmp", getProject().getBaseDir());
+        tmpFile.deleteOnExit();
+        return tmpFile;
     }
 
     /**
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 a78fecf..2781499 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
@@ -273,7 +273,7 @@
             // construct it
             if (newroots.containsKey("")) {
                 // we are going to scan everything anyway
-                scandir(remotedir, "", true);
+                scandir(rootPath, "", true);
             } else {
                 // only scan directories that can include matched files or
                 // directories
@@ -561,6 +561,9 @@
             return listFiles(directory, true);
         }
         private void checkRemoteSensitivity(FTPFile[] array, String directory) {
+            if (array == null) {
+                return;
+            }
             boolean candidateFound = false;
             String target = null;
             for (int icounter = 0; icounter < array.length; icounter++) {
@@ -1357,30 +1360,34 @@
                 }
                 bw = new BufferedWriter(new FileWriter(listing));
             }
-
-            for (int i = 0; i < dsfiles.length; i++) {
-                switch (action) {
-                    case SEND_FILES:
-                        sendFile(ftp, dir, dsfiles[i]);
-                        break;
-                    case GET_FILES:
-                        getFile(ftp, dir, dsfiles[i]);
-                        break;
-                    case DEL_FILES:
-                        delFile(ftp, dsfiles[i]);
-                        break;
-                    case LIST_FILES:
-                        listFile(ftp, bw, dsfiles[i]);
-                        break;
-                    case CHMOD:
-                        doSiteCommand(ftp, "chmod " + chmod + " " + resolveFile(dsfiles[i]));
-                        transferred++;
-                        break;
-                    case RM_DIR:
-                        rmDir(ftp, dsfiles[i]);
-                        break;
-                    default:
-                        throw new BuildException("unknown ftp action " + action);
+            if (action == RM_DIR) {
+                // to remove directories, start by the end of the list
+                // the trunk does not let itself be removed before the leaves
+                for (int i = dsfiles.length - 1; i >= 0; i--) {
+                    rmDir(ftp, dsfiles[i]);
+                }
+            }   else {
+                for (int i = 0; i < dsfiles.length; i++) {
+                    switch (action) {
+                        case SEND_FILES:
+                            sendFile(ftp, dir, dsfiles[i]);
+                            break;
+                        case GET_FILES:
+                            getFile(ftp, dir, dsfiles[i]);
+                            break;
+                        case DEL_FILES:
+                            delFile(ftp, dsfiles[i]);
+                            break;
+                        case LIST_FILES:
+                            listFile(ftp, bw, dsfiles[i]);
+                            break;
+                        case CHMOD:
+                            doSiteCommand(ftp, "chmod " + chmod + " " + resolveFile(dsfiles[i]));
+                            transferred++;
+                            break;
+                        default:
+                            throw new BuildException("unknown ftp action " + action);
+                    }
                 }
             }
         } finally {
@@ -1572,6 +1579,7 @@
                 throw new BuildException(ioe, getLocation());
             }
             if (!found) {
+                localFile.deleteOnExit();
                 return localFile;
             }
         }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
index d670b46..d0a54d9 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
@@ -342,6 +342,8 @@
                             Thread.sleep(250);
                         }
                         if (is.available() == 0) {
+                            log("Read before running into timeout: " 
+                                + sb.toString(), Project.MSG_DEBUG);
                             throw new BuildException(
                                 "Response timed-out waiting for \"" + s + '\"',
                                 getLocation());
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
index 3989b00..1baad54 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
@@ -98,7 +98,7 @@
      */
     public void execute() throws BuildException {
         if (change != null) {
-            execP4Command("submit -c " + change, (P4HandlerAdapter) new P4SubmitAdapter());
+            execP4Command("submit -c " + change, (P4HandlerAdapter) new P4SubmitAdapter(this));
         } else {
             //here we'd parse the output from change -o into submit -i
             //in order to support default change.
@@ -109,13 +109,16 @@
     /**
      * internal class used to process the output of p4 submit
      */
-    public class P4SubmitAdapter extends P4HandlerAdapter {
+    public class P4SubmitAdapter extends SimpleP4OutputHandler {
+        public P4SubmitAdapter(P4Base parent) {
+            super(parent);
+        }
         /**
          * process a line of stdout/stderr coming from Perforce
          * @param line line of stdout or stderr coming from Perforce
          */
         public void process(String line) {
-            log(line, Project.MSG_VERBOSE);
+            super.process(line);
             getProject().setProperty("p4.needsresolve", "0");
             // this type of output might happen
             // Change 18 renamed change 20 and submitted.
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java
index e5eb25e..daa3812 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/CovMerge.java
@@ -196,6 +196,7 @@
     protected File createParamFile() throws BuildException {
         File[] snapshots = getSnapshots();
         File file = createTempFile("jpcovm");
+        file.deleteOnExit();
         FileWriter fw = null;
         try {
             fw = new FileWriter(file);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java
index c9c7020..e19f155 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/sitraka/Coverage.java
@@ -449,6 +449,7 @@
     protected File createParamFile() throws BuildException {
         //@todo change this when switching to JDK 1.2 and use File.createTmpFile()
         File file = createTempFile("jpcov");
+        file.deleteOnExit();
         log("Creating parameter file: " + file, Project.MSG_VERBOSE);
 
         // options need to be one per line in the parameter file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java
index 21a65e8..d77906b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java
@@ -198,7 +198,13 @@
         }
 
         if (in == null) {
-            in = SplashTask.class.getClassLoader().getResourceAsStream("images/ant_logo_large.gif");
+            ClassLoader cl = SplashTask.class.getClassLoader();
+            if (cl != null) {
+                in = cl.getResourceAsStream("images/ant_logo_large.gif");
+            } else {
+                in = ClassLoader
+                    .getSystemResourceAsStream("images/ant_logo_large.gif");
+            }
         }
 
         if (in != null) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java
index bd97881..1bcd634 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java
@@ -64,6 +64,8 @@
 import java.io.InputStream;
 import java.text.NumberFormat;
 
+import org.apache.tools.ant.BuildException;
+
 public abstract class AbstractSshMessage {
 
     private Session session;
@@ -91,11 +93,41 @@
         out.flush();
     }
 
-    protected void waitForAck(InputStream in) throws IOException {
-        int b = 0;
-        do {
-            b = in.read();
-        } while (b > 0);
+    /**
+     * Reads the response, throws a BuildException if the response
+     * indicates an error.
+     */
+    protected void waitForAck(InputStream in) 
+        throws IOException, BuildException {
+        int b = in.read();
+
+        // b may be 0 for success,
+        //          1 for error,
+        //          2 for fatal error,
+
+        if (b == -1) {
+            // didn't receive any response
+            throw new BuildException("No response from server");
+        } else if (b != 0) {
+            StringBuffer sb = new StringBuffer();
+
+            int c = in.read();
+            while (c > 0 && c != '\n') {
+                sb.append((char) c);
+                c = in.read();
+            }
+            
+            if (b == 1) {
+                throw new BuildException("server indicated an error: "
+                                         + sb.toString());
+            } else if (b == 2) {
+                throw new BuildException("server indicated a fatal error: "
+                                         + sb.toString());
+            } else {
+                throw new BuildException("unknown response, code " + b
+                                         + " message: " + sb.toString());
+            }
+        }
     }
 
     public abstract void execute() throws IOException, JSchException;
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java
index cbb97ea..385f6a9 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java
@@ -77,7 +77,6 @@
     private String host;
     private String keyfile;
     private String knownHosts;
-    private boolean trust = false;
     private int port = SSH_PORT;
     private boolean failOnError = true;
     private SSHUserInfo userInfo;
@@ -185,7 +184,6 @@
     public void init() throws BuildException {
         super.init();
         this.knownHosts = System.getProperty("user.home") + "/.ssh/known_hosts";
-        this.trust = false;
         this.port = SSH_PORT;
     }
 
@@ -195,7 +193,7 @@
             jsch.addIdentity(userInfo.getKeyfile());
         }
 
-        if (knownHosts != null) {
+        if (!userInfo.getTrust() && knownHosts != null) {
             log("Using known hosts: " + knownHosts, Project.MSG_DEBUG);
             jsch.setKnownHosts(knownHosts);
         }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java
index 41529ab..8fda328 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java
@@ -65,6 +65,7 @@
 import java.io.StringReader;
 
 import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.Session;
 
 /**
@@ -93,6 +94,9 @@
     private File outputFile = null;   // like <exec>
     private boolean append = false;   // like <exec>
 
+    private static final String TIMEOUT_MESSAGE = 
+        "Timeout period exceeded, connection dropped.";
+
     /**
      * Constructor for SSHExecTask.
      */
@@ -205,7 +209,11 @@
             if (thread.isAlive()) {
                 // ran out of time
                 thread = null;
-                log("Timeout period exceeded, connection dropped.");
+                if (getFailonerror()) {
+                    throw new BuildException(TIMEOUT_MESSAGE);
+                } else {
+                    log(TIMEOUT_MESSAGE, Project.MSG_ERR);
+                }
             } else {
                 // completed successfully
                 if (outputProperty != null) {
@@ -227,9 +235,23 @@
                     }
                 }
             }
-
         } catch (BuildException e) {
             throw e;
+        } catch (JSchException e) {
+            if (e.getMessage().indexOf("session is down") >= 0) {
+                if (getFailonerror()) {
+                    throw new BuildException(TIMEOUT_MESSAGE, e);
+                } else {
+                    log(TIMEOUT_MESSAGE, Project.MSG_ERR);
+                }
+            } else {
+                if (getFailonerror()) {
+                    throw new BuildException(e);
+                } else {
+                    log("Caught exception: " + e.getMessage(), 
+                        Project.MSG_ERR);
+                }
+            }
         } catch (Exception e) {
             if (getFailonerror()) {
                 throw new BuildException(e);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHUserInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHUserInfo.java
index b2ae766..4d002dc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHUserInfo.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHUserInfo.java
@@ -70,7 +70,7 @@
 
     public SSHUserInfo() {
         super();
-        this.trustAllCertificates = true;
+        this.trustAllCertificates = false;
     }
 
     public SSHUserInfo(String password, boolean trustAllCertificates) {
@@ -147,6 +147,13 @@
     }
 
     /**
+     * @return whether to trust or not.
+     */
+    public boolean getTrust() {
+        return this.trustAllCertificates;
+    }
+
+    /**
      * Returns the passphrase.
      * @return String
      */
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java
index 1fd9217..cbaee2a 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java
@@ -262,7 +262,11 @@
         }
 
         setHost(uri.substring(indexOfAt + 1, indexOfPath));
-        return uri.substring(indexOfPath + 1);
+        String remotePath = uri.substring(indexOfPath + 1);
+        if (remotePath.equals("")) {
+            remotePath = ".";
+        }
+        return remotePath;
     }
 
     private boolean isRemoteUri(String uri) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java
index fe1b136..ccfb826 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java
@@ -113,7 +113,6 @@
 
             waitForAck(in);
             sendFileToRemote(localFile, in, out);
-            waitForAck(in);
         } finally {
             if (channel != null) {
                 channel.disconnect();
@@ -134,7 +133,6 @@
                 Directory current = (Directory) i.next();
                 sendDirectory(current, in, out);
             }
-            waitForAck(in);
         } finally {
             if (channel != null) {
                 channel.disconnect();
@@ -167,6 +165,7 @@
         waitForAck(in);
         sendDirectory(directory, in, out);
         out.write("E\n".getBytes());
+        waitForAck(in);
     }
 
     private void sendFileToRemote(File localFile,
@@ -200,6 +199,7 @@
             }
             out.flush();
             sendAck(out);
+            waitForAck(in);
         } finally {
             long endTime = System.currentTimeMillis();
             logStats(startTime, endTime, totalLength);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java
index 1e91d42..2003eeb 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java
@@ -76,6 +76,7 @@
  *
  * @author Christopher Charlier, ThoughtWorks, Inc. 2001
  * @author <a href="mailto:jcyip@thoughtworks.com">Jason Yip</a>
+ * @author <a href="mailto:scohen@apache.org">Steve Cohen</a>
  * @see <A HREF="http://www.starbase.com/">StarBase Web Site</A>
  *
  * @ant.task name="stlabel" category="scm"
@@ -93,7 +94,7 @@
     private String description;
 
     /**
-     * If true, this will be a build label.  If false, it will be a build
+     * If true, this will be a build label.  If false, it will be a non-build
      * label.  The default is false.  Has no effect if revision label is
      * true.
      */
@@ -123,7 +124,7 @@
     }
 
     /**
-     * Optional description of the label to be stored in the StarTeam project.
+     * Description of the label to be stored in the StarTeam project.
      */
     public void setDescription(String description) {
         this.description = description;
@@ -179,25 +180,32 @@
                 + "both specified.  A revision label cannot be a build label.");
         }
 
-        View snapshot = openView();
+        try {
+            View snapshot = openView();
 
-        // Create the new label and update the repository
+            // Create the new label and update the repository
 
-        if (this.revisionlabel) {
-            new Label(snapshot, this.labelName, this.description).update();
-            log("Created Revision Label " + this.labelName);
-        } else if (null != lastBuild) {
-            new Label(snapshot, this.labelName, this.description, this.lastBuild,
-                      this.buildlabel).update();
-            log("Created View Label ("
-                + (this.buildlabel ? "" : "non-") + "build) " + this.labelName
-                + " as of " + this.lastBuild.toString());
-        } else {
-            new Label(snapshot, this.labelName, this.description,
-                      this.buildlabel).update();
-            log("Created View Label ("
-                + (this.buildlabel ? "" : "non-") + "build) " + this.labelName);
+            if (this.revisionlabel) {
+                new Label(snapshot, this.labelName, this.description).update();
+                log("Created Revision Label " + this.labelName);
+            } else if (null != lastBuild) {
+                new Label(snapshot, this.labelName, this.description, this.lastBuild,
+                          this.buildlabel).update();
+                log("Created View Label ("
+                    + (this.buildlabel ? "" : "non-") + "build) " + this.labelName
+                    + " as of " + this.lastBuild.toString());
+            } else {
+                new Label(snapshot, this.labelName, this.description,
+                          this.buildlabel).update();
+                log("Created View Label ("
+                    + (this.buildlabel ? "" : "non-") + "build) " + this.labelName);
+            }
+        } catch (Exception e) {
+            throw new BuildException(e);
+        } finally {
+            disconnectFromServer();
         }
+
     }
 
     /**
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamTask.java
index cbe0f50..8445bc1 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamTask.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2001-2002 The Apache Software Foundation.  All rights
+ * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -117,7 +117,7 @@
 
     private void logStarteamVersion() {
         log("StarTeam version: "
-            + BuildNumber.getDisplayString(), Project.MSG_DEBUG);
+            + BuildNumber.getDisplayString(), Project.MSG_VERBOSE);
     }
 
 
@@ -318,6 +318,18 @@
     }
 
     /**
+     * disconnects from the StarTeam server.  Should be called from the 
+     * finally clause of every StarTeamTask-based execute method.
+     */
+    protected final void disconnectFromServer() {
+        if (null != this.server) {
+            this.server.disconnect();
+            log("successful disconnect from StarTeam Server " + servername,
+                Project.MSG_VERBOSE);
+        }
+    }
+
+    /**
      * returns a list of TypeNames known to the server.
      *
      * @return a reference to the server's TypeNames
@@ -362,6 +374,8 @@
         }
 
         View snapshot = createSnapshotView(view);
+        log("Connected to StarTeam view " + getURL(),
+            Project.MSG_VERBOSE);
         this.server = snapshot.getServer();
         return snapshot;
     }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java
index 51c9ee1..6583708 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java
@@ -723,6 +723,8 @@
 
         } catch (Exception e) {
             throw new BuildException(e);
+        } finally {
+            disconnectFromServer();
         }
     }
 
@@ -735,7 +737,7 @@
                 if (!stLabel.isRevisionLabel() && !stLabel.isViewLabel()) {
                     throw new BuildException("Unexpected label type.");
                 }
-                log("using label " + stLabel.getName(), Project.MSG_DEBUG);
+                log("using label " + stLabel.getName(), Project.MSG_VERBOSE);
                 this.labelInUse = stLabel;
                 return;
             }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/unix/Symlink.java b/src/main/org/apache/tools/ant/taskdefs/optional/unix/Symlink.java
index b1e341e..abb9ce4 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/unix/Symlink.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/unix/Symlink.java
@@ -417,6 +417,7 @@
         File parentDir = new File(parentStr);
         FileUtils fu = FileUtils.newFileUtils();
         File temp = fu.createTempFile("symlink", ".tmp", parentDir);
+        temp.deleteOnExit();
         try {
             try {
                 fu.rename(canfil, temp);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java
index d79454b..93ef91b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java
@@ -377,18 +377,24 @@
      */
     protected String getLabel() {
         if (m_Label != null && m_Label.length() > 0) {
-            if (m_Label.length() > 31) {
-                String label = m_Label.substring(0, 30);
-                log("Label is longer than 31 characters, truncated to: " + label, Project.MSG_WARN);
-                return FLAG_LABEL + label;
-            } else {
-                return FLAG_LABEL + m_Label;
-            }
+                return FLAG_LABEL + getShortLabel();
         } else {
             return "";
         }
     }
-
+    /**
+     * return at most the 30 first chars of the label, logging a warning message about the truncation
+     * @return at most the 30 first chars of the label
+     */
+    private String getShortLabel() {
+        if (m_Label !=  null && m_Label.length() > 31) {
+            String label = m_Label.substring(0, 30);
+            log("Label is longer than 31 characters, truncated to: " + label, Project.MSG_WARN);
+            return label;
+        } else {
+            return m_Label;
+        }
+    }
     /**
      *  Gets the style string. "-Lbuild1"
      *
@@ -410,10 +416,10 @@
         } else if (m_Date != null) {
             return FLAG_VERSION_DATE + m_Date;
         } else {
-            // Use getLabel() so labels longer then 30 char are truncated
+            // Use getShortLabel() so labels longer then 30 char are truncated
             // and the user is warned
-            String label = getLabel();
-            if (!label.equals("") && label != null) {
+            String label = getShortLabel();
+            if (label != null && !label.equals("")) {
                 return FLAG_VERSION_LABEL + label;
             }
         }
diff --git a/src/main/org/apache/tools/ant/types/Assertions.java b/src/main/org/apache/tools/ant/types/Assertions.java
index f2b9e7c..2d37ca9 100644
--- a/src/main/org/apache/tools/ant/types/Assertions.java
+++ b/src/main/org/apache/tools/ant/types/Assertions.java
@@ -55,14 +55,15 @@
 package org.apache.tools.ant.types;
 
 import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
 
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Iterator;
 
 /**
- * implement the assertion datatype. This type describes
- * assertion settings for the &lt;java&gt; task and derivatives.
+ * The assertion datatype. This type describes
+ * assertion settings for the &lt;java&gt; task and others.
  * One can set the system assertions, and enable/disable those in
  * packages & classes.
  * Assertions can only be enabled or disabled when forking Java.
@@ -127,7 +128,7 @@
      * disable assertions
      * @param assertion
      */
-    public void addDisable(EnabledAssertion assertion) {
+    public void addDisable(DisabledAssertion assertion) {
         checkChildrenAllowed();
         assertionList.add(assertion);
     }
@@ -196,11 +197,14 @@
      * @param commandList
      */
     public void applyAssertions(List commandList) {
+        getProject().log("Applying assertions",Project.MSG_DEBUG);
         Assertions clause = getFinalReference();
         //do the system assertions
         if (Boolean.TRUE.equals(clause.enableSystemAssertions)) {
+            getProject().log("Enabling system assertions", Project.MSG_DEBUG);
             commandList.add("-enablesystemassertions");
         } else if (Boolean.FALSE.equals(clause.enableSystemAssertions)) {
+            getProject().log("disabling system assertions", Project.MSG_DEBUG);
             commandList.add("-disablesystemassertions");
         }
 
@@ -209,6 +213,7 @@
         while (it.hasNext()) {
             BaseAssertion assertion = (BaseAssertion) it.next();
             String arg = assertion.toCommand();
+            getProject().log("adding assertion "+arg, Project.MSG_DEBUG);
             commandList.add(arg);
         }
     }
diff --git a/src/main/org/apache/tools/ant/types/XMLCatalog.java b/src/main/org/apache/tools/ant/types/XMLCatalog.java
index ac40024..39cb4dd 100644
--- a/src/main/org/apache/tools/ant/types/XMLCatalog.java
+++ b/src/main/org/apache/tools/ant/types/XMLCatalog.java
@@ -208,7 +208,7 @@
      * @return the elements of the catalog - ResourceLocation objects
      */
     private Vector getElements() {
-        return elements;
+        return getRef().elements;
     }
 
     /**
@@ -217,7 +217,7 @@
      * @return the classpath
      */
     private Path getClasspath() {
-        return classpath;
+        return getRef().classpath;
     }
 
     /**
@@ -335,7 +335,7 @@
      * @return the catalog path
      */
     public Path getCatalogPath() {
-        return this.catalogPath;
+        return getRef().catalogPath;
     }
 
 
@@ -421,17 +421,6 @@
         if (!elements.isEmpty()) {
             throw tooManyAttributes();
         }
-        // change this to get the objects from the other reference
-        Object o = r.getReferencedObject(getProject());
-        // we only support references to other XMLCatalogs
-        if (o instanceof XMLCatalog) {
-            // set all elements from referenced catalog to this one
-            XMLCatalog catalog = (XMLCatalog) o;
-            setElements(catalog.getElements());
-        } else {
-            String msg = r.getRefId() + " does not refer to an XMLCatalog";
-            throw new BuildException(msg);
-        }
         super.setRefid(r);
     }
 
@@ -443,6 +432,10 @@
     public InputSource resolveEntity(String publicId, String systemId)
         throws SAXException, IOException {
 
+        if (isReference()) {
+            return getRef().resolveEntity(publicId, systemId);
+        }
+
         if (!isChecked()) {
             // make sure we don't have a circular reference here
             Stack stk = new Stack();
@@ -472,6 +465,10 @@
     public Source resolve(String href, String base)
         throws TransformerException {
 
+        if (isReference()) {
+            return getRef().resolve(href, base);
+        }
+
         if (!isChecked()) {
             // make sure we don't have a circular reference here
             Stack stk = new Stack();
@@ -516,6 +513,16 @@
     }
 
     /**
+     * @since Ant 1.6
+     */
+    private XMLCatalog getRef() {
+        if (!isReference()) {
+            return this;
+        }
+        return (XMLCatalog) getCheckedRef(XMLCatalog.class, "xmlcatalog");
+    }
+
+    /**
      * The instance of the CatalogResolver strategy to use.
      */
     private CatalogResolver catalogResolver = null;
@@ -576,9 +583,8 @@
                     && getCatalogPath().list().length != 0) {
                         log("Warning: catalogpath listing external catalogs"
                             + " will be ignored", Project.MSG_WARN);
-                        log("Failed to load Apache resolver: "
-                            + ex, Project.MSG_DEBUG);
                     }
+                log("Failed to load Apache resolver: " + ex, Project.MSG_DEBUG);
             }
         }
         return catalogResolver;
diff --git a/src/main/org/apache/tools/ant/types/ZipFileSet.java b/src/main/org/apache/tools/ant/types/ZipFileSet.java
index d3aaaea..f2fb884 100644
--- a/src/main/org/apache/tools/ant/types/ZipFileSet.java
+++ b/src/main/org/apache/tools/ant/types/ZipFileSet.java
@@ -172,10 +172,7 @@
      * @param prefix The prefix to prepend to entries in the zip file.
      */
     public void setPrefix(String prefix) {
-        if (isReference()) {
-             throw tooManyAttributes();
-         }
-        if (!fullpath.equals("")) {
+        if (!prefix.equals("") && !fullpath.equals("")) {
             throw new BuildException("Cannot set both fullpath and prefix attributes");
         }
         this.prefix = prefix;
@@ -198,10 +195,7 @@
      * @param fullpath the full pathname of the single entry in this fileset.
      */
     public void setFullpath(String fullpath) {
-        if (isReference()) {
-             throw tooManyAttributes();
-         }
-        if (!prefix.equals("")) {
+        if (!prefix.equals("") && !fullpath.equals("")) {
             throw new BuildException("Cannot set both fullpath and prefix attributes");
         }
         this.fullpath = fullpath;
@@ -246,9 +240,6 @@
      * @since Ant 1.5.2
      */
     public void setFileMode(String octalString) {
-        if (isReference()) {
-             throw tooManyAttributes();
-        }
         fileModeHasBeenSet = true;
         this.fileMode =
             UnixStat.FILE_FLAG | Integer.parseInt(octalString, 8);
@@ -284,9 +275,6 @@
      * @since Ant 1.5.2
      */
     public void setDirMode(String octalString) {
-        if (isReference()) {
-             throw tooManyAttributes();
-        }
         dirModeHasBeenSet = true;
         this.dirMode =
             UnixStat.DIR_FLAG | Integer.parseInt(octalString, 8);
@@ -328,7 +316,14 @@
         if (o instanceof ZipFileSet) {
             return (AbstractFileSet) o;
         } else if (o instanceof FileSet) {
-           return (new ZipFileSet((FileSet) o));
+            ZipFileSet zfs = new ZipFileSet((FileSet) o);
+            zfs.setPrefix(prefix);
+            zfs.setFullpath(fullpath);
+            zfs.fileModeHasBeenSet = fileModeHasBeenSet;
+            zfs.fileMode = fileMode;
+            zfs.dirModeHasBeenSet = dirModeHasBeenSet;
+            zfs.dirMode = dirMode;
+            return zfs;
         } else {
             String msg = getRefid().getRefId() + " doesn\'t denote a zipfileset or a fileset";
             throw new BuildException(msg);
diff --git a/src/main/org/apache/tools/ant/types/defaults.properties b/src/main/org/apache/tools/ant/types/defaults.properties
index e257088..6dd5200 100644
--- a/src/main/org/apache/tools/ant/types/defaults.properties
+++ b/src/main/org/apache/tools/ant/types/defaults.properties
@@ -19,4 +19,4 @@
 zipfileset=org.apache.tools.ant.types.ZipFileSet
 scriptfilter=org.apache.tools.ant.types.optional.ScriptFilter
 propertyset=org.apache.tools.ant.types.PropertySet
-assertion=org.apache.tools.ant.types.Assertion
\ No newline at end of file
+assertions=org.apache.tools.ant.types.Assertions
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java b/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java
index 0ffcb82..fca576f 100644
--- a/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java
+++ b/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java
@@ -64,6 +64,7 @@
 import org.apache.tools.ant.types.XMLCatalog;
 import org.apache.tools.ant.types.ResourceLocation;
 
+import org.apache.xml.resolver.Catalog;
 import org.apache.xml.resolver.CatalogManager;
 
 import org.apache.xml.resolver.tools.CatalogResolver;
@@ -124,7 +125,7 @@
         CatalogManager.getStaticManager().setUseStaticCatalog(false);
 
         // debug
-        // System.setProperty("xml.catalog.verbosity", "4");
+        // CatalogManager.getStaticManager().setVerbosity(4);
     }
 
     /** Set the XMLCatalog object to callback. */
@@ -138,7 +139,11 @@
      */
     public void parseCatalog(String file) {
 
-        ApacheCatalog catalog = (ApacheCatalog) getCatalog();
+        Catalog _catalog = getCatalog();
+        if (!(_catalog instanceof ApacheCatalog)) {
+            throw new BuildException("Wrong catalog type found: " + _catalog.getClass().getName());
+        }
+        ApacheCatalog catalog = (ApacheCatalog) _catalog;
 
         // Pass in reference to ourselves so we can be called back.
         catalog.setResolver(this);
diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/Algorithm.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/Algorithm.java
index 8b3f94b..c8bd957 100644
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/Algorithm.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/Algorithm.java
@@ -64,7 +64,7 @@
  * same value.
  * The implementing class should implement a useful toString() method.
  *
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  * @version 2003-09-13
  * @since  Ant 1.6
  */
@@ -82,4 +82,4 @@
      * @return        The value for that file
      */
     String getValue(File file);
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/Cache.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/Cache.java
index e21879a..967b921 100644
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/Cache.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/Cache.java
@@ -66,7 +66,7 @@
  * <i>order</i>.
  * The implementing class should implement a useful toString() method.
  *
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  * @version 2003-09-13
  * @since  Ant 1.6
  */
@@ -106,4 +106,4 @@
      * @return An iterator over the keys.
      */
     Iterator iterator();
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/DigestAlgorithm.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/DigestAlgorithm.java
index 6e2462a..a89a73c 100644
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/DigestAlgorithm.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/DigestAlgorithm.java
@@ -68,7 +68,7 @@
 /**
  * Computes a 'hashvalue' for the content of file using
  * java.security.MessageDigest.
- * Use of this algorithm doesn´t require any additional nested <param>s.
+ * Use of this algorithm doesn't require any additional nested <param>s.
  * Supported <param>s are:
  * <table>
  * <tr>
@@ -88,7 +88,7 @@
  * </tr>
  * </table>
  *
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  * @version 2003-09-13
  * @since  Ant 1.6
  */
@@ -170,8 +170,8 @@
 
 
     /**
-     * This algorithm doesn´t need any configuration.
-     * Therefore it´s always valid.
+     * This algorithm doesn't need any configuration.
+     * Therefore it's always valid.
      * @return <i>true</i> if all is ok, otherwise <i>false</i>.
      */
     public boolean isValid() {
@@ -238,4 +238,4 @@
         buf.append(">");
         return buf.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/EqualComparator.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/EqualComparator.java
index 665e138..4fec14a 100644
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/EqualComparator.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/EqualComparator.java
@@ -63,7 +63,7 @@
  * compare() returns '0' (should not be selected) if both parameter
  * are equal otherwise '1' (should be selected).
  *
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  * @version 2003-09-13
  * @since  Ant 1.6
  */
@@ -94,4 +94,4 @@
     public String toString() {
         return "EqualComparator";
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/HashvalueAlgorithm.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/HashvalueAlgorithm.java
index b4fc89f..15cd5c4 100644
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/HashvalueAlgorithm.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/HashvalueAlgorithm.java
@@ -60,18 +60,18 @@
 
 /**
  * Computes a 'hashvalue' for the content of file using String.hashValue().
- * Use of this algorithm doesn´t require any additional nested <param>s and
- * doesn´t support any.
+ * Use of this algorithm doesn't require any additional nested <param>s and
+ * doesn't support any.
  *
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  * @version 2003-09-13
  * @since  Ant 1.6
  */
 public class HashvalueAlgorithm implements Algorithm {
 
     /**
-     * This algorithm doesn´t need any configuration.
-     * Therefore it´s always valid.
+     * This algorithm doesn't need any configuration.
+     * Therefore it's always valid.
      * @return always true
      */
     public boolean isValid() {
@@ -83,7 +83,7 @@
      * It reads the content of a file, convert that to String and use the
      * String.hashCode() method.
      * @param file  The file for which the value should be computed
-     * @return the hashvalue or <i>null</i> if the file couldn´t be read
+     * @return the hashvalue or <i>null</i> if the file couldn't be read
      */
      // Because the content is only read the file will not be damaged. I tested
      // with JPG, ZIP and PDF as binary files.
@@ -113,4 +113,4 @@
         return "HashvalueAlgorithm";
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
index 894450b..6922122 100644
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
@@ -146,7 +146,7 @@
  * </pre> Here all <b>changed</b> files are uploaded to the server. The
  * ModifiedSelector saves therefore much upload time.</p>
  *
- * <p>This selector supports the following nested param´s:
+ * <p>This selector supports the following nested param's:
  * <table>
  * <tr><th>name</th><th>values</th><th>description</th><th>required</th></tr>
  * <tr>
@@ -219,7 +219,7 @@
  * a nested <i><param name="algorithm.provider" value="MyProvider"/></i>.
  *
  *
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  * @version 2003-09-13
  * @since  Ant 1.6
 */
@@ -313,7 +313,7 @@
      * <li> set values for name pattern '*': update, cache, algorithm, comparator </li>
      * <li> set values for name pattern '*.*: cache.cachefile, ... </li>
      * </ol></p>
-     * <p>This configuration algorithm is needed because you don´t know
+     * <p>This configuration algorithm is needed because you don't know
      * the order of arriving config-data. E.g. if you first set the
      * <i>cache.cachefilename</i> and after that the <i>cache</i> itself,
      * the default value for cachefilename is used, because setting the
@@ -650,4 +650,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/PropertiesfileCache.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/PropertiesfileCache.java
index 2b681a4..184765b 100644
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/PropertiesfileCache.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/PropertiesfileCache.java
@@ -88,7 +88,7 @@
  * </tr>
  * </table>
  *
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  * @version 2003-09-13
  * @since  Ant 1.6
  */
@@ -252,4 +252,4 @@
         buf.append(">");
         return buf.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java
index eada52f..b4d4906 100644
--- a/src/main/org/apache/tools/ant/util/FileUtils.java
+++ b/src/main/org/apache/tools/ant/util/FileUtils.java
@@ -545,7 +545,7 @@
             // ensure that parent dir of dest file exists!
             // not using getParentFile method to stay 1.1 compat
             File parent = getParentFile(destFile);
-            if (!parent.exists()) {
+            if (parent != null && !parent.exists()) {
                 parent.mkdirs();
             }
 
@@ -824,6 +824,8 @@
      *   <li>DOS style paths that start with a drive letter will have
      *     \ as the separator.</li>
      * </ul>
+     * Unlike <code>File#getCanonicalPath()</code> it specifically doesn't
+     * resolve symbolic links.
      *
      * @param path the path to be normalized
      * @return the normalized version of the path.
@@ -938,6 +940,65 @@
     }
 
     /**
+     * Returns a VMS String representation of a <code>File</code> object.
+     * This is useful since the JVM by default internally converts VMS paths
+     * to Unix style.
+     * The returned String is always an absolute path.
+     * 
+     * @param f The <code>File</code> to get the VMS path for.
+     * @return The absolute VMS path to <code>f</code>.
+     */
+    public String toVMSPath(File f) {
+        // format: "DEVICE:[DIR.SUBDIR]FILE"
+        String osPath;
+        String path = normalize(f.getAbsolutePath()).getPath();
+        String name = f.getName();
+        boolean isAbsolute = path.charAt(0) == File.separatorChar;
+        // treat directories specified using .DIR syntax as files
+        boolean isDirectory = f.isDirectory() &&
+            !name.regionMatches(true, name.length() - 4, ".DIR", 0, 4); 
+
+        String device = null;
+        StringBuffer directory = null;
+        String file = null;
+
+        int index = 0;
+
+        if (isAbsolute) {
+            index = path.indexOf(File.separatorChar, 1);
+            if (index == -1) {
+                return path.substring(1) + ":[000000]";
+            } else {
+                device = path.substring(1, index++);
+            }
+        }
+        if (isDirectory) {
+            directory = new StringBuffer(path.substring(index).
+                                         replace(File.separatorChar, '.'));
+        } else {
+            int dirEnd =
+                path.lastIndexOf(File.separatorChar, path.length());
+            if (dirEnd == -1 || dirEnd < index) {
+                file = path.substring(index);
+            } else {
+                directory = new StringBuffer(path.substring(index, dirEnd).
+                                             replace(File.separatorChar, '.'));
+                index = dirEnd + 1;
+                if (path.length() > index) {
+                    file = path.substring(index);
+                }
+            }
+        }
+        if (!isAbsolute && directory != null) {
+            directory.insert(0, '.');
+        }
+        osPath = ((device != null) ? device + ":" : "") +
+            ((directory != null) ? "[" + directory + "]" : "") +
+            ((file != null) ? file : "");
+        return osPath;
+    }
+
+    /**
      * Create a temporary file in a given directory.
      *
      * <p>The file denoted by the returned abstract pathname did not
@@ -1319,7 +1380,7 @@
         }
 
         File parent = getParentFile(to);
-        if (!parent.exists() && !parent.mkdirs()) {
+        if (parent != null && !parent.exists() && !parent.mkdirs()) {
             throw new IOException("Failed to create directory " + parent
                                   + " while trying to rename " + from);
         }
diff --git a/src/main/org/apache/tools/ant/util/JAXPUtils.java b/src/main/org/apache/tools/ant/util/JAXPUtils.java
index 033ade3..c44687a 100644
--- a/src/main/org/apache/tools/ant/util/JAXPUtils.java
+++ b/src/main/org/apache/tools/ant/util/JAXPUtils.java
@@ -54,6 +54,8 @@
 package org.apache.tools.ant.util;
 
 import java.io.File;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
@@ -97,6 +99,12 @@
      */
     private static SAXParserFactory nsParserFactory = null;
 
+    /**
+     * Parser factory to use to create document builders.
+     *
+     * @since Ant 1.6
+     */
+    private static DocumentBuilderFactory builderFactory = null;
 
     /**
      * Returns the parser factory to use. Only one parser factory is
@@ -210,6 +218,20 @@
     }
 
     /**
+     * Returns a newly created DocumentBuilder.
+     *
+     * @return a DocumentBuilder
+     * @since Ant 1.6
+     */
+    public static DocumentBuilder getDocumentBuilder() throws BuildException {
+        try {
+            return getDocumentBuilderFactory().newDocumentBuilder();
+        } catch (ParserConfigurationException e) {
+            throw new BuildException(e);
+        }
+    }
+
+    /**
      * @return a new SAXParser instance as helper for getParser and
      * getXMLReader.
      *
@@ -241,4 +263,24 @@
         }
     }
 
+    /**
+     * Obtains the default builder factory if not already.
+     *
+     * @since Ant 1.6
+     */
+    private static synchronized 
+        DocumentBuilderFactory getDocumentBuilderFactory() 
+        throws BuildException {
+        if (builderFactory == null) {
+            try {
+                builderFactory = DocumentBuilderFactory.newInstance();
+            } catch (FactoryConfigurationError e) {
+                throw new BuildException("Document builder factory has not "
+                                         + "been configured correctly: "
+                                         + e.getMessage(), e);
+            }
+        }
+        return builderFactory;
+    }
+
 }
diff --git a/src/main/org/apache/tools/ant/util/ScriptRunner.java b/src/main/org/apache/tools/ant/util/ScriptRunner.java
index 4e00064..7e876c5 100644
--- a/src/main/org/apache/tools/ant/util/ScriptRunner.java
+++ b/src/main/org/apache/tools/ant/util/ScriptRunner.java
@@ -89,7 +89,15 @@
     public void addBeans(Map dictionary) {
         for (Iterator i = dictionary.keySet().iterator(); i.hasNext();) {
             String key = (String) i.next();
-            addBean(key, dictionary.get(key));
+            try {
+                Object val = dictionary.get(key);
+                addBean(key, val);
+            } catch (BuildException ex) {
+                // The key is in the dictionary but cannot be retrieved
+                // This is usually due references that refer to tasks
+                // that have not been taskdefed in the current run.
+                // Ignore
+            }
         }
     }
 
@@ -131,7 +139,15 @@
             for (Iterator i = beans.keySet().iterator(); i.hasNext();) {
                 String key = (String) i.next();
                 Object value = beans.get(key);
-                manager.declareBean(key, value, value.getClass());
+                if (value != null) {
+                    manager.declareBean(key, value, value.getClass());
+                } else {
+                    // BSF uses a hashtable to store values
+                    // so cannot declareBean with a null value
+                    // So need to remove any bean of this name as
+                    // that bean should not be visible
+                    manager.undeclareBean(key);
+                }
             }
 
             // execute the script
diff --git a/src/script/ant b/src/script/ant
index b383d44..38407ec 100644
--- a/src/script/ant
+++ b/src/script/ant
@@ -34,7 +34,7 @@
            ;;
 esac
 
-if [ -z "$ANT_HOME" ] ; then
+if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
   # try to find ANT
   if [ -d /opt/ant ] ; then
     ANT_HOME=/opt/ant
@@ -71,8 +71,6 @@
     ANT_HOME=`cygpath --unix "$ANT_HOME"`
   [ -n "$JAVA_HOME" ] &&
     JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
 fi
 
 # set ANT_LIB location
@@ -100,10 +98,6 @@
   exit 1
 fi
 
-if [ -n "$CLASSPATH" ] ; then
-  LOCALCLASSPATH="$CLASSPATH"
-fi
-
 # in rpm_mode get ant/optional/xml parser&api from JAVALIBDIR
 if $rpm_mode; then
   JAVALIBDIR=/usr/share/java
@@ -149,21 +143,20 @@
 if $cygwin; then
   ANT_HOME=`cygpath --windows "$ANT_HOME"`
   JAVA_HOME=`cygpath --windows "$JAVA_HOME"`
-  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
   LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
   CYGHOME=`cygpath --windows "$HOME"`
 fi
 
 if [ -n "$CYGHOME" ]; then
   if [ -n "$JIKESPATH" ]; then
-    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
+    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
   else
-    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
+    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
   fi
 else
   if [ -n "$JIKESPATH" ]; then
-    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
+    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
   else
-    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
+    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
   fi
 fi
diff --git a/src/script/ant.bat b/src/script/ant.bat
index 6075466..aaa8232 100755
--- a/src/script/ant.bat
+++ b/src/script/ant.bat
@@ -54,7 +54,6 @@
 
 :checkJava
 set _JAVACMD=%JAVACMD%
-set LOCALCLASSPATH=%ANT_HOME%\lib\ant-launcher.jar;%CLASSPATH%
 
 if "%JAVA_HOME%" == "" goto noJavaHome
 if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
@@ -68,15 +67,24 @@
 if not "%JIKESPATH%"=="" goto runAntWithJikes
 
 :runAnt
-"%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
+if not "%CLASSPATH%"=="" goto runAntWithClasspath
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
+goto end
+
+:runAntWithClasspath
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -lib "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
 goto end
 
 :runAntWithJikes
-"%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
+if not "%CLASSPATH%"=="" goto runAntWithJikesAndClasspath
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
+goto end
+
+:runAntWithJikesAndClasspath
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS%  -lib "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
 goto end
 
 :end
-set LOCALCLASSPATH=
 set _JAVACMD=
 set ANT_CMD_LINE_ARGS=
 
diff --git a/src/script/antRun.pl b/src/script/antRun.pl
index 5c7edb1..627109b 100644
--- a/src/script/antRun.pl
+++ b/src/script/antRun.pl
@@ -11,7 +11,6 @@
 # this is akin to antRun.bat, and antRun the SH script 
 #
 # created:         2001-10-18
-# last modified:   $Date$
 # author:          Jeff Tulley jtulley@novell.com 
 #######################################################################
 #be fussy about variables
diff --git a/src/script/runant.pl b/src/script/runant.pl
index 80fb2b1..8bedbd4 100644
--- a/src/script/runant.pl
+++ b/src/script/runant.pl
@@ -18,7 +18,6 @@
 # the code is not included. 
 #
 # created:         2000-8-24
-# last modified:   $Date$
 # author:          Steve Loughran steve_l@sourceforge.net
 #######################################################################
 #
@@ -39,7 +38,7 @@
 #use warnings;
 
 #and set $debug to 1 to turn on trace info
-my $debug=0;
+my $debug=1;
 
 #######################################################################
 #
@@ -74,26 +73,7 @@
         }
 
 #build up standard classpath
-my $localpath=$ENV{CLASSPATH};
-if ($localpath eq "")
-        {
-        print "warning: no initial classpath\n" if ($debug);
-        $localpath="";
-        }
-if ($onnetware == 1)
-{
-# avoid building a command line bigger than 512 characters - make localpath
-# only include the "extra" stuff, and add in the system classpath as an expanded
-# variable. 
-  $localpath="";
-} 
-
-if ($localpath eq "") {
-  $localpath = "$HOME/lib/ant-launcher.jar";
-} else {
-  $localpath = "$HOME/lib/ant-launcher.jar$s$localpath";
-}
-
+my $localpath = "$HOME/lib/ant-launcher.jar";
 #set JVM options and Ant arguments, if any
 my @ANT_OPTS=split(" ", $ENV{ANT_OPTS});
 my @ANT_ARGS=split(" ", $ENV{ANT_ARGS});
@@ -110,25 +90,21 @@
 
 my $CYGHOME = "";
 
+my $classpath=$ENV{CLASSPATH};
 if ($oncygwin == 1) {
   $localpath = `cygpath --path --windows $localpath`;
   chomp ($localpath);
+  if (! $classpath eq "")
+  {
+    $classpath = `cygpath --path --windows "$classpath"`;
+    chomp ($classpath);
+  }
   $HOME = `cygpath --path --windows $HOME`;
   chomp ($HOME);
   $CYGHOME = `cygpath --path --windows $ENV{HOME}`;
   chomp ($CYGHOME);
 }
-if ($onnetware == 1)
-{
-# make classpath literally $CLASSPATH; and then the contents of $localpath
-# this is to avoid pushing us over the 512 character limit
-# even skip the ; - that is already in $localpath
-  push @ARGS, "-classpath", "\$CLASSPATH$localpath";
-}
-else
-{
-  push @ARGS, "-classpath", "$localpath";
-}
+push @ARGS, "-classpath", "$localpath";
 push @ARGS, "-Dant.home=$HOME";
 if ( ! $CYGHOME eq "" )
 {
@@ -136,7 +112,20 @@
 }
 push @ARGS, "org.apache.tools.ant.launch.Launcher", @ANT_ARGS;
 push @ARGS, @ARGV;
-
+if (! $classpath eq "")
+{
+  if ($onnetware == 1)
+  {
+    # make classpath literally $CLASSPATH
+    # this is to avoid pushing us over the 512 character limit
+    # even skip the ; - that is already in $localpath
+    push @ARGS, "-lib", "\$CLASSPATH";
+  }
+  else
+  {
+    push @ARGS, "-lib", "$classpath";
+  }
+}
 print "\n $JAVACMD @ARGS\n\n" if ($debug);
 
 my $returnValue = system $JAVACMD, @ARGS;
diff --git a/src/script/runant.py b/src/script/runant.py
index 45bf523..dcd0742 100644
--- a/src/script/runant.py
+++ b/src/script/runant.py
@@ -17,7 +17,6 @@
  Assumptions:
 
  - the "java" executable/script is on the command path
- - ANT_HOME has been set
 """
 import os, os.path, string, sys
 
@@ -25,52 +24,62 @@
 debug = 0
 
 #######################################################################
-#
-# check to make sure environment is setup
-#
+
+# If ANT_HOME is not set default to script's parent directory
 if os.environ.has_key('ANT_HOME'):
     ANT_HOME = os.environ['ANT_HOME']
 else:
     ANT_HOME = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0])))
 
-# Add jar files
+# set ANT_LIB location
 ANT_LIB = os.path.join(ANT_HOME, 'lib')
 
+# set JAVACMD (check variables JAVACMD and JAVA_HOME)
+JAVACMD = None
 if not os.environ.has_key('JAVACMD'):
-    JAVACMD = 'java'
+    if os.environ.has_key('JAVA_HOME'):
+        if not os.path.exists(os.environ['JAVA_HOME']):
+            print "Warning: JAVA_HOME is not defined correctly."
+        else:
+            JAVACMD = os.path.join(os.environ['JAVA_HOME'], 'bin', 'java')
+    else:
+        print "Warning: JAVA_HOME not set."
 else:
     JAVACMD = os.environ['JAVACMD']
-
-# Build up standard classpath
-localpath = ''
-if os.environ.has_key('CLASSPATH'):
-    localpath = os.environ['CLASSPATH']
-else:
-    if debug:
-        print 'Warning: no initial classpath\n'
+if not JAVACMD:
+    JAVACMD = 'java'
 
 launcher_jar = os.path.join(ANT_LIB, 'ant-launcher.jar')
 if not os.path.exists(launcher_jar):
     print 'Unable to locate ant-launcher.jar. Expected to find it in %s' % \
         ANT_LIB
-if localpath:
-    localpath = launcher_jar + os.pathsep + localpath
-else:
-    localpath = launcher_jar
 
-ANT_OPTS = []
+# Build up standard classpath (LOCALCLASSPATH)
+LOCALCLASSPATH = launcher_jar
+if os.environ.has_key('LOCALCLASSPATH'):
+    LOCALCLASSPATH += os.pathsep + os.environ['LOCALCLASSPATH']
+
+ANT_OPTS = ""
 if os.environ.has_key('ANT_OPTS'):
-    ANT_OPTS = string.split(os.environ['ANT_OPTS'])
+    ANT_OPTS = os.environ['ANT_OPTS']
 
-OPTS = []
+OPTS = ""
 if os.environ.has_key('JIKESPATH'):
-    OPTS.append('-Djikes.class.path=' + os.environ['JIKESPATH'])
+    OPTS = '-Djikes.class.path=\"%s\"' % os.environ['JIKESPATH']
+
+ANT_ARGS = ""
+if os.environ.has_key('ANT_ARGS'):
+    ANT_ARGS = os.environ['ANT_ARGS']
+
+CLASSPATH = ""
+if os.environ.has_key('CLASSPATH'):
+    CLASSPATH = os.environ['CLASSPATH']
 
 # Builds the commandline
-cmdline = ('%s %s -classpath %s -Dant.home=\"%s\" %s ' + \
-    'org.apache.tools.ant.launch.Launcher %s') \
-     % (JAVACMD, string.join(ANT_OPTS,' '), localpath, ANT_HOME, \
-        string.join(OPTS,' '), string.join(sys.argv[1:], ' '))
+cmdline = ('%s %s -classpath %s -Dant.home=%s %s ' + \
+    'org.apache.tools.ant.launch.Launcher %s -lib %s %s') \
+     % (JAVACMD, ANT_OPTS, LOCALCLASSPATH, ANT_HOME, OPTS, ANT_ARGS, \
+        CLASSPATH, string.join(sys.argv[1:], ' '))
 
 if debug:
     print '\n%s\n\n' % (cmdline)
diff --git a/src/testcases/org/apache/tools/ant/BuildFileTest.java b/src/testcases/org/apache/tools/ant/BuildFileTest.java
index 48e41b1..3026baa 100644
--- a/src/testcases/org/apache/tools/ant/BuildFileTest.java
+++ b/src/testcases/org/apache/tools/ant/BuildFileTest.java
@@ -215,11 +215,7 @@
             if (!cr) {
                 cleanedBuffer.append(ch);
             } else {
-                if (ch == '\n') {
-                    cleanedBuffer.append(ch);
-                } else {
-                    cleanedBuffer.append('\r').append(ch);
-                }
+                cleanedBuffer.append(ch);
             }
         }
         return cleanedBuffer.toString();
diff --git a/src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java b/src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java
index c97b68a..6e765e8 100644
--- a/src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java
+++ b/src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java
@@ -62,7 +62,7 @@
 
 /**
  * JUnit Testcases for ConcatReader
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  */
 public class ConcatFilterTest extends BuildFileTest {
 
@@ -111,85 +111,80 @@
     }
 
     public void tearDown() {
-        // I dont know why - but on my machine I always get a
-        // "Unable to delete file ...result\append.txt" (or prepend.txt)
-        // from Delete.removeDir(Delete.java:612).
-        // Win2000, JDK 1.4.1_02
-        // A <sleep> before <delete> doesn´t work. From 10ms to 3000ms.
-        // I modified the taskdefs.Delete.DELETE_RETRY_SLEEP_MILLIS
-        // from 10 up to 2000 ms, but no success.
-        // So I give up - and hope for a suggestion from another one.
-        // But this shouldn´t let the testcases fail, so I do the cleanup
-        // inside a try-block
-        //    Jan
-        try {
-            executeTarget("cleanup");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        executeTarget("cleanup");
     }
 
     public void testFilterReaderNoArgs() throws IOException {
         executeTarget("testFilterReaderNoArgs");
         File expected = getProject().resolveFile("input/concatfilter.test");
-        File result = getProject().resolveFile("result/concat.filterReaderNoArgs.test");
+        File result = getProject().resolveFile("result/concat.FilterReaderNoArgs.test");
         assertTrue("testFilterReaderNoArgs: Result not like expected", fu.contentEquals(expected, result));
     }
 
-    public void testFilterReaderBefore() throws IOException {
-        executeTarget("testFilterReaderPrepend");
-        File resultFile = getProject().resolveFile("result/concat.filterReaderPrepend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
+    public void testFilterReaderBefore() {
+        doTest("testFilterReaderPrepend", FILE_PREPEND_WITH, FILE_APPEND);
     }
 
-    public void testFilterReaderAfter() throws IOException {
-        executeTarget("testFilterReaderAppend");
-        File resultFile = getProject().resolveFile("result/concat.filterReaderAppend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
+    public void testFilterReaderAfter() {
+        doTest("testFilterReaderAppend", FILE_PREPEND, FILE_APPEND_WITH);
     }
 
-    public void testFilterReaderBeforeAfter() throws IOException {
-        executeTarget("testFilterReaderPrependAppend");
-        File resultFile = getProject().resolveFile("result/concat.filterReaderPrependAppend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
+    public void testFilterReaderBeforeAfter() {
+        doTest("testFilterReaderPrependAppend", FILE_PREPEND_WITH, FILE_APPEND_WITH);
     }
 
-    public void testConcatFilter() throws IOException {
-        executeTarget("testConcatFilter");
-        File resultFile = getProject().resolveFile("result/concat.concatfilter.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
+    public void testConcatFilter() {
+        doTest("testConcatFilter", FILE_PREPEND, FILE_APPEND);
     }
 
-    public void testConcatFilterBefore() throws IOException {
-        executeTarget("testConcatFilterPrepend");
-        File resultFile = getProject().resolveFile("result/concat.concatfilterPrepend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
+    public void testConcatFilterBefore() {
+        doTest("testConcatFilterPrepend", FILE_PREPEND_WITH, FILE_APPEND);
     }
 
-    public void testConcatFilterAfter() throws IOException {
-        executeTarget("testConcatFilterAppend");
-        File resultFile = getProject().resolveFile("result/concat.concatfilterAppend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
+    public void testConcatFilterAfter() {
+        doTest("testConcatFilterAppend", FILE_PREPEND, FILE_APPEND_WITH);
     }
 
-    public void testConcatFilterBeforeAfter() throws IOException {
-        executeTarget("testConcatFilterPrependAppend");
-        File resultFile = getProject().resolveFile("result/concat.concatfilterPrependAppend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
+    public void testConcatFilterBeforeAfter() {
+        doTest("testConcatFilterPrependAppend", FILE_PREPEND_WITH, FILE_APPEND_WITH);
     }
 
-}
\ No newline at end of file
+
+    /**
+     * Executes a target and checks the beginning and the ending of a file.
+     * The filename depends on the target name: target name <i>testHelloWorld</i>
+     * will search for a file <i>result/concat.HelloWorld.test</i>.
+     * @param target The target to invoke
+     * @param expectedStart The string which should be at the beginning of the file
+     * @param expectedEnd The string which should be at the end of the file
+     */
+    protected void doTest(String target, String expectedStart, String expectedEnd) {
+        executeTarget(target);
+        String resultContent = read("result/concat." + target.substring(4) + ".test");
+        assertTrue("First 5 lines differs.", resultContent.startsWith(expectedStart));
+        assertTrue("Last 5 lines differs.", resultContent.endsWith(expectedEnd));
+    }
+
+
+    /**
+     * Wrapper for FileUtils.readFully().
+     * Additionally it resolves the filename according the the projects basedir
+     * and closes the used reader.
+     * @param filename The name of the file to read
+     * @return the content of the file or <i>null</i> if something goes wrong
+     */
+    protected String read(String filename) {
+        String content = null;
+        try {
+            File file = getProject().resolveFile(filename);
+            java.io.FileReader rdr = new java.io.FileReader(file);
+            content = fu.readFully(rdr);
+            rdr.close();
+            rdr = null;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return content;
+    }
+
+}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/AntlibTest.java b/src/testcases/org/apache/tools/ant/taskdefs/AntlibTest.java
index 0679ead..51b4199 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/AntlibTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/AntlibTest.java
@@ -73,6 +73,15 @@
     public void testAntlibFile() {
         expectLog("antlib.file", "MyTask called");
     }
+    
+    /**
+     * Confirms that all matching resources will be used, so that you
+     * can collect several antlibs in one Definer call.
+     * @see "http://issues.apache.org/bugzilla/show_bug.cgi?id=24024"
+     */
+    public void testAntlibResource() {
+        expectLog("antlib.resource", "MyTask called-and-then-MyTask2 called");
+    }
 
     public void testNsCurrent() {
         expectLog("ns.current", "Echo2 inside a macroHello from x:p");
@@ -84,5 +93,11 @@
         }
     }
 
+    public static class MyTask2 extends Task {
+        public void execute() {
+            log("MyTask2 called");
+        }
+    }
+
 }
 
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
index d161e2e..cfd07f0 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
@@ -54,7 +54,9 @@
 
 package org.apache.tools.ant.taskdefs;
 
+import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.Location;
 import org.apache.tools.ant.Project;
 
 /**
@@ -119,5 +121,27 @@
         expectPropertySet("within-imported", "foo", "bar");
         assertNotNull(getProject().getReference("baz"));
     }
+
+    public void testImportError() {
+        try {
+            configureProject(
+                "src/etc/testcases/taskdefs/import/import_bad_import.xml");
+        } catch (BuildException ex) {
+            Location lo = ex.getLocation();
+            assertTrue(
+                "expected location of build exception to be set",
+                (lo != null));
+            assertTrue(
+                "expected location to contain calling file",
+                lo.getFileName().indexOf("import_bad_import.xml") != -1);
+            assertTrue(
+                "expected message of ex to contain called file",
+                ex.getMessage().indexOf("bad.xml") != -1);
+            return;
+        }
+        assertTrue(
+            "Did not see build exception",
+            false);
+    }
 }
 
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/JarTest.java b/src/testcases/org/apache/tools/ant/taskdefs/JarTest.java
index 2c69a1e..f101ac5 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/JarTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/JarTest.java
@@ -66,6 +66,7 @@
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.taskdefs.condition.Os;
 
 /**
  * @author Erik Meade <emeade@geekfarm.org>
@@ -160,8 +161,12 @@
 
     private void testRecreate(String firstTarget, String secondTarget) {
         executeTarget(firstTarget);
+        int sleeptime = 2500;
+        if (Os.isFamily("windows")) {
+            sleeptime += 2500;
+        }
         try {
-            Thread.currentThread().sleep(2500);
+            Thread.currentThread().sleep(sleeptime);
         } catch (InterruptedException e) {
         } // end of try-catch
         File jarFile = new File(getProjectDir(), tempJar);
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
index e6b8987..1556134 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
@@ -78,6 +78,18 @@
         expectLog("text", "Inner Text");
     }
 
+    public void testDuplicateAttribute() {
+        expectBuildException(
+            "duplicate.attribute",
+            "the attribute text has already been specified");
+    }
+    
+    public void testDuplicateElement() {
+        expectBuildException(
+            "duplicate.element",
+            "the element text has already been specified");
+    }
+    
     public void testUri() {
         expectLog("uri", "Hello World");
     }
@@ -86,8 +98,10 @@
         expectLog("nested", "A nested element");
     }
 
-    public void testXPathStyle() {
-        expectLog("xpathstyle", "attribute is this is a testthis is a test");
+    public void testDouble() {
+        expectLog(
+            "double",
+            "@{prop} is 'property', value of ${property} is 'A property value'");
     }
 }
 
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/PreSetDefTest.java b/src/testcases/org/apache/tools/ant/taskdefs/PreSetDefTest.java
index 2bce11a..f4561fb 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/PreSetDefTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/PreSetDefTest.java
@@ -55,6 +55,7 @@
 package org.apache.tools.ant.taskdefs;
 
 import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 
@@ -82,5 +83,43 @@
         expectLog("uri", "Hello world");
     }
 
+    public void testDefaultTest() {
+        expectLog("defaulttest", "attribute is false");
+    }
+
+    public void testDoubleDefault() {
+        expectLog("doubledefault", "attribute is falseattribute is true");
+    }
+
+    public void testTextOptional() {
+        expectLog("text.optional", "MyTextoverride text");
+    }
+
+    public void testElementOrder() {
+        expectLog("element.order", "Line 1Line 2");
+    }
+
+    public void testElementOrder2() {
+        expectLog("element.order2", "Line 1Line 2Line 3");
+    }
+    
+    /**
+     * A test class to check default properties
+     */
+    public static class DefaultTest extends Task {
+        boolean isSet = false;
+        boolean attribute = false;
+        public void setAttribute(boolean b) {
+            if (isSet) {
+                throw new BuildException("Attribute Already set");
+            }
+            attribute = b;
+            isSet = true;
+        }
+
+        public void execute() {
+            getProject().log("attribute is " + attribute);
+        }
+    }
 }
 
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
index 66c1008..5fe4e95 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2000-2001 The Apache Software Foundation.  All rights
+ * Copyright (c) 2000-2001,2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -108,8 +108,9 @@
 
     public void test9() throws IOException{
         executeTarget("test9");
-        assertEqualContent(new File(TEST_PATH + "result.txt"),
-                    new File(TEST_PATH + "output.txt"));
+        String tmpdir = project.getProperty("tmp.dir");
+        assertEqualContent(new File(tmpdir, "result.txt"),
+                    new File(tmpdir, "output.txt"));
     }
     public void tearDown() {
         executeTarget("cleanup");
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/XmlnsTest.java b/src/testcases/org/apache/tools/ant/taskdefs/XmlnsTest.java
index 19b0c2a..a39e82b 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/XmlnsTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/XmlnsTest.java
@@ -88,6 +88,14 @@
             "Attempt to use a reserved URI ant:notallowed");
     }
 
+    public void testOther() {
+        expectLog("other", "a message");
+    }
+
+    public void testNsAttributes() {
+        expectLog("ns.attributes", "hello world");
+    }
+    
     public static class MyTask extends Task {
         public void execute() {
             log("MyTask called");
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/DotnetTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/DotnetTest.java
index 47857ce..c454f8a 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/DotnetTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/DotnetTest.java
@@ -157,5 +157,13 @@
     public void testJsharp() throws Exception {
         executeTarget("jsharp");
     }
+
+    /**
+     * test we can handle jsharp (if found)
+     */
+    public void testResponseFile() throws Exception {
+        executeTarget("testCSCresponseFile");
+    }
+
 }
 
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/RhinoReferenceTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/RhinoReferenceTest.java
new file mode 100644
index 0000000..10ae28f
--- /dev/null
+++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/RhinoReferenceTest.java
@@ -0,0 +1,81 @@
+/*
+ *  The Apache Software License, Version 1.1
+ *
+ *  Copyright (c) 2003 The Apache Software Foundation.  All rights
+ *  reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *  1. Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *  2. Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in
+ *  the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *  3. The end-user documentation included with the redistribution, if
+ *  any, must include the following acknowlegement:
+ *  "This product includes software developed by the
+ *  Apache Software Foundation (http://www.apache.org/)."
+ *  Alternately, this acknowlegement may appear in the software itself,
+ *  if and wherever such third-party acknowlegements normally appear.
+ *
+ *  4. The names "Ant" and "Apache Software
+ *  Foundation" must not be used to endorse or promote products derived
+ *  from this software without prior written permission. For written
+ *  permission, please contact apache@apache.org.
+ *
+ *  5. Products derived from this software may not be called "Apache"
+ *  nor may "Apache" appear in their names without prior written
+ *  permission of the Apache Group.
+ *
+ *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *  DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ *  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ *  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ *  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *  SUCH DAMAGE.
+ *  ====================================================================
+ *
+ *  This software consists of voluntary contributions made by many
+ *  individuals on behalf of the Apache Software Foundation.  For more
+ *  information on the Apache Software Foundation, please see
+ *  <http://www.apache.org/>.
+ */
+package org.apache.tools.ant.taskdefs.optional;
+
+import org.apache.tools.ant.BuildFileTest;
+
+/**
+ * Tests using an undefined reference.
+ *
+ * @author Peter Reilly
+ * @since Ant 1.6
+ */
+public class RhinoReferenceTest extends BuildFileTest {
+
+    public RhinoReferenceTest(String name) {
+        super(name);
+    }
+
+    /**
+     * The JUnit setup method
+     */
+    public void setUp() {
+        configureProject(
+            "src/etc/testcases/taskdefs/optional/script_reference.xml");
+    }
+
+    public void testScript() {
+        executeTarget("script");
+    }
+}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java
index 80799ce..ce287e1 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java
@@ -1,7 +1,7 @@
 /*
  *  The Apache Software License, Version 1.1
  *
- *  Copyright (c) 2002 The Apache Software Foundation.  All rights
+ *  Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
  *  reserved.
  *
  *  Redistribution and use in source and binary forms, with or without
@@ -126,6 +126,13 @@
     }
 
     /**
+     *
+     */
+    public void testXmlCatalogViaRefid() {
+        executeTarget("xmlcatalogViaRefid");
+    }
+
+    /**
      * Test that the nested dtd element is used when resolver.jar is not
      * present.  This test should pass either way.
      */
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTest.java
new file mode 100644
index 0000000..ac2d5a8
--- /dev/null
+++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTest.java
@@ -0,0 +1,155 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowlegement:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software
+ *    Foundation" must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ *    nor may "Apache" appear in their names without prior written
+ *    permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.tools.ant.taskdefs.optional.jdepend;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.DirectoryScanner;
+
+/**
+ * Testcase for the JDepend optional task.
+ *
+ * @author Peter Reilly
+ */
+public class JDependTest extends BuildFileTest {
+    public static final String RESULT_FILESET = "result";
+
+    public JDependTest(String name) {
+        super(name);
+    }
+
+    public void setUp() {
+        configureProject(
+            "src/etc/testcases/taskdefs/optional/jdepend/jdepend.xml");
+    }
+
+    /**
+     * Test simple
+     */
+    public void testSimple() {
+        expectOutputContaining(
+            "simple", "Package: org.apache.tools.ant.util.facade");
+    }
+    
+    /**
+     * Test xml
+     */
+    public void testXml() {
+        expectOutputContaining(
+            "xml", "<DependsUpon>");
+    }
+
+    /**
+     * Test fork
+     * - forked output goes to log
+     */
+    public void testFork() {
+        expectLogContaining(
+            "fork", "Package: org.apache.tools.ant.util.facade");
+    }
+    
+    /**
+     * Test fork xml
+     */
+    public void testForkXml() {
+        expectLogContaining(
+            "fork-xml", "<DependsUpon>");
+    }
+
+    /**
+     * Test timeout
+     */
+    public void testTimeout() {
+        expectLogContaining(
+            "fork-timeout", "JDepend FAILED - Timed out");
+    }
+    
+
+    /**
+     * Test timeout without timing out
+     */
+    public void testTimeoutNot() {
+        expectLogContaining(
+            "fork-timeout-not", "Package: org.apache.tools.ant.util.facade");
+    }
+
+    /**
+     * Assert that the given substring is in the output messages
+     */
+
+    protected void assertOutputContaining(String substring) {
+        String realOutput = getOutput();
+        assertTrue("expecting output to contain \"" + substring + "\" output was \""
+                   + realOutput + "\"",
+                   realOutput.indexOf(substring) >= 0);
+    }
+    
+    /**
+     * Assert that the given message has been outputted
+     */
+    protected void expectOutputContaining(String target, String substring) {
+        executeTarget(target);
+        assertOutputContaining(substring);
+    }
+
+}
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 be95394..4f77474 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
@@ -113,6 +113,11 @@
     }
 
     public void tearDown() {
+        try {
+            ftp.disconnect();
+        } catch (IOException ioe) {
+            // do nothing
+        }
         getProject().executeTarget("cleanup");
     }
     private boolean changeRemoteDir(String remoteDir) {
@@ -570,7 +575,12 @@
                      new String[] {"alpha/beta", "alpha/beta/gamma", "delta"});
 
     }
-
+    /**
+     *  this test is inspired by a user reporting that deletions of directories with the ftp task do not work
+     */
+    public void testFTPDelete() {
+        getProject().executeTarget("ftp-delete");
+    }
     private void compareFiles(DirectoryScanner ds, String[] expectedFiles,
                               String[] expectedDirectories) {
         String includedFiles[] = ds.getIncludedFiles();
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/sitraka/ClassFileTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/sitraka/ClassFileTest.java
index bc6651e..1e6924e 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/sitraka/ClassFileTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/sitraka/ClassFileTest.java
@@ -65,6 +65,7 @@
  * Nothing special about this testcase...
  *
  * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
+ * @author <a href="mailto:martijn@kruithof.xs4all.nl">Martijn Kruithof</a>
  */
 public class ClassFileTest extends TestCase {
     public ClassFileTest(String s) {
@@ -80,7 +81,7 @@
         assertEquals("ClassFileTest.java", clazzfile.getSourceFile());
         MethodInfo[] methods = clazzfile.getMethods();
         assertEquals(3, methods.length);
-        assertHasMethod("void <init>()", 2, methods);
+        assertHasMethod("void <init>()", 1, methods);
         assertHasMethod("void testTwoLines()", 2, methods);
         assertHasMethod("void testOneLine()", 3, methods);
     }
@@ -90,7 +91,7 @@
         for (int i = 0; i < methods.length; i++) {
             MethodInfo method = methods[i];
             if (methodsig.equals(method.getFullSignature())) {
-                
+
                 assertTrue(methodsig, method.getNumberOfLines() >= line);
                 return;
             }
diff --git a/src/testcases/org/apache/tools/ant/types/AddTypeTest.java b/src/testcases/org/apache/tools/ant/types/AddTypeTest.java
index a77a690..833e1eb 100644
--- a/src/testcases/org/apache/tools/ant/types/AddTypeTest.java
+++ b/src/testcases/org/apache/tools/ant/types/AddTypeTest.java
@@ -123,6 +123,11 @@
         expectLogContaining(
             "myaddconfigured", "value is Value Setexecute: value is Value Set");
     }
+
+    public void testNamespace() {
+        executeTarget("namespacetest");
+    }
+    
     // The following will be used as types and tasks
     
     public static interface A {}
diff --git a/src/testcases/org/apache/tools/ant/types/AssertionsTest.java b/src/testcases/org/apache/tools/ant/types/AssertionsTest.java
new file mode 100644
index 0000000..0193f9a
--- /dev/null
+++ b/src/testcases/org/apache/tools/ant/types/AssertionsTest.java
@@ -0,0 +1,132 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowlegement:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software Foundation"
+ *    must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ *    nor may "Apache" appear in their names without prior written
+ *    permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.tools.ant.types;
+
+import org.apache.tools.ant.BuildFileTest;
+
+/**
+ * test assertion handling
+ */
+public class AssertionsTest extends BuildFileTest {
+
+    public AssertionsTest(String name) {
+        super(name);
+    }
+
+    protected void setUp() throws Exception {
+        configureProject("src/etc/testcases/types/assertions.xml");
+    }
+
+    protected void tearDown() throws Exception {
+        executeTarget("teardown");
+    }
+
+    /**
+     * runs a test and expects an assertion thrown in forked code
+     * @param target
+     */
+    protected void expectAssertion(String target) {
+        expectBuildExceptionContaining(target,
+                "assertion not thrown in "+target,
+                "Java returned: 1");
+    }
+
+    public void testClassname() {
+        expectAssertion("test-classname");
+    }
+
+    public void testPackage() {
+        expectAssertion("test-package");
+    }
+
+    public void testEmptyAssertions() {
+        executeTarget("test-empty-assertions");
+    }
+
+    public void testDisable() {
+        executeTarget("test-disable");
+    }
+
+    public void testOverride() {
+        expectAssertion("test-override");
+    }
+
+    public void testOverride2() {
+        executeTarget("test-override2");
+    }
+    public void testReferences() {
+        expectAssertion("test-references");
+    }
+
+    public void testMultipleAssertions() {
+        expectBuildExceptionContaining("test-multiple-assertions",
+                "multiple assertions rejected",
+                "Only one assertion declaration is allowed");
+    }
+
+    public void testReferenceAbuse() {
+        expectBuildExceptionContaining("test-reference-abuse",
+                "reference abuse rejected",
+                "You must not specify more than one attribute when using refid");
+    }
+
+    public void testNofork() {
+        expectLogContaining("test-nofork",
+                "Assertion statements are currently ignored in non-forked mode");
+    }
+
+
+}
+
+
diff --git a/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java b/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java
index b7d5fb4..a176ad3 100644
--- a/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java
+++ b/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java
@@ -105,7 +105,7 @@
             fail("cloning should work without classpath specified");
         }
 
-        c.createClasspath(project).setLocation(project.resolveFile("lib/optional/junit.jar"));
+        c.createClasspath(project).setLocation(project.resolveFile("build.xml"));
         c.createClasspath(project).setLocation(project.resolveFile(
             System.getProperty("ant.home")+"/lib/ant.jar"));
         s = c.getCommandline();
@@ -113,8 +113,8 @@
         //        assertEquals("with classpath", "java", s[0]);
         assertEquals("with classpath", "-Djava.compiler=NONE", s[1]);
         assertEquals("with classpath", "-classpath", s[2]);
-        assertTrue("junit.jar contained",
-               s[3].indexOf("junit.jar"+java.io.File.pathSeparator) >= 0);
+        assertTrue("build.xml contained",
+               s[3].indexOf("build.xml"+java.io.File.pathSeparator) >= 0);
         assertTrue("ant.jar contained", s[3].endsWith("ant.jar"));
         assertEquals("with classpath", "junit.textui.TestRunner", s[4]);
         assertEquals("with classpath",
@@ -168,4 +168,4 @@
         assertNull(System.getProperty("key2"));
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java b/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java
index d00b979..26fe950 100644
--- a/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java
+++ b/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -172,14 +172,6 @@
     }
 
     public void testEmptyElementIfIsReference() {
-        try {
-            catalog.setRefid(new Reference("dummyref"));
-            fail("Can add reference to nonexistent XMLCatalog");
-        } catch (BuildException be) {
-            assertEquals("Reference dummyref not found.",
-                         be.getMessage());
-        }
-
         ResourceLocation dtd = new ResourceLocation();
         dtd.setPublicId("PUBLIC ID ONE");
         dtd.setLocation("i/dont/exist.dtd");
diff --git a/src/testcases/org/apache/tools/ant/types/selectors/BaseSelectorTest.java b/src/testcases/org/apache/tools/ant/types/selectors/BaseSelectorTest.java
index 6ed0788..19247ec 100644
--- a/src/testcases/org/apache/tools/ant/types/selectors/BaseSelectorTest.java
+++ b/src/testcases/org/apache/tools/ant/types/selectors/BaseSelectorTest.java
@@ -185,7 +185,7 @@
 
     /**
      * Does the selection test for a given selector and prints the
-     * filenames of the differing files (selected but shouldn´t,
+     * filenames of the differing files (selected but shouldn't,
      * not selected but should).
      * @param selector  The selector to test
      * @param expected  The expected result
@@ -198,7 +198,7 @@
     }
 
     /**
-     *  Checks which files are selected and shouldn´t be or which
+     *  Checks which files are selected and shouldn't be or which
      *  are not selected but should.
      *  @param expected    String containing 'F's and 'T's
      *  @param result      String containing 'F's and 'T's
@@ -324,4 +324,4 @@
 
 
 
-}
\ No newline at end of file
+}
diff --git a/src/testcases/org/apache/tools/ant/types/selectors/ModifiedSelectorTest.java b/src/testcases/org/apache/tools/ant/types/selectors/ModifiedSelectorTest.java
index 22a2e37..41f6ca7 100644
--- a/src/testcases/org/apache/tools/ant/types/selectors/ModifiedSelectorTest.java
+++ b/src/testcases/org/apache/tools/ant/types/selectors/ModifiedSelectorTest.java
@@ -73,7 +73,7 @@
 /**
  * Unit tests for ModifiedSelector.
  *
- * @author Jan Matèrne
+ * @author Jan Mat\u00e8rne
  * @version 2003-09-13
  * @since  Ant 1.6
  */
@@ -261,7 +261,7 @@
             for (int i=0; i<filenames.length; i++) {
                 String ch = "F";
                 if (files[i].isDirectory()) ch = "T";
-                // f2name shouldn´t be selected: only timestamp has changed!
+                // f2name shouldn't be selected: only timestamp has changed!
                 if (filenames[i].equalsIgnoreCase(f3name)) ch = "T";
                 if (filenames[i].equalsIgnoreCase(f4name)) ch = "T";
                 expected.append(ch);
@@ -304,7 +304,7 @@
             s.setClassname("org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector");
 
             s.addParam(createParam("cache.cachefile", cachefile));
-            //s.addParam(createParam("algorithm.provider","---")); // i don´t know any valid
+            //s.addParam(createParam("algorithm.provider","---")); // i don't know any valid
             s.addParam(createParam("cache","propertyfile"));
             s.addParam(createParam("update","true"));
             s.addParam(createParam("comparator","rule"));
@@ -404,7 +404,7 @@
      *       <param name="cache" value="propertyfiles" />
      *   </custom>
      * </pre> It was important first to set the cache and then to set
-     * the cache´s configuration parameters. That results in the reorganized
+     * the cache's configuration parameters. That results in the reorganized
      * configure() method of ModifiedSelector. This testcase tests that.
      */
     public void testCreatePropertiesCacheViaCustomSelector() {
@@ -535,7 +535,7 @@
             assertTrue("Not enough files copied on first time.", to1.list().length>5);
             assertTrue("Too much files copied on second time.", to2.list().length==0);
             assertTrue("Too much files copied on third time.", to3.list().length==2);
-        // don´t catch the JUnit exceptions
+        // don't catch the JUnit exceptions
         } finally {
             bft.doTarget("modifiedselectortest-scenario-clean");
             bft.deletePropertiesfile();
diff --git a/welcome.html b/welcome.html
index 33f6a2a..1e2a27b 100644
--- a/welcome.html
+++ b/welcome.html
@@ -1,124 +1,352 @@
-<html>
-<head>
-<title>Welcome to Ant1.5</title>
-</head>
-<body bgcolor="#ffffff">
-<h1>Welcome to Ant1.5</h1>
-Hello, and welcome to Ant1.5
-<p>
-For new users to Ant, welcome to a new way to build your software.
-<p>
-For veteran Ant users, its been, what nine months since Ant 1.4.1 
-shipped, and we've been as busy enhancing it as you've been using it.
-<p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+	<TITLE>Welcome to Apache Ant 1.6</TITLE>
+</HEAD>
+<BODY LANG="en-US" BGCOLOR="#ffffff" DIR="LTR">
+<H1>Welcome to Apache Ant 1.6</H1>
+<P><BR><BR>
+</P>
+<H2>Your life just got better. 
+</H2>
+<P>Not in big ways. Your social life isn't going to be helped, though
+with any luck you may now have more time for one. Nor is it going to
+take less time to write your Java code -although we note that running
+<A HREF="http://xdoclet.sf.net/" TARGET="other">XDoclet</A> under Ant
+lets you avoid writing so much code. Nor is a new release of Ant
+likely to provide a fundamental kick-start to the currently somewhat
+subdued technology and software industries. 
+</P>
+<P>No, Ant1.6 will not fundamentally change your life. But if you do
+have to get software out on time -"roughly what you asked for,
+roughly when you asked", then Ant1.6 provides lots of little
+improvements over the existing version. 
+</P>
+<P>Before we look at those details, lets look at the world of The
+Automated Build.</P>
+<P>Firstly, we'd like to thank everyone for all those awards that
+have been flowing in. The JavaWorld Editors' Choice Award for "Most
+Useful Java Community-Developed Technology", The Java
+Developer's Journal "Editors Choice Award", and Java Pro
+Reader's Choice award for "Most Valuable Java Deployment
+Technology." Wow. That's a lot of awards. Aardman Animations
+keep all their Wallace and Gromit -related oscars in a cabinet in
+their tea room. If the Apache organization had a tea room, those Ant
+awards would be forcing all the other (excellent) Apache products to
+fight hard for their cabinet space. 
+</P>
+<P>All those awards come for a reason: everyone, at least everyone
+working on any project of moderate complexity, needs to control their
+build process. Ant is one of the best ways to do it in Java, and,
+over the past four years, it has moved from a tool used simply to
+build Tomcat cross-platform, to a tool used across many open source
+projects, and now to a tool used by almost all Java projects. Indeed,
+pretty much the only competitor in the Java space is a sibling
+project under the Apache banner, <A HREF="http://maven.apache.org/" TARGET="other">Maven</A>.
+One of the obvious signs of Ant's success is that all the popular
+IDEs, from the Open Source -Emacs JDE, Eclipse, NetBeans and jEdit -
+to the commercial: IntelliJ IDEA, Borland JBuilder- all ship with
+built in Ant support. This lets you use your favourite IDE for what
+it is good at: editing text, creating Java source, refactoring
+existing code, debugging and the like, and you can turn to Ant for
+co-ordinating the build-test-deploy/deliver process. That Ant based
+process can be triggered from keystrokes in the IDE, command line
+invocations for those so inclined, and in automated scheduled builds
+so the machines can keep an eye on the engineers. Another sign is how
+Ant is helping the Java aisle of bookstores fight back against
+attempts by books about Macromedia Flash to take over all the space
+-there are now seven or eight books on the subject, with more on the
+way. Germany and Korea have their own native language books too,
+which shows how global the tool is -in use and in development terms. 
+</P>
+<P>The other metric of success is the pre-announcement hints from our
+distant software colleagues in Redmond, Microsoft, of a new build
+tool, "MSBuild", which "might be the single most
+important feature innovation in our pipeline", according to one
+MS developer. That is surely the greatest metric of success: XML
+based build tools are now viewed as so essential to the modern build
+process, that Microsoft has to come up with a competitor to Ant to
+win Java developers over to .NET. Let's hope they discover we like
+ubiquitous JUnit testing too, and refactoring IDEs that create and
+run the tests for us. 
+</P>
+<P>Success comes at a price, of course. One price is all those
+support calls. We try and stay on top of the bug reports, but one
+thing we cannot do is fix inconsistencies or things that seem like
+defects if they stand a significant chance of breaking existing
+builds. Its sad, but there are lots of little minor faults with Ant
+that we don't dare fix because, well, things might break. For
+example, why don't if= and unless= clauses also support
+<code>if="${property}"</code> clauses? Alternatively, why isn't it an
+error to use a property that isn't defined. Everyone that has ever
+seen directories called ${build.dir} popping up the source tree will
+understand why that behaviour is not always what you want. Well, we
+could fix these things, but we won't, because backwards compatibility
+is sacred. 
+</P>
+<P>That is the other price of success: all those users who have
+existing build files they want to work. And all those IDEs that host
+Ant, and who want an easy upgrade to a new version. This means we
+have lost a lot of the flexibility we used to have in the early days
+of the project, when different versions of Ant could have completely
+different property evaluation algorithms and nobody would bat an
+eyelid. Now, even the most obscure bug fix ends up generating 'you
+broke my build complaints'. 
+</P>
+<P>This explains why there will not be the 'incompatible upgrade'
+version of Ant, Ant2.0, that has long been discussed on our web site.
+</P>
+<H2>Where is Ant2.0?</H2>
+<P>For years we have been discussing Ant2.0, the complete rewrite
+version that would be cleaner and faster, and slightly incompatible
+with Ant1.x. It would be the opportunity to take the lessons from the
+1.x line, and support them cleanly. We even got as far as having
+multiple implementations of new Ant engines in the CVS repository,
+especially Mutant and Myrmidion. But we always seemed to have a hard
+time making progress -everyone was too busy using and firefighting
+Ant1.x that nobody got time to work on the 2.x codebase. Which is a
+shame, as all the proposals had interesting ideas.</P>
+<P>After Ant1.5 shipped, the future of Ant effectively resolved into
+one of evolution rather than revolution. There will be no Ant2.0 with
+a complete new engine underneath. There will be no need to run XSL
+transforms over existing build files to move them to the Ant2.0
+world. Instead Ant1.x is getting better underneath the build file
+-improving its internal design while retaining five-nines backwards
+compatibility with existing build files. 
+</P>
+<P>And that is what we have been up to.</P>
+<P>Under the hood, Ant1.6 contains some of the most major reworkings
+of the core Ant system yet seen. We haven't finished yet, and are
+holding back some of the more visible developments so we can see what
+works before their release in a product forces us to maintain them.
+But the underlying parts of Ant are now set up for the next stage in
+development. 
+</P>
+<P>Whether we call the next version of Ant 1.7 or 2.0 is something we
+have yet to decide. Maybe we should call it 3.0 just to surprise
+people.</P>
+<H2>What has changed</H2>
+<P>Look at the <A HREF="WHATSNEW" TARGET="other">WHATSNEW</A>
+document to get a full list of changes. Here are some of the core
+conceptual differences.</P>
+<H3>No more Java1.1</H3>
+<P>We got fed up of jumping through reflection hoops to do everything
+from weak references to setting file timestamps. After consultation
+with the Ant user mail list, Ant1.6 only runs on Java1.2 or later. It
+can still cross compile to Java1.1 if that is what you have to do. We
+haven't completely purged all 1.1 references in the docs, or 1.1
+support from the source, but that will come over time.</P>
+<H3>New classloader use.</H3>
+<P>This is going to make people nervous. If there is one thing Java
+developers have learned over time, only the very naive, the very
+brave, or the very competent do things with classloaders. We will let
+the Ant users decide what category to put us in, but before everyone
+panics, Costin, of Tomcat fame, did a lot of the work here. You don't
+write application servers without understanding classloaders inside
+and out. 
+</P>
+<P>The impact of these changes will trickle out over Ant versions. In
+1.6, the key features are 
+</P>
+<OL>
+	<LI><P>We have got rid of the bit in the batch file/shell script
+	that built up a really big classpath environment variable from
+	everything in ANT_HOME/lib. Now that is done in a launcher class
+	that does the work then calls tools.ant.Main as before.</P>
+	<LI><P>You can add new library directories to that classloader with
+	the -lib option on the command line. This option is interpreted by
+	the launcher class, so will not work with IDEs and other apps that
+	use the inner entry point.</P>
+	<LI><P>We have broken up optional.jar into many-many jar files, such
+	as ant-commons-logging.jar, ant-xalan2.jar, etc etc, and a
+	nodeps.jar for optional stuff without any dependencies. This creates
+	a lot of jar files.</P>
+	<LI><P>You can now &lt;taskdef&gt; existing tasks -like &lt;junit&gt;-
+	by including the specific ant jar <I>and</I> the dependent libraries
+	(i.e. junit.jar) in the declaration. This solves the problem of
+	ANT_HOME/lib needing to contain every jar possibly needed by every
+	user/project. You still have to declare the tasks one by one,
+	something we will fix in Ant1.7</P>
+</OL>
+<H3>Adapters</H3>
+<P>These are Java classes that <I>adapt</I>&gt; arbitrary Java
+classes into ant tasks or types. There has always been some of this
+stuff inside Ant, but now you can &lt;taskdef&gt; a task by naming
+not just the implementation class, but the adapter class. An adapter
+is essentially a meta task implementation -something that can be used
+to create new tasks dynamically. Which, when you consider that the
+core of Ant is fundamentally an XML to java mapping system and a
+simple workflow engine, may let you do very unusual things with Ant. 
+</P>
+<H3>Antlib: Ant libraries</H3>
+<P>This is something we will expand in future. Till now you could
+declare tasks and types with &lt;taskdef&gt; and &lt;typedef&gt;. If
+they were in a jar, you could write a properties file and name the
+resource path of the file in the jar. If you wanted to have both
+tasks and types, you had name a shared classloader. If you wanted to
+add more things -such as conditions or mappers, you were out of luck.</P>
+<P>Antlibs are Ant Libraries, JAR files containing the code to extend
+Ant, and an XML description file to describe how Ant is extended.
+Before anyone panics at 'yet another XML descriptor syntax' to learn:
+you may already know the syntax. We call it "Ant build files".
+Actually it is a subset: it can only contain those task declarations
+that are derived from org.apache.tools.ant.taskdefs.AntlibDefinition.
+That includes &lt;taskdef&gt; and &lt;typedef&gt;, and <I>any other
+task you choose to derive. </I>We are experimenting with scripting
+and some kind of task predefinition declarations in antlibs. With the
+latter, you will be able to write a predefined task -such as a
+&lt;javac&gt; derivative with the compiler options set, and then use
+it any of your build files. This is all too experimental to get into
+Ant1.6 -expect it in the successor. For now, start using antlibs and
+use the &lt;taskdef&gt; task to load them into your projects.</P>
+<H3>XML Namespace aware</H3>
+<P>Ant finally adopts XML namespaces. This is to address build file
+scalability; antlibs can be imported into their own namespaces, and
+so you can avoid namespace clashes with other libraries. If you do
+not know what namespaces are, do not worry -they are not compulsory.</P>
 
-We know you've been using Ant, not just from the all the bug reports we
-see, but from the awards we've been getting from JavaWorld and SD Magazine
-and from the fact that it is now clearly a mainstream product. Every quality IDE,
-from the Open Source projects: Emacs, NetBeans, Eclipse, JEdit, to the
-commercial offerings such as IntelliJ IDEA and JBuilder now have high
-quality Ant integration  either built in or available as a
-download. And they do that not just because it improves their products,
-giving users the best of both worlds -great editors and a great build
-process, but because Java developers are starting to expect Ant (and
-JUnit) everywhere.
+<h3>All tasks can go in at the toplevel</h3>
 <p>
-Even in mid-2001, if you said you were using Ant in your project, people
-would stare at you. Now, as long as you are talking with Java developers
-and not management or your family and friends, people will nod, shrug
-and maybe ask you questions about build file and Ant configurations. The good 
-news: Ant 1.5 includes more helpful error messages and a new
-<tt>-diagnostics</tt> command to look at your Ant installation and help work out why
-things arent working.
+ 
+Prior to Ant1.6, only three tasks were allowed outside 
+targets : &lt;taskdef&gt;,&lt;typedef&gt; and &lt;property&gt;.
+Ant 1.6 puts an end to this distinction; anything can go in at the top
+level. This is partly because there were many more tasks that merited the 
+option based on the original rationale of "global initialization tasks":
+&lt;import&gt; and &lt;antlib&gt; were the new additions, but existing
+tasks like &lt;condition&gt;, &lt;available&gt;, &lt;xmlproperties&gt; 
+and &lt;loadproperties&gt; had equal rights. 
+</p>
 <p>
-Now, when you tell people you work on Ant in your spare time,
-people used to give you very funny stares; now they ask you about how to
-set up automated build processes, or deploy to some random app server.
-The good news: Ant 1.5 makes it easier to answer those questions.
+Rather that expand the set slightly, now all tasks are allowed outside
+targets. This gives external tasks the same rights as built in code,
+eliminates sporadic bug reports, and annoying error messages. It gives
+users the ability to write build files without any targets at all; the
+top-level declarations are processed in sequence. 
+</p>
 
-The other sign of mainstream is that there are also books on the
-subject, first Java Tools for Extreme Programming, then Ant: The
-Definitive Guide, and the first Ant1.5 book, Java Development with Ant,
-due to ship at the end of the month. (Steve says: I prefer the one with 
-my name on the cover as co-author, but I'm biased). 
-As usual, the manual has improved too:
-regardless of whether you need a book to work with Ant or not, you need
-that on-line documentation. And as usual, any extra contributions to the
-docs are welcome indeed. 
-<p>
-Ant has also influenced how projects are built. Now when you download
-any open source project, or work with a closed source team, you expect
-to see a file called build.xml there. Equally important, you expect that
-build file to compile and run a set of tests using JUnit or a derivative
-thereof; if they are missing, you worry.
-<p>
-Together, Ant and JUnit have transformed the mainstream process for
-building and deploying Java projects. And that's pretty profound, when
-you think about it. What is equally impressive is that this was all done
-as a co-operative effort. Nobody works on Ant full-time; everybody uses
-it to solve their problems, to address their build crises and generally
-get something done in a hurry. It just so happens that the architectural
-model of Java classes bound via introspection to the XML build file
-makes it easy for people to add new tasks, extend existing ones and
-generally ease their way into developing and extending Ant. It is the
-users that have helped Ant become the success it is today, and will keep
-it that way tomorrow.
-<p>
-<h2>What has changed</h2>
-<p>
-So, what is new in Ant1.5? Lots of stuff. You will have to look at the
-<a href="WHATSNEW">whatsnew</a> file to see, but basically the changes
-fall into a number of categories
-<ol>
-<li>Bug fixes. We know, some things were broken in 1.4. In ant1.5 we
-have moved the bugs, fixing the ones we could, and no doubt adding
-different ones. Hopefully the total bug count has decreased.
-<li>Scalability. Changes in &lt;ant&gt; and a few other tasks should 
-make it easier to write large, scalable build files. 
-<li>Deployment. Take a look at the new &lt;serverdeploy&gt; task, add support
-for your server if it isnt there. Tomcat 4.1 has its own deployment
-tasks incidentally -fetch them from the tomcat pages.
-<li>Ease of use. We have added new attributes to make the archive tasks
-consistent with each other, new error messages for common problems (you
-get a screenful of help when a task wont instantiate, for example), and
-generally try and be helpful. As usual, we will accept contributions to 
-the documentation or the code for even more helpfulness. Hey, in ant1.5
-you dont need to double escape the $ sign to preserve it in a string!
-<li>Java 1.4 support. We build and test fine on Java 1.4, and have the
-extensions to javac needed to build code with assertions in. We should
-point out that we have more work to do in this area: if someone wants to
-write an &lt;assertionset&gt; datatype to give users control of which assertions
-to enable, and patch this in to things like the &lt;junit&gt; and 
-&lt;java&gt; tasks, things would get very interesting.
-<li>Continuous builds. Automated build tools are becoming more widely
-used; fork options on &lt;javac&gt; and &lt;javadoc&gt; are there to 
-stop memory use growth on a continuous process. 
-<li>New platforms: MacOS X for owners of those cute little laptops, 
-Novell Netware servers, and even z/OS and OS/390 for mainframe
-developers who write their build files on their virtual card punches.
-<li>Conditions. Take a look at the &lt;condition&gt; tag to see what you can
-look for, then at &lt;waitfor&gt; to use the same tests in deployment.
-Finally, notice the <tt>if</tt> and <tt>unless</tt> attributes on
-&lt;fail&gt; for easy halting of the build on a condition, without
-having to resort to conditional targets. 
-</ol>
- 
-There are many more enhancements, so we hope you will find your build
-projects easier. We have, as usual, jumped through hoops to keep
-existing builds working, even those build files that went out their way
-to not work on Java 1.4 (hint: dont ask for the classic compiler, it has
-gone away). If your build file stops working, and it isnt something listed 
-on the 'changes that may break your build' part of the WHATSNEW file, or
-something we know about on bugzilla, please dont hesitate to file a new
-bug report, preferably one with a replicable test and a patch to fix the
-problem.
-<p>
-Thanks,
-<p>
-The Ant development team.
-<p>
-PS: many thanks for Magesh to being the build manager for this release!
-He has been busy since Feb/March organizing it. Magesh -you are so good
-at this you should do it next time too :) 
-</body></html>
- 
+On a style note, we strongly advocate using this feature carefully. It
+is best if zero-side-effect, initialization-only tasks get put into the
+top level. Remember also that all top level statements are processed in
+order, before any targets are executed. Even tasks at the end of the
+file will get executed before targets declared above them. 
+
+<H2>New Tasks</H2>
+<P>As usual, the task base is growing and expanding. These days the
+ant core is resisting adopting many of the highly worthy donations of
+tasks from people, because they make maintenance and firefighting
+worse. Our current stance is that except in special circumstances,
+Ant tasks to support third party open source projects, should live
+with the projects themselves. This keeps them in sync with the
+libraries they integrate with, avoids GPL/Apache licensing issues,
+and reduces the Ant team's support workload, letting them focus on
+the core. The antlib mechanism is intended to make it easier for
+people to load tasks from libraries for this very reason.</P>
+<P>That said, we are pleased to introduce many new tasks. Of
+particular interest may be the SSH tasks, which let one deploy code
+to remote servers securely. Now you really can do live updates with
+Ant -if the operations team will let you. The other one that is quite
+interesting is &lt;subant&gt;. This is an extension of the &lt;ant&gt;
+task, to take an entire fileset of directories and run their build
+files. This is incredibly useful in very large projects. This does
+not mean that we are advocating the many-build-file development
+pattern, but in a sufficiently complex project it happens anyway.
+&lt;subant&gt; keeps things manageable.</P>
+<H2>What else</H2>
+<P>So, what is new in Ant1.6? Lots of stuff. You will have to look at
+the <A HREF="WHATSNEW">whatsnew</A> file to see, but here are some
+key points. 
+</P>
+<OL>
+	<LI><P STYLE="margin-bottom: 0in">Bug fixes. We know, some things
+	were broken in 1.5. In ant1.6 we have moved the bugs, fixing the
+	ones we could, and no doubt adding different ones. Hopefully the
+	total bug count has decreased. 
+	</P>
+	<LI><P STYLE="margin-bottom: 0in">New platforms: Open VMS and HP's
+	NonStop Kernel (Tandem) OS. OpenVMS is very different from the rest;
+	Read the &lt;exec&gt; task documentation carefully. 
+	</P>
+	<LI><P STYLE="margin-bottom: 0in">Spawning. &lt;java&gt; and &lt;exec&gt;
+	started applications can outlive Ant if you set spawn=true. Note
+	that the moment you do so, Ant cannot bind to their input or output,
+	for obvious reasons. 
+	</P>
+	<LI><P>Synchronisation with Java versions (heh, thought by moving
+	javah's entry point that you could hide from us? Think again).</P>
+	<LI><P>Synchronization with third party libraries. Of special note:
+	we have moved to the Apache commons-net.jar, the successor to
+	NetComponents for telnet and FTP as well as Apache BSF, the
+	successor to IBM BSF, for script.</P>
+</OL>
+<P>There are many more enhancements, so we hope you will find your
+build projects easier. We have, as usual, jumped through hoops to
+keep existing builds working. If your build file stops working, and
+it isn't something listed on the 'changes that may break your build'
+part of the WHATSNEW file, or something we know about on bugzilla,
+please don't hesitate to file a new bug report, preferably one with a
+replicable test and a patch to fix the problem. Please, please,
+please, do a search on bugzilla first. You do not want to be the
+seventy-third person to complain that Ant1.6 doesn't do something
+that it should. 
+</P>
+<P>Thanks, 
+</P>
+<P>The Ant development team. 
+</P>
+<H3>Acknowledgements</H3>
+<UL>
+	<LI><P>Many thanks for Antoine to being the build manager for this
+	release! 
+	</P>
+	<LI><P>Thank you to everyone who supplies the components we use in
+	Ant, particularly JUnit, commons-logging, log4J, bcel, ORO, Xerces, and Xalan. 
+	</P>
+	<LI><P>Everyone who has supplied bug reports, especially those with
+	patches and tests.</P>
+	<LI><P>IDE projects who incorporate Ant into their products. Not
+	only does this help Ant's success, you find lots of interesting
+	integration defects. Special mention to the Eclipse team for fixing
+	our memory leaks :)</P>
+</UL>
+<H3>Call to Action</H3>
+
+<P>
+
+It is an interesting time for Java. .NET is a serious challenger, and
+will get better. A core strength of Java over .NET is its community. It
+is the community that gave the world leading edge development tools and
+other core components: Ant, JUnit, XDoclet, hsqldb, Hibernate, Struts,
+etc. These things weren't created by JCP committees, or built according
+to the strategic vision of a Fortune 100 company. They were written by
+Java developers, for Java developers, usually to meet their own tactical
+goals.
+
+</P>
+
+<P>If Java is to survive -and we think it ought to- everyone who can
+needs to become active members of that community. It could be helping
+with Ant, but it could just as easily be helping with any other open
+source Java project, be hosted by Apache, FSF, Sourceforge or someone
+else, be it server-side, client-side or mobile-side. It could be an
+existing project, or it could be your own idea as to how things could
+be better. The key is: things will only be better if you put in the
+time to make it so. 
+</P>
+<H3>Call to Inaction</H3>
+<P>A special message to whoever it is in charge of commands in
+tools.jar: stop moving your entry points! In Ant1.5 we had to deal
+with the 'classic' javac entry point going away in Java1.4.0,
+seemingly coming back later. In Java 1.4.2, the javah entry point
+moved. The traditional command line invocation mechanism has been
+replaced by hosted invocation -Ant, Maven, IDEs, etc, and moving
+entry points around breaks these host applications. Even if we get a
+bug fix out in Ant a few weeks after the Java release, it takes
+months for this to trickle down to end users, especially via IDEs and
+other distributions. For example, Sun's own Java Web Services
+Developer Pack ships with Ant1.5.1, and so cannot run &lt;javah&gt;
+on a 1.4.2 installation. 
+</P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/xdocs/contributors.xml b/xdocs/contributors.xml
index 1cc8be0..b66d092 100644
--- a/xdocs/contributors.xml
+++ b/xdocs/contributors.xml
@@ -179,7 +179,7 @@
 </p>
 
             <p>
-                <b>Antoine Levy-Lambert</b> (levylambert at tiscali-dsl.de)
+                <b>Antoine Levy-Lambert</b> (antoine at apache.org)
 <br/>
 Antoine is an IT consultant specialized in financial IT and
 in application management/configuration management. He has experience with
diff --git a/xdocs/external.xml b/xdocs/external.xml
index dab597a..f62093b 100644
--- a/xdocs/external.xml
+++ b/xdocs/external.xml
@@ -77,6 +77,38 @@
         </table>
       </subsection>
 
+      <subsection name="AntDoc">
+
+        <p>AntDoc is a tool that generates HTML documentation from Ant
+        buildfiles; the generated HTML is inspired from what javadoc
+        yields.  AntDocGUI offers a simple Ant target launcher named
+        AntDoc GUI. Ant targets may be launched from the generated
+        AntDoc HTML pages. Integration to various IDEs is in
+        progress.</p>
+
+        <p>AntDoc can be run via an Ant task, AntDoc GUI can be run
+        via an Ant task, or via a JVM launch.</p>
+
+        <table>
+          <tr>
+            <th>Compatibility:</th>
+            <td>Ant 1.4.1 and higher</td>
+          </tr>
+          <tr>
+            <th>URL:</th>
+            <td><a href="http://antdoc.free.fr/">http://antdoc.free.fr/</a></td>
+          </tr>
+          <tr>
+            <th>Contact:</th>
+            <td>Edouard Mercier</td>
+          </tr>
+          <tr>
+            <th>License:</th>
+            <td>The Apache Software License</td>
+          </tr>
+        </table>
+      </subsection>
+
       <subsection name="Anteater">
 
         <p>Anteater is a set of Ant tasks for the functional testing of websites
@@ -551,6 +583,39 @@
         </table>
       </subsection>
 
+      <subsection name="Image">
+        <p>Image task generates and transforms images. It exposes the
+        imaging capability available in Java2D, Java Advanced Imaging,
+        ImageIO, etc., as set of nested elements.</p>
+
+        <p>Image transformations such as &quot;resize&quot;
+        (scale),&quot;overlay&quot; (one image on another),
+        &quot;border&quot; (add a border), &quot;text&quot; (text on
+        image), &quot;crop&quot; (a sub-image of a bigger image),
+        &quot;rotate&quot;, &quot;grayscale&quot; (change a color
+        image to shades of gray).</p>
+
+        <table class="externals">
+          <tr>
+            <th>Compatibility:</th>
+            <td>Ant 1.4</td>
+          </tr>
+          <tr>
+            <th>URL:</th>
+            <td><a
+                href="http://www.mullassery.com/software/ANT/">http://www.mullassery.com/software/ANT/</a></td>
+          </tr>
+          <tr>
+            <th>Contact:</th>
+            <td><a href="http://www.mullassery.com/contact/feedback.jsp">Abey Mullassery</a></td>
+          </tr>
+          <tr>
+            <th>License:</th>
+            <td>Apache Software License</td>
+          </tr>
+        </table>
+      </subsection>
+
       <subsection name="Importscrubber">
         <p>Removes unnecessary import statements from a Java source code file.</p>
 
@@ -574,6 +639,32 @@
         </table>
       </subsection>
 
+      <subsection name="ImTask">
+
+        <p>ImTask is a task to allow one to send an Instant
+        Message. Currently supports yahoo!, AIM, and Jabber</p>
+
+
+        <table class="externals">
+          <tr>
+            <th>Compatibility:</th>
+            <td>Ant 1.5 or higher</td>
+          </tr>
+          <tr>
+            <th>URL:</th>
+            <td><a href="http://imtask.sourceforge.net/">http://imtask.sourceforge.net</a></td>
+          </tr>
+          <tr>
+            <th>Contact:</th>
+            <td><a href="mailto:djallstar@users.sourceforge.net">Jon Madison</a></td>
+          </tr>
+          <tr>
+            <th>License:</th>
+            <td>GNU LGPL</td>
+          </tr>
+        </table>
+      </subsection>
+
       <subsection name="Interactive">
 
         <p>Task allowing to run a dialog within a build used to setup
@@ -1023,6 +1114,28 @@
         </table>
       </subsection>
 
+      <subsection name="JindentTask">
+
+        <p>JindentTask is a very straightforward wrapping of the
+        Jindent tool, a vendor code beautifier. It enables to use
+        Jindent natively from Ant.</p>
+
+        <table class="externals">
+          <tr>
+            <th>Compatibility:</th>
+            <td>Ant 1.4.1 and higher</td>
+          </tr>
+          <tr>
+            <th>URL:</th>
+            <td><a href="http://the.edouard.mercier.free.fr/Jindent_content.php">http://the.edouard.mercier.free.fr/Jindent_content.php</a></td>
+          </tr>
+          <tr>
+            <th>Contact:</th>
+            <td>Edouard Mercier</td>
+          </tr>
+        </table>
+      </subsection>
+
       <subsection name="Jing Task">
 
         <p> Validates XML files against the RELAX NG alternative to XML Schema.
@@ -1243,6 +1356,49 @@
         </table>
       </subsection>
 
+      <subsection name="Kanaputs">
+
+        <p>Kanaputs is a parser for java based scripting. It is an
+        interpreter for Java. With Kanaputs you can use Java as an
+        interpreted language: no more compilation, each instruction is
+        executed when you write it.  It is a small programmation
+        language to make script files above Java.</p>
+
+        <p>Kanaputs Ant Task provides a way to add any kind of
+        programmatic features in your Ant script. The code you insert
+        stays OS independent (because Kanaputs uses Java) and is
+        completely integrated with Ant as you can give Ant properties
+        to the Kanaputs code and get back the results in other
+        properties.</p> 
+
+        <p>Moreover, as you can invoke any kind of Java code with
+        Kanaputs, you can popup windows from your Ant file to ask the
+        user to do a choice.</p>
+        <table class="externals">
+          <tr>
+            <th>Compatibility:</th> 
+            <td>Ant 1.2 and above</td> 
+          </tr>
+          <tr>
+            <th>URL:</th> 
+            <td>
+              <a href="http://www.kanaputs.org/">http://www.kanaputs.org/</a> 
+              <a href="http://www.kanaputs.org/ant.html">http://www.kanaputs.org/ant.html</a> 
+            </td>
+          </tr>
+          <tr>
+            <th>Contact:</th> 
+            <td>
+              <a href="mailto:kfra@kanaputs.org">kfra@kanaputs.org</a> 
+            </td>
+          </tr>
+          <tr>
+            <th>License:</th> 
+            <td>Freeware</td> 
+          </tr>
+        </table>
+      </subsection>
+
      <subsection name="Macker">
 
         <p>A build-time architectural testing tool, designed
@@ -1324,6 +1480,30 @@
         </table>
       </subsection>
 
+      <subsection name="PRes">
+        <p>PRes is short for Property Resources and will generate a Java source
+           file from name=value pair .property files which can be compiled like any
+           other class.</p>
+        <table class="externals">
+          <tr>
+            <th>Compatibility:</th>
+            <td>Ant 1.5 and later (may work with earlier)</td>
+          </tr>
+          <tr>
+            <th>URL:</th>
+            <td><a href="http://mseries.sourceforge.net">http://mseries.sourceforge.net</a></td>
+          </tr>
+          <tr>
+            <th>Contact:</th>
+            <td><a href="http://web.ukonline.co.uk/mseries/contact.html">MSeries</a></td>
+          </tr>
+          <tr>
+            <th>License:</th>
+            <td>LGPL</td>
+          </tr>
+        </table>
+      </subsection>
+
       <subsection name="ProGuard">
         <p><a href="http://proguard.sourceforge.net/">ProGuard</a> is
         a free Java class file shrinker and obfuscator.  It can detect
@@ -1581,6 +1761,34 @@
         </table>
       </subsection>
 
+      <subsection name="TestSetGenerator">
+
+        <p>The TestSetGenerator is an ant task for generating property files with
+        testsets based on the results of SQL queries and validation plug-ins. Very
+        usefull when building unit tests that make use of changing datasets. This
+        task is an extension of the Ant SQL task. Hsqldb is used for both the
+        examples and the unittests.</p>
+
+        <table class="externals">
+          <tr>
+            <th>Compatibility:</th>
+            <td>ANT 1.4 (or later)</td>
+          </tr>
+          <tr>
+            <th>URL:</th>
+            <td><a href="http://anttestsetgen.sourceforge.net/">http://anttestsetgen.sourceforge.net/</a></td>
+          </tr>
+          <tr>
+            <th>Contact:</th>
+            <td><a href="mailto:m.c.jansen@planet.nl">m.c.jansen@planet.nl</a></td>
+          </tr>
+          <tr>
+            <th>License:</th>
+            <td>GPL</td>
+          </tr>
+        </table>
+      </subsection>
+
       <subsection name="Tidy Imports (Tim)">
 
         <p>Tim is a handy utility that can be executed on the command
diff --git a/xdocs/faq.xml b/xdocs/faq.xml
index 2072a9e..8f16f7d 100644
--- a/xdocs/faq.xml
+++ b/xdocs/faq.xml
@@ -199,7 +199,7 @@
 
   <faqsection title="How do I ...">
     <faq id="adding-external-tasks">
-      <question>How do I add an external task that I've written to the
+      <question>How do I add an external task that I&apos;ve written to the
       page &quot;External Tools and Task&quot;?</question>
       <answer>
 
@@ -215,7 +215,7 @@
           <li>a URL: entry linking to the main page of the tool/task</li>
           <li>a Contact: entry containing the email address or the URL
           of a webpage for the person or list to contact for issues
-          related to the tool/task.  <strong>Note that we'll add a
+          related to the tool/task.  <strong>Note that we&apos;ll add a
           link on the page, so any email address added there is not
           obfuscated and can (and probably will) be abused by robots
           harvesting websites for addresses to spam.</strong></li>
@@ -513,7 +513,7 @@
         declaration</a>.</p>  
 
         <p>By default the parser assumes you are using the UTF-8
-        encoding instead of your platform's default.  For most Western
+        encoding instead of your platform&apos;s default.  For most Western
         European countries you should set the encoding to
         <code>ISO-8859-1</code>.  To do so, make the very first line
         of you build file read like</p>
@@ -523,6 +523,23 @@
 ]]></source>
       </answer>
     </faq>
+
+    <faq id="use-zip-instead-of-jar">
+      <question>How do I use <code>jar</code>&apos;s <code>M</code> switch?
+      I don&apos;t want a MANIFEST.</question>
+
+      <answer>
+        <p>A JAR archive is a ZIP file, so if you don&apos;t want a
+        MANIFEST you can simply use <code>&lt;zip&gt;</code>.</p>
+
+        <p>If your file names contain national characters you should
+        know that Sun&apos;s <code>jar</code> utility like Ant&apos;s
+        <code>&lt;jar&gt;</code> uses UFT8 to encode their names while
+        <code>&lt;zip&gt;</code> uses your platforms default encoding.
+        Use the encoding attribute of <code>&lt;zip&gt;</code> if
+        necessary.</p>
+      </answer>
+    </faq>
   </faqsection>
 
   <faqsection title="It doesn&apos;t work (as expected)">
@@ -662,12 +679,12 @@
       <answer>
 
         <p>When <code>ant</code> loads properties from an external
-        file it dosn't touch the value of properties, trailing blanks
+        file it dosn&apos;t touch the value of properties, trailing blanks
         will not be trimmed for example.</p>
 
         <p>If the value represents a file path, like a jar needed to
         compile, the task which requires the value, javac for example
-        would fail to compile since it can't find the file due to
+        would fail to compile since it can&apos;t find the file due to
         trailing spaces.</p>
       </answer>
     </faq>
@@ -678,12 +695,12 @@
         <code>meta-inf</code> directory.</question>
 
       <answer>
-        <p>No it doesn't.</p>
+        <p>No it doesn&apos;t.</p>
 
         <p>You may have seen these lower-case directory names in
         WinZIP, but WinZIP is trying to be helpful (and fails).  If
         WinZIP encounters a filename that is all upper-case, it
-        assumes it has come from an old DOS box andchanges the case to
+        assumes it has come from an old DOS box and changes the case to
         all lower-case for you.</p>
 
         <p>If you extract (or just check) the archive with jar, you
@@ -845,6 +862,31 @@
    <!ENTITY include SYSTEM "file:./header.xml">
 ]>
 ]]></source>
+
+        <p>Starting with Ant 1.6, there is a new
+        <code>&lt;import&gt;</code> task that can (also) be used to
+        include build file fragments.  Unlike the snippets used with
+        entity includes, the referenced files have to be complete Ant
+        build files, though.</p>
+
+        <p>The example above would become:</p>
+        <source><![CDATA[
+<?xml version="1.0"?>
+<project name="test" default="test" basedir=".">
+
+  <target name="setup">
+    ...
+  </target>
+
+  <import file="../common.xml"/>
+
+  ...
+
+</project>
+]]></source>
+
+        <p>Unlike entity includes, <code>&lt;import&gt;</code> will
+        let you use Ant properties in the file name.</p>
       </answer>
     </faq>
 
@@ -1090,6 +1132,11 @@
         <code>ANT_HOME/lib</code>&quot; for the rest of this
         answer.</p>
 
+        <p>Technically the sentence above isn&apos;t true for Ant 1.6
+        and later anymore, but the result is the same.  For the sake
+        of this discussion, <code>CLASSPATH</code> and
+        <code>ANT_HOME/lib</code> are identical.</p>
+
         <p>This question collects a common type of problem: A task
         needs an external library and it has a nested classpath
         element so that you can point it to this external library, but
@@ -1154,6 +1201,9 @@
           the <code>CLASSPATH</code>.</li>
         </ol>
 
+        <p><strong>Using The Second Option with Ant 1.5.4 and
+        Earlier:</strong></p>
+
         <p>The easiest way to do this is to remove
         <code>optional.jar</code> from <code>ANT_HOME/lib</code>.  If
         you do so, you will have to <code>&lt;taskdef&gt;</code> all
@@ -1183,8 +1233,22 @@
         the <code>*Liaison</code> classes in
         <code>org/apache/tools/ant/taskdefs/optional</code>.</p>
 
+        <p><strong>Using The Second Option with Ant 1.6 and
+        later:</strong></p>
+
+        <p>In Ant 1.6 <code>optional.jar</code> has been split into
+        multiple jars, each one containing classes with the same
+        dependencies on external libraries.  You can move the
+        "offending" jar out of ANT_HOME/lib.  For the
+        <code>&lt;junit&gt;</code> task it would be
+        <code>ant-junit.jar</code> and for <code>&lt;style&gt;</code>
+        it would be <code>ant-trax.jar</code>,
+        <code>ant-xalan1.jar</code> or <code>ant-xslp.jar</code> -
+        depending on the processor you use.</p>
+
         <p>If you use the option to break up <code>optional.jar</code>
-        for <code>&lt;junit&gt;</code>, you still have to use a
+        for <code>&lt;junit&gt;</code> or remove
+        <code>ant-junit.jar</code>, you still have to use a
         <code>&lt;taskdef&gt;</code> with a nested
         <code>&lt;classpath&gt;</code> to define the junit task.</p>
       </answer>
diff --git a/xdocs/index.xml b/xdocs/index.xml
index 41cc13b..8306320 100644
--- a/xdocs/index.xml
+++ b/xdocs/index.xml
@@ -9,33 +9,27 @@
 
 <body>
 
-<section name="ApacheCon 2003">
-  <a href="http://apachecon.com/2003/US/index.html">
-    <img align="right"
-         border="0" src="http://jakarta.apache.org/images/logos/ac2003-150.gif"/>
-  </a>
-    <p>
-    <a href="http://apachecon.com/2003/US/index.html">ApacheCon US 2003</a>
-    is now open for registration. ApacheCon is the conference for all things
-    Apache. Come along and learn about a range of new technologies, meet some
-    Apache folks and share the knowledge.
-    </p>
-</section>
 
- <section name="Ant 1.5.4">
-    <p>Apache Ant 1.5.4 is now available for
-     <a href="http://ant.apache.org/bindownload.cgi">download</a>.
-    </p>
+    <section name="Ant 1.6beta2">
+       <p>Apache Ant 1.6beta2 is now available for <a
+       href="http://cvs.apache.org/dist/ant/v1.6beta2/">download</a>.  As
+       we've already said in the announcements of Ant 1.5.4, this release
+       requires JDK 1.2 or later to run.</p>
 
-    <div class="warning">
-    <div class="label">Note</div>
-    <div class="content">Ant 1.5.4 will be the last release that supports
-      JDK 1.1. The next major release of Ant, Ant 1.6, will require JDK 1.2 or
-      later
-    </div>
-    </div>
+       <p>We encourage user to give this beta a release a try and report
+       any bugs found so that we get a chance to fix them before we make
+       the final release of Ant 1.6.</p>
 
-  </section>
+       <p>Ant 1.6 adds a lot of new features, most prominently support
+       for XML namespaces as well as a new concept of Ant libraries that
+       makes use of namespaces to avoid name clashes of custom tasks.
+       For a longer list of fixed bugs and new features see the release
+       notes.</p>
+
+       <p>The manual of Ant 1.6 is available on line
+       <a href="manual-1.6beta/"> here</a>.</p>
+
+    </section>
 
   <section name="Apache Ant">
 
diff --git a/xdocs/projects.xml b/xdocs/projects.xml
index 75f222d..d17934e 100644
--- a/xdocs/projects.xml
+++ b/xdocs/projects.xml
@@ -69,37 +69,6 @@
         </table>
       </subsection>
 
-      <subsection name="AntDoc">
-
-        <p>AntDoc is a tool that generates HTML documentation from Ant
-        buildfiles; the generated HTML is inspired from what javadoc
-        yields. It also offers a simple Ant target launcher named
-        AntDoc GUI. Ant targets may be launched from the generated
-        AntDoc HTML pages.</p>
-
-        <p>AntDoc can be run via an Ant task, AntDoc GUI can be run
-        via an Ant task, or via a JVM launch.</p>
-
-        <table>
-          <tr>
-            <th>Compatibility:</th>
-            <td>Ant 1.4.1 and higher</td>
-          </tr>
-          <tr>
-            <th>URL:</th>
-            <td><a href="http://antdoc.free.fr/">http://antdoc.free.fr/</a></td>
-          </tr>
-          <tr>
-            <th>Contact:</th>
-            <td><a href="mailto:antdoc@noos.fr">Edouard Mercier</a></td>
-          </tr>
-          <tr>
-            <th>License:</th>
-            <td>The Apache Software License</td>
-          </tr>
-        </table>
-      </subsection>
-
       <subsection name="Antelope">
 
         <p>A GUI for running Ant and editing build files, can run as
@@ -192,6 +161,33 @@
         </table>
       </subsection>
 
+        <subsection name="Invicta">
+
+          <p>Invicta is a build management tool. Using simple project definition files,
+          it generates powerful build scripts (such as ANT) while hiding their
+          complexity. Invicta is a modular framework that allows developing additional
+          components and output types.</p>
+
+          <table>
+            <tr>
+              <th>Compatibility:</th>
+              <td>Ant 1.5 and higher</td>
+            </tr>
+            <tr>
+              <th>URL:</th>
+              <td><a href="http://invicta.sf.net/">http://invicta.sf.net/</a></td>
+            </tr>
+            <tr>
+              <th>Contact:</th>
+              <td><a href ='http://invicta.sf.net/contact.html'>Project Mailing Lists and Administrators</a></td>
+            </tr>
+            <tr>
+              <th>License:</th>
+              <td>LGPL.</td>
+            </tr>
+          </table>
+        </subsection>
+
       <subsection name="Krysalis Centipede">
 
         <p>Krysalis Centipede is a project build system based on