Index: /branches/rk-oran/cdrk2/ant-scripts/build.xml
===================================================================
--- /branches/rk-oran/cdrk2/ant-scripts/build.xml	(revision 18906)
+++ /branches/rk-oran/cdrk2/ant-scripts/build.xml	(revision 18906)
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		.......................................................... 
+		March 2009
+		CD Release Kit for Greenstone2 (cdrk2)
+		Oran Fry
+		..........................................................
+-->
+
+<project name="cdrk2-build" default="cdrk2">
+
+	<!-- CONSTANTS -->
+
+	<!-- for the benefit of the shared scripts, set release-kit home -->
+	<property name="rk.name" value="cdrk2"/>
+	<property name="rk.home" value="${cdrk2.home}" />
+	<property name="rk.os" value="multi" />
+	<property name="os.suffix" value="AnyPlatform"/>
+	
+	<!-- IMPORT OTHER ANT SCRIPTS -->
+	<import file="shared-ant-scripts/init.xml"/>
+	<import file="../greenstone2/ant-scripts/rk2-targets.xml"/>
+
+	<!-- figure out where the compiled software is coming from -->
+	<property name="software.archive.linux" value="http://greenstone.org/release-snapshots/cdrom-components-${version}-linux.tar.gz"/>
+	<property name="software.archive.windows" value="http://greenstone.org/release-snapshots/cdrom-components-${version}-windows.tar.gz"/>
+	<property name="software.archive.mac" value="http://greenstone.org/release-snapshots/cdrom-components-${version}-mac.tar.gz"/>
+
+	<!-- THE MAIN TARGET -->
+	<target name="cdrk2" depends="init">
+		<antcall target="checkout-and-compile-documentation"/>
+		<antcall target="build-tutorials"/>
+		<antcall target="build-documentation"/>
+		<antcall target="export-documented-example-collections"/>
+		<antcall target="insert-readmes"/>
+		<antcall target="insert-software"/>
+		<antcall target="create-image"/>
+	</target>
+
+	<target name="checkout-and-compile-documentation">
+		<svn>
+			<checkout url="${svn.root}/documentation/${branch.path}/shared" destPath="documentation/shared"/>
+		</svn>		
+		<javac srcdir="documentation/shared" destdir="documentation/shared" debug="on">
+			<include name="*.java"/>
+		</javac>
+
+	</target>
+
+	<target name="build-tutorials">
+		<svn>
+			<checkout url="${svn.root}/documentation/${branch.path}/tutorials" destPath="documentation/tutorials"/>
+			<checkout url="${svn.root}/gli/${branch.path}" destPath="documentation/gli"/>
+			<checkout url="${svn.root}/gsdl/${branch.path}/perllib" destPath="documentation/perllib"/>
+			<checkout url="${svn.root}/gsdl/${branch.path}/macros" destPath="documentation/macros"/>
+		</svn>
+
+		<delete dir="documentation/tutorials/html"/>
+		<exec dir="documentation/tutorials" executable="/bin/bash">
+			<arg value="generate-html.sh"/>
+			<env key="GSDLHOME" value="${basedir}/documentation"/>
+		</exec>
+
+		<delete dir="cdrom/Tutorial Exercises"/>
+		<copy todir="cdrom/Tutorial Exercises/English"><fileset dir="documentation/tutorials/html/en"/></copy>
+		<copy todir="cdrom/Tutorial Exercises/French"><fileset dir="documentation/tutorials/html/fr"/></copy>
+		<copy todir="cdrom/Tutorial Exercises/Spanish"><fileset dir="documentation/tutorials/html/es"/></copy>
+		<copy todir="cdrom/Tutorial Exercises/Russian"><fileset dir="documentation/tutorials/html/ru"/></copy>
+	</target>
+
+	<target name="build-documentation">
+		<svn>
+			<checkout url="${svn.root}/documentation/${branch.path}/manuals" destPath="documentation/manuals"/>
+			<checkout url="${svn.root}/documentation/${branch.path}/shared" destPath="documentation/shared"/>
+			<checkout url="${svn.root}/gli/${branch.path}" destPath="documentation/gli"/>
+		</svn>
+		<unzip src="documentation/shared/fop.zip" dest="documentation/shared"/>
+		<chmod perm="a+x" file="documentation/shared/fop/fop.sh"/>
+
+		<antcall target="generate-gli-chapter"><param name="language" value="en"/></antcall>
+		<antcall target="generate-gli-chapter"><param name="language" value="fr"/></antcall>
+		<antcall target="generate-gli-chapter"><param name="language" value="es"/></antcall>
+		<antcall target="generate-gli-chapter"><param name="language" value="ru"/></antcall>
+
+		<delete dir="documentation/manuals/build"/>
+		<exec dir="documentation/manuals" executable="/bin/bash">
+			<arg value="generate-pdf.sh"/>
+			<arg value="all"/>
+			<arg value="en es ru fr"/>
+		</exec>
+
+		<exec spawn="true" dir="documentation/manuals" executable="/bin/bash">
+			<arg value="generate-pdf.sh"/>
+			<arg value="Install"/>
+			<arg value="ar"/>
+		</exec>
+
+		<delete dir="cdrom/Documentation"/>
+		<copy todir="cdrom/Documentation/English"><fileset dir="documentation/manuals/build/en/pdf"/></copy>
+		<copy todir="cdrom/Documentation/French"><fileset dir="documentation/manuals/build/fr/pdf"/></copy>
+		<copy todir="cdrom/Documentation/Spanish"><fileset dir="documentation/manuals/build/es/pdf"/></copy>
+		<copy todir="cdrom/Documentation/Russian"><fileset dir="documentation/manuals/build/ru/pdf"/></copy>
+		<copy todir="cdrom/Documentation/Arabic"><fileset dir="documentation/manuals/build/ar/pdf"/></copy>
+	</target>
+
+	<target name="export-documented-example-collections">
+		<svn>
+			<export srcurl="${svn.root}/documented-example-collections/${branch.path}" destPath="cdrom/Documented Example Collections"/>
+		</svn>
+	</target>
+
+
+	<target name="generate-gli-chapter">
+		<path id="documentation.compile.classpath">
+			<fileset dir="documentation">
+				<include name="**/*.jar"/>
+			</fileset>
+			<pathelement path="documentation/gli/classes"/>
+			<pathelement path="documentation/shared"/>
+			<pathelement path="documentation/manuals"/>
+		</path>
+		<java classname="ApplyXSLT" classpathref="documentation.compile.classpath" output="documentation/manuals/xml-source/${language}/help-${language}.xml">
+			<arg value="documentation/manuals/processing/gen-gli-help-to-manual-chapter.xsl" />
+			<arg value="documentation/gli/help/${language}/help.xml" />
+			<arg value="compiled" />
+		</java>
+		<copy file="documentation/manuals/xml-source/${language}/help-${language}.xml" todir="documentation/manuals"/>
+	</target>
+
+	<target name="insert-readmes">
+		<copy todir="cdrom"><fileset dir="${rk.home}/greenstone2/docs"/></copy>
+		<antcall target="gsdl-set-dates-in-readmes"><param name="gsdl.basedir" value="${basedir}/cdrom"/></antcall>
+	</target>
+
+	<target name="insert-software">
+		<antcall target="insert-software-linux"/>
+		<antcall target="insert-software-windows"/>
+<!--
+		<antcall target="insert-software-mac"/>
+-->
+	</target>
+
+	<target name="insert-software-linux">
+		<mkdir dir="cdrom/Software"/>
+		<mkdir dir="software"/>
+		<get src="${software.archive.linux}" dest="software/linux.tar.gz"/>
+		<untar src="software/linux.tar.gz" dest="cdrom/Software" compression="gzip" overwrite="true"/>
+	</target>
+
+	<target name="insert-software-windows">
+		<mkdir dir="cdrom/Software"/>
+		<mkdir dir="software"/>
+		<get src="${software.archive.windows}" dest="software/windows.tar.gz"/>
+		<untar src="software/windows.tar.gz" dest="cdrom/Software" compression="gzip" overwrite="true"/>
+	</target>
+
+	<target name="create-image">
+
+		<mkdir dir="products"/>
+
+		<exec executable="mkisofs">
+			<arg value="-input-charset"/>
+			<arg value="utf-8"/>
+			<arg value="-o"/>
+			<arg value="products/Greenstone-${version}-cdrom.iso"/>
+			<arg value="-J"/>
+			<arg value="-R"/>
+			<arg value="-D"/>
+			<arg value="cdrom"/>
+		</exec>
+
+		<!--
+		<exec executable="/bin/bash" dir="products">
+			<arg value="-c"/>
+			<arg value="cat Greenstone-${version}-cdrom.iso | gzip > Greenstone-${version}-cdrom.iso.gz"/>
+		</exec>
+		-->
+
+		<exec executable="/bin/bash" dir="products">
+			<arg value="-c"/>
+			<arg value="zip Greenstone-${version}-cdrom.zip Greenstone-${version}-cdrom.iso"/>
+		</exec>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/cdrk2/bin/cdrk2
===================================================================
--- /branches/rk-oran/cdrk2/bin/cdrk2	(revision 18906)
+++ /branches/rk-oran/cdrk2/bin/cdrk2	(revision 18906)
@@ -0,0 +1,15 @@
+rk_name="cdrk2"
+rk_fullname="CD Release Kit for Greenstone2"
+RK_HOME=$CDRK2_HOME
+source $CDRK2_HOME/linux/rk
+
+echo "O---------------------------------------O"
+echo "|                                       |"
+echo "|   cdrk2                               |"
+echo "|   CD Release Kit for Greenstone2      |"
+echo "|                                       |"
+echo "O---------------------------------------O"
+
+
+#run the command
+$toexec 2>&1 | tee cdrk2.out
Index: /branches/rk-oran/lirk2/ant-scripts/build.xml
===================================================================
--- /branches/rk-oran/lirk2/ant-scripts/build.xml	(revision 18906)
+++ /branches/rk-oran/lirk2/ant-scripts/build.xml	(revision 18906)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		.......................................................... 
+		June 2008
+		Linux Release Kit for Greenstone2 (lirk2)
+		Oran Fry
+		..........................................................
+-->
+
+<project name="lirk2-build" default="lirk2">
+
+	<!-- CONSTANTS -->
+
+	<!-- for the benefit of the shared scripts, set release-kit home -->
+	<property name="rk.name" value="lirk2"/>
+	<property name="rk.home" value="${lirk2.home}" />
+	<property name="rk.os" value="linux" />
+	<property name="shell.os" value="linux"/>
+	<property name="os.suffix" value="linux"/>
+	
+	<!-- IMPORT OTHER ANT SCRIPTS -->
+	<import file="shared-ant-scripts/init.xml"/>
+	<import file="shared-ant-scripts/operations-on-gli.xml"/>
+	<import file="../greenstone2/ant-scripts/rk2-targets.xml"/>
+
+	<import file="compile.xml"/>
+	<import file="create-distribution.xml"/>
+	<import file="create-components.xml"/>
+	<import file="create-installer.xml"/>
+	<import file="wrap.xml"/>
+
+	<!-- THE MAIN TARGET -->
+	<target name="lirk2" depends="init">
+		<antcall target="compile"/>
+		<antcall target="create-distribution"/>
+		<antcall target="create-components"/>
+		<antcall target="create-installer"/>
+		<antcall target="wrap"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk2/ant-scripts/compile.xml
===================================================================
--- /branches/rk-oran/lirk2/ant-scripts/compile.xml	(revision 18906)
+++ /branches/rk-oran/lirk2/ant-scripts/compile.xml	(revision 18906)
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk2-compile" default="compile">
+
+	<target name="compile">
+
+		<!-- checkout -->
+		<antcall target="checkout-gsdl-gli" />
+		<antcall target="gsdl-set-version-numbers"><param name="gsdl.basedir" value="${basedir}/compiled"/></antcall>
+		
+		<!-- configure -->
+		<antcall target="add-static-to-configure-in"/>
+		<antcall target="set-environment-in-packages-configure"/>
+		<antcall target="run-configure"/>
+		<antcall target="makefiles-add-static"/>
+
+		<!-- make -->
+		<antcall target="run-make"/>
+		<antcall target="run-make-install"/>
+		<antcall target="run-make-apache-for-dist"/>
+		<antcall target="strip-execs"/>
+
+		<!-- uninstaller -->
+		<antcall target="compile-uninstaller" /> <!-- from rk2-targets -->
+
+		<!-- build collections -->
+		<antcall target="build-demo-collection" />
+
+	</target>
+
+	<target name="checkout-gsdl-gli">
+		<svn>
+			<checkout url="${svn.root}/gsdl/${branch.path}" destPath="${basedir}/compiled"/>
+			<checkout url="${svn.root}/gli/${branch.path}" destPath="${basedir}/compiled/gli"/>
+		</svn>
+	</target>
+
+	<target name="add-static-to-configure-in">
+		<rsr
+			file="${basedir}/compiled/configure.in"
+			pattern="^LDFLAGS=.*$"
+			replacement="LDFLAGS=-static" />
+		<exec dir="${basedir}/compiled" executable="autoconf" output="${basedir}/compiled/configure"><arg value="configure.in"/></exec>
+	</target>
+
+	<target name="set-environment-in-packages-configure">
+		<rsr
+			file="${basedir}/compiled/common-src/packages/configure"
+			pattern="^ENVIRONMENT=.*$"
+			replacement="ENVIRONMENT=&quot;LDFLAGS=-static&quot;" />
+		<rsr
+			file="${basedir}/compiled/build-src/packages/configure"
+			pattern="^ENVIRONMENT=.*$"
+			replacement="ENVIRONMENT=&quot;LDFLAGS=-static&quot;" />
+	</target>
+
+	<target name="run-configure">
+		<exec dir="${basedir}/compiled" executable="${basedir}/compiled/configure" failonerror="true">
+			<arg line="--enable-apache-httpd"/>
+			<env key="LDFLAGS" value="-static"/>
+		</exec>
+	</target>
+
+	<target name="makefiles-add-static">
+		<rsr
+			file="${basedir}/compiled/build-src/packages/wv/wv-gs/Makefile"
+			pattern="^LDFLAGS =.*$"
+			replacement="LDFLAGS = -static" />
+		<rsr
+			file="${basedir}/compiled/build-src/packages/xlhtml/xlhtml-0.4.9.0/xlhtml/Makefile"
+			pattern="^LDFLAGS =.*$"
+			replacement="LDFLAGS = -static" />
+		<rsr
+			file="${basedir}/compiled/build-src/packages/xlhtml/xlhtml-0.4.9.0/ppthtml/Makefile"
+			pattern="^LDFLAGS =.*$"
+			replacement="LDFLAGS = -static" />
+		<rsr
+			file="${basedir}/compiled/build-src/packages/rtftohtml/rtftohtml_src/Makefile"
+			pattern="(-o rtftohtml.{2}EXEEXT.{1})"
+			replacement="$1 -static" />
+	</target>
+
+	<target name="run-make">
+		<exec dir="${basedir}/compiled" executable="make" failonerror="true"/>
+	</target>
+
+
+	<target name="run-make-install">
+		<exec dir="${basedir}/compiled" executable="make" failonerror="true"><arg value="install"/></exec>
+	</target>
+
+	<target name="run-make-apache-for-dist">
+		<exec dir="${basedir}/compiled" executable="make" failonerror="true"><arg value="apache-for-dist"/></exec>
+	</target>
+
+	<target name="strip-execs">
+		<exec dir="${basedir}/compiled/bin/linux" executable="find" failonerror="true">
+			<arg line="! -name . -type f -maxdepth 1 -exec strip {} &#59;"/>
+		</exec>
+	</target>
+
+	<target name="build-demo-collection">
+		<exec dir="${basedir}/compiled" executable="${lirk2.home}/resources/build-demo.sh" failonerror="true"/>
+	</target>
+
+
+
+</project>
Index: /branches/rk-oran/lirk2/ant-scripts/create-components.xml
===================================================================
--- /branches/rk-oran/lirk2/ant-scripts/create-components.xml	(revision 18906)
+++ /branches/rk-oran/lirk2/ant-scripts/create-components.xml	(revision 18906)
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk2-create-components" default="create-components">
+
+	<!-- create components from the distribution folder -->
+
+	<!-- 1st level -->
+	<target name="create-components">
+		<antcall target="prepare-components" />
+		<antcall target="compress-components" />
+		<antcall target="produce-cd-components"/>
+	</target>
+
+	<!-- 2nd level -->
+	<target name="prepare-components">
+		<antcall target="prepare-core-component" />
+		<antcall target="prepare-imagemagick-component" />
+		
+		<antcall target="prepare-sourcecode-component" />
+	</target>
+
+	<target name="compress-components">
+		<antcall target="compress-core-component" />
+		<antcall target="compress-imagemagick-component" />
+
+		<antcall target="compress-zipped-binary-release" /> <!-- from init -->
+	</target>
+
+	<!-- 3rd level -->	
+
+	<!-- core -->
+	<target name="prepare-core-component">
+
+		<delete dir="components/tmp/core"/>
+		<mkdir dir="components/tmp/core"/>
+
+		<copy todir="components/tmp/core" overwrite="true">
+			<fileset dir="distributions/web">
+				<include name="**/*"/>
+
+				<!-- exclude sourcecode + imagemagick + build files -->
+				<exclude name="common-src"/>
+				<exclude name="common-src/**/*"/>
+				<exclude name="runtime-src"/>
+				<exclude name="runtime-src/**/*"/>
+				<exclude name="build-src"/>
+				<exclude name="build-src/**/*"/>
+				<exclude name="bin/linux/imagemagick"/>
+				<exclude name="bin/linux/imagemagick/**/*"/>
+
+				<exclude name="acconfig.h"/>
+				<exclude name="aclocal.m4"/>
+				<exclude name="config.guess"/>
+				<exclude name="config.sub"/>
+				<exclude name="configtest.pl"/>
+				<exclude name="configure"/>
+				<exclude name="configure.in"/>
+				<exclude name="install-sh"/>
+				<exclude name="Makefile.in"/>
+				<exclude name="micotest.cpp"/>
+				<exclude name="config.h.in"/>
+				<exclude name="Install.txt"/>
+
+				<exclude name="README*.txt"/>
+				<include name="READMEen.txt"/>
+
+			</fileset>
+		</copy>
+		<zip destfile="components/core.comp" basedir="components/tmp/core" compress="false" includes="**/*"/>
+	</target>
+	
+	<target name="compress-core-component">
+		<sevenzip task="encode" input="components/core.comp" output="components/core.lzma" dictionnary="26"/>
+	</target>
+
+	<!-- sourcecode -->
+	<target name="prepare-sourcecode-component">
+
+		<delete dir="components/tmp/sourcecode"/>
+		<mkdir dir="components/tmp/sourcecode"/>
+
+		<exec dir="${basedir}" executable="cp">
+			<arg line="-r distributions/web/common-src distributions/web/build-src distributions/web/runtime-src components/tmp/sourcecode"/>
+		</exec>
+		<exec dir="distributions/web" executable="cp">
+			<arg line="acconfig.h aclocal.m4 config.guess config.sub configtest.pl configure configure.in install-sh Makefile.in micotest.cpp config.h.in Install.txt ${basedir}/components/tmp/sourcecode"/>
+		</exec>
+				
+		<mkdir dir="products"/>
+		<!-- create a script to create the tar -->
+		<echo output="create-sourcecode-component.sh">
+		tar -czf ../../../products/Greenstone-${version}-${os.suffix}-sourcecode-component.tar.gz *
+		</echo>
+		<chmod perm="+x" file="create-sourcecode-component.sh"/>
+
+		<!-- run it -->
+		<exec dir="components/tmp/sourcecode" executable="/bin/bash">
+			<arg line="${basedir}/create-sourcecode-component.sh"/>
+		</exec>
+
+		<!-- remove it -->
+		<delete file="create-sourcecode-component.sh"/>
+
+	</target>
+	
+	<target name="compress-sourcecode-component">
+		<sevenzip task="encode" input="components/sourcecode.comp" output="components/sourcecode.lzma" dictionnary="26"/>
+	</target>
+	
+	<!-- imagemagick -->
+	<target name="prepare-imagemagick-component">
+
+		<delete dir="components/tmp/imagemagick"/>
+		<mkdir dir="components/tmp/imagemagick"/>
+
+		<copy todir="components/tmp/imagemagick" overwrite="true">
+			<fileset dir="distributions/web/bin/linux">
+				<include name="imagemagick/**/*"/>
+			</fileset>
+		</copy>
+				
+		<zip destfile="components/imagemagick.comp" basedir="components/tmp/imagemagick" compress="false" includes="**/*"/>
+	</target>
+		
+	<target name="compress-imagemagick-component">
+		<sevenzip task="encode" input="components/imagemagick.comp" output="components/imagemagick.lzma" dictionnary="26"/>
+	</target>
+
+	<!--
+		cd components
+		produce components for cdrom distributions, to be picked up and used by cdrk2 release kit
+		split components into linux only files (linux) and general files (all)
+	-->
+	<target name="produce-cd-components">
+		<delete dir="components/tmp/cdrom"/>
+		<mkdir dir="components/tmp/cdrom"/>
+
+		<!-- core -->
+		<mkdir dir="components/tmp/cdrom/core/all"/>
+		<mkdir dir="components/tmp/cdrom/core/linux"/>
+		<copy todir="components/tmp/cdrom/core/all" overwrite="true">
+			<fileset dir="components/tmp/core"/>
+		</copy>
+		<move todir="components/tmp/cdrom/core/linux" overwrite="true">
+			<fileset dir="components/tmp/cdrom/core/all">
+				<include name="bin/linux"/>
+				<include name="bin/linux/**/*"/>
+				<include name="bin/windows"/>
+				<include name="bin/windows/**/*"/>
+				<include name="apache-httpd/linux"/>
+				<include name="apache-httpd/linux/**/*"/>
+				<include name="*.sh"/>
+				<include name="*.csh"/>
+				<include name="*.bash"/>
+			</fileset>
+		</move>
+
+		<!-- imagemagick (all linux specific) -->
+		<mkdir dir="components/tmp/cdrom/imagemagick/linux"/>
+		<copy todir="components/tmp/cdrom/imagemagick/linux" overwrite="true">
+			<fileset dir="components/tmp/imagemagick"/>
+		</copy>
+
+
+		<!-- sourcecode -->
+		<mkdir dir="components/tmp/cdrom/sourcecode/all"/>
+		<mkdir dir="components/tmp/cdrom/sourcecode/linux"/>
+		<copy todir="components/tmp/cdrom/sourcecode/all" overwrite="true">
+			<fileset dir="components/tmp/sourcecode"/>
+		</copy>
+		<move todir="components/tmp/cdrom/sourcecode/linux" overwrite="true">
+			<fileset dir="components/tmp/cdrom/sourcecode/all">
+				<include name="acconfig.h"/>
+				<include name="aclocal.m4"/>
+				<include name="config.guess"/>
+				<include name="config.sub"/>
+				<include name="configtest.pl"/>
+				<include name="configure"/>
+				<include name="configure.in"/>
+				<include name="install-sh"/>
+				<include name="Makefile.in"/>
+				<include name="micotest.cpp"/>
+				<include name="config.h.in"/>
+			</fileset>
+		</move>
+
+		<tar destfile="products/cdrom-components-${version}-linux.tar.gz" basedir="components/tmp/cdrom" compression="gzip"/>
+		
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk2/ant-scripts/create-distribution.xml
===================================================================
--- /branches/rk-oran/lirk2/ant-scripts/create-distribution.xml	(revision 18906)
+++ /branches/rk-oran/lirk2/ant-scripts/create-distribution.xml	(revision 18906)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk2-create-distribution" default="create-distribution">
+
+	<target name="create-distribution">
+
+		<antcall target="export-gsdl-gli"><param name="dest" value="distributions/web"/></antcall>
+		<antcall target="drop-in-docs"><param name="gsdl.basedir" value="distributions/web"/></antcall>
+		<antcall target="gsdl-set-version-numbers"><param name="gsdl.basedir" value="${basedir}/distributions/web"/></antcall>
+		<antcall target="gli-set-version-numbers"><param name="glibasedir" value="${basedir}/distributions/web/gli"/></antcall>
+		<antcall target="insert-uninstaller"><param name="script-format" value="sh"/></antcall> <!-- from rk2-targets -->
+		<antcall target="dist-unzip-packages"/>
+		<antcall target="drop-in-demo-collection" />
+		<antcall target="insert-export-to-cd-package"><param name="gsdl.basedir" value="distributions/web"/></antcall> <!-- from rk2-targets -->
+		<antcall target="drop-in-binaries" />
+		<antcall target="export-imagemagick-linux-binaries" />
+		<antcall target="export-wvware-linux-binaries" />
+		<antcall target="compile-gli" />
+		<antcall target="remove-unneeded-files" />
+		<antcall target="create-needed-empty-files"><param name="gsdl.basedir" value="distributions/web"/></antcall>
+
+		<antcall target="create-binary-zip-linux"/>
+
+	</target>
+
+	<target name="drop-in-binaries">
+		<echo level="info">Dropping compiled binaries into distribution</echo>
+		<delete dir="distributions/web/bin/linux" />
+		<!-- main binaries -->
+		<exec dir="${basedir}" executable="cp"><arg line="-r compiled/bin/linux distributions/web/bin"/></exec>
+		<!-- java binaries -->
+		<copy file="${basedir}/compiled/bin/java/LuceneWrapper.jar" todir="${basedir}/distributions/web/bin/java" />
+		<!-- cgi binaries -->
+		<exec dir="${basedir}" executable="cp"><arg line="compiled/cgi-bin/library.cgi compiled/cgi-bin/oaiserver.cgi distributions/web/cgi-bin"/></exec>
+		<!-- apache -->
+		<exec dir="${basedir}" executable="cp"><arg line="-r compiled/apache-httpd distributions/web"/></exec>
+		<mkdir dir="${basedir}/distributions/web/etc/logs-gsi"/>
+
+	</target>
+
+	<target name="drop-in-demo-collection">
+		<echo level="info">Dropping rebuilt demo collection into distribution</echo>
+		<delete dir="distributions/web/collect/demo" />
+		<exec dir="${basedir}" executable="cp"><arg line="-r compiled/collect/demo distributions/web/collect"/></exec>
+	</target>
+
+	<target name="export-imagemagick-linux-binaries">
+		<delete dir="distributions/web/bin/linux/imagemagick"/>
+		<svn>
+			<export srcurl="${svn.root}/other-projects/trunk/linux-binaries/imagemagick" destPath="distributions/web/bin/linux/imagemagick"/>
+		</svn>
+	</target>
+	
+	<target name="export-wvware-linux-binaries">
+		<delete dir="distributions/web/bin/linux/wv"/>
+		<svn>
+			<export srcurl="${svn.root}/other-projects/trunk/linux-binaries/wv" destPath="distributions/web/bin/linux/wv"/>
+		</svn>
+	</target>
+
+	<target name="compile-gli">
+		<echo>Compiling gli...</echo>
+		<exec dir="${basedir}/distributions/web/gli" executable="${basedir}/distributions/web/gli/makegli.sh"/>
+
+		<echo>Creating jar...</echo>
+		<exec dir="${basedir}/distributions/web/gli" executable="${basedir}/distributions/web/gli/makejar.sh"/>
+
+		<echo>Cleaning up intermediate files...</echo>
+		<delete dir="${basedir}/distributions/web/gli/jar"/>
+		<delete dir="${basedir}/distributions/web/gli/classes/org"/>
+
+		<echo>Putting gli server jar in a better place</echo>
+		<exec dir="${basedir}/distributions/web" executable="mv" failonerror="true">
+			<arg line="gli/GLIServer.jar bin/java" />
+		</exec>
+	</target>
+
+	<target name="dist-unzip-packages">
+		<untar src="${basedir}/distributions/web/common-src/packages/sqlite/sqlite-amalgamation-3.5.9.tar.gz" dest="${basedir}/distributions/web/common-src/packages/sqlite" compression="gzip"/>
+		<delete file="${basedir}/distributions/web/common-src/packages/sqlite/sqlite-amalgamation-3.5.9.tar.gz"/>
+	</target>
+
+
+	<target name="remove-unneeded-files">
+		<delete file="${basedir}/distributions/web/gli/.greenstonestore" />
+		<delete><fileset dir="${basedir}/distributions/web" includes="win32.mak,win32cfg.h,Install.sh,Support.htm"/></delete>
+		<delete file="${basedir}/distributions/web/bin/java/SignedGatherer.jar" />
+		<delete><fileset dir="${basedir}/distributions/web/gli" includes="*.bat"/></delete>
+		<delete><fileset dir="${basedir}/distributions/web" includes="*.bat"/></delete>
+		<delete dir="${basedir}/distributions/web/common-src/packages/windows"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk2/ant-scripts/create-installer.xml
===================================================================
--- /branches/rk-oran/lirk2/ant-scripts/create-installer.xml	(revision 18906)
+++ /branches/rk-oran/lirk2/ant-scripts/create-installer.xml	(revision 18906)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk2-create-installer" default="create-installer">
+
+	<target name="create-installer">
+		<antcall target="copy-installer-files"/>
+		<antcall target="make-installer-files-concrete"><param name="java.os" value="linux"/></antcall> <!-- from init -->
+		<antcall target="compile-binary-installer"/> <!-- from init -->
+		<antcall target="compile-minimal-installer"/> <!-- from init -->
+	</target>
+
+	<target name="copy-installer-files" depends="copy-main-installer-files"> <!-- from init -->
+
+		<copy todir="${basedir}/installer/classes" overwrite="true">
+			<fileset file="${basedir}/distributions/web/LICENSE.txt"/>
+		</copy>
+
+		<unjar src="${lirk2.home}/ant-scripts/tasks/greenstone/anttasks.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+		<unjar src="${lirk2.home}/ant-scripts/tasks/7z-ant/7z.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+		<unjar src="${lirk2.home}/lib/crypt.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk2/ant-scripts/wrap.xml
===================================================================
--- /branches/rk-oran/lirk2/ant-scripts/wrap.xml	(revision 18906)
+++ /branches/rk-oran/lirk2/ant-scripts/wrap.xml	(revision 18906)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk2-wrap" default="wrap">
+
+	<target name="wrap">
+		<antcall target="setup-for-wrapping"/>
+		<antcall target="compile-wrapper"/>
+	</target>
+
+
+	<target name="setup-for-wrapping">
+
+		<!-- create and setup the build directory -->
+		<mkdir dir="${basedir}/wrapped-installer/build"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${lirk2.home}/linux/wrapper.cpp"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${lirk2.home}/packages/search4j/libsearch4j.cpp"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${lirk2.home}/packages/search4j/libsearch4j.h"/>
+
+		<!-- copy bundled files -->
+		<copy todir="${basedir}/wrapped-installer/build" file="${lirk2.home}/linux/${linux-java.installer}"/>
+		<copy tofile="${basedir}/wrapped-installer/build/greenstone2.jar" file="${basedir}/installer/Greenstone-${version}-linux.jar"/>
+
+		<!-- substitute in real values -->
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.installer@" replacement="${linux-java.installer}"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@installer.name@" replacement="greenstone2"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.extracted@" replacement="${linux-java.extracted}"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.min.version@" replacement="${java.min.version}"/>
+
+	</target>
+
+	<target name="compile-wrapper">
+
+		<echo level="info">create an object file (extension .o) for each file to bundle</echo>
+		<!-- jar -->
+		<exec executable="/usr/bin/objcopy" dir="${basedir}/wrapped-installer/build">
+			<arg line="-I binary -O elf32-i386 -B i386 --redefine-sym _binary_greenstone2_jar_start=greenstone2jar --readonly-text greenstone2.jar greenstone2.jar.o"/>
+		</exec>
+		<!-- java -->
+		<exec executable="/usr/bin/objcopy" dir="${basedir}/wrapped-installer/build">
+			<arg line="-I binary -O elf32-i386 -B i386 --redefine-sym _binary_${linux-java.installer}_start=java --readonly-text ${linux-java.installer} java.o"/>
+		</exec>
+
+		<echo level="info">working out the size of the objects</echo>
+		<!-- jar -->
+		<exec executable="ls" dir="${basedir}/wrapped-installer/build" outputproperty="greenstone2.jar.ls"><arg line="-l greenstone2.jar"/></exec>
+		<exec executable="sed" inputstring="${greenstone2.jar.ls}" outputproperty="greenstone2.jar.size"><arg line="-e 's/^[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *\([0-9]*\).*$/\1/g'"/></exec>
+
+		<!-- java -->
+		<exec executable="ls" dir="${basedir}/wrapped-installer/build" outputproperty="java.ls"><arg line="-l ${linux-java.installer}"/></exec>
+		<exec executable="sed" inputstring="${java.ls}" outputproperty="java.size"><arg line="-e 's/^[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *\([0-9]*\).*$/\1/g'"/></exec>
+
+		<echo level="info">creating wrapper header file</echo>
+		<delete file="wrapper.h"/>
+		<exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h"><arg line="extern const char greenstone2jar[${greenstone2.jar.size}];"/></exec>
+		<exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h" append="true"><arg line="extern const char java[${java.size}];"/></exec>
+		<exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h" append="true"><arg line="#define java_is_bundled yes"/></exec>
+
+		<echo level="info">compile libsearch4j</echo>
+		<exec executable="g++" dir="${basedir}/wrapped-installer/build">
+			<arg line="-Wall -static -static-libgcc -c -o libsearch4j.o libsearch4j.cpp"/>
+		</exec>
+
+		<echo level="info">compile the wrapper program</echo>
+		<exec executable="g++" dir="${basedir}/wrapped-installer/build">
+			<arg line="-Wall -static -static-libgcc -c -o wrapper.o wrapper.cpp"/>
+		</exec>
+
+		<echo level="info">link the compiled code and bundled files</echo>
+		<exec executable="g++" dir="${basedir}/wrapped-installer/build">
+			<arg line="-static -static-libgcc -o ../../products/Greenstone-${version}-linux.bin wrapper.o libsearch4j.o greenstone2.jar.o java.o"/>
+		</exec>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk2/bin/lirk2
===================================================================
--- /branches/rk-oran/lirk2/bin/lirk2	(revision 18906)
+++ /branches/rk-oran/lirk2/bin/lirk2	(revision 18906)
@@ -0,0 +1,5 @@
+#!/bin/bash
+export rk_name="lirk2"
+export rk_fullname="Linux Release Kit for Greenstone2"
+export RK_HOME=$LIRK2_HOME
+$LIRK2_HOME/linux/rk $*
Index: /branches/rk-oran/lirk2/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/lirk2/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/lirk2/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Greenstone@version@ Installer"
+			windowIcon="/resources/icon.png"
+			defaultImageResource="/resources/header.png"
+			minJavaVersion="1.4">
+
+	<!-- select language page -->
+	<page type="input" name="language-selector" displayText="">
+		<comment name="language-selector-explanation"/>
+		<select property="language" defaultValue="en" displayText="" useAsLocale="true">
+			<option value="en" text="English"/>
+			<option value="fr" text="FranÃ§ais (French)"/>
+			<option value="es" text="EspaÃ±ol (Spanish)"/>
+			<option value="de" text="Deutsch (German)"/>
+			<option value="ru" text="ÑÑÑÑÐºÐžÐ¹ ÑÐ·ÑÐº (Russian)"/>
+			<option value="zh" text="äž­æ (Chinese)"/>
+			<option value="ar" text="Arabic"/>
+		</select>
+	</page>
+
+	<!--  simple intro page -->
+
+	<!-- start binary release -->
+	<page type="input" name="intro" displayText="">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end binary release -->
+
+	<!-- start source release -->
+	<page type="input" name="intro" displayText="" target="Source Release">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end source release -->
+
+
+	<!--  type="license" shows a license page to click through -->
+	<page type="license" name="license" resource="/LICENSE.txt"  displayText="" />
+
+	<!--  install destination page -->
+	<page type="input" name="destination" displayText="">
+
+		<directory property="installDir"
+			defaultValue="/usr/local/Greenstone2"
+			create="true"
+			displayText="" />
+
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="selector" displayText="">
+		<comment name="choose-components"/>
+
+		<target
+			target="Initialising"
+			diskRequirement="x"
+			defaultValue="true"
+			displayText="x"
+			force="true"
+			hidden="true"/>
+
+		<target
+			target="Installing Core System"
+			diskRequirement="@component.size.core@"
+			displayText=""
+			defaultValue="true"
+			force="true"/>
+
+		<!-- start bundled components -->
+		<target
+			target="Installing ImageMagick"
+			diskRequirement="@component.size.imagemagick@"
+			defaultValue="true" 
+			displayText=""/>
+		<!-- end bundled components -->
+
+	</page>
+
+	<page type="input" name="admin-password" displayText="">
+		<comment name="admin-password-expl"/>
+<!--		<validated property="admin.password" defaultValue="" displayText="" regex="^.{3,20}$"/>-->
+		<text property="admin.password" defaultValue="admin" displayText=""/>
+	</page>
+	<!-- end binary release -->
+
+	<page type="progress" name="progress" showTargets="true" displayText=""/>
+
+</installer>
Index: /branches/rk-oran/lirk2/installer/build.xml
===================================================================
--- /branches/rk-oran/lirk2/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/lirk2/installer/build.xml	(revision 18906)
@@ -0,0 +1,166 @@
+<?xml version="1.0"?>
+<!--
+This is the build.xml run by AntInstaller for the installer
+-->
+
+<project name="Installation">
+
+	<!-- this is required to pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+
+	<path id="project.classpath">
+		<pathelement path="${antinstaller.jar}"/>
+	</path>
+
+	<!-- custom tasks -->
+	<typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/>
+	<typedef name="adduser" classname="org.greenstone.anttasks.AddGreenstoneUserToDatabase" classpathref="project.classpath"/>
+	<taskdef name="sevenzip" classname="org.apache.tools.ant.SevenZip" classpathref="project.classpath"/>
+
+	<condition property="bundled.java.exists">
+		<available file="../@linux-java.extracted@/bin/java"/>
+	</condition>
+
+	<target name="Initialising" if="bundled.java.exists">
+		<mkdir dir="${installDir}"/>
+		<copy todir="${installDir}/packages/jre" failonerror="false">
+			<fileset dir="../@linux-java.extracted@"/>
+		</copy>
+		<chmod dir="${installDir}/packages/jre/bin" includes="*" perm="775"/>		
+	</target>
+
+	<!-- core system -->
+	<target name="Installing Core System">
+
+		<mkdir dir="${installDir}"/>
+
+		<echo>Installing Core Files</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="core.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/core.lzma" output="${basedir}/core.comp"/>
+		<delete file="core.lzma"/>
+		<unzip src="${basedir}/core.comp" dest="${installDir}"/>
+		<delete file="core.comp"/>
+
+		<echo>Setting Binaries to Executable</echo>
+		<chmod dir="${installDir}" includes="*.sh,*.bash" perm="775"/>
+		<chmod dir="${installDir}/bin/linux" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/cgi-bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin/script" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
+		<chmod dir="${installDir}/apache-httpd/linux/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/apache-httpd/linux" includes="*.sh" perm="775"/>
+		<echo/>
+
+		<echo>Filling in concrete values in config files</echo>
+		<copy file="${installDir}/cgi-bin/gsdlsite.cfg.in" tofile="${installDir}/cgi-bin/gsdlsite.cfg"/>
+		<rsr file="${installDir}/cgi-bin/gsdlsite.cfg" pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
+		<echo/>
+
+		<echo>Creating admin and demo users</echo>
+		<adduser txt2db="${installDir}/bin/linux/txt2db"
+			usersDb="${installDir}/etc/users.db"
+			username="admin"
+			password="${admin.password}"
+			groups="administrator,colbuilder"
+			comment="created at install time"/>
+		<adduser
+			txt2db="${installDir}/bin/linux/txt2db"
+			usersDb="${installDir}/etc/users.db"
+			username="demo"
+			password="demo"
+			groups="demo"
+			comment="Dummy 'demo' user with password 'demo' for authen-e collection"/>
+
+		<echo>Set the installation locale in config files</echo>
+		<rsr file="${installDir}/setup.bash" pattern="^gsdllang=.*" replacement="gsdllang=${language}"/>
+		<rsr file="${installDir}/gli/gli.sh" pattern="^glilang=.*" replacement="glilang=${language}"/>
+		<rsr file="${installDir}/gli/gems.sh" pattern="^glilang=.*" replacement="glilang=${language}"/>
+
+		<rsr
+			file="${installDir}/gli/classes/xml/config.xml"
+			pattern="(&lt;Argument name=&quot;general.locale&quot;&gt;).*(&lt;/Argument&gt;)"
+			replacement="$1${language}$2"/>
+
+		<echo file="${installDir}/etc/main.cfg" append="true"
+			>cgiarg          shortname=l argdefault=${language}</echo>
+
+		<rsr file="${installDir}/etc/main.cfg" pattern="^status .*" replacement="status enabled"/>
+
+		<echo>Setting up apache web server</echo>
+		<exec dir="${installDir}" executable="${installDir}/apache-httpd/linux/install-bindist.sh">
+			<arg value="${installDir}/apache-httpd/linux"/>
+		</exec>
+
+		<echo>Creating installation properties file</echo>
+		<echo file="${installDir}/etc/installation.properties">#this file is just a placeholder for now</echo>
+
+		<echo message="Finished"/>
+
+	</target>
+
+	<!-- imagemagick -->
+	<target name="Installing ImageMagick">
+		<echo>Installing ImageMagick</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="imagemagick.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/imagemagick.lzma" output="${basedir}/imagemagick.comp"/>
+		<delete file="imagemagick.lzma"/>
+		<unzip src="${basedir}/imagemagick.comp" dest="${installDir}/bin/linux"/>
+		<delete file="imagemagick.comp"/>
+		
+		<echo>Setting ImageMagick Binaries to Executable</echo>
+		<chmod dir="${installDir}/bin/linux/imagemagick/bin" includes="*" perm="775"/>
+		
+	</target>
+
+	<!-- source release -->
+	<target name="Source Release">
+
+		<echo>Installing Source Release</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="source-release.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/source-release.lzma" output="${basedir}/source-release.comp"/>
+		<delete file="source-release.lzma"/>
+		<unzip src="${basedir}/source-release.comp" dest="${installDir}"/>
+		<delete file="source-release.comp"/>
+
+		<echo>Setting Binaries to Executable</echo>
+		<chmod dir="${installDir}" includes="*.sh,*.bash,**/configure" perm="775"/>
+		<chmod dir="${installDir}/bin/linux" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/cgi-bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin/script" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
+		<echo/>
+
+		<echo>Filling in concrete values in config files</echo>
+		<rsr file="${installDir}/cgi-bin/gsdlsite.cfg">
+			<job pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
+			<job pattern="^(#?httpprefix).*" replacement="$1 /gsdl"/>
+			<job pattern="^(#?httpimg).*" replacement="$1 /gsdl/images"/>
+		</rsr>
+		<echo/>
+
+		<echo>Set the installation locale in config files</echo>
+		<rsr file="${installDir}/setup.bash" pattern="^gsdllang=.*" replacement="gsdllang=${language}"/>
+		<rsr file="${installDir}/gli/gli.sh" pattern="^glilang=.*" replacement="glilang=${language}"/>
+		<rsr file="${installDir}/gli/gems.sh" pattern="^glilang=.*" replacement="glilang=${language}"/>
+
+		<rsr
+			file="${installDir}/gli/classes/xml/config.xml"
+			pattern="(&lt;Argument name=&quot;general.locale&quot;&gt;).*(&lt;/Argument&gt;)"
+			replacement="$1${language}$2"/>
+
+		<echo file="${installDir}/etc/main.cfg" append="true"
+			>cgiarg          shortname=l argdefault=${language}</echo>
+
+		<rsr file="${installDir}/etc/main.cfg" pattern="^status .*" replacement="status enabled"/>
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/etc/usage.txt"></echo>
+
+		<echo>Creating installation properties file</echo>
+		<echo file="${installDir}/etc/installation.properties">#this file is just a placeholder for now</echo>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk2/resources/build-demo.sh
===================================================================
--- /branches/rk-oran/lirk2/resources/build-demo.sh	(revision 18906)
+++ /branches/rk-oran/lirk2/resources/build-demo.sh	(revision 18906)
@@ -0,0 +1,5 @@
+. setup.bash
+import.pl --removeold demo
+buildcol.pl --removeold demo
+rm -rf collect/demo/index
+mv collect/demo/building collect/demo/index
Index: /branches/rk-oran/lirk3/ant-scripts/build.xml
===================================================================
--- /branches/rk-oran/lirk3/ant-scripts/build.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/ant-scripts/build.xml	(revision 18906)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		.......................................................... 
+		February 2008
+		Linux Release Kit for Greenstone3 (lirk3)
+		Oran Fry
+		..........................................................
+-->
+
+<project name="lirk3-build" default="lirk3">
+
+	<!-- CONSTANTS -->
+
+	<!-- for the benefit of the shared scripts, set release-kit home -->
+	<property name="rk.name" value="lirk3"/>
+	<property name="rk.home" value="${lirk3.home}" />
+	<property name="rk.os" value="linux" />
+	<property name="os.suffix" value="linux"/>
+
+	<!-- IMPORT OTHER ANT SCRIPTS -->
+	<import file="shared-ant-scripts/init.xml"/>
+	<import file="shared-ant-scripts/operations-on-gli.xml"/>
+	<import file="../greenstone3/ant-scripts/rk3-targets.xml"/>
+
+	<import file="compile.xml"/>
+	<import file="create-distribution.xml"/>
+	<import file="create-components.xml"/>
+	<import file="create-installer.xml"/>
+	<import file="wrap.xml"/>
+
+	<!-- THE MAIN TARGET -->
+	<target name="lirk3" depends="init">
+		<antcall target="compile"/>
+		<antcall target="create-distribution"/>
+		<antcall target="create-components"/>
+		<antcall target="create-installer"/>
+		<antcall target="wrap"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk3/ant-scripts/compile.xml
===================================================================
--- /branches/rk-oran/lirk3/ant-scripts/compile.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/ant-scripts/compile.xml	(revision 18906)
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk3-compile" default="compile">
+
+	<target name="compile">
+
+		<!-- checkout -->
+		<antcall target="checkout-greenstone3" />
+
+		<!-- preparation -->
+		<antcall target="greenstone3-set-version-numbers">
+			<param name="greenstone3basedir" value="${basedir}/compiled"/>
+		</antcall>
+		<ant dir="compiled" antfile="${lirk3.home}/ant-scripts/operations-on-gs3home.xml" target="prepare-unix"  inheritAll="false"/>
+
+		<antcall target="tweak-configure-scripts" />
+
+		<!-- update -->
+		<ant dir="compiled" antfile="${lirk3.home}/ant-scripts/operations-on-gs3home.xml" target="update-unix"  inheritAll="false"/>
+
+		<!-- configure -->
+		<antcall target="regenerate-configure"/>
+		<ant dir="compiled" antfile="${lirk3.home}/ant-scripts/operations-on-gs3home.xml" target="configure-unix" inheritAll="false"/>
+		<antcall target="tweak-makefiles" />
+
+		<!-- build -->
+		<ant dir="compiled" antfile="${lirk3.home}/ant-scripts/operations-on-gs3home.xml" target="build-unix" inheritAll="false"/>
+		<antcall target="linux-strip-execs" />
+
+		<!-- uninstaller -->
+		<antcall target="compile-uninstaller" /> <!-- from rk3-targets -->
+
+		<!-- documentation -->
+		<antcall target="prepare-documentation" />
+
+	</target>
+
+	<target name="checkout-greenstone3">
+		<svn>
+			<checkout url="${svn.root}/greenstone3/${branch.path}" destPath="compiled"/>
+		</svn>
+	</target>
+
+	<target name="tweak-configure-scripts">
+		<antcall target="mgpp-add-static" />
+		<antcall target="mg-add-static" />
+		<antcall target="gs2build-add-static" />
+	</target>
+
+	<target name="regenerate-configure">
+		<exec dir="compiled/gs2build" executable="autoconf" output="compiled/gs2build/configure">
+			<arg line="configure.in"/>
+		</exec>
+		<chmod file="compiled/gs2build/configure" perm="+x"/>
+	</target>
+
+	<target name="tweak-makefiles">
+		<antcall target="wv-add-static" />
+		<antcall target="xlhtml-add-static" />
+		<antcall target="ppthtml-add-static" />
+		<antcall target="rtftohtml-add-static" />
+		<antcall target="gdbm-add-static" />
+	</target>
+
+	<target name="linux-strip-execs">
+		<exec dir="compiled/gs2build/bin/linux" executable="find">
+			<arg line="! -name . -exec strip {} &#59;"/>
+		</exec>
+	</target>
+
+	<target name="prepare-documentation">
+		<mkdir dir="compiled/gsdl-manuals"/>
+		<svn>
+			<checkout url="${svn.root}/documentation/${branch.path}/manuals" destPath="compiled/gsdl-manuals/manuals"/>
+			<checkout url="${svn.root}/documentation/${branch.path}/shared" destPath="compiled/gsdl-manuals/shared"/>
+		</svn>
+		<javac srcdir="compiled/gsdl-manuals/shared"
+		      destdir="compiled/gsdl-manuals/shared"
+		      debug="on">
+			<include name="*.java"/>
+		</javac>
+		<unzip src="compiled/gsdl-manuals/shared/fop.zip" dest="compiled/gsdl-manuals/shared"/>
+
+		<path id="documentation.compile.classpath">
+			<fileset dir="compiled/gsdl-manuals">
+				<include name="**/*.jar"/>
+			</fileset>
+			<pathelement path="compiled/gsdl-manuals/shared"/>
+			<pathelement path="compiled/gsdl-manuals/manuals"/>
+		</path>
+
+		<java classname="ApplyXSLT" classpathref="documentation.compile.classpath" output="compiled/gsdl-manuals/manuals/xml-source/en/help-en.xml">
+			<arg value="compiled/gsdl-manuals/manuals/processing/gen-gli-help-to-manual-chapter.xsl" />
+			<arg value="compiled/gli/help/en/help.xml" />
+			<arg value="compiled" />
+		</java>
+
+		<chmod perm="a+x" file="compiled/gsdl-manuals/shared/fop/fop.sh"/>
+		<echo>Run generate-pdf.sh</echo>
+		<exec dir="compiled/gsdl-manuals/manuals" executable="/bin/sh">
+			<arg line="generate-pdf.sh u en" />
+		</exec>
+	</target>
+
+	<!--
+
+		third level targets
+
+	-->
+
+	<target name="mgpp-add-static">
+		<rsr file="compiled/gs2build/common-src/indexers/mgpp/configure.in" pattern="^LDFLAGS=$" replacement="LDFLAGS=-static" />
+		<exec dir="compiled/gs2build/common-src/indexers/mgpp" executable="autoconf" output="compiled/gs2build/common-src/indexers/mgpp/configure">
+			<arg line="configure.in"/>
+		</exec>
+	</target>
+
+	<target name="mg-add-static">
+		<rsr file="compiled/gs2build/common-src/indexers/mg/configure.in" pattern="^LDFLAGS=$" replacement="LDFLAGS=-static" />
+		<exec dir="compiled/gs2build/common-src/indexers/mg" executable="autoconf" output="compiled/gs2build/common-src/indexers/mg/configure">
+			<arg line="configure.in"/>
+		</exec>
+	</target>
+
+	<target name="gs2build-add-static">
+		<rsr file="compiled/gs2build/common-src/packages/configure" pattern="^ENVIRONMENT=&quot;&quot;$" replacement="ENVIRONMENT=&quot;LDFLAGS=-static&quot;" />
+		<rsr file="compiled/gs2build/build-src/packages/configure"  pattern="^ENVIRONMENT=&quot;&quot;$" replacement="ENVIRONMENT=&quot;LDFLAGS=-static&quot;" />
+		<rsr file="compiled/gs2build/configure.in" pattern="^LDFLAGS=.*" replacement="LDFLAGS=-static" />
+	</target>
+
+	<target name="wv-add-static">
+		<rsr file="compiled/gs2build/build-src/packages/wv/wv-gs/Makefile" pattern="^LDFLAGS =\s*$" replacement="LDFLAGS = -static" />
+	</target>
+
+	<target name="xlhtml-add-static">
+		<rsr file="compiled/gs2build/build-src/packages/xlhtml/xlhtml-0.4.9.0/xlhtml/Makefile" pattern="^LDFLAGS =\s*$" replacement="LDFLAGS = -static" />
+	</target>
+
+	<target name="ppthtml-add-static">
+		<rsr file="compiled/gs2build/build-src/packages/xlhtml/xlhtml-0.4.9.0/ppthtml/Makefile" pattern="^LDFLAGS =\s*$" replacement="LDFLAGS = -static" />
+	</target>
+
+	<target name="rtftohtml-add-static">
+		<rsr file="compiled/gs2build/build-src/packages/rtftohtml/rtftohtml_src/Makefile" pattern="-o rtftohtml(.{2})EXEEXT(.{1})" replacement="-o rtftohtml$1EXEEXT$2 -static" />
+	</target>
+
+	<target name="gdbm-add-static">
+		<rsr file="compiled/src/packages/javagdbm/jni/Makefile" pattern="^(GDBM_LIBS)\s*=\s*(.*)-lgdbm(.*)$" replacement="$1=$2/usr/lib/libgdbm.a$3" />
+	</target>
+
+
+</project>
Index: /branches/rk-oran/lirk3/ant-scripts/create-components.xml
===================================================================
--- /branches/rk-oran/lirk3/ant-scripts/create-components.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/ant-scripts/create-components.xml	(revision 18906)
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk3-create-components" default="create-components">
+
+	<!-- create components from the distributions folder -->
+
+	<!-- 1st level -->
+	<target name="create-components">
+		<antcall target="prepare-components" />
+		<antcall target="compress-components" />
+	</target>
+
+	<!-- 2nd level -->
+	<target name="prepare-components">
+		<antcall target="prepare-core-component" />
+		<antcall target="prepare-ant-component" />
+		<antcall target="prepare-tomcat-component" />
+		<antcall target="prepare-imagemagick-component" />
+
+		<antcall target="prepare-sourcecode-component" />
+	</target>
+
+	<target name="compress-components">
+		<antcall target="compress-core-component" />
+		<antcall target="compress-ant-component" />
+		<antcall target="compress-tomcat-component" />
+		<antcall target="compress-imagemagick-component" />
+
+		<antcall target="compress-zipped-binary-release" /> <!-- from init -->
+
+	</target>
+
+	<!-- 3rd level -->
+
+	<!-- core -->
+	<target name="prepare-core-component">
+
+		<delete dir="components/tmp/core"/>
+		<mkdir dir="components/tmp/core"/>
+				
+		<copy todir="components/tmp/core" overwrite="true">
+			<fileset dir="distributions/web">
+				<include name="**/*"/>
+
+				<!-- exclude sourcecode -->
+				<exclude name="src"/>
+				<exclude name="src/**/*"/>
+				<exclude name="gs2build/common-src"/>
+				<exclude name="gs2build/common-src/**/*"/>
+				<exclude name="gs2build/build-src"/>
+				<exclude name="gs2build/build-src/**/*"/>
+				<exclude name="gs2build/runtime-src"/>
+				<exclude name="gs2build/runtime-src/**/*"/>
+				<exclude name="packages/ant"/>
+				<exclude name="packages/ant/**/*"/>
+				<exclude name="packages/tomcat"/>
+				<exclude name="packages/tomcat/**/*"/>
+				<exclude name="distributions/web/gs2build/bin/linux/imagemagick"/>
+				<exclude name="distributions/web/gs2build/bin/linux/imagemagick/**/*"/>
+
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/core.comp" basedir="components/tmp/core" compress="false" />
+	</target>
+	
+	<target name="compress-core-component">
+		<sevenzip task="encode" input="components/core.comp" output="components/core.lzma" dictionnary="26"/>
+	</target>
+
+	<!-- sourcecode -->
+	<target name="prepare-sourcecode-component">
+
+		<delete dir="components/tmp/sourcecode"/>
+		<mkdir dir="components/tmp/sourcecode"/>
+
+		<copy todir="components/tmp/sourcecode" overwrite="true">
+				<fileset dir="distributions/web">
+					<include name="src/**/*"/>
+					<include name="gs2build/common-src/**/*"/>
+					<include name="gs2build/build-src/**/*"/>
+					<include name="gs2build/runtime-src/**/*"/>
+				</fileset>
+		</copy>
+
+		<mkdir dir="products"/>
+		<tar destfile="products/Greenstone-${version}-${os.suffix}-sourcecode-component.tar.gz" basedir="components/tmp/sourcecode" compression="gzip" longfile="gnu"/>
+
+	</target>
+		
+	<target name="compress-sourcecode-component">
+		<sevenzip task="encode" input="components/sourcecode.comp" output="components/sourcecode.lzma" dictionnary="26"/>
+	</target>
+
+	<!-- ant -->	
+	<target name="prepare-ant-component">
+
+		<delete dir="components/tmp/ant"/>
+		<mkdir dir="components/tmp/ant"/>
+
+		<copy todir="components/tmp/ant" overwrite="true">
+			<fileset dir="distributions/web/packages">
+				<include name="ant/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/ant.comp" basedir="components/tmp/ant" compress="false" />
+	</target>
+		
+	<target name="compress-ant-component">
+		<sevenzip task="encode" input="components/ant.comp" output="components/ant.lzma" dictionnary="26"/>
+	</target>
+	
+	<!-- tomcat -->
+	<target name="prepare-tomcat-component">
+
+		<delete dir="components/tmp/tomcat"/>
+		<mkdir dir="components/tmp/tomcat"/>
+
+		<copy todir="components/tmp/tomcat" overwrite="true">
+			<fileset dir="distributions/web/packages">
+				<include name="tomcat/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/tomcat.comp" basedir="components/tmp/tomcat" compress="false" />
+	</target>
+		
+	<target name="compress-tomcat-component">
+		<sevenzip task="encode" input="components/tomcat.comp" output="components/tomcat.lzma" dictionnary="26"/>
+	</target>
+
+	<!-- imagemagick -->
+	<target name="prepare-imagemagick-component">
+
+		<delete dir="components/tmp/imagemagick"/>
+		<mkdir dir="components/tmp/imagemagick"/>
+
+		<copy todir="components/tmp/imagemagick" overwrite="true">
+			<fileset dir="distributions/web/gs2build/bin/linux">
+				<include name="imagemagick/**/*"/>
+			</fileset>
+		</copy>
+				
+		<zip destfile="components/imagemagick.comp" basedir="components/tmp/imagemagick" compress="false" includes="**/*"/>
+	</target>
+		
+	<target name="compress-imagemagick-component">
+		<sevenzip task="encode" input="components/imagemagick.comp" output="components/imagemagick.lzma" dictionnary="26"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/lirk3/ant-scripts/create-distribution.xml
===================================================================
--- /branches/rk-oran/lirk3/ant-scripts/create-distribution.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/ant-scripts/create-distribution.xml	(revision 18906)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk3-create-distribution" default="create-distribution">
+
+	<target name="create-distribution">
+
+		<!-- create distribution -->
+		<antcall target="export-greenstone3-gli" />
+		<antcall target="greenstone3-set-version-numbers"><param name="greenstone3basedir" value="${basedir}/distributions/web"/></antcall>
+		<antcall target="gli-set-version-numbers"><param name="glibasedir" value="${basedir}/distributions/web/gli"/></antcall>
+		<antcall target="insert-user-manual"/>
+		<antcall target="insert-uninstaller"><param name="script-format" value="sh"/></antcall> <!-- from rk3-targets -->
+
+
+		<ant antfile="${lirk3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" target="create-distribution-1" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+		</ant>
+		<ant antfile="${lirk3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" target="create-distribution-2" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+		</ant>
+		<ant antfile="${lirk3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" target="create-distribution-3" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+		</ant>
+		<antcall target="copy-over-build-xml" />
+		<antcall target="insert-compiled-binaries"/>
+		<antcall target="export-imagemagick-linux-binaries" />
+	
+		<antcall target="strip-svn-dirs"><param name="dir" value="distributions"/></antcall> <!-- from init -->
+
+	</target>
+
+	<target name="export-greenstone3-gli">
+		<mkdir dir="distributions"/>
+		<delete dir="distributions/web"/>
+		<svn>
+			<export srcurl="${svn.root}/greenstone3/${branch.path}" destPath="distributions/web"/>
+			<export srcurl="${svn.root}/gli/${branch.path}" destPath="distributions/web/gli"/>
+		</svn>
+	</target>
+	
+	<target name="export-imagemagick-linux-binaries">
+		<delete dir="distributions/web/gs2build/bin/linux/imagemagick"/>
+		<svn>
+			<export srcurl="${svn.root}/other-projects/trunk/linux-binaries/imagemagick" destPath="distributions/web/gs2build/bin/linux/imagemagick"/>
+		</svn>
+	</target>
+
+	<target name="copy-over-build-xml">
+		<move file="distributions/web/modified-build.xml" tofile="distributions/web/build.xml"/>
+	</target>
+
+	<target name="insert-user-manual">
+		<copy file="compiled/gsdl-manuals/manuals/build/en/pdf/User_en.pdf" tofile="distributions/web/docs/manual/gs2_user_en.pdf"/>
+	</target>
+
+	<target name="insert-compiled-binaries">
+		<delete dir="distributions/web/lib/jni"/>
+		<exec executable="cp"><arg line="-r compiled/lib/jni distributions/web/lib"/></exec>
+
+		<delete dir="distributions/web/gs2build/bin/linux"/>
+		<exec executable="cp"><arg line="-r compiled/gs2build/bin/linux distributions/web/gs2build/bin"/></exec>
+
+		<delete dir="distributions/web/gs2build/bin/java"/>
+		<exec executable="cp"><arg line="-r compiled/gs2build/bin/java distributions/web/gs2build/bin"/></exec>
+
+		<exec executable="cp"><arg line="compiled/bin/search4j distributions/web/bin"/></exec>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk3/ant-scripts/create-installer.xml
===================================================================
--- /branches/rk-oran/lirk3/ant-scripts/create-installer.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/ant-scripts/create-installer.xml	(revision 18906)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk3-create-installer" default="create-installer">
+
+	<target name="create-installer">
+		<antcall target="copy-installer-files"/>
+		<antcall target="make-installer-files-concrete"><param name="java.os" value="linux"/></antcall> <!-- from init -->
+		<antcall target="compile-binary-installer"/> <!-- from init -->
+		<antcall target="compile-minimal-installer"/> <!-- from init -->
+	</target>
+
+	<target name="copy-installer-files" depends="copy-main-installer-files"> <!-- from init -->
+
+		<copy todir="${basedir}/installer/classes" overwrite="true">
+			<fileset file="${basedir}/distributions/web/LICENSE.txt"/>
+		</copy>
+
+		<unjar src="${lirk3.home}/ant-scripts/tasks/greenstone/anttasks.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+		<unjar src="${lirk3.home}/ant-scripts/tasks/7z-ant/7z.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk3/ant-scripts/operations-on-gs3home.xml
===================================================================
--- /branches/rk-oran/lirk3/ant-scripts/operations-on-gs3home.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/ant-scripts/operations-on-gs3home.xml	(revision 18906)
@@ -0,0 +1,289 @@
+<?xml version="1.0"?>
+<project name="opeations-on-gs3home">
+  
+	<!-- include standard build file -->
+	<import file="${basedir}/build.xml"/>
+
+	<property name="greenstone3-change-date" value="Tue Feb 20 12:13:42 NZDT 2007"/>
+	<property name="gs2build-change-date" value="Wed Dec 13 10:35:57 NZDT 2006"/>
+
+	<!-- ====================== DISTRIBUTION Targets ========================= -->
+
+	<!-- Create the binaries for Unix/Mac distributions -->
+	<target name="prepare-unix" depends="init">
+		<antcall target="checkout-gs2build"/>
+		<antcall target="checkout-gli"/>
+	</target>
+
+	<target name="update-unix" depends="init">
+		<antcall target="svnupdate-distribution"/>
+		<antcall target="delete-windows-files"/>
+	</target>
+
+	<target name="configure-unix" depends="init">
+		<antcall target="configure-c++"/>
+	</target>    
+	<target name="build-unix" depends="init">
+		<antcall target="compile-packages"/>
+		<antcall target="compile-gs2build"/>
+	</target>
+    
+
+	<target name="tester-abc">
+		<echo>tester ABC</echo>
+	</target>
+
+	<!-- creates the base distribution. Needs binaries copied in to it from other greenstones (prepare-os targets) -->
+	<target name="create-distribution-1" depends="init" description="do all the initial downloading and setting up">
+
+		<echo>checkout gs2build</echo>
+		<antcall target="checkout-gs2build"/>
+		<echo>done checking out gs2build</echo>
+
+		<delete><fileset dir="." includes="*.bat"/></delete>
+		<delete file="${gli.home}/gems.sh"/>
+		<delete dir="${gs2build.home}/gs2build-extra"/>
+
+		<antcall target="prepare-tomcat"/>
+		<antcall target="prepare-axis"/>
+
+		<!-- delete old axis dir -->
+		<delete dir="${packages.home}/axis"/>
+		<mkdir dir="${web.home}/applet"/>
+		<mkdir dir="${web.home}/logs"/>
+		<antcall target="prepare-ant"/>
+		<antcall target="prepare-collections"/>
+
+		<!-- get good XML-Parser - does this work? -->
+		<antcall target="get-xml-parser"/>
+
+		<delete>
+			<fileset dir="${packages.home}" includes="*.zip"/>
+		</delete>
+
+
+		<!-- documented collections -->
+		<antcall target="get-documented-collections"/>
+
+		<delete file="${basedir}/README-CVS.txt"/>
+		<delete file="${basedir}/TODO.txt"/>
+
+	</target>
+
+	<target name="create-distribution-2" description="do all the compilation">
+
+		<!-- compile the java stuff -->
+		<antcall target="compile-web"/>
+		<antcall target="configure-tomcat"/>
+		<antcall target="configure-packages-and-indexers"/>
+		<antcall target="compile-packages-and-indexers-javaonly"/>
+		<antcall target="distclean-packages"/>
+		<antcall target="compile-core"/>
+		<antcall target="compile-gli"/>
+
+	</target>
+
+	<target name="create-distribution-3" depends="init" description="Do the rearranging of source code and others">
+
+		<!-- delete some source files -->
+		<delete dir="${gs2build.home}/source/src"/>
+		<delete dir="${gs2build.home}/source/lib"/>
+		<delete dir="${gs2build.home}/source/packages"/>
+		<delete dir="${gs2build.home}/source/indexers"/>
+
+		<!-- generate modified build.xml file -->
+		<antcall target="run-xslt-binary"/>
+
+		<!-- clean up -->
+		<delete><fileset dir="${basedir}" includes="*.bat"/></delete>
+		<delete><fileset dir="${basedir}/gli" includes="*.bat"/></delete>
+		<delete><fileset dir="${basedir}/gs2build" includes="*.bat"/></delete>
+		<delete><fileset dir="${basedir}/bin/script" includes="*.bat"/></delete>
+
+		<delete dir="${basedir}/build"/>
+		<delete dir="${basedir}/lib/jni"/>
+		<delete dir="${basedir}/winutil"/>
+		<delete dir="${basedir}/dist-resources"/>
+		<delete dir="${basedir}/gs2build/source"/>
+
+		<delete file="${basedir}/gs2build/WIN32cfg.h"/>
+		<delete file="${basedir}/gs2build/win32.mak"/>
+
+	</target>
+  
+	<!-- Supplementary targets -->
+
+	<target name="svnupdate-distribution" depends="init">
+		<antcall target="svnupdate-packages"/>
+		<antcall target="svnupdate-core"/>
+		<antcall target="svnupdate-gs2build"/>
+		<antcall target="svnupdate-web"/>
+	</target>
+
+	<target name="run-xslt-binary" depends="init">
+		<xslt in="${basedir}/build.xml" out="${basedir}/modified-build.xml" style="${lirk3.home}/greenstone3/xsl/convert-build-xml.xsl"/>
+	</target>
+
+	<target name="run-xslt-source" depends="init">
+		<xslt in="${basedir}/build.xml" out="${basedir}/modified-build.xml" style="${lirk3.home}/greenstone3/xsl/convert-build-xml-source.xsl"/>
+	</target>
+  
+  <target name="configure-packages-and-indexers" depends="init">
+    <exec executable="${indexers.home}/configure"
+      dir="${indexers.home}">
+      <arg value="--prefix=${basedir}"/>
+      <arg value="--libdir=${lib.jni}"/>
+    </exec>          
+    <exec executable="${javagdbm.home}/configure"
+      dir="${javagdbm.home}">
+      <arg value="--prefix=${basedir}"/>
+      <arg value="--libdir=${lib.jni}"/>
+    </exec>    
+
+  </target>
+
+  <target name="compile-packages-and-indexers-javaonly" depends="init">
+    <echo>Compiling Indexers</echo>
+    <exec executable="make" os="${os.unix}"
+       dir="${indexers.home}">
+      <arg value="javaonly"/>
+    </exec>
+    <exec executable="make" os="${os.unix}"
+      dir="${indexers.home}">
+      <arg value="install-javaonly"/>
+    </exec>
+    <!-- install the jar files -->
+    <copy file="${mg.home}/mg.jar" todir="${lib.jni}"/>
+    <copy file="${mgpp.home}/mgpp.jar" todir="${lib.jni}"/>
+    <copy file="${lucene.home}/LuceneWrapper.jar" todir="${web.lib}"/>
+    
+    <!-- javagdbm -->
+    <exec executable="make" os="${os.unix}"
+      dir="${javagdbm.home}">
+      <arg value="javaonly"/>
+    </exec>
+    <exec executable="make" os="${os.unix}"
+      dir="${javagdbm.home}">
+      <arg value="installjava"/>
+    </exec>
+    <!-- install the jar file -->
+    <copy file="${javagdbm.home}/javagdbm.jar" todir="${lib.jni}"/>
+
+  </target>
+
+  <target name="delete-windows-files" depends="init" unless="current.os.iswindows">
+    <delete dir="${basedir}/winutil"/>
+    <delete>
+      <fileset dir="${lib.jni}" includes="*.dll"/>
+    </delete>
+  </target>
+
+  <target name="get-perl-for-windows" depends="init" if="current.os.iswindows">
+    <mkdir dir="${gs2build.home}/bin/windows"/>
+    <get src="http://www.greenstone.org/gs3files/perl-for-windows.zip"
+      dest="${gs2build.home}/bin/windows/perl-for-windows.zip"
+      usetimestamp="true"/>
+    <unzip src="${gs2build.home}/bin/windows/perl-for-windows.zip" 
+      dest="${gs2build.home}/bin/windows"/>
+    <delete file="${gs2build.home}/bin/windows/perl-for-windows.zip"/>
+  </target>
+
+  <target name="distclean-packages" depends="init">
+    <!-- indexers : just call the make target -->
+    <exec executable="make" os="${os.unix}"
+      dir="${indexers.home}">
+      <arg value="distclean"/>
+    </exec>
+    <!-- javagdbm -->
+    <exec executable="make" os="${os.unix}"
+      dir="${javagdbm.home}">
+      <arg value="distclean"/>
+    </exec>
+  </target>
+
+  <!-- copy the doc eg colls from /home/nzdl - note we don't include the formatting ones -->
+  <target name="get-documented-collections" depends="init">
+    <property name="collect.home" value="${basedir}/web/sites/localsite/collect"/>
+
+<!--    <copy todir="${collect.home}/authen-e">
+      <fileset dir="${documented.collections.home}/authen-e"/>
+    </copy>
+    <copy todir="${collect.home}/bibliog1">
+      <fileset dir="${documented.collections.home}/bibliog1"/>
+    </copy>
+    <copy todir="${collect.home}/bibliogr">
+      <fileset dir="${documented.collections.home}/bibliogr"/>
+    </copy>
+    <copy todir="${collect.home}/dls-e">
+      <fileset dir="${documented.collections.home}/dls-e"/>
+    </copy>
+    <copy todir="${collect.home}/dspace-e">
+      <fileset dir="${documented.collections.home}/dspace-e"/>
+    </copy>
+    <copy todir="${collect.home}/gsarch-e">
+      <fileset dir="${documented.collections.home}/gsarch-e"/>
+    </copy>
+    <copy todir="${collect.home}/image-e">
+      <fileset dir="${documented.collections.home}/image-e"/>
+    </copy>
+    <copy todir="${collect.home}/isis-e">
+      <fileset dir="${documented.collections.home}/isis-e"/>
+    </copy>
+    <copy todir="${collect.home}/oai-e">
+      <fileset dir="${documented.collections.home}/oai-e"/>
+    </copy>
+    <copy todir="${collect.home}/pagedimg-e">
+      <fileset dir="${documented.collections.home}/pagedimg-e"/>
+    </copy>
+    <copy todir="${collect.home}/wrdpdf-e">
+      <fileset dir="${documented.collections.home}/wrdpdf-e"/>
+    </copy>
+
+    <copy todir="${collect.home}/garish">
+      <fileset dir="${documented.collections.home}/garish"/>
+    </copy>
+    <copy todir="${collect.home}/marcexam">
+      <fileset dir="${documented.collections.home}/marcexam"/>
+    </copy>
+    <copy todir="${collect.home}/style-e">
+      <fileset dir="${documented.collections.home}/style-e"/>
+    </copy>
+    <copy todir="${collect.home}/wiki">
+      <fileset dir="${documented.collections.home}/wiki"/>
+    </copy> -->
+  </target>
+
+  <target name="get-xml-parser" depends="init">
+    <get src="http://www.greenstone.org/gs3files/XML-Parser.tar.gz" dest="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" usetimestamp="true"/>
+    <untar src="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" dest="${gs2build.home}/perllib/cpan/" compression="gzip"/>
+    <delete file="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz"/>
+  </target>
+
+  <!-- new targets to go in distribution build.xml files -->
+
+  <!-- new usage target for binary release -->
+  <target name="usage-for-binary-dist" description="Print a help message">
+    <echo message="  Execute 'ant -projecthelp' for a list of targets."/>
+    <echo message="  Execute 'ant -help' for Ant help."/>
+  </target>
+    
+
+  <!-- new install target for source distribution -->
+  <target name="install-for-source-dist" depends="init" description="install the source distribution. Includes configuring and compiling">
+    <antcall target="unzip-windows-packages"/>
+    <!-- do the java version dependent stuff -->
+    <antcall target="configure-java-version"/>
+    <antcall target="install-macos-extra"/>
+    <!-- set gsdlhome in setup.bat -->
+    <antcall target="gs2build-edit-setup-bat"/>
+    <antcall target="install-indexer-files"/>
+    <antcall target="configure"/>
+    <antcall target="configure-c++"/>
+    <antcall target="compile"/>
+    <!-- make sure we have execute permission for the .sh files -->
+    <chmod dir="${basedir}" perm="ugo+rx" 
+      includes="*.sh"/>
+
+  </target>
+
+</project>
Index: /branches/rk-oran/lirk3/ant-scripts/wrap.xml
===================================================================
--- /branches/rk-oran/lirk3/ant-scripts/wrap.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/ant-scripts/wrap.xml	(revision 18906)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="lirk3-wrap" default="wrap">
+
+	<target name="wrap">
+		<antcall target="setup-for-wrapping"/>
+		<antcall target="compile-wrapper"/>
+	</target>
+
+	<target name="setup-for-wrapping">
+
+		<!-- create and setup the build directory -->
+		<mkdir dir="${basedir}/wrapped-installer/build"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${lirk3.home}/linux/wrapper.cpp" overwrite="true" />
+		<copy todir="${basedir}/wrapped-installer/build" file="${lirk3.home}/packages/search4j/libsearch4j.cpp" overwrite="true" />
+		<copy todir="${basedir}/wrapped-installer/build" file="${lirk3.home}/packages/search4j/libsearch4j.h" overwrite="true" />
+
+		<!-- copy bundled files -->
+		<copy todir="${basedir}/wrapped-installer/build" file="${lirk3.home}/linux/${linux-java.installer}"/>
+		<copy tofile="${basedir}/wrapped-installer/build/greenstone3.jar" file="${basedir}/installer/Greenstone-${version}-${os.suffix}.jar"/>
+
+		<!-- substitute the real java installer filename and min version into various files -->
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.installer@" replacement="${linux-java.installer}"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@installer.name@" replacement="greenstone3"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.extracted@" replacement="${linux-java.extracted}"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.min.version@" replacement="${java.min.version}"/>
+
+	</target>
+
+	<target name="compile-wrapper">
+		<echo level="info">create an object file (extension .o) for each file to bundle</echo>
+		<exec executable="/usr/bin/objcopy" dir="${basedir}/wrapped-installer/build">
+			<arg line="-I binary -O elf32-i386 -B i386 --redefine-sym _binary_greenstone3_jar_start=greenstone3jar --readonly-text greenstone3.jar greenstone3.jar.o"/>
+		</exec>
+		<exec executable="/usr/bin/objcopy" dir="${basedir}/wrapped-installer/build">
+			<arg line="-I binary -O elf32-i386 -B i386 --redefine-sym _binary_${linux-java.installer}_start=java --readonly-text ${linux-java.installer} java.o"/>
+		</exec>
+
+		<!-- get size of greenstone.jar -->
+		<exec executable="ls" dir="${basedir}/wrapped-installer/build" outputproperty="greenstone3.jar.ls"><arg line="-l greenstone3.jar"/></exec>
+		<exec executable="sed" inputstring="${greenstone3.jar.ls}" outputproperty="greenstone3.jar.size"><arg line="-e 's/^[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *\([0-9]*\).*$/\1/g'"/></exec>
+
+		<!-- get size of java -->
+		<exec executable="ls" dir="${basedir}/wrapped-installer/build" outputproperty="java.ls"><arg line="-l ${linux-java.installer}"/></exec>
+		<exec executable="sed" inputstring="${java.ls}" outputproperty="java.size"><arg line="-e 's/^[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *\([0-9]*\).*$/\1/g'"/></exec>
+
+		<echo level="info">compile libsearch4j</echo>
+		<exec executable="g++" dir="${basedir}/wrapped-installer/build">
+			<arg line="-Wall -static -static-libgcc -c -o libsearch4j.o libsearch4j.cpp"/>
+		</exec>
+
+		<echo level="info">creating the header file for bundled java version</echo>
+		<delete file="wrapper.h"/>
+		<exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h"><arg line="extern const char greenstone3jar[${greenstone3.jar.size}];"/></exec>
+		<exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h" append="true"><arg line="extern const char java[${java.size}];"/></exec>
+		<exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h" append="true"><arg line="#define java_is_bundled yes"/></exec>
+
+		<echo level="info">recompile the wrapper program</echo>
+		<exec executable="g++" dir="${basedir}/wrapped-installer/build">
+			<arg line="-Wall -static -static-libgcc -c -o wrapper.o wrapper.cpp"/>
+		</exec>
+
+		<echo level="info">relink, bundling the files to be bundled</echo>
+		<exec executable="g++" dir="${basedir}/wrapped-installer/build">
+			<arg line="-static -static-libgcc -o  ../../products/Greenstone-${version}-${os.suffix}.bin wrapper.o libsearch4j.o greenstone3.jar.o java.o"/>
+		</exec>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/lirk3/bin/lirk3
===================================================================
--- /branches/rk-oran/lirk3/bin/lirk3	(revision 18906)
+++ /branches/rk-oran/lirk3/bin/lirk3	(revision 18906)
@@ -0,0 +1,5 @@
+#!/bin/bash
+export rk_name="lirk3"
+export rk_fullname="Linux Release Kit for Greenstone3"
+export RK_HOME=$LIRK3_HOME
+$LIRK3_HOME/linux/rk $*
Index: /branches/rk-oran/lirk3/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/lirk3/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Greenstone@version@ Installer"
+			windowIcon="/resources/icon.png"
+			defaultImageResource="/resources/header.png"
+			minJavaVersion="1.4">
+
+	<!-- select language page -->
+	<page type="input" name="language-selector" displayText="">
+		<comment name="language-selector-explanation"/>
+		<select property="language" defaultValue="en" displayText="" useAsLocale="true">
+			<option value="en" text="English"/>
+			<option value="fr" text="FranÃ§ais (French)"/>
+			<option value="es" text="EspaÃ±ol (Spanish)"/>
+			<option value="de" text="Deutsch (German)"/>
+			<option value="ru" text="ÑÑÑÑÐºÐžÐ¹ ÑÐ·ÑÐº (Russian)"/>
+			<option value="zh" text="äž­æ (Chinese)"/>
+			<option value="ar" text="Arabic"/>
+		</select>
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="intro" displayText="">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end binary release -->
+
+	<!-- start source release -->
+	<page type="input" name="intro" displayText="" target="Source Release">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end source release -->
+
+	<!--  type="license" shows a license page to click through -->
+	<page type="license" name="license" resource="/LICENSE.txt"  displayText="" />
+
+	<!--  install destination page -->
+	<page type="input" name="destination" displayText="">
+
+		<directory property="installDir"
+			defaultValue="/usr/local/Greenstone3"
+			create="true"
+			displayText=""
+			flagFile="_uninst"
+			flagFileExistsProperty="ISInstallDetected"
+			/>
+
+	</page>
+
+
+	<page type="input" name="dontBudge" displayText="" ifProperty="(${ISInstallDetected}==true)" showNextButton="false">
+		<comment name="is-install-detected"/>
+	</page>
+
+	<page type="input" name="selector" displayText="">
+		<comment name="choose-components"/>
+
+		<!-- start binary release -->
+		<target
+			target="Initialising"
+			diskRequirement="x"
+			defaultValue="true"
+			displayText="x"
+			force="true"
+			hidden="true"/>
+
+		<target
+			target="Installing Core System"
+			diskRequirement="@component.size.core@"
+			displayText=""
+			defaultValue="true"
+			force="true"/>
+
+		<!-- start bundled components -->
+		<target
+			target="Installing ImageMagick"
+			diskRequirement="@component.size.imagemagick@"
+			defaultValue="true" 
+			displayText=""/>
+
+		<target
+			target="Installing Tomcat"
+			diskRequirement="@component.size.tomcat@"
+			defaultValue="true"
+			displayText=""/>
+
+		<target
+			target="Installing Ant"
+			diskRequirement="@component.size.ant@"
+			defaultValue="true"
+			displayText=""/>
+		<!-- end bundled components -->
+
+	</page>
+	<!-- end binary release -->
+
+	<!-- start bundled components -->
+	<page type="input" name="tomcat-config" ifProperty="(${Installing Tomcat}==true)" displayText="">
+
+		<text property="tomcat.server" defaultValue="localhost" displayText=""/>
+		<text property="tomcat.port" defaultValue="8080" displayText=""/>
+		<text property="tomcat.shutdown.port" defaultValue="8005" displayText=""/>
+
+	</page>
+	<!-- end bundled components -->
+
+	<page type="progress" name="progress" showTargets="true" displayText=""/>
+
+</installer>
Index: /branches/rk-oran/lirk3/installer/build.xml
===================================================================
--- /branches/rk-oran/lirk3/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/lirk3/installer/build.xml	(revision 18906)
@@ -0,0 +1,165 @@
+<?xml version="1.0"?>
+<!--
+This is the build.xml run by AntInstaller for the installer
+-->
+
+<project name="Installation">
+
+	<!-- this is required to pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+
+	<path id="project.classpath">
+		<pathelement path="${antinstaller.jar}"/>
+	</path>
+
+	<!-- custom tasks -->
+	<typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/>
+	<taskdef name="sevenzip" classname="org.apache.tools.ant.SevenZip" classpathref="project.classpath"/>
+
+	<condition property="bundled.java.exists">
+		<available file="../@linux-java.extracted@/bin/java"/>
+	</condition>
+
+	<target name="Initialising" if="bundled.java.exists">
+		<mkdir dir="${installDir}"/>
+		<copy todir="${installDir}/packages/jre" failonerror="false">
+			<fileset dir="../@linux-java.extracted@"/>
+		</copy>
+		<chmod dir="${installDir}/packages/jre/bin" includes="*" perm="775"/>		
+	</target>
+
+	<target name="Installing Core System">
+
+		<!-- create the installation directory -->
+		<mkdir dir="${installDir}"/>
+
+		<!-- install files -->
+		<echo>Installing Core Files</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="core.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/core.lzma" output="${basedir}/core.comp"/>
+		<delete file="core.lzma"/>
+		<unzip src="${basedir}/core.comp" dest="${installDir}"/>
+		<delete file="core.comp"/>
+
+		<echo>Setting Binaries to Executable</echo>
+		<chmod dir="${installDir}" includes="*.sh" perm="775"/>
+		<chmod dir="${installDir}/bin/script" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/gs2build/bin/linux" includes="*" perm="775"/>
+		<chmod dir="${installDir}/gs2build/bin/script" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
+		<echo/>
+
+		<echo>Changing tomcat ports in build.properties</echo>
+		<rsr file="${installDir}/build.properties" pattern="(tomcat.port[=:]).*" replacement="$1${tomcat.port}" />
+		<rsr file="${installDir}/build.properties" pattern="(tomcat.shutdown.port[=:]).*" replacement="$1${tomcat.shutdown.port}" />
+
+		<echo>Setting up global properties</echo>
+		<copy file="${installDir}/resources/java/global.properties.in" tofile="${installDir}/web/WEB-INF/classes/global.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@gsdl3home@(.*)" replacement="$1${installDir}/web$2" />
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@tomcat.server@(.*)" replacement="$1localhost$2" />
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@tomcat.port@(.*)" replacement="$1${tomcat.port}$2" />
+
+		<echo>Setting up log4j properties</echo>
+		<copy file="${installDir}/resources/java/log4j.properties.in" tofile="${installDir}/web/WEB-INF/classes/log4j.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/log4j.properties" pattern="(.*)@gsdl3home@(.*)" replacement="$1${installDir}/web$2" />
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/gs2build/etc/usage.txt"></echo>
+
+		<echo>Creating installation properties file</echo>
+		<echo file="${installDir}/installation.properties">#this file is just a placeholder for now</echo>
+
+		<echo>Finished</echo>
+
+	</target>
+
+	<!-- imagemagick -->
+	<target name="Installing ImageMagick">
+		<echo>Installing ImageMagick</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="imagemagick.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/imagemagick.lzma" output="${basedir}/imagemagick.comp"/>
+		<delete file="imagemagick.lzma"/>
+		<unzip src="${basedir}/imagemagick.comp" dest="${installDir}/gs2build/bin/linux"/>
+		<delete file="imagemagick.comp"/>
+		<echo>Setting Binaries to Executable</echo>
+		<chmod dir="${installDir}/gs2build/bin/linux/imagemagick/bin" includes="*" perm="775"/>
+	</target>
+
+
+	<target name="Installing Tomcat">
+		<echo>Installing Tomcat (packages/tomcat)</echo>
+		<mkdir dir="packages"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="tomcat.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/tomcat.lzma" output="${basedir}/tomcat.comp"/>
+		<delete file="tomcat.lzma"/>
+		<unzip src="${basedir}/tomcat.comp" dest="${installDir}/packages"/>
+		<delete file="tomcat.comp"/>
+
+		<echo>Changing tomcat ports tomcat's server.xml</echo>
+		<copy file="${installDir}/resources/tomcat/server.xml" tofile="${installDir}/packages/tomcat/conf/server.xml" overwrite="true"/>
+		<rsr file="${installDir}/packages/tomcat/conf/server.xml" pattern="(.*)@port@(.*)" replacement="$1${tomcat.port}$2" />
+		<rsr file="${installDir}/packages/tomcat/conf/server.xml" pattern="(.*)@shutdown-port@(.*)" replacement="$1${tomcat.shutdown.port}$2" />
+		
+		<echo>Copying greenstone3.xml to tomcat directory</echo>
+		<copy file="${installDir}/resources/tomcat/greenstone3.xml" tofile="${installDir}/packages/tomcat/conf/Catalina/localhost/greenstone3.xml" overwrite="true"/>
+		<rsr file="${installDir}/packages/tomcat/conf/Catalina/localhost/greenstone3.xml" pattern="(.*)@gsdl3webhome@(.*)" replacement="$1${installDir}/web$2" />
+
+		<echo>Setting tomcat binaries to executable</echo>
+		<chmod dir="${installDir}/packages/tomcat/bin" includes="*.sh" perm="775"/>
+		<echo/>
+	</target>
+
+	<target name="Installing Ant">
+		<echo>Installing Ant (packages/ant)</echo>
+		<mkdir dir="packages"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="ant.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/ant.lzma" output="${basedir}/ant.comp"/>
+		<delete file="ant.lzma"/>
+		<unzip src="${basedir}/ant.comp" dest="${installDir}/packages"/>
+		<delete file="ant.comp"/>
+
+		<echo>Setting ant binaries to executable</echo>
+		<chmod dir="${installDir}/packages/ant/bin" includes="*" perm="775"/>
+		<echo/>
+	</target>
+
+	<!-- source release -->
+	<target name="Source Release">
+
+		<echo>Installing Source Release</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="source-release.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/source-release.lzma" output="${basedir}/source-release.comp"/>
+		<delete file="source-release.lzma"/>
+		<unzip src="${basedir}/source-release.comp" dest="${installDir}"/>
+		<delete file="source-release.comp"/>
+
+		<echo>Setting Binaries to Executable</echo>
+		<chmod dir="${installDir}" includes="*.sh,**/configure" perm="775"/>
+		<chmod dir="${installDir}/bin/script" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/gs2build/bin/linux" includes="*" perm="775"/>
+		<chmod dir="${installDir}/gs2build/bin/script" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
+		<echo/>
+
+		<echo>Setting up global properties</echo>
+		<copy file="${installDir}/resources/java/global.properties.in" tofile="${installDir}/web/WEB-INF/classes/global.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@gsdl3home@(.*)" replacement="$1${installDir}/web$2" />
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@tomcat.server@(.*)" replacement="$1localhost$2" />
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@tomcat.port@(.*)" replacement="$1${tomcat.port}$2" />
+
+		<echo>Setting up log4j properties</echo>
+		<copy file="${installDir}/resources/java/log4j.properties.in" tofile="${installDir}/web/WEB-INF/classes/log4j.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/log4j.properties" pattern="(.*)@gsdl3home@(.*)" replacement="$1${installDir}/web$2" />
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/gs2build/etc/usage.txt"></echo>
+
+		<echo>Creating installation properties file</echo>
+		<echo file="${installDir}/installation.properties">#this file is just a placeholder for now</echo>
+
+	</target>
+
+
+</project>
Index: /branches/rk-oran/mark2/ant-scripts/build.xml
===================================================================
--- /branches/rk-oran/mark2/ant-scripts/build.xml	(revision 18906)
+++ /branches/rk-oran/mark2/ant-scripts/build.xml	(revision 18906)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		..........................................................
+		June 2008
+		Mac Release Kit for Greenstone2 (mark2)
+		Oran Fry
+		..........................................................
+-->
+
+<project name="mark2-build" default="mark2">
+
+	<!-- CONSTANTS -->
+
+	<!-- the extra space for the dmg image (KB) -->
+	<property name="dmg.overhead" value="2048"/>
+
+	<!-- for the benefit of the shared scripts, set release-kit home -->
+	<property name="rk.name" value="mark2"/>
+	<property name="rk.home" value="${mark2.home}" />
+	<property name="rk.os" value="linux" />
+	<property name="shell.os" value="darwin" />
+	<!-- os.suffix set dynamically below -->
+
+	<!-- IMPORT OTHER ANT SCRIPTS -->
+	<import file="shared-ant-scripts/init.xml"/>
+	<import file="shared-ant-scripts/operations-on-gli.xml"/>
+	<import file="../greenstone2/ant-scripts/rk2-targets.xml"/>
+	<import file="compile.xml"/>
+	<import file="create-distribution.xml"/>
+	<import file="create-components.xml"/>
+	<import file="create-installer.xml"/>
+	<import file="wrap.xml"/>
+
+	<!-- TARGET TO PERFORM ADDITIONAL PRECONDITION CHECKS -->
+	<target name="mark2-init">
+		<if>
+			<bool>
+				<or><equals arg1="${processor}" arg2="ppc" /><equals arg1="${processor}" arg2="intel"/></or>
+			</bool>
+
+			<else>
+				<echo>Processor type not set or set wrongly. Please set the property 'processor' to either 'intel' or 'ppc' in build.properties</echo>
+				<fail>Processor not set</fail>
+			</else>
+		</if>
+		<echo>Processor: ${processor}</echo>
+	</target>
+
+	<property name="os.suffix" value="MacOS-${processor}"/>
+
+	<!-- THE MAIN TARGET -->
+	<target name="mark2" depends="init,mark2-init">
+		<antcall target="compile"/>
+		<antcall target="create-distribution"/>
+		<antcall target="create-components"/>
+		<antcall target="create-installer"/>
+		<antcall target="wrap"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/mark2/ant-scripts/compile.xml
===================================================================
--- /branches/rk-oran/mark2/ant-scripts/compile.xml	(revision 18906)
+++ /branches/rk-oran/mark2/ant-scripts/compile.xml	(revision 18906)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark2-compile" default="compile">
+
+	<target name="compile">
+
+		<!-- checkout -->
+		<antcall target="checkout-gsdl-gli" />
+		<antcall target="gsdl-set-version-numbers"><param name="gsdl.basedir" value="${basedir}/compiled"/></antcall>
+		
+		<!-- configure -->
+		<antcall target="run-configure"/>
+		<antcall target="tweak-makefiles"/>
+
+		<!-- make -->
+		<antcall target="run-make"/>
+		<antcall target="run-make-install"/>
+		<antcall target="run-make-apache-for-dist"/>
+		<antcall target="strip-execs"/>
+
+		<!-- uninstaller -->
+		<antcall target="compile-uninstaller" /> <!-- from rk2-targets -->
+
+		<!-- build collections -->
+		<antcall target="build-demo-collection" />
+
+	</target>
+
+	<target name="checkout-gsdl-gli">
+		<svn javahl="false">
+			<checkout url="${svn.root}/gsdl/${branch.path}" destPath="${basedir}/compiled"/>
+			<checkout url="${svn.root}/gli/${branch.path}" destPath="${basedir}/compiled/gli"/>
+		</svn>
+	</target>
+
+	<target name="run-configure">
+		<exec dir="${basedir}/compiled" executable="${basedir}/compiled/configure">
+			<arg value="--with-gdbm=${mark2.home}/mac/${processor}/gdbm"/>
+			<arg value="--enable-apache-httpd"/>
+		</exec>
+	</target>
+
+	<target name="tweak-makefiles">
+		<rsr file="${basedir}/compiled/runtime-src/src/recpt/Makefile" pattern="^(LIBS =.*)-L${mark2.home}/mac/${processor}/gdbm/lib -lgdbm(.*)$" replacement="$1${mark2.home}/mac/${processor}/gdbm/lib/libgdbm.a$2" />
+		<rsr file="${basedir}/compiled/runtime-src/src/oaiservr/Makefile" pattern="^(LIBS =.*)-L${mark2.home}/mac/${processor}/gdbm/lib -lgdbm(.*)$" replacement="$1${mark2.home}/mac/${processor}/gdbm/lib/libgdbm.a$2" />
+		<rsr file="${basedir}/compiled/common-src/src/gdbmedit/db2txt/Makefile" pattern="^(LIBS =.*)-L${mark2.home}/mac/${processor}/gdbm/lib -lgdbm(.*)$" replacement="$1${mark2.home}/mac/${processor}/gdbm/lib/libgdbm.a$2" />
+		<rsr file="${basedir}/compiled/common-src/src/gdbmedit/txt2db/Makefile" pattern="^(LIBS =.*)-L${mark2.home}/mac/${processor}/gdbm/lib -lgdbm(.*)$" replacement="$1${mark2.home}/mac/${processor}/gdbm/lib/libgdbm.a$2" />
+		<rsr file="${basedir}/compiled/runtime-src/src/recpt/Makefile" pattern="^(LIBS =.*)-L(.)\(PACKAGES_DIR\)/expat/lib -lexpat(.*)$" replacement="$1$2(PACKAGES_DIR)/expat/lib/libexpat.a$3" />
+		<rsr file="${basedir}/compiled/runtime-src/src/oaiservr/Makefile" pattern="^(LIBS =.*)-L(.)\(PACKAGES_DIR\)/expat/lib -lexpat(.*)$" replacement="$1$2(PACKAGES_DIR)/expat/lib/libexpat.a$3" />
+	</target>
+
+	<target name="run-make">
+		<exec dir="${basedir}/compiled" executable="make"/>
+	</target>
+
+	<target name="run-make-install">
+		<exec dir="${basedir}/compiled" executable="make"><arg value="install"/></exec>
+	</target>
+
+	<target name="run-make-apache-for-dist">
+		<exec dir="${basedir}/compiled" executable="make"><arg value="apache-for-dist"/></exec>
+	</target>
+
+	<target name="strip-execs">
+		<exec dir="${basedir}/compiled/bin/darwin" executable="find">
+			<arg line=". ! -name . -type f -maxdepth 1 -exec strip {} &#59;"/>
+		</exec>
+	</target>
+
+	<target name="build-demo-collection">
+		<exec dir="${basedir}/compiled" executable="${mark2.home}/resources/build-demo.sh"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/mark2/ant-scripts/create-components.xml
===================================================================
--- /branches/rk-oran/mark2/ant-scripts/create-components.xml	(revision 18906)
+++ /branches/rk-oran/mark2/ant-scripts/create-components.xml	(revision 18906)
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark2-create-components" default="create-components">
+
+	<!-- create components from the distribution folder -->
+
+	<!-- 1st level -->
+	<target name="create-components">
+		<antcall target="prepare-components" />
+		<antcall target="compress-components" />
+	</target>
+
+	<!-- 2nd level -->
+	<target name="prepare-components">
+		<antcall target="prepare-core-component" />
+		<antcall target="prepare-imagemagick-component" />
+		<antcall target="prepare-ghostscript-component" />
+
+		<antcall target="prepare-sourcecode-component" />
+
+	</target>
+	
+	<target name="compress-components">
+		<antcall target="compress-core-component" />
+		<antcall target="compress-imagemagick-component" />
+		<antcall target="compress-ghostscript-component" />
+
+		<antcall target="compress-zipped-binary-release" /> <!-- from init -->
+	</target>
+
+	<!-- 3rd level -->
+	<target name="create-core-component">
+		<antcall target="prepare-core-component" />
+		<antcall target="compress-core-component" />
+	</target>
+
+	<target name="create-sourcecode-component">
+		<antcall target="prepare-sourcecode-component" />
+		<antcall target="compress-sourcecode-component" />	
+	</target>
+	
+	<!-- core -->
+	<target name="prepare-core-component">
+
+		<delete dir="components/tmp/core"/>
+		<mkdir dir="components/tmp/core"/>
+
+		<copy todir="components/tmp/core" overwrite="true">
+			<fileset dir="distributions/web">
+				<include name="**/*"/>
+
+				<!-- exclude sourcecode + imagemagick + build files -->
+				<exclude name="common-src"/>
+				<exclude name="common-src/**/*"/>
+				<exclude name="runtime-src"/>
+				<exclude name="runtime-src/**/*"/>
+				<exclude name="build-src"/>
+				<exclude name="build-src/**/*"/>
+				<exclude name="bin/darwin/imagemagick"/>
+				<exclude name="bin/darwin/imagemagick/**/*"/>
+				<exclude name="bin/darwin/ghostscript"/>
+				<exclude name="bin/darwin/ghostscript/**/*"/>
+
+				<exclude name="acconfig.h"/>
+				<exclude name="aclocal.m4"/>
+				<exclude name="config.sub"/>
+				<exclude name="configtest.pl"/>
+				<exclude name="configure"/>
+				<exclude name="configure.in"/>
+				<exclude name="install-sh"/>
+				<exclude name="Makefile.in"/>
+				<exclude name="micotest.cpp"/>
+				<exclude name="config.h.in"/>
+				<exclude name="Install.txt"/>
+
+				<exclude name="README*.txt"/>
+				<include name="READMEen.txt"/>
+
+
+			</fileset>
+		</copy>
+		<zip destfile="components/core.comp" basedir="components/tmp/core" compress="false" includes="**/*"/>
+	</target>
+	
+	<target name="compress-core-component">
+		<sevenzip task="encode" input="components/core.comp" output="components/core.lzma" dictionnary="26"/>
+	</target>
+
+	<!-- sourcecode -->
+	<target name="prepare-sourcecode-component">
+
+		<delete dir="components/tmp/sourcecode"/>
+		<mkdir dir="components/tmp/sourcecode"/>
+
+		<exec dir="${basedir}" executable="cp">
+			<arg line="-r distributions/web/common-src distributions/web/build-src distributions/web/runtime-src components/tmp/sourcecode"/>
+		</exec>
+		<exec dir="distributions/web" executable="cp">
+			<arg line="acconfig.h aclocal.m4 config.guess config.sub configtest.pl configure configure.in install-sh Makefile.in micotest.cpp config.h.in Install.txt ${basedir}/components/tmp/sourcecode"/>
+		</exec>
+				
+		<mkdir dir="products"/>
+
+		<!-- create a script to create the tar -->
+		<echo output="create-sourcecode-component.sh">
+		tar -czf ../../../products/Greenstone-${version}-${os.suffix}-sourcecode-component.tar.gz *
+		</echo>
+		<chmod perm="+x" file="create-sourcecode-component.sh"/>
+
+		<!-- run it -->
+		<exec dir="components/tmp/sourcecode" executable="/bin/bash">
+			<arg line="${basedir}/create-sourcecode-component.sh"/>
+		</exec>
+
+		<!-- remove it -->
+		<delete file="create-sourcecode-component.sh"/>
+
+	</target>
+
+	<target name="compress-sourcecode-component">
+		<sevenzip task="encode" input="components/sourcecode.comp" output="components/sourcecode.lzma" dictionnary="26"/>
+	</target>
+
+	<!-- imagemagick -->
+	<target name="prepare-imagemagick-component">
+
+		<delete dir="components/tmp/imagemagick"/>
+		<mkdir dir="components/tmp/imagemagick"/>
+
+		<copy todir="components/tmp/imagemagick" overwrite="true">
+			<fileset dir="distributions/web/bin/darwin">
+				<include name="imagemagick/**/*"/>
+			</fileset>
+		</copy>
+				
+		<zip destfile="components/imagemagick.comp" basedir="components/tmp/imagemagick" compress="false" includes="**/*"/>
+	</target>
+		
+	<target name="compress-imagemagick-component">
+		<sevenzip task="encode" input="components/imagemagick.comp" output="components/imagemagick.lzma" dictionnary="26"/>
+	</target>
+	
+	<!-- ghostscript -->
+	<target name="prepare-ghostscript-component">
+
+		<delete dir="components/tmp/ghostscript"/>
+		<mkdir dir="components/tmp/ghostscript"/>
+
+		<copy todir="components/tmp/ghostscript" overwrite="true">
+			<fileset dir="distributions/web/bin/darwin">
+				<include name="ghostscript/**/*"/>
+			</fileset>
+		</copy>
+				
+		<zip destfile="components/ghostscript.comp" basedir="components/tmp/ghostscript" compress="false" includes="**/*"/>
+	</target>
+		
+	<target name="compress-ghostscript-component">
+		<sevenzip task="encode" input="components/ghostscript.comp" output="components/ghostscript.lzma" dictionnary="26"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/mark2/ant-scripts/create-distribution.xml
===================================================================
--- /branches/rk-oran/mark2/ant-scripts/create-distribution.xml	(revision 18906)
+++ /branches/rk-oran/mark2/ant-scripts/create-distribution.xml	(revision 18906)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark2-create-distribution" default="create-distribution">
+
+	<target name="create-distribution">
+
+		<antcall target="export-gsdl-gli"><param name="dest" value="distributions/web"/></antcall>
+		<antcall target="drop-in-docs"><param name="gsdl.basedir" value="distributions/web"/></antcall>
+		<antcall target="gsdl-set-version-numbers"><param name="gsdl.basedir" value="${basedir}/distributions/web"/></antcall>
+		<antcall target="gli-set-version-numbers"><param name="glibasedir" value="${basedir}/distributions/web/gli"/></antcall>
+		<antcall target="insert-uninstaller"><param name="script-format" value="sh"/></antcall> <!-- from rk2-targets -->
+		<antcall target="dist-unzip-packages"/>
+		<antcall target="drop-in-binaries" />
+		<antcall target="drop-in-demo-collection" />
+		<antcall target="insert-export-to-cd-package"><param name="gsdl.basedir" value="distributions/web"/></antcall> <!-- from rk2-targets -->
+		<antcall target="export-imagemagick-darwin-binaries" />
+		<antcall target="export-ghostscript-darwin-binaries" />
+		<antcall target="compile-gli" />
+		<antcall target="remove-unneeded-files" />
+		<antcall target="create-needed-empty-files"><param name="gsdl.basedir" value="distributions/web"/></antcall>
+
+		<antcall target="create-binary-zip-linux"/>
+
+	</target>
+
+	<target name="export-imagemagick-darwin-binaries">
+		<delete dir="distributions/web/bin/darwin/imagemagick"/>
+		<svn>
+			<export srcurl="${svn.root}/other-projects/trunk/mac-binaries/intel/imagemagick" destPath="distributions/web/bin/darwin/imagemagick"/>
+		</svn>
+	</target>
+	
+	<target name="export-ghostscript-darwin-binaries">
+		<delete dir="distributions/web/bin/darwin/ghostscript"/>
+		<svn>
+			<export srcurl="${svn.root}/other-projects/trunk/mac-binaries/intel/ghostscript" destPath="distributions/web/bin/darwin/ghostscript"/>
+		</svn>
+	</target>
+
+	<target name="drop-in-binaries">
+		<echo level="info">Dropping compiled binaries into distribution</echo>
+		<delete dir="distributions/web/bin/linux"/>
+		<delete dir="distributions/web/bin/darwin"/>
+		<!-- main binaries -->
+		<exec dir="${basedir}" executable="cp"><arg line="-r compiled/bin/darwin distributions/web/bin"/></exec>
+		<!--java binaries -->
+		<copy file="${basedir}/compiled/bin/java/LuceneWrapper.jar" todir="${basedir}/distributions/web/bin/java" />
+		<!--cgi binaries -->
+		<exec dir="${basedir}" executable="cp"><arg line="compiled/cgi-bin/library.cgi compiled/cgi-bin/oaiserver.cgi distributions/web/cgi-bin"/></exec>
+		<!-- apache -->
+		<exec dir="${basedir}" executable="cp"><arg line="-r compiled/apache-httpd distributions/web"/></exec>
+		<mkdir dir="${basedir}/distributions/web/etc/logs-gsi"/>
+	</target>
+
+	<target name="drop-in-demo-collection">
+		<echo level="info">Dropping rebuilt demo collection into distribution</echo>
+		<delete dir="distributions/web/collect/demo" />
+		<exec dir="${basedir}" executable="cp"><arg line="-r compiled/collect/demo distributions/web/collect"/></exec>
+	</target>
+
+	<target name="compile-gli">
+		<echo>Compiling gli...</echo>
+		<exec dir="${basedir}/distributions/web/gli" executable="${basedir}/distributions/web/gli/makegli.sh"/>
+
+		<echo>Creating jar...</echo>
+		<exec dir="${basedir}/distributions/web/gli" executable="${basedir}/distributions/web/gli/makejar.sh"/>
+
+		<echo>Cleaning up intermediate files...</echo>
+		<delete dir="${basedir}/distributions/web/gli/jar"/>
+		<delete dir="${basedir}/distributions/web/gli/classes/org"/>
+
+		<echo>Putting gli server jar in a better place</echo>
+		<exec dir="${basedir}/distributions/web" executable="mv" failonerror="true">
+			<arg line="gli/GLIServer.jar bin/java" />
+		</exec>
+	</target>
+
+	<target name="dist-unzip-packages">
+		<untar src="${basedir}/distributions/web/common-src/packages/sqlite/sqlite-amalgamation-3.5.9.tar.gz" dest="${basedir}/distributions/web/common-src/packages/sqlite" compression="gzip"/>
+		<delete file="${basedir}/distributions/web/common-src/packages/sqlite/sqlite-amalgamation-3.5.9.tar.gz"/>
+	</target>
+
+
+	<target name="remove-unneeded-files">
+		<delete file="${basedir}/distributions/web/gli/.greenstonestore" />
+		<delete><fileset dir="${basedir}/distributions/web" includes="win32.mak,win32cfg.h,Install.sh,Support.htm"/></delete>
+		<delete><fileset dir="${basedir}/distributions/web/gli" includes="*.bat"/></delete>
+		<delete><fileset dir="${basedir}/distributions/web" includes="*.bat"/></delete>
+		<delete dir="${basedir}/distributions/web/common-src/packages/windows"/>
+		<delete file="${basedir}/distributions/web/bin/java/SignedGatherer.jar" />
+	</target>
+
+</project>
Index: /branches/rk-oran/mark2/ant-scripts/create-installer.xml
===================================================================
--- /branches/rk-oran/mark2/ant-scripts/create-installer.xml	(revision 18906)
+++ /branches/rk-oran/mark2/ant-scripts/create-installer.xml	(revision 18906)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark2-create-installer" default="create-installer">
+
+	<target name="create-installer">
+		<antcall target="copy-installer-files"/>
+		<antcall target="make-installer-files-concrete"/>  <!-- from init -->
+		<antcall target="compile-binary-installer"/> <!-- from init -->
+		<antcall target="compile-minimal-installer"/> <!-- from init -->
+	</target>
+
+	<target name="copy-installer-files" depends="copy-main-installer-files"> <!-- from init -->
+
+		<copy todir="${basedir}/installer/classes" overwrite="true">
+			<fileset file="${basedir}/distributions/web/LICENSE.txt" /> 
+		</copy>
+
+		<unjar src="${mark2.home}/ant-scripts/tasks/greenstone/anttasks.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+		<unjar src="${mark2.home}/lib/crypt.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+		<unjar src="${mark2.home}/ant-scripts/tasks/7z-ant/7z.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/mark2/ant-scripts/wrap.xml
===================================================================
--- /branches/rk-oran/mark2/ant-scripts/wrap.xml	(revision 18906)
+++ /branches/rk-oran/mark2/ant-scripts/wrap.xml	(revision 18906)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark2-wrap" default="wrap">
+
+	<target name="wrap">
+		<!-- create and setup the build directory -->
+		<delete dir="${basedir}/wrapped-installer"/>
+		<mkdir dir="${basedir}/wrapped-installer"/>
+		<copy todir="${basedir}/wrapped-installer/Greenstone${version}.app"><fileset dir="${mark2.home}/mac/Wrapper.app"/></copy>
+		<copy todir="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/Resources" file="${mark2.home}/greenstone2/icon/icon.icns"/>
+		<chmod file="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/MacOS/JavaApplicationStub" perm="ug+x"/>
+
+		<!-- copy bundled files -->
+		<copy todir="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/Resources/Java" file="${basedir}/installer/Greenstone-${version}-MacOS-${processor}.jar"/>
+
+		<!-- substitute in real values -->
+		<rsr file="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/Info.plist" pattern="@jar@" replacement="Greenstone-${version}-MacOS-${processor}.jar"/>
+		<rsr file="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/Info.plist" pattern="@version@" replacement="${version}"/>
+
+		<!-- get size of app -->
+		<exec executable="du" dir="${basedir}/wrapped-installer" outputproperty="app.du"><arg line="-ks Greenstone${version}.app"/></exec>
+		<echo>app.du: ${app.du}</echo>
+		<exec executable="sed" inputstring="${app.du}" outputproperty="app.size"><arg line="-e 's/^\([0-9]*\).*$/\1/g'"/></exec>
+		<echo>app.size: ${app.size}</echo>
+		<math result="dmg.size" operand1="${app.size}" operation="+" operand2="${dmg.overhead}" datatype="int"/>
+		<echo>dmg.size: ${dmg.size}</echo>
+
+		<!-- create disk image -->
+		<property name="dmg.name" value="Greenstone-${version}-MacOS-${processor}"/>
+		<exec dir="${basedir}/products" executable="hdiutil"><arg line="create -size ${dmg.size}k -fs HFS+ -volname ${dmg.name} ${dmg.name}.dmg"/></exec>
+		<!-- mount it -->
+		<exec executable="hdiutil" dir="${basedir}/products"><arg line="attach ${dmg.name}.dmg"/></exec>
+		<!-- copy file into it -->
+		<exec executable="cp"><arg line="-r ${basedir}/wrapped-installer/Greenstone${version}.app /Volumes/${dmg.name}"/></exec>
+		<!-- unmount it-->
+		<exec executable="hdiutil"><arg line="detach /Volumes/${dmg.name}"/></exec>
+	</target>
+
+</project>
Index: /branches/rk-oran/mark2/bin/mark2
===================================================================
--- /branches/rk-oran/mark2/bin/mark2	(revision 18906)
+++ /branches/rk-oran/mark2/bin/mark2	(revision 18906)
@@ -0,0 +1,5 @@
+#!/bin/bash
+export rk_name="mark2"
+export rk_fullname="Mac Release Kit for Greenstone2"
+export RK_HOME=$MARK2_HOME
+$MARK2_HOME/linux/rk $*
Index: /branches/rk-oran/mark2/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/mark2/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/mark2/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Greenstone@version@ Installer"
+			windowIcon="/resources/icon.png"
+			defaultImageResource="/resources/header.png"
+			minJavaVersion="1.4">
+
+	<!-- select language page -->
+	<page type="input" name="language-selector" displayText="">
+		<comment name="language-selector-explanation"/>
+		<select property="language" defaultValue="en" displayText="" useAsLocale="true">
+			<option value="en" text="English"/>
+			<option value="fr" text="FranÃ§ais (French)"/>
+			<option value="es" text="EspaÃ±ol (Spanish)"/>
+			<option value="de" text="Deutsch (German)"/>
+			<option value="ru" text="ÑÑÑÑÐºÐžÐ¹ ÑÐ·ÑÐº (Russian)"/>
+			<option value="zh" text="äž­æ (Chinese)"/>
+			<option value="ar" text="Arabic"/>
+		</select>
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="intro" displayText="">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end binary release -->
+
+	<!-- start source release -->
+	<page type="input" name="intro" displayText="" target="Source Release">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end source release -->
+
+
+	<!--  type="license" shows a license page to click through -->
+	<page type="license" name="license" resource="/LICENSE.txt"  displayText="" />
+
+	<!--  install destination page -->
+	<page type="input" name="destination" displayText="">
+
+		<directory property="installDir"
+			defaultValue="/usr/local/Greenstone2"
+			create="true"
+			displayText="" />
+
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="selector" displayText="">
+		<comment name="choose-components"/>
+
+		<target
+			target="Installing Core System"
+			diskRequirement="@component.size.core@"
+			displayText=""
+			defaultValue="true"
+			force="true"/>
+
+		<!-- start bundled components -->
+		<target
+			target="Installing ImageMagick"
+			diskRequirement="@component.size.imagemagick@"
+			defaultValue="true" 
+			displayText=""/>
+
+		<target
+			target="Installing Ghostscript"
+			diskRequirement="@component.size.ghostscript@"
+			defaultValue="true" 
+			displayText=""/>
+		<!-- end bundled components -->
+
+	</page>
+	<!-- end binary release -->
+
+	<page type="input" name="admin-password" displayText="">
+		<comment name="admin-password-expl"/>
+<!--		<validated property="admin.password" defaultValue="" displayText="" regex="^.{3,20}$"/>-->
+		<text property="admin.password" defaultValue="admin" displayText=""/>
+	</page>
+
+	<page type="progress" name="progress" showTargets="true" displayText=""/>
+
+</installer>
Index: /branches/rk-oran/mark2/installer/build.xml
===================================================================
--- /branches/rk-oran/mark2/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/mark2/installer/build.xml	(revision 18906)
@@ -0,0 +1,148 @@
+<?xml version="1.0"?>
+<!--
+This is the build.xml run by AntInstaller for the installer
+-->
+
+<project name="Installation">
+
+	<!-- this is required to pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+
+	<path id="project.classpath">
+		<pathelement path="${antinstaller.jar}"/>
+	</path>
+
+	<!-- custom tasks -->
+	<typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/>
+	<typedef name="adduser" classname="org.greenstone.anttasks.AddGreenstoneUserToDatabase" classpathref="project.classpath"/>
+	<taskdef name="sevenzip" classname="org.apache.tools.ant.SevenZip" classpathref="project.classpath"/>
+
+	<target name="Installing Core System" depends="">
+
+		<echo>basedir: ${basedir}</echo>
+		<echo>installDir: ${installDir}</echo>
+		<echo>antinstaller.jar: ${antinstaller.jar}</echo>
+
+		<!-- create the installation directory -->
+		<echo message="Creating Installation directory"/>
+		<mkdir dir="${installDir}"/>
+
+		<echo>Installing Core Files</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="core.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/core.lzma" output="${basedir}/core.comp"/>
+		<delete file="core.lzma"/>
+		<unzip src="${basedir}/core.comp" dest="${installDir}"/>
+		<delete file="core.comp"/>
+
+		<echo message="Setting Binaries to Executable"/>
+		<chmod dir="${installDir}" includes="*.sh,*.bash" perm="775"/>
+		<chmod dir="${installDir}/bin/darwin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/cgi-bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin/script" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
+		<chmod dir="${installDir}/apache-httpd/darwin/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/apache-httpd/darwin" includes="*.sh" perm="775"/>
+		<echo/>
+
+		<echo message="Filling in concrete values in config files"/>
+		<copy file="${installDir}/cgi-bin/gsdlsite.cfg.in" tofile="${installDir}/cgi-bin/gsdlsite.cfg"/>
+		<rsr file="${installDir}/cgi-bin/gsdlsite.cfg" pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
+		<echo/>
+
+		<echo message="Creating admin and demo users"/>
+		<adduser txt2db="${installDir}/bin/darwin/txt2db"
+			usersDb="${installDir}/etc/users.db"
+			username="admin"
+			password="${admin.password}"
+			groups="administrator,colbuilder"
+			comment="created at install time"/>
+		<adduser
+			txt2db="${installDir}/bin/darwin/txt2db"
+			usersDb="${installDir}/etc/users.db"
+			username="demo"
+			password="demo"
+			groups="demo"
+			comment="Dummy 'demo' user with password 'demo' for authen-e collection"/>
+
+		<!-- delete unneeded files -->	    
+		<echo message="Deleting some unneeded files"/>
+		<delete dir="${installDir}/resources/icons"/>
+		<delete file="${installDir}/resources/*.png"/>
+
+		<echo>Setting up apache web server</echo>
+		<exec dir="${installDir}" executable="${installDir}/apache-httpd/darwin/install-bindist.sh">
+			<arg value="${installDir}/apache-httpd/darwin"/>
+		</exec>
+
+		<echo>Creating installation properties file</echo>
+		<echo file="${installDir}/etc/installation.properties">#this file is just a placeholder for now</echo>
+
+		<echo message="Finished"/>
+
+	</target>
+
+	<!-- ImageMagick -->
+	<target name="Installing ImageMagick" depends="">
+		<echo message="Installing ImageMagick"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="imagemagick.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/imagemagick.lzma" output="${basedir}/imagemagick.comp"/>
+		<delete file="imagemagick.lzma"/>
+		<unzip src="${basedir}/imagemagick.comp" dest="${installDir}/bin/darwin" />
+		<delete file="imagemagick.comp"/>
+		<chmod dir="${installDir}/bin/darwin/imagemagick/bin" includes="*" perm="775"/>
+	</target>
+
+	<!-- Ghostscript -->
+	<target name="Installing Ghostscript" depends="">
+		<echo message="Installing Ghostscript"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="ghostscript.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/ghostscript.lzma" output="${basedir}/ghostscript.comp"/>
+		<delete file="ghostscript.lzma"/>
+		<unzip src="${basedir}/ghostscript.comp" dest="${installDir}/bin/darwin" />
+		<delete file="ghostscript.comp"/>
+		<chmod dir="${installDir}/bin/darwin/ghostscript/bin" includes="*" perm="775"/>
+	</target>
+
+
+	<target name="Source Release" depends="">
+
+		<!-- create the installation directory -->
+		<echo message="Creating Installation directory"/>
+		<mkdir dir="${installDir}"/>
+
+		<echo>Installing Source Release</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="source-release.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/source-release.lzma" output="${basedir}/source-release.comp"/>
+		<delete file="source-release.lzma"/>
+		<unzip src="${basedir}/source-release.comp" dest="${installDir}"/>
+		<delete file="source-release.comp"/>
+
+		<echo message="Setting Binaries to Executable"/>
+		<chmod dir="${installDir}" includes="*.sh,*.bash" perm="775"/>
+		<chmod dir="${installDir}/bin/darwin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/cgi-bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin/script" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
+		<echo/>
+
+		<echo message="Filling in concrete values in config files"/>
+		<rsr file="${installDir}/cgi-bin/gsdlsite.cfg" pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
+		<rsr file="${installDir}/cgi-bin/gsdlsite.cfg" pattern="^(#?httpprefix).*" replacement="$1 /gsdl"/>
+		<rsr file="${installDir}/cgi-bin/gsdlsite.cfg" pattern="^(#?httpimg).*" replacement="$1 /gsdl/images"/>
+		<echo/>
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/etc/usage.txt"></echo>
+
+		<echo>Creating installation properties file</echo>
+		<echo file="${installDir}/etc/installation.properties">#this file is just a placeholder for now</echo>
+
+		<echo message="Finished"/>
+
+	</target>
+
+
+
+</project>
Index: /branches/rk-oran/mark2/resources/build-demo.sh
===================================================================
--- /branches/rk-oran/mark2/resources/build-demo.sh	(revision 18906)
+++ /branches/rk-oran/mark2/resources/build-demo.sh	(revision 18906)
@@ -0,0 +1,5 @@
+. setup.bash
+import.pl --removeold demo
+buildcol.pl --removeold demo
+rm -rf collect/demo/index
+mv collect/demo/building collect/demo/index
Index: /branches/rk-oran/mark3/ant-scripts/build.xml
===================================================================
--- /branches/rk-oran/mark3/ant-scripts/build.xml	(revision 18906)
+++ /branches/rk-oran/mark3/ant-scripts/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		.......................................................... 
+		July 2008
+		Mac Release Kit for Greenstone3 (mark3)
+		Oran Fry
+		..........................................................
+-->
+
+<project name="mark3-build" default="mark3">
+
+	<!-- CONSTANTS -->
+
+	<!-- the amount extra space to allocate in the dmgs in (KB) -->
+	<property name="dmg.overhead" value="4096"/>
+
+	<!-- for the benefit of the shared scripts, set release-kit home -->
+	<property name="rk.name" value="mark3"/>
+	<property name="rk.home" value="${mark3.home}" />
+	<property name="rk.os" value="linux" />
+	<!-- os.suffix set dynamically below -->
+
+	<!-- IMPORT OTHER ANT SCRIPTS -->
+	<import file="shared-ant-scripts/init.xml"/>
+	<import file="shared-ant-scripts/operations-on-gli.xml"/>
+	<import file="../greenstone3/ant-scripts/rk3-targets.xml"/>
+	<import file="compile.xml"/>
+	<import file="create-distribution.xml"/>
+	<import file="create-components.xml"/>
+	<import file="create-installer.xml"/>
+	<import file="wrap.xml"/>
+
+	<!-- TARGET TO PERFORM ADDITIONAL PRECONDITION CHECKS -->
+	<target name="mark3-init">
+		<if>
+			<bool>
+				<or><equals arg1="${processor}" arg2="ppc" /><equals arg1="${processor}" arg2="intel"/></or>
+			</bool>
+
+			<else>
+				<echo>Processor type not set or set wrongly. Please set the property 'processor' to either 'intel' or 'ppc' in build.properties</echo>
+				<fail>Processor not set</fail>
+			</else>
+		</if>
+		<echo>Processor: ${processor}</echo>
+	</target>
+
+	<property name="os.suffix" value="MacOS-${processor}"/>
+
+	<!-- THE MAIN TARGET -->
+	<target name="mark3" depends="init,mark3-init">
+		<antcall target="compile"/>
+		<antcall target="create-distribution"/>
+		<antcall target="create-components"/>
+		<antcall target="create-installer"/>
+		<antcall target="wrap"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/mark3/ant-scripts/compile.xml
===================================================================
--- /branches/rk-oran/mark3/ant-scripts/compile.xml	(revision 18906)
+++ /branches/rk-oran/mark3/ant-scripts/compile.xml	(revision 18906)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark3-compile" default="compile">
+
+	<target name="compile">
+
+		<!-- checkout -->
+		<antcall target="checkout-greenstone3" />
+
+		<!-- preparation -->
+		<antcall target="greenstone3-set-version-numbers">
+			<param name="greenstone3basedir" value="${basedir}/compiled"/>
+		</antcall>
+		<antcall target="set-gdbm-installed-path" />
+		<ant target="prepare-unix" dir="compiled" antfile="${mark3.home}/ant-scripts/operations-on-gs3home.xml" inheritAll="false"/>
+		
+		<!-- update -->
+		<ant target="update-unix" dir="compiled" antfile="${mark3.home}/ant-scripts/operations-on-gs3home.xml" inheritAll="false"/>
+
+		<!-- configure -->
+		<ant target="configure-unix" dir="compiled" antfile="${mark3.home}/ant-scripts/operations-on-gs3home.xml" inheritAll="false"/>
+		<antcall target="tweak-makefiles" />
+
+		<!-- build -->
+		<ant target="build-unix" dir="compiled" antfile="${mark3.home}/ant-scripts/operations-on-gs3home.xml" inheritAll="false"/>
+		<antcall target="linux-strip-execs" />
+
+		<!-- uninstaller -->
+		<antcall target="compile-uninstaller" /> <!-- from rk3-targets -->
+
+		<!-- documentation -->
+		<antcall target="prepare-documentation" />
+
+	</target>
+
+	<target name="checkout-greenstone3">
+		<svn javahl="false">
+			<checkout url="${svn.root}/greenstone3/${branch.path}" destPath="compiled"/>
+		</svn>
+	</target>
+
+	<target name="set-version-number-property">
+		<rsr file="compiled/resources/java/global.properties.in" pattern="(.*)@gsdl3version@(.*)" replacement="$1${version}$2" />
+	</target>
+
+	<target name="set-gdbm-installed-path">
+		<if>
+			<bool><not><available file="compiled/build.properties"/></not></bool>
+			<copy file="compiled/build.properties.in" tofile="compiled/build.properties"/>
+		</if>
+		<rsr file="compiled/build.properties" pattern="(gdbm.installed.path=).*" replacement="$1${mark3.home}/mac/${processor}/gdbm"/>
+	</target>
+
+	<target name="tweak-makefiles">
+		<rsr
+			file="${basedir}/compiled/gs2build/common-src/src/gdbmedit/db2txt/Makefile"
+			pattern="^(LIBS ?=.*)-L${mark3.home}/mac/${processor}/gdbm/lib -lgdbm(.*)$"
+			replacement="$1${mark3.home}/mac/${processor}/gdbm/lib/libgdbm.a$2" />
+
+		<rsr
+			file="${basedir}/compiled/gs2build/common-src/src/gdbmedit/txt2db/Makefile"
+			pattern="^(LIBS ?=.*)-L${mark3.home}/mac/${processor}/gdbm/lib -lgdbm(.*)$"
+			replacement="$1${mark3.home}/mac/${processor}/gdbm/lib/libgdbm.a$2" />
+
+		<rsr
+			file="${basedir}/compiled/src/packages/javagdbm/jni/Makefile"
+			pattern="^(GDBM_LIBS ?=.*)-L${mark3.home}/mac/${processor}/gdbm/lib -lgdbm(.*)$"
+			replacement="$1${mark3.home}/mac/${processor}/gdbm/lib/libgdbm.a$2" />
+	</target>
+
+	<target name="linux-strip-execs">
+		<exec dir="compiled/gs2build/bin/darwin" executable="find">
+			<arg line=". ! -name . -exec strip {} &#59;"/>
+		</exec>
+	</target>
+
+	<target name="prepare-documentation">
+		<mkdir dir="compiled/gsdl-manuals"/>
+		<svn>
+			<checkout url="${svn.root}/documentation/${branch.path}/manuals" destPath="compiled/gsdl-manuals/manuals"/>
+			<checkout url="${svn.root}/documentation/${branch.path}/shared" destPath="compiled/gsdl-manuals/shared"/>
+		</svn>
+		<javac
+				srcdir="compiled/gsdl-manuals/shared"
+				destdir="compiled/gsdl-manuals/shared"
+				debug="on">
+			<include name="*.java"/>
+		</javac>
+		<unzip src="compiled/gsdl-manuals/shared/fop.zip" dest="compiled/gsdl-manuals/shared"/>
+
+		<path id="documentation.compile.classpath">
+			<fileset dir="compiled/gsdl-manuals">
+				<include name="**/*.jar"/>
+			</fileset>
+			<pathelement path="compiled/gsdl-manuals/shared"/>
+			<pathelement path="compiled/gsdl-manuals/manuals"/>
+		</path>
+
+		<java classname="ApplyXSLT" classpathref="documentation.compile.classpath" output="compiled/gsdl-manuals/manuals/xml-source/en/help-en.xml">
+			<arg value="compiled/gsdl-manuals/manuals/processing/gen-gli-help-to-manual-chapter.xsl" />
+			<arg value="compiled/gli/help/en/help.xml" />
+			<arg value="compiled" />
+		</java>
+
+		<chmod perm="a+x" file="compiled/gsdl-manuals/shared/fop/fop.sh"/>
+		<echo>Run generate-pdf.sh</echo>
+		<exec dir="compiled/gsdl-manuals/manuals" executable="/bin/sh">
+			<arg line="generate-pdf.sh u en" />
+		</exec>
+	</target>
+
+</project>
+
+
Index: /branches/rk-oran/mark3/ant-scripts/create-components.xml
===================================================================
--- /branches/rk-oran/mark3/ant-scripts/create-components.xml	(revision 18906)
+++ /branches/rk-oran/mark3/ant-scripts/create-components.xml	(revision 18906)
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark3-create-components" default="create-components">
+
+	<!-- create components from the distributions folder -->
+
+	<!-- 1st level -->
+	<target name="create-components">
+		<antcall target="prepare-components" />
+		<antcall target="compress-components" />
+	</target>
+
+	<!-- 2nd level -->
+	<target name="prepare-components">
+		<antcall target="prepare-core-component" />
+		<antcall target="prepare-ant-component" />
+		<antcall target="prepare-tomcat-component" />
+		<antcall target="prepare-imagemagick-component" />
+		<antcall target="prepare-ghostscript-component" />
+
+		<antcall target="prepare-sourcecode-component" />
+
+	</target>
+
+	<target name="compress-components">
+		<antcall target="compress-core-component" />
+		<antcall target="compress-ant-component" />
+		<antcall target="compress-tomcat-component" />
+		<antcall target="compress-imagemagick-component" />
+		<antcall target="compress-ghostscript-component" />
+
+		<antcall target="compress-zipped-binary-release" /> <!-- from init -->
+
+	</target>
+
+	<!-- 3rd level -->
+	<!-- core -->
+	<target name="prepare-core-component">
+
+		<delete dir="components/tmp/core"/>
+		<mkdir dir="components/tmp/core"/>
+				
+		<copy todir="components/tmp/core" overwrite="true">
+			<fileset dir="distributions/web">
+				<include name="**/*"/>
+
+				<!-- exclude sourcecode -->
+				<exclude name="src"/>
+				<exclude name="src/**/*"/>
+				<exclude name="gs2build/common-src"/>
+				<exclude name="gs2build/common-src/**/*"/>
+				<exclude name="gs2build/build-src"/>
+				<exclude name="gs2build/build-src/**/*"/>
+				<exclude name="gs2build/runtime-src"/>
+				<exclude name="gs2build/runtime-src/**/*"/>
+				
+				<!-- exclude ant -->
+				<exclude name="packages/ant"/>
+				<exclude name="packages/ant/**/*"/>
+
+				<!-- exclude tomcat -->
+				<exclude name="packages/tomcat"/>
+				<exclude name="packages/tomcat/**/*"/>
+
+				<!-- exclude imagemagick -->
+				<exclude name="gs2build/bin/darwin/imagemagick"/>
+				<exclude name="gs2build/bin/darwin/imagemagick/**/*"/>
+
+			</fileset>
+		</copy>
+				
+		<zip destfile="components/core.comp" basedir="components/tmp/core" compress="false" />
+	</target>
+	
+	<target name="compress-core-component">
+		<sevenzip task="encode" input="components/core.comp" output="components/core.lzma" dictionnary="26"/>
+	</target>
+	
+	<!-- sourcecode -->
+	<target name="prepare-sourcecode-component">
+
+		<delete dir="components/tmp/sourcecode"/>
+		<mkdir dir="components/tmp/sourcecode"/>
+
+		<copy todir="components/tmp/sourcecode" overwrite="true">
+				<fileset dir="distributions/web">
+					<include name="src/**/*"/>
+					<include name="gs2build/common-src/**/*"/>
+					<include name="gs2build/build-src/**/*"/>
+					<include name="gs2build/runtime-src/**/*"/>
+				</fileset>
+		</copy>
+				
+		<mkdir dir="products"/>
+		<tar destfile="products/Greenstone-${version}-${os.suffix}-sourcecode-component.tar.gz" basedir="components/tmp/sourcecode" compression="gzip" longfile="gnu"/>
+	</target>
+		
+	<target name="compress-sourcecode-component">
+		<sevenzip task="encode" input="components/sourcecode.comp" output="components/sourcecode.lzma" dictionnary="26"/>
+	</target>
+	
+	<!-- ant -->
+	<target name="prepare-ant-component">
+
+		<delete dir="components/tmp/ant"/>
+		<mkdir dir="components/tmp/ant"/>
+
+		<copy todir="components/tmp/ant" overwrite="true">
+			<fileset dir="distributions/web/packages">
+				<include name="ant/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/ant.comp" basedir="components/tmp/ant" compress="false" />
+	</target>
+		
+	<target name="compress-ant-component">
+		<sevenzip task="encode" input="components/ant.comp" output="components/ant.lzma" dictionnary="26"/>
+	</target>
+	
+	<!-- tomcat -->
+	<target name="prepare-tomcat-component">
+
+		<delete dir="components/tmp/tomcat"/>
+		<mkdir dir="components/tmp/tomcat"/>
+
+		<copy todir="components/tmp/tomcat" overwrite="true">
+			<fileset dir="distributions/web/packages">
+				<include name="tomcat/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/tomcat.comp" basedir="components/tmp/tomcat" compress="false" />
+	</target>
+		
+	<target name="compress-tomcat-component">
+		<sevenzip task="encode" input="components/tomcat.comp" output="components/tomcat.lzma" dictionnary="26"/>
+	</target>
+
+	<!-- imagemagick -->
+	<target name="prepare-imagemagick-component">
+
+		<delete dir="components/tmp/imagemagick"/>
+		<mkdir dir="components/tmp/imagemagick"/>
+
+		<copy todir="components/tmp/imagemagick" overwrite="true">
+			<fileset dir="distributions/web/gs2build/bin/darwin">
+				<include name="imagemagick/**/*"/>
+			</fileset>
+		</copy>
+				
+		<zip destfile="components/imagemagick.comp" basedir="components/tmp/imagemagick" compress="false" includes="**/*"/>
+	</target>
+		
+	<target name="compress-imagemagick-component">
+		<sevenzip task="encode" input="components/imagemagick.comp" output="components/imagemagick.lzma" dictionnary="26"/>
+	</target>
+	
+	<!-- ghostscript -->
+	<target name="prepare-ghostscript-component">
+
+		<delete dir="components/tmp/ghostscript"/>
+		<mkdir dir="components/tmp/ghostscript"/>
+
+		<copy todir="components/tmp/ghostscript" overwrite="true">
+			<fileset dir="distributions/web/gs2build/bin/darwin">
+				<include name="ghostscript/**/*"/>
+			</fileset>
+		</copy>
+				
+		<zip destfile="components/ghostscript.comp" basedir="components/tmp/ghostscript" compress="false" includes="**/*"/>
+	</target>
+		
+	<target name="compress-ghostscript-component">
+		<sevenzip task="encode" input="components/ghostscript.comp" output="components/ghostscript.lzma" dictionnary="26"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/mark3/ant-scripts/create-distribution.xml
===================================================================
--- /branches/rk-oran/mark3/ant-scripts/create-distribution.xml	(revision 18906)
+++ /branches/rk-oran/mark3/ant-scripts/create-distribution.xml	(revision 18906)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark3-create-distribution" default="create-distribution">
+
+	<target name="create-distribution">
+
+		<!-- create distribution -->
+		<antcall target="export-greenstone3-gli" />
+		<antcall target="greenstone3-set-version-numbers"><param name="greenstone3basedir" value="${basedir}/distributions/web"/></antcall>
+		<antcall target="gli-set-version-numbers"><param name="glibasedir" value="${basedir}/distributions/web/gli"/></antcall>
+		<antcall target="insert-user-manual"/>
+		<antcall target="insert-uninstaller"><param name="script-format" value="sh"/></antcall> <!-- from rk3-targets -->
+
+		<ant target="create-distribution-1" antfile="${mark3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+		</ant>
+
+		<ant target="create-distribution-2" antfile="${mark3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+		</ant>
+
+		<ant target="create-distribution-3" antfile="${mark3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+		</ant>
+
+		<antcall target="copy-over-build-xml" />
+		<antcall target="insert-compiled-binaries"/>
+		<antcall target="export-imagemagick-darwin-binaries" />
+		<antcall target="export-ghostscript-darwin-binaries" />
+		<antcall target="strip-svn-dirs"><param name="dir" value="distributions"/></antcall> <!-- from init -->
+	</target>
+
+	<target name="export-greenstone3-gli">
+		<mkdir dir="distributions"/>
+		<delete dir="distributions/web"/>
+		<svn javahl="false">
+			<export srcurl="${svn.root}/greenstone3/${branch.path}" destPath="distributions/web"/>
+			<export srcurl="${svn.root}/gli/${branch.path}" destPath="distributions/web/gli"/>
+		</svn>
+	</target>
+	
+	<target name="export-imagemagick-darwin-binaries">
+		<delete dir="distributions/web/gs2build/bin/darwin/imagemagick"/>
+		<svn>
+			<export srcurl="${svn.root}/other-projects/trunk/mac-binaries/intel/imagemagick" destPath="distributions/web/gs2build/bin/darwin/imagemagick"/>
+		</svn>
+	</target>
+	
+	<target name="export-ghostscript-darwin-binaries">
+		<delete dir="distributions/web/gs2build/bin/darwin/ghostscript"/>
+		<svn>
+			<export srcurl="${svn.root}/other-projects/trunk/mac-binaries/intel/ghostscript" destPath="distributions/web/gs2build/bin/darwin/ghostscript"/>
+		</svn>
+	</target>
+
+	<target name="copy-over-build-xml">
+		<move file="distributions/web/modified-build.xml" tofile="distributions/web/build.xml"/>
+	</target>
+
+	<target name="insert-user-manual">
+		<copy file="compiled/gsdl-manuals/manuals/build/en/pdf/User_en.pdf" tofile="distributions/web/docs/manual/gs2_user_en.pdf"/>
+	</target>
+
+	<target name="insert-compiled-binaries">
+		<delete dir="distributions/web/lib/jni"/>
+		<exec executable="cp"><arg line="-r compiled/lib/jni distributions/web/lib"/></exec>
+
+		<delete dir="distributions/web/gs2build/bin/darwin"/>
+		<exec executable="cp"><arg line="-r compiled/gs2build/bin/darwin distributions/web/gs2build/bin"/></exec>
+
+		<delete dir="distributions/web/gs2build/bin/java"/>
+		<exec executable="cp"><arg line="-r compiled/gs2build/bin/java distributions/web/gs2build/bin"/></exec>
+		<exec executable="cp"><arg line="compiled/bin/search4j distributions/web/bin"/></exec>
+	</target>
+
+</project>
Index: /branches/rk-oran/mark3/ant-scripts/create-installer.xml
===================================================================
--- /branches/rk-oran/mark3/ant-scripts/create-installer.xml	(revision 18906)
+++ /branches/rk-oran/mark3/ant-scripts/create-installer.xml	(revision 18906)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark3-create-installer" default="create-installer">
+
+	<target name="create-installer">
+		<antcall target="copy-installer-files"/>
+		<antcall target="make-installer-files-concrete"/> <!-- from init -->
+		<antcall target="compile-binary-installer"/> <!-- from init -->
+		<antcall target="compile-minimal-installer"/> <!-- from init -->
+	</target>
+
+	<target name="copy-installer-files" depends="copy-main-installer-files"> <!-- from init -->
+
+		<copy todir="${basedir}/installer/classes" overwrite="true">
+			<fileset file="${basedir}/distributions/web/LICENSE.txt" /> 
+		</copy>
+
+		<unjar src="${mark3.home}/ant-scripts/tasks/greenstone/anttasks.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+		<unjar src="${mark3.home}/ant-scripts/tasks/7z-ant/7z.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/mark3/ant-scripts/operations-on-gs3home.xml
===================================================================
--- /branches/rk-oran/mark3/ant-scripts/operations-on-gs3home.xml	(revision 18906)
+++ /branches/rk-oran/mark3/ant-scripts/operations-on-gs3home.xml	(revision 18906)
@@ -0,0 +1,295 @@
+<?xml version="1.0"?>
+
+<!-- ====================================================================== 
+     March 2005                                                    
+
+     Greenstone3 build and install script
+                   
+     kjdon                                                                
+     ====================================================================== -->
+
+<project name="opeations-on-gs3home" default="usage">
+  
+	<!-- include standard build file -->
+	<import file="${basedir}/build.xml"/>
+
+	<property name="greenstone3-change-date" value="Tue Feb 20 12:13:42 NZDT 2007"/>
+	<property name="gs2build-change-date" value="Wed Dec 13 10:35:57 NZDT 2006"/>
+
+	<!-- ====================== DISTRIBUTION Targets ========================= -->
+
+	<!-- Create the binaries for Unix/Mac distributions -->
+	<target name="prepare-unix" depends="init">
+		<antcall target="checkout-gs2build"/>
+		<antcall target="checkout-gli"/>
+	</target>
+
+	<target name="update-unix" depends="init">
+		<antcall target="svnupdate-distribution"/>
+		<antcall target="delete-windows-files"/>
+	</target>
+
+	<target name="configure-unix" depends="init">
+		<antcall target="configure-c++"/>
+	</target>    
+	<target name="build-unix" depends="init">
+		<antcall target="compile-packages"/>
+		<antcall target="compile-gs2build"/>
+	</target>
+    
+	<!-- creates the base distribution. Needs binaries copied in to it from other greenstones (prepare-os targets) -->
+	<target name="create-distribution-1" depends="init" description="do all the initial downloading and setting up">
+
+		<antcall target="checkout-gs2build"/>
+
+		<delete><fileset dir="." includes="*.bat"/></delete>
+		<delete dir="${gs2build.home}/gs2build-extra"/>
+
+		<antcall target="prepare-tomcat"/>
+		<antcall target="prepare-axis"/>
+
+		<!-- delete old axis dir -->
+		<delete dir="${packages.home}/axis"/>
+		<mkdir dir="${web.home}/applet"/>
+		<mkdir dir="${web.home}/logs"/>
+		<antcall target="prepare-ant"/>
+		<antcall target="prepare-collections"/>
+
+		<!-- get good XML-Parser - does this work? -->
+		<antcall target="get-xml-parser"/>
+
+		<delete>
+			<fileset dir="${packages.home}" includes="*.zip"/>
+		</delete>
+
+
+		<!-- documented collections -->
+		<antcall target="get-documented-collections"/>
+
+		<delete file="${basedir}/README-CVS.txt"/>
+		<delete file="${basedir}/TODO.txt"/>
+
+	</target>
+
+	<target name="create-distribution-2" description="do all the compilation">
+
+		<!-- compile the java stuff -->
+		<antcall target="compile-web"/>
+		<antcall target="configure-tomcat"/>
+		<antcall target="configure-packages-and-indexers"/>
+		<antcall target="compile-packages-and-indexers-javaonly"/>
+		<antcall target="distclean-packages"/>
+		<antcall target="compile-core"/>
+		<antcall target="compile-gli"/>
+
+	</target>
+
+	<target name="create-distribution-3" depends="init" description="Do the rearranging of source code and others">
+
+		<!-- delete some source files -->
+		<delete dir="${gs2build.home}/source/src"/>
+		<delete dir="${gs2build.home}/source/lib"/>
+		<delete dir="${gs2build.home}/source/packages"/>
+		<delete dir="${gs2build.home}/source/indexers"/>
+
+		<!-- generate modified build.xml file -->
+		<antcall target="run-xslt-binary"/>
+
+		<!-- clean up -->
+		<delete><fileset dir="${basedir}" includes="*.bat"/></delete>
+		<delete><fileset dir="${basedir}/gli" includes="*.bat"/></delete>
+		<delete><fileset dir="${basedir}/gs2build" includes="*.bat"/></delete>
+		<delete><fileset dir="${basedir}/bin/script" includes="*.bat"/></delete>
+
+		<delete dir="${basedir}/build"/>
+		<delete dir="${basedir}/lib/jni"/>
+		<delete dir="${basedir}/winutil"/>
+		<delete dir="${basedir}/dist-resources"/>
+		<delete dir="${basedir}/gs2build/source"/>
+
+		<delete file="${basedir}/gs2build/win32cfg.h"/>
+		<delete file="${basedir}/gs2build/win32.mak"/>
+
+	</target>
+  
+	<!-- Supplementary targets -->
+
+	<target name="svnupdate-distribution" depends="init">
+		<antcall target="svnupdate-packages"/>
+		<antcall target="svnupdate-core"/>
+		<antcall target="svnupdate-gs2build"/>
+		<antcall target="svnupdate-web"/>
+	</target>
+
+	<target name="run-xslt-binary" depends="init">
+		<xslt in="${basedir}/build.xml" out="${basedir}/modified-build.xml" style="${mark3.home}/greenstone3/xsl/convert-build-xml.xsl"/>
+	</target>
+
+	<target name="run-xslt-source" depends="init">
+		<xslt in="${basedir}/build.xml" out="${basedir}/modified-build.xml" style="${mark3.home}/greenstone3/xsl/convert-build-xml-source.xsl"/>
+	</target>
+  
+  <target name="configure-packages-and-indexers" depends="init">
+    <exec executable="${indexers.home}/configure"
+      dir="${indexers.home}">
+      <arg value="--prefix=${basedir}"/>
+      <arg value="--libdir=${lib.jni}"/>
+    </exec>          
+    <exec executable="${javagdbm.home}/configure"
+      dir="${javagdbm.home}">
+      <arg value="--prefix=${basedir}"/>
+      <arg value="--libdir=${lib.jni}"/>
+    </exec>    
+
+  </target>
+
+  <target name="compile-packages-and-indexers-javaonly" depends="init">
+    <echo>Compiling Indexers</echo>
+    <exec executable="make" os="${os.unix}"
+       dir="${indexers.home}">
+      <arg value="javaonly"/>
+    </exec>
+    <exec executable="make" os="${os.unix}"
+      dir="${indexers.home}">
+      <arg value="install-javaonly"/>
+    </exec>
+    <!-- install the jar files -->
+    <copy file="${mg.home}/mg.jar" todir="${lib.jni}"/>
+    <copy file="${mgpp.home}/mgpp.jar" todir="${lib.jni}"/>
+    <copy file="${lucene.home}/LuceneWrapper.jar" todir="${web.lib}"/>
+    
+    <!-- javagdbm -->
+    <!-- skip compile, just get compiled jar from /greenstone3 directory
+    <exec executable="make" os="${os.unix}"
+      dir="${javagdbm.home}">
+      <arg value="javaonly"/>
+    </exec>
+    <exec executable="make" os="${os.unix}"
+      dir="${javagdbm.home}">
+      <arg value="installjava"/>
+    </exec>
+    -->
+
+    <!-- install the jar file -->
+    <copy file="../../compiled/src/packages/javagdbm/javagdbm.jar" todir="${lib.jni}"/>
+
+  </target>
+
+  <target name="delete-windows-files" depends="init" unless="current.os.iswindows">
+    <delete dir="${basedir}/winutil"/>
+    <delete>
+      <fileset dir="${lib.jni}" includes="*.dll"/>
+    </delete>
+  </target>
+
+  <target name="get-perl-for-windows" depends="init" if="current.os.iswindows">
+    <mkdir dir="${gs2build.home}/bin/windows"/>
+    <get src="http://www.greenstone.org/gs3files/perl-for-windows.zip"
+      dest="${gs2build.home}/bin/windows/perl-for-windows.zip"
+      usetimestamp="true"/>
+    <unzip src="${gs2build.home}/bin/windows/perl-for-windows.zip" 
+      dest="${gs2build.home}/bin/windows"/>
+    <delete file="${gs2build.home}/bin/windows/perl-for-windows.zip"/>
+  </target>
+
+  <target name="distclean-packages" depends="init">
+    <!-- indexers : just call the make target -->
+    <exec executable="make" os="${os.unix}"
+      dir="${indexers.home}">
+      <arg value="distclean"/>
+    </exec>
+    <!-- javagdbm -->
+    <exec executable="make" os="${os.unix}"
+      dir="${javagdbm.home}">
+      <arg value="distclean"/>
+    </exec>
+  </target>
+
+  <!-- copy the doc eg colls from /home/nzdl - note we don't include the formatting ones -->
+  <target name="get-documented-collections" depends="init">
+    <property name="collect.home" value="${basedir}/web/sites/localsite/collect"/>
+
+<!--    <copy todir="${collect.home}/authen-e">
+      <fileset dir="${documented.collections.home}/authen-e"/>
+    </copy>
+    <copy todir="${collect.home}/bibliog1">
+      <fileset dir="${documented.collections.home}/bibliog1"/>
+    </copy>
+    <copy todir="${collect.home}/bibliogr">
+      <fileset dir="${documented.collections.home}/bibliogr"/>
+    </copy>
+    <copy todir="${collect.home}/dls-e">
+      <fileset dir="${documented.collections.home}/dls-e"/>
+    </copy>
+    <copy todir="${collect.home}/dspace-e">
+      <fileset dir="${documented.collections.home}/dspace-e"/>
+    </copy>
+    <copy todir="${collect.home}/gsarch-e">
+      <fileset dir="${documented.collections.home}/gsarch-e"/>
+    </copy>
+    <copy todir="${collect.home}/image-e">
+      <fileset dir="${documented.collections.home}/image-e"/>
+    </copy>
+    <copy todir="${collect.home}/isis-e">
+      <fileset dir="${documented.collections.home}/isis-e"/>
+    </copy>
+    <copy todir="${collect.home}/oai-e">
+      <fileset dir="${documented.collections.home}/oai-e"/>
+    </copy>
+    <copy todir="${collect.home}/pagedimg-e">
+      <fileset dir="${documented.collections.home}/pagedimg-e"/>
+    </copy>
+    <copy todir="${collect.home}/wrdpdf-e">
+      <fileset dir="${documented.collections.home}/wrdpdf-e"/>
+    </copy>
+
+    <copy todir="${collect.home}/garish">
+      <fileset dir="${documented.collections.home}/garish"/>
+    </copy>
+    <copy todir="${collect.home}/marcexam">
+      <fileset dir="${documented.collections.home}/marcexam"/>
+    </copy>
+    <copy todir="${collect.home}/style-e">
+      <fileset dir="${documented.collections.home}/style-e"/>
+    </copy>
+    <copy todir="${collect.home}/wiki">
+      <fileset dir="${documented.collections.home}/wiki"/>
+    </copy> -->
+  </target>
+
+  <target name="get-xml-parser" depends="init">
+    <get src="http://www.greenstone.org/gs3files/XML-Parser.tar.gz" dest="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" usetimestamp="true"/>
+    <untar src="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" dest="${gs2build.home}/perllib/cpan/" compression="gzip"/>
+    <delete file="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz"/>
+  </target>
+
+  <!-- new targets to go in distribution build.xml files -->
+
+  <!-- new usage target for binary release -->
+  <target name="usage-for-binary-dist" description="Print a help message">
+    <echo message="  Execute 'ant -projecthelp' for a list of targets."/>
+    <echo message="  Execute 'ant -help' for Ant help."/>
+  </target>
+    
+
+  <!-- new install target for source distribution -->
+  <target name="install-for-source-dist" depends="init" description="install the source distribution. Includes configuring and compiling">
+    <antcall target="unzip-windows-packages"/>
+    <!-- do the java version dependent stuff -->
+    <antcall target="configure-java-version"/>
+    <antcall target="install-macos-extra"/>
+    <!-- set gsdlhome in setup.bat -->
+    <antcall target="gs2build-edit-setup-bat"/>
+    <antcall target="install-indexer-files"/>
+    <antcall target="configure"/>
+    <antcall target="configure-c++"/>
+    <antcall target="compile"/>
+    <!-- make sure we have execute permission for the .sh files -->
+    <chmod dir="${basedir}" perm="ugo+rx" 
+      includes="*.sh"/>
+
+  </target>
+
+</project>
+  
+
Index: /branches/rk-oran/mark3/ant-scripts/wrap.xml
===================================================================
--- /branches/rk-oran/mark3/ant-scripts/wrap.xml	(revision 18906)
+++ /branches/rk-oran/mark3/ant-scripts/wrap.xml	(revision 18906)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="mark3-wrap" default="wrap">
+
+	<target name="wrap">
+		<!-- create and setup the build directory -->
+		<delete dir="${basedir}/wrapped-installer"/>
+		<mkdir dir="${basedir}/wrapped-installer"/>
+		<copy todir="${basedir}/wrapped-installer/Greenstone${version}.app"><fileset dir="${mark3.home}/mac/Wrapper.app"/></copy>
+		<copy todir="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/Resources" file="${mark3.home}/greenstone3/icon/icon.icns"/>
+		<chmod file="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/MacOS/JavaApplicationStub" perm="ug+x"/>
+
+		<!-- copy bundled files -->
+		<copy todir="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/Resources/Java" file="${basedir}/installer/Greenstone-${version}-MacOS-${processor}.jar"/>
+
+		<!-- substitute in real values -->
+		<rsr file="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/Info.plist" pattern="@jar@" replacement="Greenstone-${version}-MacOS-${processor}.jar"/>
+		<rsr file="${basedir}/wrapped-installer/Greenstone${version}.app/Contents/Info.plist" pattern="@version@" replacement="${version}"/>
+
+		<!-- get size of app -->
+		<exec executable="du" dir="${basedir}/wrapped-installer" outputproperty="app.du"><arg line="-ks Greenstone${version}.app"/></exec>
+		<echo>app.du: ${app.du}</echo>
+		<exec executable="sed" inputstring="${app.du}" outputproperty="app.size"><arg line="-e 's/^\([0-9]*\).*$/\1/g'"/></exec>
+		<echo>app.size: ${app.size}</echo>
+		<math result="dmg.size" operand1="${app.size}" operation="+" operand2="${dmg.overhead}" datatype="int"/>
+		<echo>dmg.size: ${dmg.size}</echo>
+
+		<!-- create disk image -->
+		<property name="dmg.name" value="Greenstone-${version}-MacOS-${processor}"/>
+		<exec dir="${basedir}/products" executable="hdiutil"><arg line="create -size ${dmg.size}k -fs HFS+ -volname ${dmg.name} ${dmg.name}.dmg"/></exec>
+		<!-- mount it -->
+		<exec executable="hdiutil" dir="${basedir}/products"><arg line="attach ${dmg.name}.dmg"/></exec>
+		<!-- copy file into it -->
+		<exec executable="cp"><arg line="-r ${basedir}/wrapped-installer/Greenstone${version}.app /Volumes/${dmg.name}"/></exec>
+		<!-- unmount it-->
+		<exec executable="hdiutil"><arg line="detach /Volumes/${dmg.name}"/></exec>
+	</target>
+
+</project>
Index: /branches/rk-oran/mark3/bin/mark3
===================================================================
--- /branches/rk-oran/mark3/bin/mark3	(revision 18906)
+++ /branches/rk-oran/mark3/bin/mark3	(revision 18906)
@@ -0,0 +1,5 @@
+#!/bin/bash
+export rk_name="mark3"
+export rk_fullname="Mac Release Kit for Greenstone3"
+export RK_HOME=$MARK3_HOME
+$MARK3_HOME/linux/rk $*
Index: /branches/rk-oran/mark3/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/mark3/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/mark3/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Greenstone@version@ Installer"
+			windowIcon="/resources/icon.png"
+			defaultImageResource="/resources/header.png"
+			minJavaVersion="1.4">
+
+	<!-- select language page -->
+	<page type="input" name="language-selector" displayText="">
+		<comment name="language-selector-explanation"/>
+		<select property="language" defaultValue="en" displayText="" useAsLocale="true">
+			<option value="en" text="English"/>
+			<option value="fr" text="FranÃ§ais (French)"/>
+			<option value="es" text="EspaÃ±ol (Spanish)"/>
+			<option value="de" text="Deutsch (German)"/>
+			<option value="ru" text="ÑÑÑÑÐºÐžÐ¹ ÑÐ·ÑÐº (Russian)"/>
+			<option value="zh" text="äž­æ (Chinese)"/>
+			<option value="ar" text="Arabic"/>
+		</select>
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="intro" displayText="">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end binary release -->
+
+	<!-- start source release -->
+	<page type="input" name="intro" displayText="" target="Source Release">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end source release -->
+
+
+	<!--  type="license" shows a license page to click through -->
+	<page type="license" name="license" resource="/LICENSE.txt"  displayText="" />
+
+	<!--  install destination page -->
+	<page type="input" name="destination" displayText="">
+
+		<directory property="installDir"
+			defaultValue="/usr/local/Greenstone3"
+			create="true"
+			displayText="" />
+
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="selector" displayText="">
+		<comment name="choose-components"/>
+
+		<target
+			target="Installing Core System"
+			diskRequirement="@component.size.core@"
+			displayText=""
+			defaultValue="true"
+			force="true"/>
+
+		<!-- start bundled components -->
+		<target
+			target="Installing Tomcat"
+			diskRequirement="@component.size.tomcat@"
+			defaultValue="true"
+			displayText=""/>
+
+		<target
+			target="Installing Ant"
+			diskRequirement="@component.size.ant@"
+			defaultValue="true"
+			displayText=""/>
+
+		<target
+			target="Installing ImageMagick"
+			diskRequirement="@component.size.imagemagick@"
+			defaultValue="true" 
+			displayText=""/>
+
+		<target
+			target="Installing Ghostscript"
+			diskRequirement="@component.size.ghostscript@"
+			defaultValue="true" 
+			displayText=""/>
+		<!-- end bundled components -->
+
+	</page>
+	<!-- end binary release -->
+
+	<!-- start bundled components -->
+	<page type="input" name="tomcat-config" ifProperty="(${Installing Tomcat}==true)" displayText="">
+
+		<text property="tomcat.server" defaultValue="localhost" displayText=""/>
+		<text property="tomcat.port" defaultValue="8080" displayText=""/>
+		<text property="tomcat.shutdown.port" defaultValue="8005" displayText=""/>
+
+	</page>
+	<!-- end bundled components -->
+
+	<page type="progress" name="progress" showTargets="true" displayText=""/>
+
+</installer>
Index: /branches/rk-oran/mark3/installer/build.xml
===================================================================
--- /branches/rk-oran/mark3/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/mark3/installer/build.xml	(revision 18906)
@@ -0,0 +1,182 @@
+<?xml version="1.0"?>
+<!--
+This is the build.xml run by AntInstaller for the installer
+-->
+
+<project name="Installation">
+
+	<!-- this is required to pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+
+	<path id="project.classpath">
+		<pathelement path="${antinstaller.jar}"/>
+	</path>
+
+	<!-- custom tasks -->
+	<typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/>
+	<taskdef name="sevenzip" classname="org.apache.tools.ant.SevenZip" classpathref="project.classpath"/>
+
+	<target name="Installing Core System" depends="">
+
+		<!-- create the installation directory -->
+		<echo message="Creating Installation directory"/>
+		<echo>basedir: ${basedir}</echo>
+		<echo>installDir: ${installDir}</echo>
+		<echo>antinstaller.jar: ${antinstaller.jar}</echo>
+		<mkdir dir="${installDir}"/>
+
+		<!-- install files -->
+		<echo message="Installing Files"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="core.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/core.lzma" output="${basedir}/core.comp"/>
+		<delete file="core.lzma"/>
+		<unzip src="${basedir}/core.comp" dest="${installDir}"/>
+		<delete file="core.comp"/>
+
+		<echo message="Setting Binaries to Executable"/>
+		<chmod dir="${installDir}" includes="*.sh" perm="775"/>
+		<chmod dir="${installDir}/bin/script" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/gs2build/bin/darwin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/gs2build/bin/script" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
+		<echo/>
+
+		<!-- change the tomcat ports in build.properties -->
+		<echo message="Changing tomcat ports in build.properties"/>
+		<rsr file="${installDir}/build.properties" pattern="(tomcat.port[=:]).*" replacement="$1${tomcat.port}" />
+		<rsr file="${installDir}/build.properties" pattern="(tomcat.shutdown.port[=:]).*" replacement="$1${tomcat.shutdown.port}" />
+
+		<!-- set up global properties -->
+		<echo message="Setting up global properties"/>
+		<copy file="${installDir}/resources/java/global.properties.in" tofile="${installDir}/web/WEB-INF/classes/global.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@gsdl3home@(.*)" replacement="$1${installDir}/web$2" />
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@tomcat.server@(.*)" replacement="$1localhost$2" />
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@tomcat.port@(.*)" replacement="$1${tomcat.port}$2" />
+
+		<!-- set up log4j properties-->
+		<echo message="Setting up log4j properties"/>
+		<copy file="${installDir}/resources/java/log4j.properties.in" tofile="${installDir}/web/WEB-INF/classes/log4j.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/log4j.properties" pattern="(.*)@gsdl3home@(.*)" replacement="$1${installDir}/web$2" />
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/gs2build/etc/usage.txt"></echo>
+
+		<echo>Creating installation properties file</echo>
+		<echo file="${installDir}/installation.properties">#this file is just a placeholder for now</echo>
+
+		<echo message="Finished"/>
+
+	</target>
+
+	<target name="Installing Tomcat">
+		<echo message="Installing Tomcat (packages/tomcat)"/>
+		<mkdir dir="packages"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="tomcat.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/tomcat.lzma" output="${basedir}/tomcat.comp"/>
+		<delete file="tomcat.lzma"/>
+		<unzip src="${basedir}/tomcat.comp" dest="${installDir}/packages"/>
+		<delete file="tomcat.comp"/>
+
+		<!-- change the tomcat ports in tomcats server.xml -->
+		<echo message="Changing tomcat ports tomcat's server.xml"/>
+		<copy file="${installDir}/resources/tomcat/server.xml" tofile="${installDir}/packages/tomcat/conf/server.xml" overwrite="true"/>
+		<rsr file="${installDir}/packages/tomcat/conf/server.xml" pattern="(.*)@port@(.*)" replacement="$1${tomcat.port}$2" />
+		<rsr file="${installDir}/packages/tomcat/conf/server.xml" pattern="(.*)@shutdown-port@(.*)" replacement="$1${tomcat.shutdown.port}$2" />
+		
+		<!-- copy the greenstone3.xml file to tomcat -->
+		<echo message="Copying greenstone3.xml to tomcat directory"/>
+		<copy file="${installDir}/resources/tomcat/greenstone3.xml" tofile="${installDir}/packages/tomcat/conf/Catalina/localhost/greenstone3.xml" overwrite="true"/>
+		<rsr file="${installDir}/packages/tomcat/conf/Catalina/localhost/greenstone3.xml" pattern="(.*)@gsdl3webhome@(.*)" replacement="$1${installDir}/web$2" />
+
+		<!-- set binaries to executable -->
+		<chmod dir="${installDir}/packages/tomcat/bin" includes="*.sh" perm="775"/>
+		<echo/>
+
+	</target>
+
+	<target name="Installing Ant">
+
+		<!-- extract the files -->
+		<echo message="Installing Ant (packages/ant)"/>
+		<mkdir dir="packages"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="ant.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/ant.lzma" output="${basedir}/ant.comp"/>
+		<delete file="ant.lzma"/>
+		<unzip src="${basedir}/ant.comp" dest="${installDir}/packages"/>
+		<delete file="ant.comp"/>
+
+		<!-- set binaries to executable -->
+		<chmod dir="${installDir}/packages/ant/bin" includes="*" perm="775"/>
+		<echo/>
+	</target>
+
+        <!-- ImageMagick -->
+        <target name="Installing ImageMagick" depends="">
+                <echo message="Installing ImageMagick"/>
+                <unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="imagemagick.lzma"/></patternset></unzip>
+                <sevenzip task="decode" input="${basedir}/imagemagick.lzma" output="${basedir}/imagemagick.comp"/>
+                <delete file="imagemagick.lzma"/>
+                <unzip src="${basedir}/imagemagick.comp" dest="${installDir}/gs2build/bin/darwin" />
+                <delete file="imagemagick.comp"/>
+				<chmod dir="${installDir}/gs2build/bin/darwin/imagemagick/bin" includes="*" perm="775"/>
+        </target>
+        
+        <!-- Ghostscript -->
+        <target name="Installing Ghostscript" depends="">
+                <echo message="Installing Ghostscript"/>
+                <unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="ghostscript.lzma"/></patternset></unzip>
+                <sevenzip task="decode" input="${basedir}/ghostscript.lzma" output="${basedir}/ghostscript.comp"/>
+                <delete file="ghostscript.lzma"/>
+                <unzip src="${basedir}/ghostscript.comp" dest="${installDir}/gs2build/bin/darwin" />
+                <delete file="ghostscript.comp"/>
+				<chmod dir="${installDir}/gs2build/bin/darwin/ghostscript/bin" includes="*" perm="775"/>
+        </target>
+
+	<target name="Source Release" depends="">
+
+		<!-- create the installation directory -->
+		<echo message="Creating Installation directory"/>
+		<mkdir dir="${installDir}"/>
+
+		<echo>Installing Source Release</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="source-release.lzma"/></patternset></unzip>
+		<sevenzip task="decode" input="${basedir}/source-release.lzma" output="${basedir}/source-release.comp"/>
+		<delete file="source-release.lzma"/>
+		<unzip src="${basedir}/source-release.comp" dest="${installDir}"/>
+		<delete file="source-release.comp"/>
+
+		<echo message="Setting Binaries to Executable"/>
+		<chmod dir="${installDir}" includes="*.sh" perm="775"/>
+		<chmod dir="${installDir}/bin/script" includes="*" perm="775"/>
+		<chmod dir="${installDir}/bin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/gs2build/bin/darwin" includes="*" perm="775"/>
+		<chmod dir="${installDir}/gs2build/bin/script" includes="**/*" perm="775"/>
+		<chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
+		<echo/>
+
+		<!-- set up global properties -->
+		<echo message="Setting up global properties"/>
+		<copy file="${installDir}/resources/java/global.properties.in" tofile="${installDir}/web/WEB-INF/classes/global.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@gsdl3home@(.*)" replacement="$1${installDir}/web$2" />
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@tomcat.server@(.*)" replacement="$1localhost$2" />
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties" pattern="(.*)@tomcat.port@(.*)" replacement="$1${tomcat.port}$2" />
+
+		<!-- set up log4j properties-->
+		<echo message="Setting up log4j properties"/>
+		<copy file="${installDir}/resources/java/log4j.properties.in" tofile="${installDir}/web/WEB-INF/classes/log4j.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/log4j.properties" pattern="(.*)@gsdl3home@(.*)" replacement="$1${installDir}/web$2" />
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/gs2build/etc/usage.txt"></echo>
+
+		<echo>Creating installation properties file</echo>
+		<echo file="${installDir}/installation.properties">#this file is just a placeholder for now</echo>
+
+		<echo message="Finished"/>
+
+	</target>
+
+
+
+</project>
Index: /branches/rk-oran/shared/7za/copying.txt
===================================================================
--- /branches/rk-oran/shared/7za/copying.txt	(revision 18906)
+++ /branches/rk-oran/shared/7za/copying.txt	(revision 18906)
@@ -0,0 +1,513 @@
+      GNU LESSER GENERAL PUBLIC LICENSE
+           Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+
+      GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+          NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Index: /branches/rk-oran/shared/7za/license.txt
===================================================================
--- /branches/rk-oran/shared/7za/license.txt	(revision 18906)
+++ /branches/rk-oran/shared/7za/license.txt	(revision 18906)
@@ -0,0 +1,62 @@
+      7-Zip Command line version
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~
+      License for use and distribution
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+      7-Zip Copyright (C) 1999-2007 Igor Pavlov.
+
+      7za.exe is distributed under the GNU LGPL + AES code license
+
+      The GNU LGPL + AES code license means that you must follow both GNU LGPL rules 
+      and AES code license rules.
+
+
+      Notes: 
+        You can use 7-Zip on any computer, including a computer in a commercial 
+        organization. You don't need to register or pay for 7-Zip.
+
+
+      GNU LGPL information
+      --------------------
+
+        This library is free software; you can redistribute it and/or
+        modify it under the terms of the GNU Lesser General Public
+        License as published by the Free Software Foundation; either
+        version 2.1 of the License, or (at your option) any later version.
+
+        This library is distributed in the hope that it will be useful,
+        but WITHOUT ANY WARRANTY; without even the implied warranty of
+        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+        Lesser General Public License for more details.
+
+        You should have received a copy of the GNU Lesser General Public
+        License along with this library; if not, write to the Free Software
+        Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+      AES code license
+      ----------------
+    
+        Copyright (c) 2001, Dr Brian Gladman
+
+        LICENSE TERMS
+
+        The free distribution and use of this software in both source and binary 
+        form is allowed (with or without changes) provided that:
+
+          1. distributions of this source code include the above copyright 
+             notice, this list of conditions and the following disclaimer;
+
+          2. distributions in binary form include the above copyright
+             notice, this list of conditions and the following disclaimer
+             in the documentation and/or other associated materials;
+
+          3. the copyright holder's name is not used to endorse products 
+             built using this software without specific written permission. 
+
+        DISCLAIMER
+
+        This software is provided 'as is' with no explicit or implied warranties
+        in respect of its properties, including, but not limited to, correctness 
+        and fitness for purpose.
+
Index: /branches/rk-oran/shared/7za/readme.txt
===================================================================
--- /branches/rk-oran/shared/7za/readme.txt	(revision 18906)
+++ /branches/rk-oran/shared/7za/readme.txt	(revision 18906)
@@ -0,0 +1,42 @@
+7-Zip Command line version 4.60
+-------------------------------
+
+7-Zip is a file archiver with high compression ratio.
+7za.exe is a standalone command line version of 7-Zip.
+
+7-Zip Copyright (C) 1999-2008 Igor Pavlov.
+
+Features of 7za.exe: 
+  - High compression ratio in new 7z format
+  - Supported formats:
+      - Packing / unpacking: 7z, ZIP, GZIP, BZIP2 and TAR 
+      - Unpacking only: Z
+  - Highest compression ratio for ZIP and GZIP formats.
+  - Fast compression and decompression
+  - Strong AES-256 encryption in 7z and ZIP formats.
+
+7za.exe is a free software distributed under the GNU LGPL + BSD LICENSE for AES part.
+Read license.txt for more information.
+
+Source code of 7za.exe and 7-Zip can be found at
+http://www.7-zip.org/
+
+7za.exe can work in Windows 95/98/ME/NT/2000/XP/2003/Vista.
+
+There is also port of 7za.exe for POSIX systems like Unix (Linux, Solaris, OpenBSD, 
+FreeBSD, Cygwin, AIX, ...), MacOS X and BeOS:
+
+http://p7zip.sourceforge.net/
+
+
+  This distributive packet contains the following files:
+
+  7za.exe       - 7-Zip standalone command line version.
+  readme.txt    - This file.
+  copying.txt   - GNU LGPL license.
+  license.txt   - License information.
+  7-zip.chm     - User's Manual in HTML Help format.
+
+
+---
+End of document
Index: /branches/rk-oran/shared/ant-installer/.directory
===================================================================
--- /branches/rk-oran/shared/ant-installer/.directory	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/.directory	(revision 18906)
@@ -0,0 +1,2 @@
+[Desktop Entry]
+Icon=/research/oranfry/programs/ant-installer/antinstaller-icon.png
Index: /branches/rk-oran/shared/ant-installer/CHANGELOG.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/CHANGELOG.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/CHANGELOG.txt	(revision 18906)
@@ -0,0 +1,217 @@
+CHANGELOG
+
+
+========================================
+version 0.2
+Fixed a bug with the ordering of targets.
+Added app-root element.
+Hid the passwords and added a new properties file renderer with more verbose output.
+Fiddled with windoze script. (help wanted its not good scripting)
+
+========================================
+version 0.3
+Introduced fixed basedir for build.xml files to remove dependency on current
+	directory.
+Introduced SelfExtractor code to deliver installers as a single Jar file.
+Fixed some intermittent bugs in the sysout.jar library.
+Improved feedback of running Ant tasks.
+Added different default values for windows and Unix for directories and files.
+Added an ifTarget attribute to conditionally show installation pages.
+Added a Date input type.
+
+========================================
+version 0.4
+Fixed un-important error in the install-config.xml for the demo application.
+Fixed more bugs in sysout.jar related to reusing the graphics buffer.
+Added popup to save/clear in the sysout.jar.
+Fixed double printing in sysout.jar.
+Added corner button to sysout.jar to jump to final message.
+UI improvements including focusing correct buttons and better layouts.
+Changes to the way Properties are saved internally in preparation for allowing 
+	${prop.name} syntax in future versions.
+
+========================================
+version 0.5
+Fixed an introduced bug when an input page is skipped in text mode.
+Added paging to the license page in text mode.
+Fixed bug printing passwords to properties file.
+Big internal changes to the way properties are stored and referenced 
+	to allow ${refs}.
+Other internal changes to the name of InputFields that do not actually 
+	collect input to OutputField.
+Allow the use of .. in file and directory references and display the 
+	correct absolute path reference.
+
+========================================
+version 0.6
+The XML DTD should be upgraded to 0.6 to use some new features.
+Added a modified version of JGoodies' (excelent) Look And Feel to reduce 
+	the size of the installers and include and option for anti-aliased fonts 
+	in the swing GUI. 
+	- Anti-aliasing is resource intensive but good looking.
+	- The package name has been changed to maintain compatibility on the classpath
+	  with the original JGoodies files, the new package is org.tp23.jgoodies.
+Added a splash page feature to show an image.
+Added an (optional) image to the extract progress window.
+Added a new input type large-select for drop down lists.
+Fixed errors from targets on the first page in the Swing UI. 
+Fixed errors if defaultValue is null. (however it should not be set to null)
+Fixed a bug in the selfextractor when the jar is saved in a path with spaces 
+	or other non text characters.
+Added documents about the scrolling in license page.
+Removed images from the default build of antinstaller.jar 
+	- Any existing builds that are to be upgraded and use the default images, 
+	  should add the images to the classpath. The images are included in the 
+	  download in the /images directory.
+The online manual has been updated, all the changes are included in the download.
+Added some of the new features to the examples and the AnInstaller installer.
+
+========================================
+version 0.7
+File and Directory choosers will now show hidden files .
+	Thanks to Markus Dueringer for the tip.
+Environment variables can now be accesses in default values with the 
+	${env.ProgramFiles} syntax. - thanks again to Markus Dueringer
+Also the Java system properties can be accessed with the "java." prefix. 
+	- e.g ${java.user.name}
+Show details button was not big enough in some LAFs - thanks to Mike Watts.
+There are known issues with the directory selector and the Metouia LAF, 
+	I can't replicate the issues but if you have problems.
+	a) use the modified JGoodies which apparently does not have this problem.
+	b) keep the stack traces and report them please!
+	When using the selfextractor from windows or X users will probably not 
+	see the errors anyway.
+Better defaulting is included for the Directory chooser	<page
+			 type="text"
+			 name="intro.1"
+			 displayText="HTML page"
+			 htmlResource="/resources/text.html"
+			 textResource="/resources/text.txt"
+			 overflow="true" />
+	the home directory will be shown less often, it was particularly annoying 
+	when the chooser is used to create a new directory
+
+========================================
+version 0.7.1
+Bug fix in Defaulting Directory Chooser that manifested in not being able to see 
+	directories in app-root.
+RFE-1154368 Can't install from a read only source fixed.
+	The log file is written to the temp dir if it cannot write to the current dir.
+	The ant.install.properties file is only written if it can be since it is 
+	primarily for debug.
+	- There is no requirement to add <property file="ant.install.properties"/> 
+	  to the build file any more properties will be added directly to the 
+	  build as with secret properties.
+
+========================================
+version 0.7.2
+Changed the implementation of the Progress Details so selecting text is now possible.
+	This is more stable too. It has the side effect of keeping the whole System.out 
+	and System.err in memory which is only an issue for veeerrry long builds on 
+	machines with too little RAM.
+Changed minor bug where directly edited (not via the chooser) file inputs were 
+	replaced with defaults if the user when back.
+Added TargetSelectInput by Mark Anderson providing the option of radio buttons 
+	for targets instead of checkboxes.
+Fixed an introduced bug launching from the root drive when ANT_HOME was not set.
+Introduced a new "NonExtractor" this is a replacement mechanism to the SelfExtractor.
+	The Jar is still used to run the installer but the files are not extracted 
+	by default. 
+	In the build.xml files should be specifically extracted using  unzip with 
+	nested patternsets to specify the files to extract.
+	This provide opportunities to improve the performance of installers.
+	Unzipping can now be performed directly into the installation directories rather 
+	than unzipping and then copying or moving.
+	Also the antinstaller classes and LookAndFeel and Xerces need no longer 
+	be extracted.
+Added an new feature to the ifProperty attribute so the property being tested can 
+	come from the environment or the java system properties.
+	for example ifProperty="${env.SHELL}=/bin/bash thanks to Eddyrun.
+	The old syntax of property=value is deprecated in favour of ${property}=value
+	N.B.  ${property}=${value} is NOT supported.
+Big internal changes to the Execution class to use a filter pattern currently 
+	hardcoded but with intent to allow pluggable pre and post install tasks.
+
+========================================
+version 0.7.3
+Added overflow="true" to simple input page.
+GridBag Layout used instead of absolute positioning modified to support overflow size
+	difference.
+More Images and Icons added to a separate download.
+Added GUI tools for Quick start.
+A Much more flexible ifProperty syntax supporting some standard operator with non 
+standard syntax (see the docs).
+Fixed a fatal introduced bug in the console version installer
+
+========================================
+version 0.7.4
+Added an optional feature to hide password on the console. set textMask="true".
+	N.B.  this does not work in eclipse's console and may not be a stable solution
+Implemented plugable filter chains to add steps to the install process.
+	An example releaseNotes plugin is provided.
+Added ext-validated type for pluggable field validation as yet unteset 
+	and undocumented.
+Added an Ant task to build installers using Ant.
+Added a modified version of the MetalLookAndFeel to reduce download size and still 
+	be able to get the required amount of text in labels and buttons.
+Added LookAndFeel names : "default"|"jgoodies", "greymetal" or "null" .
+Further testing to allow downloads without including xercesImpl.jar or xml-apis.jar
+Added progress pane enhancements to show the targets running for visual feedback of 
+	install progress without having to monitor the output logs which can be 
+	ugly/confusing.
+XMLValiation of test scripts and minor changes in the DTD.
+Extended validation of config and integrated validation into the installer Ant task.
+N.B. passing command line parameters to the build is an override of the detection 
+	method, start scripts should be modified if the default behaviour is requried.
+	e.g. java -cp $CP org.tp23.antinstaller.runtime.ExecInstaller default . 
+	will not override the default behaviour or trying X and falling back 
+	to text/console
+Added an untested feature for including arbitrary validation classes ExtValidated
+Assorted fixes for i18n.
+app-root no longer creates the directory if it is missing.
+
+========================================
+version 0.8
+Added features to load defaults from previous installs and perform almost silent 
+	installs property names and targets must not end with the string -targets, 
+	this is validated in the config checker.
+Comments expand property values.
+Multiline comments via use of explanatoryText and a null displayText value.
+Fixed a display bug in the progress renderer if there were more than 5 
+	targets and none that were dependencies.
+PropertyLoaderFilter added, any users with custom .fconfig files should 
+	ensure thier custom versions are still compatible.
+Added a release notes feature that is a tad tricky to install so 
+	contact for details.
+Added HTML page feature that allows using the Java HTML rendering to display 
+	a page of HTML property references are expanded so the page can contain 
+	${property.name} syntax to give feed back of selected properties.
+	Images are loaded from the classpath so the following syntax will locate 
+	and display an image &lt;img src="/resources/temazo.png"&gt;.
+	Java HTML rendering is poor at best and only html3.2 ,
+	so dont expect firefox quality rendering ;)
+	The java renderer handles PNG properly though so nice .
+	trancparency effects can be achieved.
+Fixed bug in validation if only target-selects are used.
+Extended i18n for antinstall-config.xml files using ResourceBundles 
+	called LanguagePack
+GUI tool for creating LanguagePack files.
+Changes to the Expression code for ifProperty attributes
+	The original syntax is not 100% compatible e.g.  my.property=value1
+	will not work it should be converted to ${my.property}=value1.
+Initial work on loading existing values if found to automate installs.
+	Not quite silent installs but save repeating entries.
+Added ability to stretch the GUI horizontally, but still using fixed widths.
+	Set the wide attribute in the installer element to configure width 
+	e.g. 600:275
+Added the ability to deliver different install types in the same Jar which 
+	can be selected on the command line with -type [install type].
+Added icons to the buttons in the swing GUI,  the installer Ant task now takes 
+	a new attribute called icons to specify which icon pack to use.
+Added ability to run special Ant tasks mid build, the same build-xml file is used
+	but the message rendering and logging is different in the antinstaller- tasks
+Added icons for kde and windows to the AntInstaller SelfExtractor, lots of Ant 
+	hacking to avoid extra dependencies.
+Migrated classes from sysout.jar into the core src packages
+Renamed ant-ext.jar to ant-installer-ext.jar  
+	all build files will need to be updated
Index: /branches/rk-oran/shared/ant-installer/build/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/build/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/build/build.xml	(revision 18906)
@@ -0,0 +1,156 @@
+<?xml version="1.0"?>
+<!--
+This is a normal Ant build file to build the release for sourceforge
+-->
+<project name="Installation Build"  default="build"  basedir="..">
+
+    <!-- Project properties -->
+    <property name="prepareDir"  value="artifacts/prepare"/>
+	<property name="antlib"	value="antlib"/>
+
+
+    <!-- Classpaths - start -->
+	<!-- Classpaths for compilation - start -->
+
+    <path id="project.cp">
+        <fileset dir="${antlib}" includes="ant.jar,ant-launcher.jar"/>
+    </path>
+    <path id="project.ext.cp">
+        <fileset dir="lib">
+			<include name="ant-installer.jar"/>
+        </fileset>
+        <fileset dir="${antlib}" includes="ant.jar,ant-launcher.jar"/>
+    </path>
+	<!-- Classpaths for compilation - end -->
+
+    <path id="taskdef.cp">
+      <fileset dir="./lib">
+        <include name="ant-installer-ext.jar"/>
+        <include name="ant-installer.jar"/>
+      </fileset>
+    </path>
+    <!-- Classpaths - end -->
+	
+
+    <!-- Task definitions - start -->
+    <!-- AntInstaller installer task definition.
+         Defined within target as it depends upon files that aren't
+         available at the start of a clean build -->
+    <target name="_set-installer-taskdef" unless="installer.taskdef.defined">
+        <taskdef
+            name="installer"
+            classname="org.tp23.antinstaller.taskdefs.Installer"
+            classpathref="taskdef.cp"/>
+        <property name="installer.taskdef.defined" value="true"/>
+    </target>
+    <!-- Task definitions - end -->
+
+
+    <!-- =============================== -->
+    <!-- ==== Public Runnable Targets == -->
+    <!-- =============================== -->
+
+    <target name="clean-build" depends="clean, _build-ai-jars, clean-demo, _build-demo">
+      <!-- this build is pretty much everything other than the installers -->
+    </target>
+
+    <target name="build" depends="_build-ai-jars, _build-demo">
+      <!-- this build should be enough to run the unittests without having to build a release package -->
+    </target>
+
+    <target name="clean" description="Clean out compiled and generated files">
+    	<echo message="*** *** Cleaning artifacts *** *** "/>
+    	<echo message="*** ***"/>
+        <delete dir="${prepareDir}"/>
+    	<delete file="./lib/ant-installer.jar"/>
+    	<delete file="./lib/ant-installer-ext.jar"/>
+    </target>
+
+    <target name="clean-demo" description="Clean out demo files">
+		<ant dir="demo" antfile="build-demo.xml" target="clean">
+			<property name="${installDir}" value="demo"/>
+		</ant>
+    </target>
+
+
+    <!-- =============================== -->
+    <!-- ======= Internal Targets ====== -->
+    <!-- =============================== -->
+
+	<!-- 
+		tests that the following has been run locally
+		This does not need to be run repeatedly but unittests depend on it
+		# ant -buildfile demo/build-demo.xml 
+	-->
+    <target name="_check-demo">
+    	<condition property="installpack.missing">
+    		<not>
+    			<available file="demo/artifacts/installpack.zip" type="file"/>
+    		</not>
+    	</condition>
+    </target>
+	
+    <target name="_build-demo" if="installpack.missing" depends="_check-demo">
+    	<echo message="requires demo build: ${installpack.missing}"/>
+		<ant dir="demo" antfile="build-demo.xml" target="selfextract">
+			<property name="${installDir}" value="demo"/>
+		</ant>
+    </target>
+
+	
+	<target name="_build-ai-jars" depends="_ant-installer.jar, _ant-installer-ext.jar">
+        <!-- AntInstaller JARs are built in ./lib-->
+        <!-- (checked-in) JARs should not be used -->
+    </target>
+
+    <target name="_ant-installer.jar">
+        <echo message="*** *** Building ant-installer.jar *** *** "/>
+    	<echo message="*** ***"/>
+        <echo message="Initing the build directory - ${prepareDir}"/>
+        <mkdir dir="${prepareDir}/classes"/>
+
+        <echo message="*** Building ant-installer.jar ***"/>
+        <mkdir dir="./lib"/>
+        <javac destdir="${prepareDir}/classes" srcdir="src" classpathref="project.cp" debug="true"/>
+        <jar file="./lib/ant-installer.jar" whenempty="fail">
+            <fileset dir="./src/resources">
+                <include name="LICENSE-ant-install.txt"/>
+            </fileset>
+            <fileset dir="${prepareDir}/classes"/>
+            <fileset dir="./src">
+                <include name="**/*.dtd"/>
+                <include name="**/*.properties"/>
+                <include name="**/*.fconfig"/>
+                <include name="resources/extract-image.png"/>
+                <include name="resources/gkmain_inv.png"/>
+                <include name="resources/antbar.png"/>
+            </fileset>
+            <manifest>
+                <attribute name="AntInstaller-Version" value="${ant.install.version}"/>
+            </manifest>
+        </jar>
+    </target>
+
+	<target name="_ant-installer-ext.jar">
+		<echo message="*** *** Building ant-installer-ext.jar *** *** "/>
+    	<echo message="*** ***"/>
+        <mkdir dir="${prepareDir}/classes_ext"/>
+        <javac destdir="${prepareDir}/classes_ext" srcdir="src_ext" classpathref="project.ext.cp" debug="true"/>
+		<jar file="./lib/ant-installer-ext.jar" whenempty="fail">
+            <fileset dir="./src/resources">
+                <include name="LICENSE-ant-install.txt"/>
+            </fileset>
+            <fileset dir="${prepareDir}/classes_ext"/>
+            <manifest>
+                <attribute name="AntInstaller-Version" value="${ant.install.version}"/>
+            </manifest>
+        </jar>
+    </target>	
+
+	<target name="setEn"></target>
+	<target name="setFr"></target>
+	<target name="setEs"></target>
+	<target name="setRu"></target>
+
+	
+</project>
Index: /branches/rk-oran/shared/ant-installer/demo/DEMO-README.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/DEMO-README.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/DEMO-README.txt	(revision 18906)
@@ -0,0 +1,13 @@
+This Demo is a very simple example of what AntInstaller and Ant can do
+
+The installer performs the following tasks
+extracts an installpack.zip pack of files to a temporary directory
+install the selected components in the directory of the users choice
+performs an ant replace operation on the config file in {installDir}/config/example-config.xml
+deletes the temporary direcotry
+
+Clearly this is not a realworld example. 
+
+The replace Ant task is a very usefull operation for installations, and of course the
+full power of ant is at your disposal at the time the installation is performed.  It is probably
+best to be specific about the optional tasks that are included.
Index: /branches/rk-oran/shared/ant-installer/demo/README.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/README.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/README.txt	(revision 18906)
@@ -0,0 +1,1 @@
+This is an example readme file 
Index: /branches/rk-oran/shared/ant-installer/demo/ant.install.log
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/ant.install.log	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/ant.install.log	(revision 18906)
@@ -0,0 +1,4 @@
+Logger initialized
+Ant basedir:/research/oranfry/programs/ant-installer/demo
+Filter: org.tp23.antinstaller.runtime.exe.LoadConfigFilter
+Installation error: Not able to load and read the AntInstaller config: class org.tp23.antinstaller.InstallException
Index: /branches/rk-oran/shared/ant-installer/demo/bin/run.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/bin/run.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/bin/run.cmd	(revision 18906)
@@ -0,0 +1,19 @@
+@echo off
+
+if "%JAVA_HOME%" == "" goto nojava
+
+set CLASSPATH=.\classes
+
+echo CLASSPATH:%CLASSPATH%
+echo JAVA_HOME:%JAVA_HOME%
+
+%JAVA_HOME%\bin\java -cp %CLASSPATH% org.tp23.demo.Demonstration
+
+goto end
+ 
+:nojava
+echo Set JAVA_HOME environment variable
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/demo/bin/run.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/bin/run.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/bin/run.sh	(revision 18906)
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+if [ "$JAVA_HOME" = "" ] ; then
+	echo set JAVA_HOME;
+	exit 1;
+fi
+
+# find the command called's root  e.g.  ./build/
+dir=`expr  match "$0" '\(.*\)run.sh'`
+echo command called $0 directory 
+
+#  if it we did not call ./  change to the directory we called 
+if [ "$dir" != "./" ] ; then
+        if [ "$dir" != "" ] ;  then
+								echo changing to $dir
+                cd "$dir" ;
+        fi
+fi
+CLASSPATH=$CLASSPATH:./classes
+
+echo $CLASSPATH
+echo $JAVA_HOME
+
+$JAVA_HOME/bin/java -cp $CLASSPATH org.tp23.demo.Demonstration
+
+ 
Index: /branches/rk-oran/shared/ant-installer/demo/build-demo.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/build-demo.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/build-demo.xml	(revision 18906)
@@ -0,0 +1,103 @@
+<?xml version="1.0"?>
+<!--
+
+This Ant script is used to package parts of the demo app to create an installer
+
+the selfextract target shows an example of creating a self extracting jar for the demo app
+
+run with ...
+
+ant -buildfile build-demo.xml
+
+-->
+<project name="Create Demo Installer Zip Build"  default="selfextract"  basedir=".">
+
+    <!-- Default location in installed tree -->
+    <property name="installDir" location=".."/>
+	<!-- This file should either not exist or contain a property that points to a valid ./antlib${ant.lib.version} directory -->
+	<property file="${installDir}/build/version.properties"/>
+
+    <path id="taskdef.cp">
+	  <fileset dir="${installDir}/lib">
+        <include name="ant-installer-ext.jar"/>
+        <include name="ant-installer.jar"/>
+      </fileset>
+	</path>
+	
+	<target name="_set-version" if="antlib.missing" depends="_check-version">
+		<property name="ant.lib.version" value=""/>
+	</target>
+	<target name="_check-version">
+		<condition property="antlib.missing">
+			<not><available file="${installDir}/antlib${ant.lib.version}"/></not>
+		</condition>
+	</target>
+	<target name="selfextract" depends="_set-version, build-resources">
+		<echo message="*** *** Building demo-installer.jar *** *** "/>
+    	<echo message="*** ***"/>
+		<taskdef 
+			name="installer" 
+			classname="org.tp23.antinstaller.taskdefs.Installer"
+			classpathref="taskdef.cp"/>
+        <installer file="${installDir}/demo/artifacts/demo-installer.jar" compress="true"
+				extractType="SelfExtractor"
+				installConfig="installer/antinstall-config.xml"
+				buildFile="installer/build.xml"
+				antInstallLib="${installDir}/lib"
+				antLib="${installDir}/antlib${ant.lib.version}"
+				validateConfig="true"
+				failOnError="true"
+				icons="eclipse">
+			<fileset dir="${installDir}/demo/artifacts" includes="installpack.zip"/>
+			<fileset dir="installclasspath" includes="resources/*"/>
+		</installer>
+		<!-- old build jar  file="./selfextractpack.jar" compress="true">
+			<manifest>
+				<attribute name="Manifest-Version" value="1.0"/>
+				<attribute name="Main-Class" value="org.tp23.antinstaller.selfextract.SelfExtractor"/>
+				<attribute name="Look-And-Feel" value="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"/>
+			</manifest>
+			<fileset dir="selfextract">
+				<include name="**/*"/>
+			</fileset>
+			<zipgroupfileset dir="installlib" includes="*.jar"/>
+		</jar-->
+	</target>
+
+	<target name="clean">
+		<echo message="*** *** Cleaning demo artifacts *** *** "/>
+    	<echo message="*** ***"/>
+		<delete dir="${installDir}/demo/classes" failonerror="false"/>
+		<delete file="${installDir}/demo/artifacts/installpack.zip" failonerror="false"/>
+		<delete file="${installDir}/demo/artifacts/demo-installer.jar" failonerror="false"/>
+	</target>
+
+	<target name="build-resources">
+		<echo message="*** *** Creating demo resources ZIP *** *** "/>
+    	<echo message="*** ***"/>
+		<mkdir dir="${installDir}/demo/classes"/>
+		<javac destdir="${installDir}/demo/classes" srcdir="src"/>
+		<copy 
+			file="src/resources/demo.png" 
+			tofile="${installDir}/demo/classes/resources/demo.png" 
+			overwrite="true"/>
+		<mkdir dir="${installDir}/demo/artifacts"/>
+		<delete file="${installDir}/demo/artifacts/installpack.zip" failonerror="false"/>
+		<mkdir dir="${installDir}/demo/artifacts"/>
+		<zip  file="${installDir}/demo/artifacts/installpack.zip">
+			<zipfileset dir="." defaultexcludes="true">
+				<include name="bin/**/*"/>
+				<include name="classes/**/*"/>
+				<include name="config/**/*"/>
+				<include name="doc/**/*"/>
+				<include name="src/**/*"/>
+				<include name="README.txt"/>
+				<include name="DEMO-README.txt"/>
+			</zipfileset>
+			<zipfileset dir="${installDir}/demo" defaultexcludes="true">
+				<include name="classes/**/*"/>
+			</zipfileset>
+		</zip>
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/demo/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/checkConfig.sh	(revision 18906)
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# This script check the configuration in the scripts directory
+
+# find the command called's root  e.g.  ./build/
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      echo changing to $dir
+      cd "$dir" ;
+   fi
+fi
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=./installlib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:./installlib/xml-apis.jar
+CLASSPATH=$CLASSPATH:./installlib/ant-installer.jar
+CLASSPATH=$CLASSPATH:./installlib/ant-installer-ext.jar
+CLASSPATH=$CLASSPATH:./antlib/ant.jar
+CLASSPATH=$CLASSPATH:./antlib/ant-launcher.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
Index: /branches/rk-oran/shared/ant-installer/demo/config/demo.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/config/demo.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/config/demo.properties	(revision 18906)
@@ -0,0 +1,7 @@
+#
+# Installtion properties
+# 
+TextProperty=@TextProperty@
+BooleanProperty=@BooleanProperty@
+Colour=@Colour@
+SelectedFile=@SelectedFile@
Index: /branches/rk-oran/shared/ant-installer/demo/config/example-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/config/example-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/config/example-config.xml	(revision 18906)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<configuration>
+	<static-property value="Made by AntInstaller, by TP23"/> 
+	<dynamic-colour-property value="@Colour@"/> 
+	<dynamic-selectedfile-property value="@SelectedFile@"/> 
+	<dynamic-boolean-property value="@BooleanProperty@"/> 
+	<dynamic-text-property value="@TextProperty@"/> 
+</configuration>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/allclasses-frame.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/allclasses-frame.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/allclasses-frame.html	(revision 18906)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+All Classes
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="org/tp23/demo/Demonstration.html" title="class in org.tp23.demo" target="classFrame">Demonstration</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/allclasses-noframe.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/allclasses-noframe.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/allclasses-noframe.html	(revision 18906)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+All Classes
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="org/tp23/demo/Demonstration.html" title="class in org.tp23.demo">Demonstration</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/constant-values.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/constant-values.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/constant-values.html	(revision 18906)
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+Constant Field Values
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Constant Field Values";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="org/tp23/demo/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+Constant Field Values</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+<B>Contents</B><UL>
+</UL>
+
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="org/tp23/demo/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/deprecated-list.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/deprecated-list.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/deprecated-list.html	(revision 18906)
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+Deprecated List
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Deprecated List";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="org/tp23/demo/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Deprecated API</B></H2>
+</CENTER>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="org/tp23/demo/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/help-doc.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/help-doc.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/help-doc.html	(revision 18906)
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:54 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+API Help
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="API Help";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="org/tp23/demo/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+How This API Document Is Organized</H1>
+</CENTER>
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
+Package</H3>
+<BLOCKQUOTE>
+
+<P>
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:<UL>
+<LI>Interfaces (italic)<LI>Classes<LI>Exceptions<LI>Errors</UL>
+</BLOCKQUOTE>
+<H3>
+Class/Interface</H3>
+<BLOCKQUOTE>
+
+<P>
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:<UL>
+<LI>Class inheritance diagram<LI>Direct Subclasses<LI>All Known Subinterfaces<LI>All Known Implementing Classes<LI>Class/interface declaration<LI>Class/interface description
+<P>
+<LI>Nested Class Summary<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
+<P>
+<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</BLOCKQUOTE>
+<H3>
+Tree (Class Hierarchy)</H3>
+<BLOCKQUOTE>
+There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.<UL>
+<LI>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.<LI>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</UL>
+</BLOCKQUOTE>
+<H3>
+Deprecated API</H3>
+<BLOCKQUOTE>
+The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE>
+<H3>
+Index</H3>
+<BLOCKQUOTE>
+The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</BLOCKQUOTE>
+<H3>
+Prev/Next</H3>
+These links take you to the next or previous class, interface, package, or related page.<H3>
+Frames/No Frames</H3>
+These links show and hide the HTML frames.  All pages are available with or without frames.
+<P>
+<H3>
+Serialized Form</H3>
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+<P>
+<FONT SIZE="-1">
+<EM>
+This help file applies to API documentation generated using the standard doclet.</EM>
+</FONT>
+<BR>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="org/tp23/demo/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/index-all.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/index-all.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/index-all.html	(revision 18906)
@@ -0,0 +1,147 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+Index
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Index";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="org/tp23/demo/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<A HREF="#_D_">D</A> <A HREF="#_M_">M</A> <A HREF="#_O_">O</A> <HR>
+<A NAME="_D_"><!-- --></A><H2>
+<B>D</B></H2>
+<DL>
+<DT><A HREF="org/tp23/demo/Demonstration.html" title="class in org.tp23.demo"><B>Demonstration</B></A> - class org.tp23.demo.<A HREF="org/tp23/demo/Demonstration.html" title="class in org.tp23.demo">Demonstration</A>.<DD>Title: Example Application<DT><A HREF="org/tp23/demo/Demonstration.html#Demonstration()"><B>Demonstration()</B></A> - 
+Constructor for class org.tp23.demo.<A HREF="org/tp23/demo/Demonstration.html" title="class in org.tp23.demo">Demonstration</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_M_"><!-- --></A><H2>
+<B>M</B></H2>
+<DL>
+<DT><A HREF="org/tp23/demo/Demonstration.html#main(java.lang.String[])"><B>main(String[])</B></A> - 
+Static method in class org.tp23.demo.<A HREF="org/tp23/demo/Demonstration.html" title="class in org.tp23.demo">Demonstration</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_O_"><!-- --></A><H2>
+<B>O</B></H2>
+<DL>
+<DT><A HREF="org/tp23/demo/package-summary.html"><B>org.tp23.demo</B></A> - package org.tp23.demo<DD>&nbsp;</DL>
+<HR>
+<A HREF="#_D_">D</A> <A HREF="#_M_">M</A> <A HREF="#_O_">O</A> 
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="org/tp23/demo/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/index.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/index.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/index.html	(revision 18906)
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Tue Nov 02 02:03:53 CET 2004-->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+Generated Documentation (Untitled)
+</TITLE>
+</HEAD>
+<FRAMESET cols="20%,80%">
+<FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
+<FRAME src="org/tp23/demo/package-summary.html" name="classFrame" title="Package, class and interface descriptions">
+<NOFRAMES>
+<H2>
+Frame Alert</H2>
+
+<P>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<BR>
+Link to<A HREF="org/tp23/demo/package-summary.html">Non-frame version.</A>
+</NOFRAMES>
+</FRAMESET>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/Demonstration.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/Demonstration.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/Demonstration.html	(revision 18906)
@@ -0,0 +1,263 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+Demonstration
+</TITLE>
+
+<META NAME="keywords" CONTENT="org.tp23.demo.Demonstration class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Demonstration";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Demonstration.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+org.tp23.demo</FONT>
+<BR>
+Class Demonstration</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../resources/inherit.gif" ALT="extended by"><B>org.tp23.demo.Demonstration</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Demonstration</B><DT>extends java.lang.Object</DL>
+
+<P>
+<p>Title: Example Application</p>
+ <p>Description: Prints Hello World, trys to do it in a pop up box
+ if a Throwable is thrown (e.g. no X) it prints to System.out</p>
+ <p>Copyright: Copyright (c) 2004</p>
+ <p>Company: tp23</p>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.0</DD>
+<DT><B>Author:</B></DT>
+  <DD>Paul Hinds</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../org/tp23/demo/Demonstration.html#Demonstration()">Demonstration</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../org/tp23/demo/Demonstration.html#main(java.lang.String[])">main</A></B>(java.lang.String[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Demonstration()"><!-- --></A><H3>
+Demonstration</H3>
+<PRE>
+public <B>Demonstration</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="main(java.lang.String[])"><!-- --></A><H3>
+main</H3>
+<PRE>
+public static void <B>main</B>(java.lang.String[]&nbsp;args)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Demonstration.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-frame.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-frame.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-frame.html	(revision 18906)
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+org.tp23.demo
+</TITLE>
+
+<META NAME="keywords" CONTENT="org.tp23.demo package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../org/tp23/demo/package-summary.html" target="classFrame">org.tp23.demo</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Demonstration.html" title="class in org.tp23.demo" target="classFrame">Demonstration</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-summary.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-summary.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-summary.html	(revision 18906)
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+org.tp23.demo
+</TITLE>
+
+<META NAME="keywords" CONTENT="org.tp23.demo package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="org.tp23.demo";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package org.tp23.demo
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../org/tp23/demo/Demonstration.html" title="class in org.tp23.demo">Demonstration</A></B></TD>
+<TD>Title: Example Application</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-tree.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-tree.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/org/tp23/demo/package-tree.html	(revision 18906)
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+org.tp23.demo Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="org.tp23.demo Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package org.tp23.demo
+</H2>
+</CENTER>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class org.tp23.demo.<A HREF="../../../org/tp23/demo/Demonstration.html" title="class in org.tp23.demo"><B>Demonstration</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/overview-tree.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/overview-tree.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/overview-tree.html	(revision 18906)
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For All Packages</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="org/tp23/demo/package-tree.html">org.tp23.demo</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class org.tp23.demo.<A HREF="org/tp23/demo/Demonstration.html" title="class in org.tp23.demo"><B>Demonstration</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/package-list
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/package-list	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/package-list	(revision 18906)
@@ -0,0 +1,1 @@
+org.tp23.demo
Index: /branches/rk-oran/shared/ant-installer/demo/doc/packages.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/packages.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/packages.html	(revision 18906)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_01) on Tue Nov 02 02:03:53 CET 2004 -->
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<TITLE>
+
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+
+<BR>
+
+<BR>
+
+<BR>
+<CENTER>
+The front page has been relocated.Please see:
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="index.html">Frame version</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="org/tp23/demo/package-summary.html">Non-frame version.</A></CENTER>
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-installer/demo/doc/stylesheet.css
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/doc/stylesheet.css	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/doc/stylesheet.css	(revision 18906)
@@ -0,0 +1,29 @@
+/* Javadoc style sheet */
+
+/* Define colors, fonts and other style attributes here to override the defaults */
+
+/* Page background color */
+body { background-color: #FFFFFF }
+
+/* Headings */
+h1 { font-size: 145% }
+
+/* Table colors */
+.TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
+.TableSubHeadingColor  { background: #EEEEFF } /* Light mauve */
+.TableRowColor         { background: #FFFFFF } /* White */
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif }
+.FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+.FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+
+/* Navigation bar fonts and colors */
+.NavBarCell1    { background-color:#EEEEFF;} /* Light mauve */
+.NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */
+.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
+.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
+
+.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+
Index: /branches/rk-oran/shared/ant-installer/demo/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/install.cmd	(revision 18906)
@@ -0,0 +1,44 @@
+@echo off
+REM #!/bin/sh
+if  "%JAVA_HOME%" == "" goto nojava
+
+setlocal
+
+set AI_LIB=..\lib
+set ANT_LIB=..\antlib
+set CLASSPATH=%AI_LIB%\xercesImpl.jar;%AI_LIB%\xml-apis.jar;%AI_LIB%\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;%AI_LIB%\jgoodies-edited-1_2_2.jar
+set CLASSPATH=%CLASSPATH%;%ANT_LIB%\ant.jar;%ANT_LIB%\ant-launcher.jar
+set CLASSPATH=%CLASSPATH%;.\installclasspath
+
+
+
+REM set CLASSPATH=%CLASSPATH%;.\installlib\ant-weblogic.jar;.\installlib\ant-javamail.jar
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=%JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+start "AntInstaller" "%COMMAND%" -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+endlocal
+:end
Index: /branches/rk-oran/shared/ant-installer/demo/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/install.sh	(revision 18906)
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# find the command called's root  e.g.  ./build/
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      echo changing to $dir
+      cd "$dir" ;
+   fi
+fi
+
+
+
+if [ "$JAVA_HOME" = "" ] ; then
+	echo set JAVA_HOME;
+	exit 1;
+fi
+
+AI_LIB=../lib
+ANT_LIB=../antlib
+CLASSPATH=${AI_LIB}/xercesImpl.jar:${AI_LIB}/xml-apis.jar:${AI_LIB}/ant-installer.jar
+CLASSPATH=$CLASSPATH:${AI_LIB}/jgoodies-edited-1_2_2.jar
+CLASSPATH=$CLASSPATH:${ANT_LIB}/ant.jar:${ANT_LIB}/ant-launcher.jar
+CLASSPATH=$CLASSPATH:./installclasspath
+
+
+### add other ant jars required here and add them to the install package
+#CLASSPATH=$CLASSPATH:./installlib/ant-weblogic.jar:./installlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+INTERFACE=default
+if [ "$1" != "" ] ; then
+	INTERFACE=$1;
+fi
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $INTERFACE .
Index: /branches/rk-oran/shared/ant-installer/demo/installclasspath/resources/GPL.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/installclasspath/resources/GPL.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/installclasspath/resources/GPL.txt	(revision 18906)
@@ -0,0 +1,148 @@
+GNU LESSER GENERAL PUBLIC LICENSE
+Version 2.1, February 1999
+
+Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.]
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
+
+This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.
+
+When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.
+
+To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.
+
+We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.
+
+To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.
+
+Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.
+
+When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.
+
+We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.
+
+For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.
+
+In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.
+
+Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.
+
+The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.
+
+GNU LESSER GENERAL PUBLIC LICENSE
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".
+
+A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
+
+However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
+
+When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
+
+If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
+
+6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
+
+a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)
+
+b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
+
+c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
+
+d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
+
+e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
+
+a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
+
+b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.
+
+11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
Index: /branches/rk-oran/shared/ant-installer/demo/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+<!--
+
+This is an example installer from which you can start a project
+Edit this file to select the properties you want decided, at the end
+of the installation screen the properties will be available in a file
+in the current directory for your ant script
+
+
+lookAndFeel="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel"  - not recommended since it is not linux compatible due to Micro$oft License restrictions
+
+lookAndFeel="net.sourceforge.mlf.metouia.MetouiaLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticLookAndFeel" - good but flat, and cross platform
+-->
+
+<!--
+
+defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources on the classpath
+
+-->
+<installer
+			ui="swing,text"
+			verbose="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the example installer program"
+			imageResource="/resources/greens.png">
+		<comment
+				displayText="This is a demo install"
+				title="true"/>
+		<comment
+				displayText="The application installed is yer typical Hello World"
+				bold="true"/>
+		<comment
+				displayText="There is not much more to be said really."/>
+	</page>
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/GPL.txt"
+			imageResource="/resources/rockstiles.png">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+	</page>
+	<!--  These are some other input types -->
+	<page
+			type="input"
+			name="other-input-types"
+			displayText="Pointless install options">
+		<text
+				property="TextProperty"
+				defaultValue="blah blah"
+				displayText="Enter any text"/>
+		<checkbox
+				property="BooleanProperty"
+				displayText="Make a boolean decision"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="Colour"
+				defaultValue="#FF0000"
+				displayText="Choose the option"
+				explanatoryText="This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<file
+				property="SelectedFile"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\autoexec.bat"
+				displayText="Select a file"
+				checkExists="false"/>
+	</page>
+	<!--  page type="progress" shows a progress page with the install button 
+				Its target is set to cleanuptarget since it is the last page this target will be run last-->
+	<page
+			type="progress"
+			name="progress"
+			showTargets="true"
+			displayText="Installation progress"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/demo/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/installer/build.xml	(revision 18906)
@@ -0,0 +1,107 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default=""  basedir="${basedir}">
+
+	<!-- this is required to pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+		<echo message="Colour selected [${Colour}]"/>
+		<echo message="Installation Directory [${installDir}]"/>
+		<echo message="Entered Property [${TextProperty}]"/>
+		<echo message="Checkbox Property [${BooleanProperty}]"/>
+		<echo message="File [${SelectedFile}]"/>
+		<!-- this is an exagerated example 
+		  clearly 
+			<unzip src="installpack.zip" dest="${basedir}/temp"/>
+			<replace ...
+			would be sufficient
+		-->
+		<mkdir dir="${basedir}/temp"/>
+		<unzip src="installpack.zip" dest="${basedir}/temp"/>
+		<mkdir dir="${installDir}"/>
+		<mkdir dir="${installDir}/classes"/>
+		<mkdir dir="${installDir}/config"/>
+		<mkdir dir="${installDir}/lib"/>
+		<copy 
+			  file="${basedir}/temp/bin/run.sh"  
+			  tofile="${installDir}/run.sh" 
+			  overwrite="true"/>
+		<copy 
+			  file="${basedir}/temp/bin/run.cmd"  
+			  tofile="${installDir}/run.cmd" 
+			  overwrite="true"/>
+		<chmod file="${installDir}/run.sh" perm="774"/>
+		<copy 
+			  file="${basedir}/temp/README.txt" 
+			  todir="${installDir}" 
+			  overwrite="true"/>
+		<copy 
+			  todir="${installDir}/classes" 
+			  overwrite="true">
+			<fileset dir="${basedir}/temp/classes"/>
+		</copy>
+		<copy 
+			  todir="${installDir}/config" 
+			  overwrite="true">
+			<fileset dir="${basedir}/temp/config"/>
+		</copy>
+		<replace file="${installDir}/config/example-config.xml">
+			<replacefilter token="@TextProperty@"    value="${TextProperty}"/>
+			<replacefilter token="@SelectedFile@"    value="${SelectedFile}"/>
+			<replacefilter token="@Colour@"          value="${Colour}"/>
+			<replacefilter token="@BooleanProperty@" value="${BooleanProperty}"/>
+		</replace>
+		<replace file="${installDir}/config/demo.properties">
+			<replacefilter token="@TextProperty@"    value="${TextProperty}"/>
+			<replacefilter token="@SelectedFile@"    value="${SelectedFile}"/>
+			<replacefilter token="@Colour@"          value="${Colour}"/>
+			<replacefilter token="@BooleanProperty@" value="${BooleanProperty}"/>
+		</replace>
+	</target>
+
+	<target name="tgdoc" depends="">
+		<echo message="Installing documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<copy todir="${installDir}/doc" overwrite="true">
+			<fileset dir="${basedir}/temp/doc"/>
+		</copy>
+	</target>
+
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<copy todir="${installDir}/src" overwrite="true">
+			<fileset dir="${basedir}/temp/src"/>
+		</copy>
+	</target>
+
+	<target name="cleanuptarget" depends="">
+		<delete dir="${basedir}/temp">
+		</delete>
+	</target>
+</project>
Index: /branches/rk-oran/shared/ant-installer/demo/src/org/tp23/demo/Demonstration.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/demo/src/org/tp23/demo/Demonstration.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/demo/src/org/tp23/demo/Demonstration.java	(revision 18906)
@@ -0,0 +1,85 @@
+package org.tp23.demo;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.Properties;
+
+import javax.swing.ImageIcon;
+import javax.swing.JOptionPane;
+import javax.swing.JFrame;
+
+/**
+ *
+ * <p>Title: Example Application</p>
+ * <p>Description: Prints Hello World, trys to do it in a pop up box
+* if a Throwable is thrown (e.g. no X) it prints to System.out</p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version 1.0
+ */
+public class Demonstration {
+	private static ImageIcon icon ;
+	static{
+		try {
+			InputStream in = Demonstration.class.getResourceAsStream("/resources/demo.png");
+			byte[] data = new byte[11437];
+			for (int i = 0; i < data.length; i++) {
+				data[i]=(byte)in.read();
+			}
+			icon = new ImageIcon(data);
+		}
+		catch (IOException e) {
+			e.printStackTrace();
+		}		
+	}
+
+	public static void main(String[] args) {
+		try{
+			JOptionPane.showMessageDialog(null,
+							"Demo Application \n\n" +
+							"Deployed with: "+
+							"http://antinstaller.sourceforge.net \n" +
+							"Built by: "+
+							"http://ant.apache.org \n" +
+							"See also: "+
+							"http://httpfileserver.sourceforge.net \n\n" +
+							"This project is Apache licensed \n\n" +
+							"Properties selected while installing \n\n" +
+							initProps(),
+							"About - Demo App",
+							JOptionPane.INFORMATION_MESSAGE,
+							icon);
+		}catch(Throwable t){
+			System.out.println("Hello World");
+		}
+		System.exit(0);
+	}
+	private static String initProps() {
+		StringBuffer userProperties = new StringBuffer();
+		try {
+			Properties props = new Properties();
+			props.load(new FileInputStream(new File("./config/demo.properties")));
+			Iterator iter = props.keySet().iterator();
+			while(iter.hasNext()){
+				String key = (String)iter.next();
+				userProperties.append(key)
+				.append("=")
+				.append(props.getProperty(key))
+				.append('\n');
+			}
+		}
+		catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}
+		catch (IOException e) {
+			e.printStackTrace();
+		}
+		return userProperties.toString();
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/README.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/README.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/README.txt	(revision 18906)
@@ -0,0 +1,9 @@
+Build Types README
+
+The build type directory is a series of examples and test run using AntInstaller
+
+Various features are tested and are provided here to serve as examples
+
+if the sub-directory contains a directory called "build" an Ant build 
+typically build-demo.xml must be run prior to running the test which will
+create files in the "artifacts" directory
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/buildall.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/buildall.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/buildall.cmd	(revision 18906)
@@ -0,0 +1,41 @@
+@echo off
+
+REM # This script build all the installers
+
+
+echo using JAVA_HOME:%JAVA_HOME%
+
+REM multiple Ant versions cause errors so unset the classpath
+set CLASSPATH=
+
+cd manytargets\build
+echo ':::::::' building manytargets
+call ant
+
+cd ..\..\nonextract\build
+echo ':::::::' building nonextract
+call ant
+
+cd ..\..\nonextract-auto\build
+echo ':::::::' building nonextract-auto
+call ant
+
+cd ..\..\nonextract-jdk1.5\build
+echo ':::::::' building nonextract-jdk1.5
+call ant
+
+cd ..\..\nonextract-type\build
+echo ':::::::' building nonextract-type
+call ant
+
+cd ..\..\releasenotes\build
+echo ':::::::' building releasenotes
+call ant
+
+cd ..\..\selfextract\build
+echo ':::::::' building selfextract
+call ant
+
+cd ..\..
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/buildall.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/buildall.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/buildall.sh	(revision 18906)
@@ -0,0 +1,58 @@
+#!/bin/sh
+####################################################
+#
+# This script builds all the installers
+# Usage: buildall.sh [other_args_to_ant_like_-v]
+#
+####################################################
+
+# Get path
+if (echo "$0" | grep '/' >/dev/null)
+then
+	  # Called-by Prog name includes path
+	  dir=`dirname $0`   # Get filedir from call
+else
+	  dir=`pwd`
+fi
+
+# Ensure absolute path
+if (echo "$dir" | grep '^/' >/dev/null)
+then
+	  # Already an absolute path
+	  :
+else
+	  dir=`pwd`/$dir
+fi
+
+
+echo using JAVA_HOME:$JAVA_HOME
+
+# Iterate over the directories
+for i in `echo *`
+do
+	cd ${dir}
+	INSTALLER_BUILD_DIR=${dir}/${i}/build
+	if [ ! -d ${INSTALLER_BUILD_DIR} ]
+	then
+		continue;
+	fi
+
+	cd ${INSTALLER_BUILD_DIR} || { echo "Unable to change directory to ${INSTALLER_BUILD_DIR}"; exit 10; }
+
+	if [ ! -f build.xml ]
+	then
+		echo "Skipping ${i} as no build.xml file"
+		continue
+	fi
+
+	echo "::::::: building ${i}"
+	ant $*
+	STATUS=$?
+	if [ $STATUS != 0 ]
+	then
+		echo "build of ${i} failed"
+		exit $STATUS
+	fi
+done
+
+exit $STATUS
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,20 @@
+@echo off
+
+ifProperty\checkConfig.cmd
+manytargets\checkConfig.cmd
+nonextract\checkConfig.cmd
+nonextract-auto\checkConfig.cmd
+nonextract-jdk1.5\checkConfig.cmd
+nonextract-type\checkConfig.cmd
+releasenotes\checkConfig.cmd
+script\checkConfig.cmd
+script-auto\checkConfig.cmd
+script-laf\checkConfig.cmd
+script-lang\checkConfig.cmd
+script-no-xerces\checkConfig.cmd
+script-overflow\checkConfig.cmd
+script-post-display\checkConfig.cmd
+script-regex\checkConfig.cmd
+script-type\checkConfig.cmd
+script-wide\checkConfig.cmd
+selfextract\checkConfig.cmd
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/checkConfig.sh	(revision 18906)
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# This script checks all the configurations
+
+cd "$(dirname "$0")"
+
+echo
+echo
+echo STARTING TESTS
+echo please wait...
+echo
+echo
+
+CD=`pwd`
+
+# Iterate over the directories
+for dir in `echo *`
+do
+	if [ -f $CD/$dir/checkConfig.sh ] ; then
+		echo ':::::::' checking $dir 1>> $CD/output
+		$CD/$dir/checkConfig.sh 1>> $CD/output
+		if [ $? != 0 ] ; then
+			echo "$dir failed"
+			exit $? ;
+		fi
+	fi
+done
+
+cd $CD
+cat output
+echo
+echo
+echo
+WARN=`cat output | grep Warning | wc -l`
+if [ "$WARN" -ne "0" ] ; then
+	echo Warnings: $WARN, see above for details
+	cat output | grep Warning
+fi
+
+ERR=`cat output | grep Error | wc -l`
+if [ "$ERR" -ne "0" ] ; then
+        echo Error: $ERR, see above for details
+        cat output | grep Error
+fi
+
+
+rm output
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,277 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="intro"
+			displayText="ifProperty and ifTarget tests">
+		<comment
+				displayText="ifProperty and ifTarget tests"
+				title="true"/>
+	</page>
+	<page
+			type="input"
+			name="color-properties"
+			displayText="Test Color">
+		<select
+				property="test.colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<comment
+				displayText="Green results in next page"
+				title="true"/>
+	</page>
+	<page
+			type="input"
+			name="test.colour.1"
+			displayText="GREEN"
+			ifProperty="${test.colour}==#00FF00">
+		<comment displayText="WEHEY! GREEN" title="true"/>
+	</page>
+	<page
+			type="input"
+			name="test.colour.2"
+			displayText="GREEN"
+			ifProperty="${test.colour}!=#00FF00">
+		<comment displayText="OOOOH NOT GREEN" title="true"/>
+	</page>
+	<page
+			type="input"
+			name="test-select-number"
+			displayText="Test Number">
+		<select
+				property="test.number"
+				defaultValue="1"
+				displayText="Select a Number">
+			<option text="One" value="1"/>
+			<option text="Two" value="2"/>
+			<option text="Three" value="3"/>
+		</select>
+	</page>
+	<page
+			type="input"
+			name="selector.1"
+			displayText="Number += 2"
+			ifProperty="${test.number}+=2"
+			target="runifpagerunornot">
+	</page>
+	<page
+			type="input"
+			name="selector.2"
+			displayText="Number -= 2"
+			ifProperty="${test.number}-=2"
+			postDisplayTarget="antinstaller-setcondprop">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Test Validated Number">
+		<validated
+			property="test.number.validated"
+			displayText="Enter a Double"
+			defaultValue="0.0"
+			regex="[0-9]+\.*[0-9]*"/>
+	</page>
+	<page
+			type="input"
+			name="selector.3"
+			displayText="Number += 23"
+			ifProperty="${test.number.validated}+=23.0">
+	</page>
+	<page
+			type="input"
+			name="selector.4"
+			displayText="Number -= 23"
+			ifProperty="${test.number.validated}-=23.0">
+	</page>
+	
+	<page
+			type="input"
+			name="text.properties"
+			displayText="Test Text">
+		<text
+			property="test.text.startend"
+			displayText="Enter some text"
+			defaultValue="start and end"/>
+	</page>
+	<page
+			type="input"
+			name="selector.5"
+			displayText="Text ^=start (startsWith)"
+			ifProperty="${test.text.startend}^=start">
+	</page>
+	<page
+			type="input"
+			name="selector.6"
+			displayText="Text $=end (endsWith)"
+			ifProperty="${test.text.startend}$=end">
+	</page>
+
+	<page
+			type="input"
+			name="selector.7"
+			displayText="non.existent.property is null"
+			ifProperty="${non.existent.property}==null">
+	</page>
+	<page
+			type="input"
+			name="selector.8"
+			displayText="test.text.startend is NOT null (or blank)"
+			ifProperty="${test.text.startend}!=null">
+	</page>
+	
+	<page
+			type="input"
+			name="selector.9"
+			displayText="Select components to install">
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<large-select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</large-select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+		 	ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.2"
+			displayText="Source code selected">
+		<comment
+				displayText="Source Code Selected"
+				bold="true"/>
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Contributions">
+		<comment
+				displayText="target-select (Tested Via Properies)"
+				bold="true"/>
+		<target-select
+				property="colourtarget"
+				defaultValue="#FF0000"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-red" value="#FF0000"/>
+			<option text="target-green" value="#00FF00"/>
+			<option text="target-blue" value="#0000FF"/>
+		</target-select>
+	</page>
+	<page
+			type="input"
+			name="propcond.1"
+			displayText="Blue Conditional"
+			ifProperty="${colourtarget}=#0000FF">
+			<comment
+				displayText="original syntax no longer valid"
+				explanatoryText="use syntax including $ to denominate variables"
+				bold="false"/>
+			<comment
+				displayText="colourtarget is Blue"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.2"
+			displayText="Red Conditional"
+			ifProperty="${colourtarget}=#FF0000">
+			<comment
+				displayText="preferred syntax"
+				bold="false"/>
+			<comment
+				displayText="This page only shows if colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="envcond"
+			displayText="Environment Conditional"
+			ifProperty="${env.DISPLAY}=:0.0">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="multiplecond"
+			displayText="Multiple Conditions"
+			ifProperty="(${env.DISPLAY}=:0.0) AND (${colourtarget}=#FF0000)">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0 and colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="true"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/build.xml	(revision 18906)
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		
+		<!--
+			this is an example of the "funnies" of property and <target if=""/> 
+		-->
+		<target name="runifpagerunornot" depends="tasksrunifpagerun">
+			<echo message="Independent of ifProperty"/>
+		</target>
+
+		<!--
+			N.B. the property is set if use user passes the page and goes back and
+			changes the property, its too late the property is set
+		-->
+		<target name="antinstaller-setcondprop">
+			<antinstaller-property name="conditional.property" value="true"/>
+			<antinstaller-log message="***************setting property*****************"/>
+			<antinstaller-message message="setting property"/>
+		</target>
+		<target name="tasksrunifpagerun" if="conditional.property">
+			<!-- N.B. the target starts but the tasks are not run -->
+			<echo message="Dependent of ${test.number}-=2 : ${coditional.property}"/>
+		</target>
+
+		<!-- simpler example that works -->
+		<target name="calledanyway" if="coditional.property">
+			<!-- N.B. the target starts but the tasks are not run -->
+			<echo message="Dependent of ${test.number}-=2 : ${coditional.property}"/>
+		</target>
+		
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="#FF0000" depends="">
+		<echo message="TARGET #FF0000 selected"/>
+	</target>
+	<target name="#00FF00" depends="">
+		<echo message="TARGET #00FF00 selected"/>
+	</target>
+	<target name="#0000FF" depends="">
+		<echo message="TARGET #0000FF selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/install.cmd	(revision 18906)
@@ -0,0 +1,59 @@
+@echo off
+REM #!/bin/sh
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+REM # Metouia (default) Look And Feel
+REM set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\metouia.jar
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/ifProperty/installer/install.sh	(revision 18906)
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../src
+# Metouia (default) Look And Feel
+# CLASSPATH=$CLASSPATH:./lib/metouia.jar
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/build/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/build/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/build/build.xml	(revision 18906)
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!--
+
+This Ant script is used to package parts of the demo app to create an installer
+
+the nonextract target shows an example of creating a self extracting jar for the demo app
+
+run with ...
+
+ant -buildfile build-demo.xml
+
+-->
+<project name="Create Demo Installer Zip Build"  default="nonextract"  basedir=".">
+
+    <!-- Default location in installed tree -->
+    <property name="installDir" location="../../../.."/>
+
+    <path id="taskdef.cp">
+        <fileset dir="${installDir}/lib">
+			<include name="ant-installer-ext.jar"/>
+            <include name="ant-installer.jar"/>
+        </fileset>
+	</path>
+
+	<taskdef
+		name="installer"
+		classname="org.tp23.antinstaller.taskdefs.Installer"
+		classpathref="taskdef.cp"/>
+    <property name="demo.dir" value="${installDir}/demo"/>
+
+	<target name="nonextract">
+		<mkdir dir="../artifacts/manytargets"/>
+		<echo message="Building DEMO NON-EXTRACT"/>
+		<installer file="../artifacts/manytargets-installer.jar" compress="true"
+				extractType="NonExtractor"
+				installConfig="../installer/antinstall-config.xml"
+				buildFile="../installer/build.xml"
+				antInstallLib="${installDir}/lib"
+				antLib="${installDir}/antlib"
+				validateConfig="true"
+				failOnError="true"
+				icons="bluecurve">
+			<fileset dir="${demo.dir}/artifacts" includes="installpack.zip"/>
+			<fileset dir="${demo.dir}/installclasspath">
+				<include name="resources/*"/>
+			</fileset>
+		</installer>
+		
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+<!--
+
+This is an example installer from which you can start a project
+Edit this file to select the properties you want decided, at the end
+of the installation screen the properties will be available in a file
+in the current directory for your ant script
+
+
+lookAndFeel="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel"  - not recommended since it is not linux compatible due to Micro$oft License restrictions
+
+lookAndFeel="net.sourceforge.mlf.metouia.MetouiaLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticLookAndFeel" - good but flat, and cross platform
+-->
+
+<!--
+
+defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources on the classpath
+
+-->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<!--  page type="progress" shows a progress page with the install button it is a requirement for the final page-->
+	<page name="input" 
+		  type="input"
+		  displayText="all targets"
+		  overflow="true">
+		<target
+			   target="target1"
+			   displayText="target1"
+			   defaultValue="true"/>
+		<target
+			   target="target2"
+			   displayText="target2"
+			   defaultValue="true"/>
+		<target
+			   target="target3"
+			   displayText="target3"
+			   defaultValue="true"/>
+		<target
+			   target="target4"
+			   displayText="target4"
+			   defaultValue="true"/>
+		<target
+			   target="target5"
+			   displayText="target5"
+			   defaultValue="true"/>
+		<target
+			   target="target6"
+			   displayText="target6"
+			   defaultValue="true"/>
+		<target
+			   target="target7"
+			   displayText="target7"
+			   defaultValue="true"/>
+		<target
+			   target="target8"
+			   displayText="target8"
+			   defaultValue="true"/>
+	</page>
+	<page type="progress" name="progress" displayText="Installation progress" showTargets="true"/>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/manytargets/installer/build.xml	(revision 18906)
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default="default"  basedir="${basedir}">
+
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+		<echo message="default"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target1" depends="">
+		<echo message="target1"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target2" depends="target2a,target2b,target2c">
+		<echo message="target2"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target3" depends="">
+		<echo message="target3"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target2a" depends="">
+		<echo message="target2a"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target2b" depends="">
+		<echo message="target2b"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target2c" depends="">
+		<echo message="target2c"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target4" depends="">
+		<echo message="target4"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target5" depends="">
+		<echo message="target5"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target6" depends="">
+		<echo message="target6"/>
+		<sleep milliseconds="200"/>
+	</target>
+
+	<target name="target7" depends="">
+		<echo message="target7"/>
+		<sleep milliseconds="200"/>
+	</target>
+	
+	<target name="target8" depends="target8a">
+		<echo message="target8"/>
+		<sleep milliseconds="200"/>
+	</target>
+	
+	<target name="target8a" depends="target8aa">
+		<echo message="target8a"/>
+		<sleep milliseconds="200"/>
+	</target>
+	
+	<target name="target8aa" depends="">
+		<echo message="target8aa"/>
+		<sleep milliseconds="200"/>
+	</target>
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/build/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/build/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/build/build.xml	(revision 18906)
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!--
+
+This Ant script is used to package parts of the demo app to create an installer
+
+the nonextract target shows an example of creating a self extracting jar for the demo app
+
+run with ...
+
+ant -buildfile build-demo.xml
+
+-->
+<project name="Create Demo Installer Zip Build"  default="nonextract"  basedir=".">
+
+    <!-- Default location in installed tree -->
+    <property name="installDir" location="../../../.."/>
+
+    <path id="taskdef.cp">
+        <fileset dir="${installDir}/lib">
+			<include name="ant-installer-ext.jar"/>
+            <include name="ant-installer.jar"/>
+        </fileset>
+	</path>
+
+	<taskdef
+		name="installer" 
+		classname="org.tp23.antinstaller.taskdefs.Installer"
+		classpathref="taskdef.cp"/>
+    <property name="demo.dir" value="${installDir}/demo"/>
+
+	<target name="nonextract">
+		<mkdir dir="../artifacts/nonextract"/>
+		<echo message="Building DEMO NON-EXTRACT"/>
+		<installer file="../artifacts/nonextract-auto-installer.jar" compress="true"
+				extractType="NonExtractor"
+				installConfig="../installer/antinstall-config.xml"
+				buildFile="../installer/build.xml"
+				antInstallLib="${installDir}/lib"
+				antLib="${installDir}/antlib"
+				validateConfig="true"
+				failOnError="true"
+				icons="bluecurve">
+			<fileset dir="${demo.dir}/artifacts" includes="installpack.zip"/>
+			<fileset dir="${demo.dir}/installclasspath">
+				<include name="resources/*"/>
+			</fileset>
+		</installer>
+		<copy file="../installer/ant.install.properties" todir="../artifacts" />
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/ant.install.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/ant.install.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/ant.install.properties	(revision 18906)
@@ -0,0 +1,47 @@
+### Ant Installer - properties auto generated on Sat Dec 23 04:43:55 CET 2006
+
+basedir = /home/teknopaul/workspace/AntInstaller/unittest/buildtypes/nonextract-auto/artifacts/.
+ant.install.config.version = 1.0
+
+
+## Properties from Page:intro
+
+## Properties from Page:license
+
+## Properties from Page:properties
+# .DirectoryInput
+installDir = /usr/local/demoapp
+
+## Properties from Page:selector
+# .TargetInput
+default = true
+# .TargetInput
+tgsrc = false
+# .TargetInput
+tgdoc = true
+# Targets selected for page
+selector-targets = default,tgdoc,
+
+## Properties from Page:other-input-types
+# .UnvalidatedTextInput
+myProperty = loaded property
+# .CheckboxInput
+truefalseprop = true
+# .SelectInput
+colour = \#FF0000
+# .TargetSelectInput
+tselect = do-thing-one-tgt
+# .FileInput
+selectedfile = /usr/tomcat/webapps/default/WEB-INF/web.xml
+# Targets selected for page
+other-input-types-targets = do-thing-one-tgt,
+
+## Properties from Page:if target test1
+# Targets selected for page
+if\ target\ test1-targets = page-target-auto,
+
+## Properties from Page:if target test2
+
+## Properties from Page:if target test3
+
+## Properties from Page:progress
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,169 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+<!--
+
+This is an example installer from which you can start a project
+Edit this file to select the properties you want decided, at the end
+of the installation screen the properties will be available in a file
+in the current directory for your ant script
+
+
+lookAndFeel="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel"  - not recommended since it is not linux compatible due to Micro$oft License restrictions
+
+lookAndFeel="net.sourceforge.mlf.metouia.MetouiaLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticLookAndFeel" - good but flat, and cross platform
+-->
+
+<!--
+
+defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources on the classpath
+
+-->
+<installer
+			ui="swing,text,text-auto,swing-auto"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4"
+			loadDefaults="prompt"
+			version="1.5">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the example installer program"
+			imageResource="/resources/greens.png">
+		<comment
+				displayText="This is a demo install"
+				title="true"/>
+		<comment
+				displayText="The application installed is yer typical Hello World"
+				bold="true"/>
+		<comment
+				displayText="There is not much more to be said really."/>
+	</page>
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/GPL.txt"
+			imageResource="/resources/rockstiles.png">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+	</page>
+	<!--  These are some other input types -->
+	<page
+			type="input"
+			name="other-input-types"
+			displayText="Pointless install options"
+			overflow="true">
+		<text
+				property="myProperty"
+				defaultValue="blah blah"
+				displayText="Enter any text"/>
+		<checkbox
+				property="truefalseprop"
+				displayText="Make a boolean decision"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Choose the option"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<target-select
+					 property="tselect"
+					 defaultValue="do-thing-one-tgt"
+					 displayText="Choose the option"
+					 explanatoryText="This field can be used on any input field to render further descriptive text
+					 This field can be used on any input field to render further descriptive text">
+			<option text="Thing one" value="do-thing-one-tgt"/>
+			<option text="Thing two" value="do-thing-two-tgt"/>
+			<option text="Thing three" value="do-thing-three-tgt"/>
+		</target-select>
+		<file
+				 property="selectedfile"
+				 defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				 defaultValueWin="C:\autoexec.bat"
+				 displayText="Select a file"
+				 checkExists="false"/>
+	</page>
+	<page
+				 type="input"
+				 name="if target test1"
+				 displayText="extra display"
+				 ifTarget="do-thing-one-tgt"
+				 target="page-target-auto">
+			<comment
+							displayText="do-thing-ONE-tgt was selected"
+							bold="true"/>
+	</page>
+	<page
+			 type="input"
+			 name="if target test2"
+			 displayText="extra display"
+			 ifTarget="do-thing-two-tgt">
+		<comment
+						displayText="do-thing-TWO-tgt was selected"
+						bold="true"/>
+	</page>
+	<page
+			 type="input"
+			 name="if target test3"
+			 displayText="extra display"
+			 ifTarget="do-thing-three-tgt">
+		<comment
+						displayText="do-thing-THREE-tgt was selected"
+						bold="true"/>
+	</page>
+	<!--  page type="progress" shows a progress page with the install button it is a requirement for the final page-->
+	<page type="progress" name="progress" displayText="Installation progress" showTargets="true"/>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-auto/installer/build.xml	(revision 18906)
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default="default"  basedir="${basedir}">
+
+	<target name="default" depends="">
+	
+		<echo message="IF ANY OF THE FOLLOWING ARE MISSING THERE IS A PROBLEM"/>
+		
+		<echo message="(or you entered blank in an unvalidated field)"/>
+		<echo message="Installation Directory [${installDir}]"/>
+		<echo message="Entered Property [${myProperty}]"/>
+		<echo message="Checkbox Property [${truefalseprop}]"/>
+		<echo message="Colour selected [${colour}]"/>
+		<echo message="File [${selectedfile}]"/>
+		
+		<echo message="Installer JAR:${antinstaller.jar}"/>
+		<mkdir dir="${installDir}"/>
+		<mkdir dir="${installDir}/classes"/>
+		<mkdir dir="${installDir}/config"/>
+		<mkdir dir="${installDir}/lib"/>
+		<echo message="antinstaller.jar = ${antinstaller.jar}"/>
+		<echo message="basedir = ${basedir}"/>
+		<unjar src="${antinstaller.jar}" dest="${basedir}">
+			<patternset>
+					<include name="installpack.zip"/>
+			</patternset>
+		</unjar>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}">
+			<patternset>
+					<include name="**/*"/>
+					<exclude name="doc/*"/>
+					<exclude name="src/*"/>
+			</patternset>
+		</unzip>
+		<copy file="${installDir}/bin/run.sh"  tofile="${installDir}/run.sh"/>
+		<copy file="${installDir}/bin/run.cmd"  tofile="${installDir}/run.cmd"/>
+		<chmod file="${installDir}/run.sh" perm="774">
+		</chmod>
+		<replace file="${installDir}/config/example-config.xml">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@Boolean@" value="${truefalseprop}"/>
+		</replace>
+	</target>
+
+	<target name="tgdoc" depends="">
+		<echo message="Installing documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/doc">
+			<patternset>
+					<include name="doc/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/src">
+			<patternset>
+					<include name="src/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+	<target name="do-thing-one-tgt" depends="">
+		<echo message="Running do-thing-ONE-tgt"/>
+	</target>
+	<target name="do-thing-two-tgt" depends="">
+		<echo message="Running do-thing-TWO-tgt"/>
+	</target>
+	<target name="do-thing-three-tgt" depends="">
+		<echo message="Running do-thing-THREE-tgt"/>
+	</target>
+	
+	<target name="page-target-auto" depends="">
+		<echo message="Running page-target-auto caused by do-thing-one-tgt"/>
+	</target>
+	
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/build/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/build/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/build/build.xml	(revision 18906)
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!--
+
+This Ant script is used to package parts of the demo app to create an installer
+
+the nonextract target shows an example of creating a self extracting jar for the demo app
+
+run with ...
+
+ant -buildfile build-demo.xml
+
+-->
+<project name="Create Demo Installer Zip Build"  default="nonextract"  basedir=".">
+
+    <!-- Default location in installed tree -->
+    <property name="installDir" location="../../../.."/>
+
+    <path id="taskdef.cp">
+        <fileset dir="${installDir}/lib">
+			<include name="ant-installer-ext.jar"/>
+            <include name="ant-installer.jar"/>
+        </fileset>
+	</path>
+
+	<taskdef
+		name="installer" 
+		classname="org.tp23.antinstaller.taskdefs.Installer"
+		classpathref="taskdef.cp"/>
+    <property name="demo.dir" value="${installDir}/demo"/>
+
+	<target name="nonextract">
+		<mkdir dir="../artifacts/nonextract"/>
+		<echo message="Building DEMO NON-EXTRACT"/>
+		<installer file="../artifacts/nonextract-jdk1.5-installer.jar" compress="true"
+				extractType="NonExtractor"
+				installConfig="../installer/antinstall-config.xml"
+				buildFile="../installer/build.xml"
+				antInstallLib="${installDir}/lib"
+				antLib="${installDir}/antlib"
+				validateConfig="true"
+				failOnError="true"
+				icons="bluecurve">
+			<fileset dir="${demo.dir}/artifacts" includes="installpack.zip"/>
+			<fileset dir="${demo.dir}/installclasspath">
+				<include name="resources/*"/>
+			</fileset>
+		</installer>
+		
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,154 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+<!--
+
+This is an example installer from which you can start a project
+Edit this file to select the properties you want decided, at the end
+of the installation screen the properties will be available in a file
+in the current directory for your ant script
+
+
+lookAndFeel="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel"  - not recommended since it is not linux compatible due to Micro$oft License restrictions
+
+lookAndFeel="net.sourceforge.mlf.metouia.MetouiaLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticLookAndFeel" - good but flat, and cross platform
+-->
+
+<!--
+
+defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources on the classpath
+
+-->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the example installer program"
+			imageResource="/resources/greens.png">
+		<comment
+				displayText="This is a demo install"
+				title="true"/>
+		<comment
+				displayText="The application installed is yer typical Hello World"
+				bold="true"/>
+		<comment
+				displayText="There is not much more to be said really."/>
+		<select
+			   property="test-1494105-colour"
+			   defaultValue="#FF0000"
+			   displayText="Choose the option"
+			   explanatoryText="This field can be used on any input field to render further descriptive text
+			   This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+	</page>
+	<page
+		 type="input"
+		 name="test-ver"
+		 displayText="Show Java version if starts with 1.5"
+		 ifProperty="${java.java.version}^=1.5">
+		<comment
+				displayText="Java Version ${java.java.version}"
+				bold="true"/>
+		
+	</page>	
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/GPL.txt"
+			imageResource="/resources/rockstiles.png">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"/>
+		<directory
+				  property="otherInstallDir"
+				  defaultValue="/"
+				  defaultValueWin="${env.ProgramFiles}\demoapp_files"
+				  displayText="Select a file storage directory"
+				  create="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+	</page>
+	<!--  These are some other input types -->
+	<page
+			type="input"
+			name="other-input-types"
+			displayText="Pointless install options">
+		<text
+				property="myProperty"
+				defaultValue="blah blah"
+				displayText="Enter any text"/>
+		<checkbox
+				property="truefalseprop"
+				displayText="Make a boolean decision"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Choose the option"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<file
+				property="selectedfile"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\autoexec.bat"
+				displayText="Select a file"
+				checkExists="false"/>
+	</page>
+	<!--  page type="progress" shows a progress page with the install button it is a requirement for the final page-->
+	<page type="progress" name="progress" displayText="Installation progress" showTargets="true"/>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-jdk1.5/installer/build.xml	(revision 18906)
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default="default"  basedir="${basedir}">
+
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+	
+		<echo message="IF ANY OF THE FOLLOWING ARE MISSING THERE IS A PROBLEM"/>
+		
+		<echo message="(or you entered blank in an unvalidated field)"/>
+		<echo message="Installation Directory [${installDir}]"/>
+		<echo message="Entered Property [${myProperty}]"/>
+		<echo message="Checkbox Property [${truefalseprop}]"/>
+		<echo message="Colour selected [${colour}]"/>
+		<echo message="File [${selectedfile}]"/>
+		
+		<echo message="Installer JAR:${antinstaller.jar}"/>
+		<mkdir dir="${installDir}"/>
+		<mkdir dir="${installDir}/classes"/>
+		<mkdir dir="${installDir}/config"/>
+		<mkdir dir="${installDir}/lib"/>
+		<unjar src="${antinstaller.jar}" dest="${basedir}">
+			<patternset>
+					<include name="installpack.zip"/>
+			</patternset>
+		</unjar>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}">
+			<patternset>
+					<include name="**/*"/>
+					<exclude name="doc/*"/>
+					<exclude name="src/*"/>
+			</patternset>
+		</unzip>
+		<copy file="${installDir}/bin/run.sh"  tofile="${installDir}/run.sh"/>
+		<copy file="${installDir}/bin/run.cmd"  tofile="${installDir}/run.cmd"/>
+		<chmod file="${installDir}/run.sh" perm="774">
+		</chmod>
+		<replace file="${installDir}/config/example-config.xml">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@BooleanProperty@" value="${truefalseprop}"/>
+		</replace>
+	</target>
+
+	<target name="tgdoc" depends="">
+		<echo message="Installing documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/doc">
+			<patternset>
+					<include name="doc/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/src">
+			<patternset>
+					<include name="src/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/README.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/README.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/README.txt	(revision 18906)
@@ -0,0 +1,11 @@
+README
+ÂšÂšÂšÂšÂšÂš
+
+multiple build types embedded in the same installer
+
+this build ban be run with the command line arguments   -type alternative 
+
+e.g 
+
+> java -jar nonextract-type-installer.jar -type alternative
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/build/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/build/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/build/build.xml	(revision 18906)
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!--
+
+This Ant script is used to package parts of the demo app to create an installer
+
+the nonextract target shows an example of creating a self extracting jar for the demo app
+
+run with ...
+
+ant -buildfile build-demo.xml
+
+-->
+<project name="Create Demo Installer Zip Build"  default="nonextract"  basedir=".">
+
+    <!-- Default location in installed tree -->
+    <property name="installDir" location="../../../.."/>
+
+    <path id="taskdef.cp">
+        <fileset dir="${installDir}/lib">
+			<include name="ant-installer-ext.jar"/>
+            <include name="ant-installer.jar"/>
+        </fileset>
+	</path>
+
+	<taskdef
+		name="installer" 
+		classname="org.tp23.antinstaller.taskdefs.Installer"
+		classpathref="taskdef.cp"/>
+    <property name="demo.dir" value="${installDir}/demo"/>
+
+	<target name="nonextract">
+		<mkdir dir="../artifacts/nonextract"/>
+		<echo message="Building DEMO NON-EXTRACT"/>
+		<installer file="../artifacts/nonextract-type-installer.jar" compress="true"
+				extractType="NonExtractor"
+				installConfig="../installer/antinstall-config.xml"
+				buildFile="../installer/build.xml"
+				antInstallLib="${installDir}/lib"
+				antLib="${installDir}/antlib"
+				validateConfig="true"
+				failOnError="true"
+				icons="bluecurve">
+			<fileset dir="${demo.dir}/artifacts" includes="installpack.zip"/>
+			<fileset dir="${demo.dir}/installclasspath">
+				<include name="resources/*"/>
+			</fileset>
+			<fileset dir="../installer">
+				<include name="build-alternative.xml"/>
+				<include name="antinstall-config-alternative.xml"/>
+			</fileset>
+		</installer>
+		
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/antinstall-config-alternative.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/antinstall-config-alternative.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/antinstall-config-alternative.xml	(revision 18906)
@@ -0,0 +1,155 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+<!--
+
+This is an example installer from which you can start a project
+Edit this file to select the properties you want decided, at the end
+of the installation screen the properties will be available in a file
+in the current directory for your ant script
+
+
+lookAndFeel="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel"  - not recommended since it is not linux compatible due to Micro$oft License restrictions
+
+lookAndFeel="net.sourceforge.mlf.metouia.MetouiaLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticLookAndFeel" - good but flat, and cross platform
+-->
+
+<!--
+
+defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources on the classpath
+
+-->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Alternative installer"
+			imageResource="/resources/greens.png">
+		<comment
+				displayText="This is an Alternative install"
+				title="true"/>
+		<comment
+				displayText="The application installed is yer typical Hello World"
+				bold="true"/>
+		<comment
+				displayText="There is not much more to be said really."/>
+		<select
+			   property="test-1494105-colour"
+			   defaultValue="#FF0000"
+			   displayText="Choose the option"
+			   explanatoryText="This field can be used on any input field to render further descriptive text
+			   This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+	</page>
+	<page
+		 type="input"
+		 name="test-1494105"
+		 displayText="test case for bug 1494105"
+		 ifProperty="${test-1494105-colour}==#FF0000">
+		<checkbox
+				 property="truefalseprop-fail"
+				 displayText="Make a boolean decision"
+				 defaultValue="false"
+				 force="false"/>		
+	</page>	
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/GPL.txt"
+			imageResource="/resources/rockstiles.png">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"/>
+		<directory
+				  property="otherInstallDir"
+				  defaultValue="/"
+				  defaultValueWin="${env.ProgramFiles}\demoapp_files"
+				  displayText="Select a file storage directory"
+				  create="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+	</page>
+	<!--  These are some other input types -->
+	<page
+			type="input"
+			name="other-input-types"
+			displayText="Pointless install options">
+		<text
+				property="myProperty"
+				defaultValue="blah blah"
+				displayText="Enter any text"/>
+		<checkbox
+				property="truefalseprop"
+				displayText="Make a boolean decision"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Choose the option"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<file
+				property="selectedfile"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\autoexec.bat"
+				displayText="Select a file"
+				checkExists="false"/>
+	</page>
+	<!--  page type="progress" shows a progress page with the install button it is a requirement for the final page-->
+	<page type="progress" name="progress" displayText="Alternative progress" showTargets="true"/>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,155 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+<!--
+
+This is an example installer from which you can start a project
+Edit this file to select the properties you want decided, at the end
+of the installation screen the properties will be available in a file
+in the current directory for your ant script
+
+
+lookAndFeel="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel"  - not recommended since it is not linux compatible due to Micro$oft License restrictions
+
+lookAndFeel="net.sourceforge.mlf.metouia.MetouiaLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticLookAndFeel" - good but flat, and cross platform
+-->
+
+<!--
+
+defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources on the classpath
+
+-->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the example installer program"
+			imageResource="/resources/greens.png">
+		<comment
+				displayText="This is a demo install"
+				title="true"/>
+		<comment
+				displayText="The application installed is yer typical Hello World"
+				bold="true"/>
+		<comment
+				displayText="There is not much more to be said really."/>
+		<select
+			   property="test-1494105-colour"
+			   defaultValue="#FF0000"
+			   displayText="Choose the option"
+			   explanatoryText="This field can be used on any input field to render further descriptive text
+			   This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+	</page>
+	<page
+		 type="input"
+		 name="test-1494105"
+		 displayText="test case for bug 1494105"
+		 ifProperty="${test-1494105-colour}==#FF0000">
+		<checkbox
+				 property="truefalseprop-fail"
+				 displayText="Make a boolean decision"
+				 defaultValue="false"
+				 force="false"/>		
+	</page>	
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/GPL.txt"
+			imageResource="/resources/rockstiles.png">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"/>
+		<directory
+				  property="otherInstallDir"
+				  defaultValue="/"
+				  defaultValueWin="${env.ProgramFiles}\demoapp_files"
+				  displayText="Select a file storage directory"
+				  create="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+	</page>
+	<!--  These are some other input types -->
+	<page
+			type="input"
+			name="other-input-types"
+			displayText="Pointless install options">
+		<text
+				property="myProperty"
+				defaultValue="blah blah"
+				displayText="Enter any text"/>
+		<checkbox
+				property="truefalseprop"
+				displayText="Make a boolean decision"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Choose the option"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<file
+				property="selectedfile"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\autoexec.bat"
+				displayText="Select a file"
+				checkExists="false"/>
+	</page>
+	<!--  page type="progress" shows a progress page with the install button it is a requirement for the final page-->
+	<page type="progress" name="progress" displayText="Installation progress" showTargets="true"/>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/build-alternative.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/build-alternative.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/build-alternative.xml	(revision 18906)
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default="default"  basedir="${basedir}">
+
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+	
+		<echo message="ALTERNATIVE BUILD"/>
+		
+		<echo message="(or you entered blank in an unvalidated field)"/>
+		<echo message="Installation Directory [${installDir}]"/>
+		<echo message="Entered Property [${myProperty}]"/>
+		<echo message="Checkbox Property [${truefalseprop}]"/>
+		<echo message="Colour selected [${colour}]"/>
+		<echo message="File [${selectedfile}]"/>
+		
+		<echo message="Installer JAR:${antinstaller.jar}"/>
+		<mkdir dir="${installDir}"/>
+		<mkdir dir="${installDir}/classes"/>
+		<mkdir dir="${installDir}/config"/>
+		<mkdir dir="${installDir}/lib"/>
+		<unjar src="${antinstaller.jar}" dest="${basedir}">
+			<patternset>
+					<include name="installpack.zip"/>
+			</patternset>
+		</unjar>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}">
+			<patternset>
+					<include name="**/*"/>
+					<exclude name="doc/*"/>
+					<exclude name="src/*"/>
+			</patternset>
+		</unzip>
+		<copy file="${installDir}/bin/run.sh"  tofile="${installDir}/run.sh"/>
+		<copy file="${installDir}/bin/run.cmd"  tofile="${installDir}/run.cmd"/>
+		<chmod file="${installDir}/run.sh" perm="774">
+		</chmod>
+		<replace file="${installDir}/config/example-config.xml">
+			<replacefilter token="@myProperty@"   value="${myProperty}"/>
+			<replacefilter token="@selectedfile@"     value="${selectedfile}"/>
+			<replacefilter token="@colour@" value="${colour}"/>
+			<replacefilter token="@truefalseprop@" value="${truefalseprop}"/>
+		</replace>
+	</target>
+
+	<target name="tgdoc" depends="">
+		<echo message="Installing documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/doc">
+			<patternset>
+					<include name="doc/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/src">
+			<patternset>
+					<include name="src/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract-type/installer/build.xml	(revision 18906)
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default="default"  basedir="${basedir}">
+
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+	
+		<echo message="IF ANY OF THE FOLLOWING ARE MISSING THERE IS A PROBLEM"/>
+		
+		<echo message="(or you entered blank in an unvalidated field)"/>
+		<echo message="Installation Directory [${installDir}]"/>
+		<echo message="Entered Property [${myProperty}]"/>
+		<echo message="Checkbox Property [${truefalseprop}]"/>
+		<echo message="Colour selected [${colour}]"/>
+		<echo message="File [${selectedfile}]"/>
+		
+		<echo message="Installer JAR:${antinstaller.jar}"/>
+		<mkdir dir="${installDir}"/>
+		<mkdir dir="${installDir}/classes"/>
+		<mkdir dir="${installDir}/config"/>
+		<mkdir dir="${installDir}/lib"/>
+		<unjar src="${antinstaller.jar}" dest="${basedir}">
+			<patternset>
+					<include name="installpack.zip"/>
+			</patternset>
+		</unjar>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}">
+			<patternset>
+					<include name="**/*"/>
+					<exclude name="doc/*"/>
+					<exclude name="src/*"/>
+			</patternset>
+		</unzip>
+		<copy file="${installDir}/bin/run.sh"  tofile="${installDir}/run.sh"/>
+		<copy file="${installDir}/bin/run.cmd"  tofile="${installDir}/run.cmd"/>
+		<chmod file="${installDir}/run.sh" perm="774">
+		</chmod>
+		<replace file="${installDir}/config/example-config.xml">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@BooleanProperty@" value="${truefalseprop}"/>
+		</replace>
+		<replace file="${installDir}/config/demo.properties">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@BooleanProperty@" value="${truefalseprop}"/>
+		</replace>
+	</target>
+
+	<target name="tgdoc" depends="">
+		<echo message="Installing documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/doc">
+			<patternset>
+					<include name="doc/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/src">
+			<patternset>
+					<include name="src/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/build/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/build/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/build/build.xml	(revision 18906)
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!--
+
+This Ant script is used to package parts of the demo app to create an installer
+
+the nonextract target shows an example of creating a self extracting jar for the demo app
+
+run with ...
+
+ant -buildfile build-demo.xml
+
+-->
+<project name="Create Demo Installer Zip Build"  default="nonextract"  basedir=".">
+
+    <!-- Default location in installed tree -->
+    <property name="installDir" location="../../../.."/>
+
+    <path id="taskdef.cp">
+        <fileset dir="${installDir}/lib">
+			<include name="ant-installer-ext.jar"/>
+            <include name="ant-installer.jar"/>
+        </fileset>
+	</path>
+
+	<taskdef
+		name="installer" 
+		classname="org.tp23.antinstaller.taskdefs.Installer"
+		classpathref="taskdef.cp"/>
+    <property name="demo.dir" value="${installDir}/demo"/>
+
+	<target name="nonextract">
+		<mkdir dir="../artifacts/nonextract"/>
+		<echo message="Building DEMO NON-EXTRACT"/>
+		<installer file="../artifacts/nonextract-installer.jar" compress="true"
+				extractType="NonExtractor"
+				installConfig="../installer/antinstall-config.xml"
+				buildFile="../installer/build.xml"
+				antInstallLib="${installDir}/lib"
+				antLib="${installDir}/antlib"
+				validateConfig="true"
+				failOnError="true"
+				icons="bluecurve">
+			<fileset dir="${demo.dir}/artifacts" includes="installpack.zip"/>
+			<fileset dir="${demo.dir}/installclasspath">
+				<include name="resources/*"/>
+			</fileset>
+		</installer>
+		
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,155 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+<!--
+
+This is an example installer from which you can start a project
+Edit this file to select the properties you want decided, at the end
+of the installation screen the properties will be available in a file
+in the current directory for your ant script
+
+
+lookAndFeel="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel"  - not recommended since it is not linux compatible due to Micro$oft License restrictions
+
+lookAndFeel="net.sourceforge.mlf.metouia.MetouiaLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"  - good, and cross platform
+
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticLookAndFeel" - good but flat, and cross platform
+-->
+
+<!--
+
+defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources on the classpath
+
+-->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the example installer program"
+			imageResource="/resources/greens.png">
+		<comment
+				displayText="This is a demo install"
+				title="true"/>
+		<comment
+				displayText="The application installed is yer typical Hello World"
+				bold="true"/>
+		<comment
+				displayText="There is not much more to be said really."/>
+		<select
+			   property="test-1494105-colour"
+			   defaultValue="#FF0000"
+			   displayText="Choose the option"
+			   explanatoryText="This field can be used on any input field to render further descriptive text
+			   This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+	</page>
+	<page
+		 type="input"
+		 name="test-1494105"
+		 displayText="test case for bug 1494105"
+		 ifProperty="${test-1494105-colour}==#FF0000">
+		<checkbox
+				 property="truefalseprop-fail"
+				 displayText="Make a boolean decision"
+				 defaultValue="false"
+				 force="false"/>		
+	</page>	
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/GPL.txt"
+			imageResource="/resources/rockstiles.png">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"/>
+		<directory
+				  property="otherInstallDir"
+				  defaultValue="/"
+				  defaultValueWin="${env.ProgramFiles}\demoapp_files"
+				  displayText="Select a file storage directory"
+				  create="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+	</page>
+	<!--  These are some other input types -->
+	<page
+			type="input"
+			name="other-input-types"
+			displayText="Pointless install options">
+		<text
+				property="myProperty"
+				defaultValue="blah blah"
+				displayText="Enter any text"/>
+		<checkbox
+				property="truefalseprop"
+				displayText="Make a boolean decision"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Choose the option"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<file
+				property="selectedfile"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\autoexec.bat"
+				displayText="Select a file"
+				checkExists="false"/>
+	</page>
+	<!--  page type="progress" shows a progress page with the install button it is a requirement for the final page-->
+	<page type="progress" name="progress" displayText="Installation progress" showTargets="true"/>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/nonextract/installer/build.xml	(revision 18906)
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default="default"  basedir="${basedir}">
+
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+	
+		<echo message="IF ANY OF THE FOLLOWING ARE MISSING THERE IS A PROBLEM"/>
+		
+		<echo message="(or you entered blank in an unvalidated field)"/>
+		<echo message="Installation Directory [${installDir}]"/>
+		<echo message="Entered Property [${myProperty}]"/>
+		<echo message="Checkbox Property [${truefalseprop}]"/>
+		<echo message="Colour selected [${colour}]"/>
+		<echo message="File [${selectedfile}]"/>
+		
+		<echo message="Installer JAR:${antinstaller.jar}"/>
+		<mkdir dir="${installDir}"/>
+		<mkdir dir="${installDir}/classes"/>
+		<mkdir dir="${installDir}/config"/>
+		<mkdir dir="${installDir}/lib"/>
+		<unjar src="${antinstaller.jar}" dest="${basedir}">
+			<patternset>
+					<include name="installpack.zip"/>
+			</patternset>
+		</unjar>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}">
+			<patternset>
+					<include name="**/*"/>
+					<exclude name="doc/*"/>
+					<exclude name="src/*"/>
+			</patternset>
+		</unzip>
+		<copy file="${installDir}/bin/run.sh"  tofile="${installDir}/run.sh"/>
+		<copy file="${installDir}/bin/run.cmd"  tofile="${installDir}/run.cmd"/>
+		<chmod file="${installDir}/run.sh" perm="774">
+		</chmod>
+		<replace file="${installDir}/config/example-config.xml">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@Boolean@" value="${truefalseprop}"/>
+		</replace>
+	</target>
+
+	<target name="tgdoc" depends="">
+		<echo message="Installing documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/doc">
+			<patternset>
+					<include name="doc/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/src">
+			<patternset>
+					<include name="src/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/build/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/build/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/build/build.xml	(revision 18906)
@@ -0,0 +1,120 @@
+<?xml version="1.0"?>
+<!--
+
+This Ant script is used to package parts of the demo app to create an installer
+
+the nonextract target shows an example of creating a self extracting jar for the demo app
+
+run with ...
+
+ant -buildfile build-demo.xml
+
+-->
+<project name="Create Demo Installer for Release Notes Extension"  default="nonextract"  basedir=".">
+
+    <!-- Default location in installed tree -->
+    <property name="installDir" location="../../../.."/>
+
+    <path id="taskdef.cp">
+        <fileset dir="${installDir}/lib">
+			<include name="ant-installer-ext.jar"/>
+            <include name="ant-installer.jar"/>
+        </fileset>
+	</path>
+	
+	<taskdef
+			name="installer" 
+			classname="org.tp23.antinstaller.taskdefs.Installer"
+			classpathref="taskdef.cp"/>
+	<property name="demo.dir" value="${installDir}/demo"/>
+	
+
+
+	<target name="nonextract">
+		<mkdir dir="../artifacts/nonextract"/>
+		<!--unjar dest="./nonextract">
+			<fileset dir="installlib">
+				<include name="*.jar">
+				</include>
+			</fileset>
+		</unjar-->
+		<copy todir="../artifacts/nonextract" overwrite="true">
+			<fileset dir="${demo.dir}/installclasspath">
+				<include name="resources/*"/>
+			</fileset>
+		</copy>
+		<copy todir="../artifacts/nonextract" overwrite="true">
+			<fileset dir="../installer/">
+				<include name="build.xml"/>
+				<include name="antinstall-config.xml"/>
+				<include name="release-notes.txt"/>
+			</fileset>
+			<fileset dir="${demo.dir}/artifacts">
+				<include name="installpack.zip"/>
+			</fileset>
+		</copy>
+		<mkdir dir="../artifacts/nonextract/org/tp23/antinstaller/runtime/exe"/>
+		<copy todir="../artifacts/nonextract/org/tp23/antinstaller/runtime/exe" overwrite="true">
+			<fileset dir="../installer/">
+				<include name="nonextractor.fconfig"/>
+			</fileset>
+		</copy>
+		
+		
+		<echo message="Building DEMO NON-EXTRACT"/>
+		<installer file="../artifacts/releasenotes.jar" compress="true"
+				   extractType="NonExtractor"
+				   installConfig="../installer/antinstall-config.xml"
+				   buildFile="../installer/build.xml"
+				   antInstallLib="${installDir}/lib"
+				   antLib="${installDir}/antlib"
+				   validateConfig="true"
+				   failOnError="true"
+				   icons="bluecurve">
+				   <fileset dir="${demo.dir}" includes="installpack.zip"/>
+			<fileset dir="${demo.dir}/installclasspath">
+				<include name="resources/*"/>
+			</fileset>
+			<zipfileset src="${installDir}/lib/ant-installer-ext.jar"/>
+		</installer>
+		<jar  file="../artifacts/releasenotes.jar" compress="false" update="true">
+			<fileset dir="../artifacts/nonextract">
+				<include name="**/*"/>
+			</fileset>
+		</jar>
+
+		<!--jar  file="../artifacts/nonextractpack.jar" compress="false">
+			<manifest>
+				<attribute name="Manifest-Version" value="1.0"/>
+				<attribute name="Main-Class" value="org.tp23.antinstaller.selfextract.NonExtractor"/>
+			</manifest>
+			<zipfileset src="${installDir}/lib/ant-installer.jar"/>
+			<zipfileset src="${installDir}/lib/ant-installer-ext.jar"/>
+			<zipfileset src="${installDir}/antlib/ant.jar"/>
+			<zipfileset src="${installDir}/antlib/ant-launcher.jar"/>
+		</jar>
+		<jar  file="../artifacts/nonextractpack.jar" compress="false" update="true">
+			<fileset dir="../artifacts/nonextract">
+				<include name="**/*"/>
+			</fileset>
+		</jar-->
+	</target>
+
+
+<!-- N.B.
+this target does nothing in the deployed version
+and exists for preparing the files to deploy to sourceforge
+-->
+	<target name="sfbuild">
+		<zip  file="./installpack.zip">
+			<zipfileset dir=".">
+				<include name="bin/**/*"/>
+				<include name="classes/**/*"/>
+				<include name="config/**/*"/>
+				<include name="doc/**/*"/>
+				<include name="src/**/*"/>
+				<include name="README.txt"/>
+			</zipfileset>
+		</zip>
+	</target>
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,117 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the example installer program"
+			imageResource="/resources/greens.png">
+		<comment
+				displayText="This is a demo install"
+				title="true"/>
+		<comment
+				displayText="The application installed is yer typical Hello World"
+				bold="true"/>
+		<comment
+				displayText="There is not much more to be said really."/>
+	</page>
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/GPL.txt"
+			imageResource="/resources/rockstiles.png">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+	</page>
+	<!--  These are some other input types -->
+	<page
+			type="input"
+			name="other-input-types"
+			displayText="Pointless install options">
+		<text
+				property="myProperty"
+				defaultValue="blah blah"
+				displayText="Enter any text"/>
+		<checkbox
+				property="truefalseprop"
+				displayText="Make a boolean decision"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Choose the option"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<file
+				property="selectedfile"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\autoexec.bat"
+				displayText="Select a file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="release notes"
+			displayText="Release Notes">
+		<comment
+				displayText="After Install Show Release Notes"
+				title="false"/>
+		<checkbox
+				property="show.release.notes"
+				displayText="Show release notes"
+				defaultValue="true"
+				force="false"/>
+	</page>
+	<!--  page type="progress" shows a progress page with the install button it is a requirement for the final page-->
+	<page type="progress" name="progress" displayText="Installation progress" showTargets="false"/>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/build.xml	(revision 18906)
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default=""  basedir="${basedir}">
+
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+	
+		<echo message="IF ANY OF THE FOLLOWING ARE MISSING THERE IS A PROBLEM"/>
+		
+		<echo message="(or you entered blank in an unvalidated field)"/>
+		<echo message="Installation Directory [${installDir}]"/>
+		<echo message="Entered Property [${myProperty}]"/>
+		<echo message="Checkbox Property [${truefalseprop}]"/>
+		<echo message="Colour selected [${colour}]"/>
+		<echo message="File [${selectedfile}]"/>
+		
+		<echo message="Installer JAR:${antinstaller.jar}"/>
+		<mkdir dir="${installDir}"/>
+		<mkdir dir="${installDir}/classes"/>
+		<mkdir dir="${installDir}/config"/>
+		<mkdir dir="${installDir}/lib"/>
+		<unjar src="${antinstaller.jar}" dest="${basedir}">
+			<patternset>
+					<include name="installpack.zip"/>
+			</patternset>
+		</unjar>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}">
+			<patternset>
+					<include name="**/*"/>
+					<exclude name="doc/*"/>
+					<exclude name="src/*"/>
+			</patternset>
+		</unzip>
+		<copy file="${installDir}/bin/run.sh"  tofile="${installDir}/run.sh"/>
+		<copy file="${installDir}/bin/run.cmd"  tofile="${installDir}/run.cmd"/>
+		<chmod file="${installDir}/run.sh" perm="774">
+		</chmod>
+		<replace file="${installDir}/config/example-config.xml">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@BooleanProperty@" value="${truefalseprop}"/>
+		</replace>
+		<replace file="${installDir}/config/demo.properties">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@BooleanProperty@" value="${truefalseprop}"/>
+		</replace>
+	</target>
+
+	<target name="tgdoc" depends="">
+		<echo message="Installing documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/doc">
+			<patternset>
+					<include name="doc/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<unzip src="${basedir}/installpack.zip" dest="${installDir}/src">
+			<patternset>
+					<include name="src/*"/>
+			</patternset>
+		</unzip>
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/nonextractor.fconfig
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/nonextractor.fconfig	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/nonextractor.fconfig	(revision 18906)
@@ -0,0 +1,12 @@
+#
+# Default config for the NonExtractor
+#
+org.tp23.antinstaller.runtime.exe.CreateLoggerFilter
+org.tp23.antinstaller.runtime.exe.InputStreamLoadConfigFilter
+org.tp23.antinstaller.runtime.exe.CreateUIFilter
+org.tp23.antinstaller.runtime.exe.PropertyLoaderFilter
+org.tp23.antinstaller.runtime.exe.ExecuteRunnerFilter
+org.tp23.antinstaller.runtime.exe.PropertyPrinterFilter
+org.tp23.antinstaller.runtime.exe.AntProjectFilter
+org.tp23.antinstaller.runtime.exe.ReleaseNotesFilter
+org.tp23.antinstaller.runtime.exe.FinalizerFilter
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/release-notes.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/release-notes.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/releasenotes/installer/release-notes.txt	(revision 18906)
@@ -0,0 +1,10 @@
+Example release notes 
+
+
+random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text
+ 
+random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text 
+
+random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text 
+
+random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text random text 
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/runall.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/runall.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/runall.cmd	(revision 18906)
@@ -0,0 +1,121 @@
+@echo off
+
+REM # This script checks all the congurations
+
+set DIR=%~dp0
+cd %DIR%
+
+echo using JAVA_HOME:%JAVA_HOME%
+
+cd ifProperty\installer
+echo ':::::::' checking ifProperty
+call .\install.cmd %1
+if not errorlevel = 0 echo "ifProperty failed"
+        
+
+cd ..\..\manytargets\artifacts
+echo ':::::::' checking manytargets
+%JAVA_HOME%\bin\java -jar *.jar %1
+if not errorlevel = 0 echo "manytargets failed"
+        
+
+cd ..\..\nonextract\artifacts
+echo ':::::::' checking nonextract
+%JAVA_HOME%\bin\java -jar *.jar %1
+if not errorlevel = 0 echo "nonextract failed"
+        
+
+cd ..\..\nonextract-auto\artifacts
+echo ':::::::' checking nonextract-auto
+%JAVA_HOME%\bin\java -jar *.jar %1
+if not errorlevel = 0 echo "nonextract-auto failed"
+        
+
+cd ..\..\nonextract-jdk1.5\artifacts
+echo ':::::::' checking nonextract-jdk1.5
+%JAVA_HOME%\bin\java -jar *.jar %1
+if not errorlevel = 0 echo "nonextract-jdk1.5 failed"
+        
+
+cd ..\..\nonextract-type\artifacts
+echo ':::::::' checking nonextract-type
+%JAVA_HOME%\bin\java -jar *.jar %1
+if not errorlevel = 0 echo "nonextract-type failed"
+        
+
+cd ..\..\releasenotes\artifacts
+echo ':::::::' checking releasenotes
+%JAVA_HOME%\bin\java -jar *.jar %1
+if not errorlevel = 0 echo "releasenotes failed"
+        
+
+cd ..\..\script\installer
+echo ':::::::' checking script
+call .\install.cmd %1
+if not errorlevel = 0 echo "script failed"
+        
+
+cd ..\..\script-auto\installer
+echo ':::::::' checking script-auto
+call .\install.cmd %1
+if not errorlevel = 0 echo "script-auto failed"
+        
+
+cd ..\..\script-graphical-pp\installer
+echo ':::::::' checking script-graphical-pp
+call .\install.cmd %1
+if not errorlevel = 0 echo "script-graphical-pp failed"
+        
+
+cd ..\..\script-laf\installer
+echo ':::::::' checking script-laf
+call .\install.cmd %1
+if not errorlevel = 0 echo "script-laf failed"
+        
+
+cd ..\..\script-lang\installer
+echo ':::::::' checking script-lang
+call .\install.cmd %1
+if not errorlevel = 0 echo "script-lang failed"
+        
+
+cd ..\..\script-no-xerces\installer
+echo ':::::::' checking script-no-xerces
+call .\install.cmd %1
+if not errorlevel = 0 echo "script-no-xerces failed"
+        
+
+cd ..\..\script-overflow\installer
+echo ':::::::' checking script-overflow
+call .\install.cmd %1
+if not errorlevel = 0 echo "script-overflow failed"
+        
+
+cd ..\..\script-regex\installer
+echo ':::::::' checking script-regex
+call .\install.cmd %1
+if not errorlevel = 0 echo "script-regex failed"
+        
+
+cd ..\..\script-type\installer
+echo ':::::::' checking script-type
+call .\install-type.cmd %1
+if not errorlevel = 0 echo "script-type failed"
+call .\install-type.cmd %1 -type alternative
+if not errorlevel = 0 echo "script-type failed"
+        
+
+cd ..\..\script-wide\installer
+echo ':::::::' checking script-wide
+call .\install.cmd %1
+if not errorlevel = 0 echo "script-wide failed"
+        
+
+cd ..\..\selfextract\artifacts
+echo ':::::::' checking selfextract
+%JAVA_HOME%\bin\java -jar *.jar %1
+if not errorlevel = 0 echo "selfextract failed"
+        
+
+cd ..\..
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/runall.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/runall.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/runall.sh	(revision 18906)
@@ -0,0 +1,91 @@
+#!/bin/sh
+########################################
+#
+# This script checks all the configurations
+#
+########################################
+
+# Get path
+if (echo "$0" | grep '/' >/dev/null)
+then
+	  # Called-by Prog name includes path
+	  dir=`dirname $0`   # Get filedir from call
+else
+	  dir=`pwd`
+fi
+
+# Ensure absolute path
+if (echo "$dir" | grep '^/' >/dev/null)
+then
+	  # Already an absolute path
+	  :
+else
+	  dir=`pwd`/$dir
+fi
+
+echo using JAVA_HOME:$JAVA_HOME
+
+for i in `echo *`
+do
+	cd ${dir}
+	EXAMPLE_INSTALLER_DIR=${dir}/${i}
+	if [ ! -d ${EXAMPLE_INSTALLER_DIR} ]
+	then
+		continue;
+	fi
+
+	cd ${EXAMPLE_INSTALLER_DIR} || { echo "Unable to change directory to ${EXAMPLE_INSTALLER_DIR}"; exit 10; }
+
+	echo "::::::: checking ${i}"
+
+	if [ -f installer/install.sh ]
+	then
+		cd installer || { echo "Unable to change directory to ${EXAMPLE_INSTALLER_DIR}/artifacts/installer"; exit 10; }
+	
+		./install.sh
+		STATUS=$?
+		if [ $STATUS != 0 ]
+		then
+			echo "${i} failed"
+			exit $STATUS
+		fi
+
+		if [ -f antinstall-config-alternative.xml ]
+		then
+			./install.sh -type alternative
+			STATUS=$?
+
+			if [ $STATUS != 0 ]
+			then
+				echo "${i} failed"
+				exit $STATUS
+			fi
+		fi
+	else
+		if [ -d artifacts ]
+		then
+			cd artifacts || { echo "Unable to change directory to ${EXAMPLE_INSTALLER_DIR}/artifacts"; exit 10; }
+			$JAVA_HOME/bin/java -jar *.jar
+			STATUS=$?
+			if [ $STATUS != 0 ]
+			then
+				echo "${i} failed"
+				exit $STATUS
+			fi
+
+			if [ -f ../installer/antinstall-config-alternative.xml ]
+			then
+				$JAVA_HOME/bin/java -jar *.jar -type alternative
+				STATUS=$?
+				if [ $STATUS != 0 ]
+				then
+					echo "${i} failed"
+					exit $STATUS
+				fi
+			fi
+		else
+			echo "Skipping ${i} as don't know how to run it"
+		fi
+	fi
+done
+exit $STATUS
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+#CLASSPATH=../../../../lib/xercesImpl.jar
+#CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text,swing-auto,text-auto"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build"
+			loadDefaults="prompt"
+			version="1.0">
+
+	<page
+			type="input"
+			name="intro.1"
+			displayText="Welcome to the new installer program"
+			imageResource="/resources/antbar.png"
+			overflow="true">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				explanatoryText="Property references (e.g. OS=${java.os.name}) will be expanded in explanatoryText and display text"
+				displayText="Username ${java.user.name}"/>
+		<comment
+				explanatoryText="This is flowing explanatory text with references expanded (e.g. OS=${java.os.name}) and no space allocated in swing for the empty comment line. The bold flag will NOT be used since it relates to the displayText which is null"
+				bold="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+	</page>
+	<page
+			type="splash"
+			name="splash.2"
+			displayText="Example Splash Page"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-ai-splash.png"
+			altText="example text splash"/>
+
+	<page
+			type="license"
+			name="license.3"
+			displayText="License conditions"
+			resource="/resources/LICENSE-ant-install.txt"
+			usePaging="true"
+			imageResource="/resources/antbar.png">
+	</page>
+	<page
+			type="input"
+			name="properties.4"
+			displayText="Required install options">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				  property="installDir"
+				  defaultValue="/usr/local/demoapp"
+				  defaultValueWin="${env.ProgramFiles}\demoapp"
+				  displayText="Select an installation directory"
+				  create="true"
+				  checkExists="true"/>
+		<directory
+				  property="dataDir"
+				  defaultValue=""
+				  defaultValueWin=""
+				  displayText="Select a directory(if you want)"
+				  create="false"
+				  checkExists="false"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			 type="text"
+			 name="intro.4a"
+			 displayText="HTML page"
+			 htmlResource="/resources/text.html"
+			 textResource="/resources/text.txt"
+			 overflow="true" />
+	<page
+			type="input"
+			name="selector.5"
+			displayText="Select components to install"
+			imageResource="/resources/antbar.png">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="core"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<large-select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</large-select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love.6"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American.7"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.8"
+			displayText="Required if Source code selected">
+		<text property="myProperty2" defaultValue="tiddly poop" displayText="Enter a value"/>
+		<select
+				property="colour2"
+				defaultValue="#FF0000"
+				displayText="colour2"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<text property="myProperty3" defaultValue="blah blah" displayText="Enter a value"/>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<!-- example disabled since you might not have tomcat installed -->
+		<!--app-root
+				property="tomcat.root"
+				defaultValue="/var"
+				displayText="Select the tomcat root"
+				checkFile1="conf/tomcat-users.xml"
+				checkFile2="conf/server.xml"
+				checkDir1="webapps"
+				checkDir2="conf">
+		</app-root-->
+	</page>
+	<page
+			type="input"
+			name="contrib.9"
+			displayText="Contributions">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="input"
+			name="envcond.10"
+			displayText="Environment Conditional"
+			imageResource="/resources/makewavesdawn.png"
+			ifProperty="${env.DISPLAY}=:0.0">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.11"
+			displayText="Blue Conditional"
+			ifProperty="${colourtarget}=#0000FF">
+			<comment
+				displayText="original syntax"
+				bold="false"/>
+			<comment
+				displayText="colourtarget is Blue"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.12"
+			displayText="Red Conditional"
+			ifProperty="${colourtarget}=#FF0000">
+			<comment
+				displayText="preferred syntax"
+				bold="false"/>
+			<comment
+				displayText="This page only shows if colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			type="progress"
+			name="progress.13"
+			displayText="Installation progress"
+			showTargets="true"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="core" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/LICENSE-ant-install.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/LICENSE-ant-install.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/LICENSE-ant-install.txt	(revision 18906)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/style.css
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/style.css	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/style.css	(revision 18906)
@@ -0,0 +1,14 @@
+body {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px; 
+background: #FFFFFF; 
+margin-top: 5px; 
+margin-right: 5px; 
+margin-bottom: 5px; 
+margin-left: 5px; 
+border-top-width: 10px; 
+border-right-width: 10px; 
+border-bottom-width: 10px; 
+border-left-width: 10px;
+font-weight: bold;
+}
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/text.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/text.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/text.html	(revision 18906)
@@ -0,0 +1,43 @@
+<html>
+<!-- N.B. Java's version of HTML is not what you might expect! -->
+  <head>
+    <title>is this shown</title>
+		<link rel="stylesheet" href="/resources/style.css">
+  </head>
+  <body padding="0px" margin="4px" style="background:#880000;padding:0px;margin:0px"><div style="padding:3px;">
+<table border="0" width="100%" cellpadding="5px" style="background:#880000;color:#ffffff;padding-bottom:0px">
+	<tr>
+		<td><img src="/resources/rayo.png">&nbsp;&nbsp;&nbsp;<font size="+1"><b>User properties</b></font></td>
+	</tr>
+</table>
+<table border="0px" width="100%"  style="background:#bb3333;color:#ffffff" cellpadding="1px">
+	<tr>
+		<td>Current username</td>
+		<td>${java.user.name}</td>
+	</tr>
+	<tr>
+		<td>Detected OS</td>
+		<td>${java.os.name}</td>
+	</tr>
+	<tr>
+		<td>selected colour</td>
+		<td style="background:#ffffff;color:${colour}">[${colour}]</td>
+	</tr>
+	<tr>
+		<td>Install dir</td>
+		<td>${installDir}</td>
+	</tr>
+</table>
+<div style="background:#880000;color:#ffffff">&nbsp;</div>
+<div style="background:#991111;color:#ffffff">&nbsp;</div>
+<div style="background:#aa2222;color:#ffffff">&nbsp;</div>
+<div style="background:#bb3333;color:#ffffff">&nbsp;</div>
+<div style="background:#bb3333;color:#ffffff">
+<br>
+<br>
+<br><img src="/resources/AntInstaller-text-logo.png">
+	http://antinstaller.sf.net
+
+</div>
+</div></body>
+</html>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/text.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/text.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/cp/resources/text.txt	(revision 18906)
@@ -0,0 +1,45 @@
+This is a text alternative to the HTML page with some properties
+
+username:${java.user.name}
+
+OS      :${java.os.name}
+
+Install dir:${installDir}
+
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+v
+lorum ipsum
+lorum ipsum
+v
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
+lorum ipsum
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/install.cmd	(revision 18906)
@@ -0,0 +1,63 @@
+@echo off
+REM #!/bin/sh
+
+REM # This install script runs the installer in the development directory
+REM # To create you own installers it is best to copy the structure
+REM # and scripts in the ./demo directoy
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+REM # Metouia (default) Look And Feel
+REM set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\metouia.jar
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+REM ### add other ant jars required here
+set CLASSPATH=%CLASSPATH%;cp
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-auto/installer/install.sh	(revision 18906)
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+#CLASSPATH=../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../classes
+# Metouia (default) Look And Feel
+# CLASSPATH=$CLASSPATH:./lib/metouia.jar
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+# minimal AntInstaller requirements
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+### add other ant jars required here
+CLASSPATH=$CLASSPATH:./cp
+
+COMMAND=$JAVA_HOME/bin/java
+
+echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+
+<!-- defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources no the classpath -->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="greymetal"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="selector"
+			displayText="Select components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+					 displayText="Source code"
+					 target="tgsrc"
+					 defaultValue="true"
+					 force="false"/>
+		<target
+					 displayText="binary code"
+					 target="tgbin"
+					 defaultValue="true"
+					 force="false"/>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Contributions">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="true"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/build.xml	(revision 18906)
@@ -0,0 +1,116 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="tgsrc">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="Source Sub Target">
+			<echo message="Installing Source files"/>
+			<sleep seconds="1"/>
+		</target>
+		<target name="tgbin" depends="">
+			<echo message="Installing Source files"/>
+			<sleep seconds="5"/>
+		</target>
+		<target name="cleanuptarget" depends="excessdep1,excessdep2,excessdep3,excessdep4,excessdep5,excessdep6,excessdep7,excessdep8">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+			<sleep seconds="1"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+			<sleep seconds="1"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+			<sleep seconds="1"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+			<sleep seconds="1"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+			<sleep seconds="1"/>
+		</target>
+	<target name="tgt1" depends="dep1,dep2">
+		<echo message="TARGET ONE selected"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="tgt3" depends="dep1,dep2">
+		<echo message="TARGET THREE selected"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="dep1" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="dep2" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="Source Sub Target" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="excessdep1" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="excessdep2" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="excessdep3" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="excessdep4" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="excessdep5" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="excessdep6" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="excessdep7" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+	<target name="excessdep8" depends="">
+		<echo message="Dependency found"/>
+			<sleep seconds="1"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/install.cmd	(revision 18906)
@@ -0,0 +1,64 @@
+@echo off
+REM #!/bin/sh
+
+REM # This install script runs the installer in the development directory
+REM # To create you own installers it is best to copy the structure
+REM # and scripts in the ./demo directoy
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+REM # Metouia (default) Look And Feel
+REM set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\metouia.jar
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-graphical-pp/installer/install.sh	(revision 18906)
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../src
+# Metouia (default) Look And Feel
+# CLASSPATH=$CLASSPATH:./lib/metouia.jar
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,155 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+<!--
+
+This is an example installer from which you can start a project
+Edit this file to select the properties you want decided, at the end
+of the installation screen the properties will be available in a file
+in the current directory for your ant script
+
+
+lookAndFeel="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel"  - not recommended since it is not linux compatible due to Micro$oft License restrictions
+
+lookAndFeel="net.sourceforge.mlf.metouia.MetouiaLookAndFeel"  - good, and cross platform
+lookAndFeel="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"  - good, and cross platform
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"  - good, and cross platform
+lookAndFeel="com.jgoodies.plaf.plastic.PlasticLookAndFeel" - good but flat, and cross platform
+lookAndFeel="jgoodies" - org.tp23.plaf.plastic.PlasticXPLookAndFeel
+lookAndFeel="greymetal" - Monochome metal LAF
+lookAndFeel="null" - do not call UIManager.setLookAndFeel
+lookAndFeel="native" - call UIManager.getSystemLookAndFeelClassName
+
+-->
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="greymetal"
+			antialiased="false"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the new installer program"
+			imageResource="/resources/antbar.png">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				explanatoryText="This is a multi line comment with some random text that is just here to take up space and test out the overflowing text feature inside a comment."
+				displayText="This is just a comment"/>
+	</page>
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true"
+			imageResource="/resources/antbar.png">
+	</page>
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options"
+			overflow="true">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				explanatoryText="This is a multi line comment with some random text that is just here to take up space and test out the overflowing text feature inside a normal input type."
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<large-select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</large-select>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			imageResource="/resources/antbar.png"
+			showTargets="true"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/install.cmd	(revision 18906)
@@ -0,0 +1,64 @@
+@echo off
+REM #!/bin/sh
+
+REM # This install script runs the installer in the development directory
+REM # To create you own installers it is best to copy the structure
+REM # and scripts in the ./demo directoy
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+REM # Metouia (default) Look And Feel
+REM set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\metouia.jar
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-laf/installer/install.sh	(revision 18906)
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../src
+# Metouia (default) Look And Feel
+# CLASSPATH=$CLASSPATH:./lib/metouia.jar
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,248 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+<!-- defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources no the classpath -->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the new installer program">
+		<comment
+				name="title.comment"
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				name="bold.comment"
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				name="first.comment"
+				displayText="This is just a comment"/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Example Splash Page"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-ai-splash.png"
+			altText="example text splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Required install options">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Select components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<large-select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</large-select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.2"
+			displayText="Required if Source code selected">
+		<text property="myProperty2" defaultValue="tiddly poop" displayText="Enter a value"/>
+		<select
+				property="colour2"
+				defaultValue="#FF0000"
+				displayText="colour2"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<text property="myProperty3" defaultValue="blah blah" displayText="Enter a value"/>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<!-- example disabled since you might not have tomcat installed -->
+		<!--app-root
+				property="tomcat.root"
+				defaultValue="/var"
+				displayText="Select the tomcat root"
+				checkFile1="conf/tomcat-users.xml"
+				checkFile2="conf/server.xml"
+				checkDir1="webapps"
+				checkDir2="conf">
+		</app-root-->
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Contributions">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="input"
+			name="envcond"
+			displayText="Environment Conditional"
+			ifProperty="${env.DISPLAY}=:0.0">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.1"
+			displayText="Blue Conditional"
+			ifProperty="${colourtarget}=#0000FF">
+			<comment
+				displayText="original syntax not permitted"
+				bold="false"/>
+			<comment
+				displayText="colourtarget is Blue"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.2"
+			displayText="Red Conditional"
+			ifProperty="${colourtarget}=#FF0000">
+			<comment
+				displayText="preferred syntax"
+				bold="false"/>
+			<comment
+				displayText="This page only shows if colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="true"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/cp/resources/LanguagePack.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/cp/resources/LanguagePack.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/cp/resources/LanguagePack.properties	(revision 18906)
@@ -0,0 +1,104 @@
+### Ant Installer - language pack auto generated on Thu Dec 07 03:09:48 CET 2006
+
+finishButtonText = Build
+
+
+## Text from Page:intro
+page.intro.displayText = Welcome to the new installer program
+title.comment.displayText = This is a title comment
+bold.comment.displayText = This is just a bold comment
+first.comment.displayText = This is just a comment
+
+## Text from Page:splash
+page.splash.displayText = Example Splash Page
+
+## Text from Page:license
+page.license.displayText = License conditions
+
+## Text from Page:properties
+page.properties.displayText = Required install options
+myProperty.displayText = Enter a value
+isvalue.displayText = Do you want to do this
+colour.displayText = Select your favorite colour
+colour.1.displayText = Red
+colour.2.displayText = Green
+colour.3.displayText = Blue
+installDir.displayText = Select an installation directory
+webxml.displayText = Select the web.xml file
+
+## Text from Page:selector
+page.selector.displayText = Select components to install
+comment.9.displayText = Choose the components you want to install
+default.displayText = Core components
+tgsrc.displayText = Source code
+validatedtext.displayText = Validated Text Input
+unvalidatedtext.displayText = Unvalidated User Name
+unsafepassword.displayText = Enter a password
+lang.displayText = Select your favorite language
+lang.1.displayText = Spanish
+lang.2.displayText = Catalan
+lang.3.displayText = English
+lang.4.displayText = French
+lang.5.displayText = Japanese
+lang.6.displayText = Persian
+lang.7.displayText = Urdu
+lang.8.displayText = Flemish
+lang.9.displayText = German
+lang.10.displayText = Greek
+lang.11.displayText = Turkish
+lang.12.displayText = Slav
+lang.13.displayText = Euskera
+lang.14.displayText = Welsh
+lang.15.displayText = Jamaican patoi
+lang.16.displayText = Mockney
+lang.17.displayText = Giberish
+lang.18.displayText = Love
+lang.19.displayText = Sign
+lang.20.displayText = Java
+lang.21.displayText = C++
+lang.22.displayText = American
+myOsSpecific.displayText = OS Specific target
+
+## Text from Page:Language of Love
+page.Language of Love.displayText = Language of Love
+comment.17.displayText = Aaaarrr, how sweet
+
+## Text from Page:American
+page.American.displayText = Hey Yankiee
+comment.18.displayText = It totaliser and initialise, with Ss you know, but never mind
+
+## Text from Page:properties
+page.properties.displayText = Required if Source code selected
+myProperty2.displayText = Enter a value
+colour2.displayText = colour2
+colour2.explanatoryText = This field can be used on any input field to render further descriptive text     This field can be used on any input field to render further descriptive text
+colour2.1.displayText = Red
+colour2.2.displayText = Green
+colour2.3.displayText = Blue
+myProperty3.displayText = Enter a value
+date.property.displayText = Enter a date
+
+## Text from Page:contrib
+page.contrib.displayText = Contributions
+colourtarget.displayText = Select a target
+colourtarget.explanatoryText = only one target available
+colourtarget.1.displayText = target-one
+colourtarget.2.displayText = target-two
+colourtarget.3.displayText = target-three
+
+## Text from Page:envcond
+page.envcond.displayText = Environment Conditional
+comment.24.displayText = This page only shows if DISPLAY\=\:0.0
+
+## Text from Page:propcond
+page.propcond.displayText = Blue Conditional
+comment.25.displayText = original syntax
+comment.26.displayText = colourtarget is Blue
+
+## Text from Page:propcond
+page.propcond.displayText = Red Conditional
+comment.27.displayText = preferred syntax
+comment.28.displayText = This page only shows if colourtarget is RED
+
+## Text from Page:progress
+page.progress.displayText = Installation progress
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/cp/resources/LanguagePack_es_EU.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/cp/resources/LanguagePack_es_EU.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/cp/resources/LanguagePack_es_EU.properties	(revision 18906)
@@ -0,0 +1,85 @@
+### Ant Installer - language pack auto generated on Wed Dec 06 23:34:59 CET 2006
+finishButtonText = Euskera
+## Text from Page:intro
+page.intro.displayText = Euskera
+## Text from Page:license
+page.license.displayText = Licensia
+## Text from Page:properties
+page.properties.displayText = Required if Source code selected
+myProperty.displayText = Enter a value
+isvalue.displayText = Do you want to do this
+colour.displayText = Select your favorite colour
+colour.1.displayText = Red
+colour.2.displayText = Green
+colour.3.displayText = Blue
+installDir.displayText = Select an installation directory
+webxml.displayText = Select the web.xml file
+## Text from Page:selector
+page.selector.displayText = Select components to install
+comment.9.displayText = Choose the components you want to install
+default.displayText = Core components
+tgsrc.displayText = Source code
+validatedtext.displayText = Validated Text Input
+unvalidatedtext.displayText = Unvalidated User Name
+unsafepassword.displayText = Enter a password
+myProperty2.displayText = Enter a value
+colour2.displayText = colour2
+colour2.explanatoryText = This field can be used on any input field to render further descriptive text     This field can be used on any input field to render further descriptive text
+colour2.1.displayText = Red
+colour2.2.displayText = Green
+colour2.3.displayText = Blue
+myProperty3.displayText = Enter a value
+date.property.displayText = Enter a date
+## Text from Page:progress
+page.progress.displayText = Installation progress
+title.comment.displayText = Euskera
+bold.comment.displayText = Euskera
+first.comment.displayText = Euskera
+## Text from Page:splash
+page.splash.displayText = Example Splash Page
+lang.displayText = Select your favorite language
+lang.1.displayText = Spanish
+lang.2.displayText = Catalan
+lang.3.displayText = English
+lang.4.displayText = French
+lang.5.displayText = Japanese
+lang.6.displayText = Persian
+lang.7.displayText = Urdu
+lang.8.displayText = Flemish
+lang.9.displayText = German
+lang.10.displayText = Greek
+lang.11.displayText = Turkish
+lang.12.displayText = Slav
+lang.13.displayText = Euskera
+lang.14.displayText = Welsh
+lang.15.displayText = Jamaican patoi
+lang.16.displayText = Mockney
+lang.17.displayText = Giberish
+lang.18.displayText = Love
+lang.19.displayText = Sign
+lang.20.displayText = Java
+lang.21.displayText = C++
+lang.22.displayText = American
+myOsSpecific.displayText = OS Specific target
+## Text from Page:Language of Love
+page.Language = of Love.displayText \= Language of Love
+comment.17.displayText = Aaaarrr, how sweet
+## Text from Page:American
+page.American.displayText = Hey Yankiee
+comment.18.displayText = It totaliser and initialise, with Ss you know, but never mind
+## Text from Page:contrib
+page.contrib.displayText = Contributions
+colourtarget.displayText = Select a target
+colourtarget.explanatoryText = only one target available
+colourtarget.1.displayText = target-one
+colourtarget.2.displayText = target-two
+colourtarget.3.displayText = target-three
+## Text from Page:envcond
+page.envcond.displayText = Environment Conditional
+comment.24.displayText = This page only shows if DISPLAY\=\:0.0
+## Text from Page:propcond
+page.propcond.displayText = Red Conditional
+comment.25.displayText = original syntax
+comment.26.displayText = colourtarget is Blue
+comment.27.displayText = preferred syntax
+comment.28.displayText = This page only shows if colourtarget is RED
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/createLanguagePack.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/createLanguagePack.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/createLanguagePack.sh	(revision 18906)
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# This script creates properties files stubs from the antinstall-config.xml file
+#
+# it only works if attributes are placed on separate lines
+
+dir=`expr  match "$0" '\(.*\)createResourceStub.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+if [ "$ANT_INSTALL_HOME" == "" ] ; then 
+  export ANT_INSTALL_HOME=../../../..
+fi
+
+if [ ! -f $ANT_INSTALL_HOME/lib/ant-installer.jar ] ; then 
+  echo "set ANT_INSTALL_HOME"
+  exit 1;
+fi
+
+if [ "$JAVA_HOME" = "" ] ; then
+	echo set JAVA_HOME;
+	exit 1;
+fi
+
+
+CLASSPATH=$ANT_INSTALL_HOME/lib/xercesImpl.jar:$ANT_INSTALL_HOME/lib/xml-apis.jar:$ANT_INSTALL_HOME/lib/ant-installer.jar:$ANT_INSTALL_HOME/lib/ant-installer-ext.jar
+CLASSPATH=$CLASSPATH:$ANT_INSTALL_HOME/antlib/ant.jar:$ANT_INSTALL_HOME/antlib/ant-launcher.jar
+CLASSPATH=$CLASSPATH:$ANT_INSTALL_HOME/lib/jgoodies-edited-1_2_2.jar
+CLASSPATH=$CLASSPATH:./cp
+
+COMMAND=$JAVA_HOME/bin/java
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.util.CreateLanguagePack
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/install.cmd	(revision 18906)
@@ -0,0 +1,65 @@
+@echo off
+REM #!/bin/sh
+
+REM # This install script runs the installer in the development directory
+REM # To create you own installers it is best to copy the structure
+REM # and scripts in the ./demo directoy
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+REM # Metouia (default) Look And Feel
+REM set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\metouia.jar
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+set CLASSPATH=%CLASSPATH%;cp
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-lang/installer/install.sh	(revision 18906)
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../src
+# Metouia (default) Look And Feel
+# CLASSPATH=$CLASSPATH:./lib/metouia.jar
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+CLASSPATH=$CLASSPATH:cp
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+echo Set Local to Euskera  "y" or "n"
+read EUSKERA
+if [ "$EUSKERA" == "y" ] ; then
+  JVM_PARAMS="-Duser.language=es -Duser.region=EU"
+else
+  echo Set Local to Spanish  "y" or "n"
+  read SPANISH
+  if [ "$SPANISH" == "y" ] ; then
+    JVM_PARAMS="-Duser.language=es -Duser.region=ES"
+  fi
+fi
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND $JVM_PARAMS -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+#CLASSPATH=../../../../lib/xercesImpl.jar
+#CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,248 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the new installer program"
+			imageResource="/resources/antbar.png">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				displayText="This is just a comment"/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Example Splash Page"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-splash.png"
+			altText="example text splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true"
+			imageResource="/resources/antbar.png">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Required install options">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Select components to install"
+			imageResource="/resources/antbar.png">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<large-select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</large-select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.2"
+			displayText="Required if Source code selected">
+		<text property="myProperty2" defaultValue="tiddly poop" displayText="Enter a value"/>
+		<select
+				property="colour2"
+				defaultValue="#FF0000"
+				displayText="colour2"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<text property="myProperty3" defaultValue="blah blah" displayText="Enter a value"/>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<!-- example disabled since you might not have tomcat installed -->
+		<!--app-root
+				property="tomcat.root"
+				defaultValue="/var"
+				displayText="Select the tomcat root"
+				checkFile1="conf/tomcat-users.xml"
+				checkFile2="conf/server.xml"
+				checkDir1="webapps"
+				checkDir2="conf">
+		</app-root-->
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Contributions">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="input"
+			name="envcond"
+			displayText="Environment Conditional"
+			imageResource="/resources/makewavesdawn.png"
+			ifProperty="${env.DISPLAY}=:0.0">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.1"
+			displayText="Blue Conditional"
+			ifProperty="${colourtarget}=#0000FF">
+			<comment
+				displayText="original syntax not permitted"
+				bold="false"/>
+			<comment
+				displayText="colourtarget is Blue"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.2"
+			displayText="Red Conditional"
+			ifProperty="${colourtarget}=#FF0000">
+			<comment
+				displayText="preferred syntax"
+				bold="false"/>
+			<comment
+				displayText="This page only shows if colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="false"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/install.cmd	(revision 18906)
@@ -0,0 +1,60 @@
+@echo off
+REM #!/bin/sh
+
+REM # This install script runs the installer in the development directory
+REM # To create you own installers it is best to copy the structure
+REM # and scripts in the ./demo directoy
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-no-xerces/installer/install.sh	(revision 18906)
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,325 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/makewavesdawn.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="intro"
+			displayText="Overflow=&quot;true&quot; test"
+			imageResource="/resources/rockstiles.png"
+			overflow="true">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				displayText="This is just a comment"/>
+		<comment
+				explanatoryText="This is aload of text that has tabs	in	it
+and should eventually overflow the page.
+so here is some more waffle and perhaps it is time to download lorum ipsum eh!!
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exercitation ulliam corper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem veleum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel willum lunombro dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. 
+Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musica, sport etc., li tot Europa usa li sam vocabularium. Li lingues differe solmen in li grammatica, li pronunciation e li plu commun vocabules. Omnicos directe al desirabilitÃ¡ de un nov lingua franca: on refusa continuar payar custosi traductores. It solmen va esser necessi far uniform grammatica, pronunciation e plu sommun paroles. 
+Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari quam li existent Europan lingues. It va esser tam simplic quam Occidental: in fact, it va esser Occidental. A un Angleso it va semblar un simplificat Angles, quam un skeptic Cambridge amico dit me que Occidental es. "
+				displayText=""/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Splash Pages dont support overflow"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-splash.png"
+			altText="example text splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License don't need overflow"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true"
+			imageResource="/resources/antbar.png">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Some pages can be normal">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Overflow page"
+			imageResource="/resources/antbar.png"
+			overflow="true">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language"
+				explanatoryText="a large-select would work here too">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector2"
+			displayText="What a mess without it!!!"
+			imageResource="/resources/antbar.png">
+		<comment
+			displayText="Choose the components you want to install"
+			bold="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc.notused"
+			defaultValue="false"
+			force="false"/>
+		<validated
+			property="validatedtext.notused"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext.notused"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+				 property="unsafepassword.notused"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<select
+				property="lang.notused"
+				defaultValue="uk"
+				displayText="Select your favorite language"
+				explanatoryText="a large-select would work here too">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific.notused"
+			defaultValue="false"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.2"
+			displayText="Required if Source code selected">
+		<text property="myProperty2" defaultValue="tiddly poop" displayText="Enter a value"/>
+		<select
+				property="colour2"
+				defaultValue="#FF0000"
+				displayText="colour2"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<text property="myProperty3" defaultValue="blah blah" displayText="Enter a value"/>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<!-- example disabled since you might not have tomcat installed -->
+		<!--app-root
+				property="tomcat.root"
+				defaultValue="/var"
+				displayText="Select the tomcat root"
+				checkFile1="conf/tomcat-users.xml"
+				checkFile2="conf/server.xml"
+				checkDir1="webapps"
+				checkDir2="conf">
+		</app-root-->
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Overflow but no effect here"
+			overflow="true">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="input"
+			name="envcond"
+			displayText="Environment Conditional"
+			imageResource="/resources/antbar.png"
+			ifProperty="${env.DISPLAY}=:0.0">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.1"
+			displayText="Blue Conditional"
+			imageResource="/resources/makewavesdawn.png"
+			ifProperty="${colourtarget}=#0000FF">
+			<comment
+				displayText="original syntax"
+				bold="false"/>
+			<comment
+				displayText="colourtarget is Blue"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.2"
+			displayText="Red Conditional"
+			imageResource="/resources/antbar.png"
+			ifProperty="${colourtarget}=#FF0000">
+			<comment
+				displayText="preferred syntax"
+				bold="false"/>
+			<comment
+				displayText="This page only shows if colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Progress does not need overflow"
+			imageResource="/resources/antbar.png"
+			showTargets="false"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/install.cmd	(revision 18906)
@@ -0,0 +1,58 @@
+@echo off
+REM #!/bin/sh
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-overflow/installer/install.sh	(revision 18906)
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../..
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+
+<installer
+			ui="swing,text,swing-auto,text-auto"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/makewavesdawn.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build"
+			loadDefaults="prompt"
+			version="1.0">
+	<page
+			type="input"
+			name="intro"
+			displayText="Overflow=&quot;true&quot; test"
+			imageResource="/resources/rockstiles.png"
+			overflow="true"
+			postDisplayTarget="antinstaller-intro">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				displayText="This is just a comment"/>
+		<comment
+				explanatoryText="This is aload of text that has tabs	in	it
+and should eventually overflow the page.
+so here is some more waffle and perhaps it is time to download lorum ipsum eh!!
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exercitation ulliam corper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem veleum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel willum lunombro dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. 
+Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musica, sport etc., li tot Europa usa li sam vocabularium. Li lingues differe solmen in li grammatica, li pronunciation e li plu commun vocabules. Omnicos directe al desirabilitÃ¡ de un nov lingua franca: on refusa continuar payar custosi traductores. It solmen va esser necessi far uniform grammatica, pronunciation e plu sommun paroles. 
+Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari quam li existent Europan lingues. It va esser tam simplic quam Occidental: in fact, it va esser Occidental. A un Angleso it va semblar un simplificat Angles, quam un skeptic Cambridge amico dit me que Occidental es. "
+				displayText=""/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Splash Pages dont support overflow"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-splash.png"
+			altText="example text splash"
+			postDisplayTarget="antinstaller-splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License don't need overflow"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true"
+			imageResource="/resources/antbar.png"
+			postDisplayTarget="antinstaller-license">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Some pages can be normal"
+			postDisplayTarget="antinstaller-properties.1">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<text property="myPropertyDefault" defaultValue="${myPropertyDefault}" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Overflow page"
+			imageResource="/resources/antbar.png"
+			overflow="true">
+		<select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language"
+				explanatoryText="a large-select would work here too">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love"    value="lv"/>
+			<option text="American" value="us"/>
+		</select>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="LanguageLove"
+			displayText="Language of Love"
+			postDisplayTarget="antinstaller-LanguageLove">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee"
+			postDisplayTarget="antinstaller-American">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Progress dont need a past"
+			imageResource="/resources/antbar.png"
+			showTargets="false"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/build.xml	(revision 18906)
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!--
+
+Understand the difference between the antinstaller- targets and the
+normal targets like "cleanuptarget"
+
+you CAN NOT CALL antinstaller-message in normal targets since
+the Task is not defined, even if you do define it the tasks will not
+work since they are wired to the installer at runtime with a custom
+Project reference.
+
+
+-->
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+	<target name="antinstaller-intro" depends="">
+		<antinstaller-message message="yo yo yo!"/>
+		<echo message="This message will not show up"/>
+		<!-- reset a hardcoded default value that will NOT change -->
+		<antinstaller-property name="myProperty" value="Should not appear"/>
+		<!-- reset a property value that will change -->
+		<antinstaller-property name="myPropertyDefault" value="Changed by post target"/>
+		<antinstaller-log message="basedir = ${basedir}"/>
+	</target>
+	<target name="antinstaller-splash" depends="">
+		<antinstaller-message message="Splosh!!"/>
+	</target>
+	<target name="antinstaller-license" depends="">
+		<antinstaller-message message="You didn't read that did you"/>
+	</target>
+	<target name="antinstaller-properties.1" depends="">
+		<antinstaller-message message="You just pressed next to that too (guess?)"/>
+	</target>
+	<target name="antinstaller-LanguageLove" depends="">
+		<antinstaller-message message="Cheesy!"/>
+	</target>
+	<target name="antinstaller-American" depends="">
+		<antinstaller-message message="Sorry that was rude"/>
+	</target>
+	
+	<target name="cleanuptarget" depends="" >
+		<!-- N.B. antinstaller-message is NOT going to work -->
+		<echo message="yo yo yo!"/>
+	</target>
+	
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/install.cmd	(revision 18906)
@@ -0,0 +1,62 @@
+@echo off
+REM #!/bin/sh
+
+REM # This install script runs the installer in the development directory
+REM # To create you own installers it is best to copy the structure
+REM # and scripts in the ./demo directoy
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display-auto/installer/install.sh	(revision 18906)
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+# use the compiled classes directory
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,147 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/makewavesdawn.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="intro"
+			displayText="Overflow=&quot;true&quot; test"
+			imageResource="/resources/rockstiles.png"
+			overflow="true"
+			postDisplayTarget="antinstaller-intro">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				displayText="This is just a comment"/>
+		<comment
+				explanatoryText="This is aload of text that has tabs	in	it
+and should eventually overflow the page.
+so here is some more waffle and perhaps it is time to download lorum ipsum eh!!
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exercitation ulliam corper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem veleum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel willum lunombro dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. 
+Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musica, sport etc., li tot Europa usa li sam vocabularium. Li lingues differe solmen in li grammatica, li pronunciation e li plu commun vocabules. Omnicos directe al desirabilitÃ¡ de un nov lingua franca: on refusa continuar payar custosi traductores. It solmen va esser necessi far uniform grammatica, pronunciation e plu sommun paroles. 
+Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari quam li existent Europan lingues. It va esser tam simplic quam Occidental: in fact, it va esser Occidental. A un Angleso it va semblar un simplificat Angles, quam un skeptic Cambridge amico dit me que Occidental es. "
+				displayText=""/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Splash Pages dont support overflow"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-ai-splash.png"
+			altText="example text splash"
+			postDisplayTarget="antinstaller-splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License don't need overflow"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true"
+			imageResource="/resources/antbar.png"
+			postDisplayTarget="antinstaller-license">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Some pages can be normal"
+			postDisplayTarget="antinstaller-properties.1">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<text property="myPropertyDefault" defaultValue="${myPropertyDefault}" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+		<comment
+			displayText="from my.props = ${loaded.prop1}" 
+			explanatoryText="this gets expanded too = ${loaded.prop1}"
+			bold="true"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Overflow page"
+			imageResource="/resources/antbar.png"
+			overflow="true">
+		<select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language"
+				explanatoryText="a large-select would work here too">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love"    value="lv"/>
+			<option text="American" value="us"/>
+		</select>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="LanguageLove"
+			displayText="Language of Love"
+			postDisplayTarget="antinstaller-LanguageLove">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee"
+			postDisplayTarget="antinstaller-American">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Progress dont need a past"
+			imageResource="/resources/antbar.png"
+			showTargets="false"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/build.xml	(revision 18906)
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+
+Understand the difference between the antinstaller- targets and the
+normal targets like "cleanuptarget"
+
+you CAN NOT CALL antinstaller-message in normal targets since
+the Task is not defined, even if you do define it the tasks will not
+work since they are wired to the installer at runtime with a custom
+Project reference.
+
+
+-->
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+	<target name="antinstaller-intro" depends="">
+		<antinstaller-message message="yo yo yo!"/>
+		<echo message="This message will not show up"/>
+		<!-- reset a hardcoded default value that will NOT change -->
+		<antinstaller-property name="myProperty" value="yo yo yo!"/>
+		<!-- reset a property value that will change -->
+		<antinstaller-property name="myPropertyDefault" value="yo yo yo!"/>
+		<antinstaller-property resource="/resources/my.props"/>
+		<antinstaller-log message="basedir = ${basedir}"/>
+	</target>
+	<target name="antinstaller-splash" depends="">
+		<antinstaller-message message="Splosh!!"/>
+	</target>
+	<target name="antinstaller-license" depends="">
+		<antinstaller-message message="You didn't read that did you"/>
+	</target>
+	<target name="antinstaller-properties.1" depends="">
+		<antinstaller-message message="You just pressed next to that too (guess?)"/>
+	</target>
+	<target name="antinstaller-LanguageLove" depends="">
+		<antinstaller-message message="Cheesy!"/>
+	</target>
+	<target name="antinstaller-American" depends="">
+		<antinstaller-message message="Sorry that was rude"/>
+	</target>
+	
+	<target name="cleanuptarget" depends="">
+		<!-- N.B. antinstaller-message is NOT going to work -->
+		<echo message="yo yo yo!"/>
+	</target>
+
+	
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/cp/resources/my.props
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/cp/resources/my.props	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/cp/resources/my.props	(revision 18906)
@@ -0,0 +1,1 @@
+loaded.prop1=hello.world
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/install.cmd	(revision 18906)
@@ -0,0 +1,50 @@
+@echo off
+REM #!/bin/sh
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+set CLASSPATH=%CLASSPATH%;cp
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-post-display/installer/install.sh	(revision 18906)
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../classes
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+CLASSPATH=$CLASSPATH:cp
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+<!--
+RegEx test script
+-->
+<!-- defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources no the classpath -->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="properties"
+			displayText="Regular expression test">
+		<text property="myProperty" defaultValue="blah blah" displayText="unvalidated"/>
+		<validated
+			property="validatedtext.1"
+			displayText="[a-z][a-z].*"
+			defaultValue="ab1"
+			regex="[a-z][a-z].*"/>
+		<validated
+				  property="validatedtext.2"
+				  displayText="[a-z][a-z]\..*"
+				  defaultValue="ab.1"
+				  regex="[a-z][a-z]\..*"/>
+		<validated
+			property="validatedtext.3"
+			displayText="Anything but not nothing"
+			defaultValue="anything"
+			regex=".+"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="false"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/install.cmd	(revision 18906)
@@ -0,0 +1,65 @@
+@echo off
+REM #!/bin/sh
+
+REM # This install script runs the installer in the development directory
+REM # To create you own installers it is best to copy the structure
+REM # and scripts in the ./demo directoy
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+REM # Metouia (default) Look And Feel
+REM set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\metouia.jar
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+set CLASSPATH=%CLASSPATH%;cp
+
+REM ### add other ant jars required here
+REM #CLASSPATH=%CLASSPATH%;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-regex/installer/install.sh	(revision 18906)
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../src
+# Metouia (default) Look And Feel
+# CLASSPATH=$CLASSPATH:./lib/metouia.jar
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+CLASSPATH=$CLASSPATH:cp
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/antinstall-config-alternative.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/antinstall-config-alternative.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/antinstall-config-alternative.xml	(revision 18906)
@@ -0,0 +1,261 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+<!-- defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources no the classpath -->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="intro"
+			displayText="Alternative installer">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				displayText="This is just a comment"/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Alternative Splash Page"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-ai-splash.png"
+			altText="example text splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Required install options">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Select components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<large-select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</large-select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.2"
+			displayText="Required if Source code selected">
+		<text property="myProperty2" defaultValue="tiddly poop" displayText="Enter a value"/>
+		<select
+				property="colour2"
+				defaultValue="#FF0000"
+				displayText="colour2"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<text property="myProperty3" defaultValue="blah blah" displayText="Enter a value"/>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<!-- example disabled since you might not have tomcat installed -->
+		<!--app-root
+				property="tomcat.root"
+				defaultValue="/var"
+				displayText="Select the tomcat root"
+				checkFile1="conf/tomcat-users.xml"
+				checkFile2="conf/server.xml"
+				checkDir1="webapps"
+				checkDir2="conf">
+		</app-root-->
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Contributions">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="input"
+			name="envcond"
+			displayText="Environment Conditional"
+			ifProperty="${env.DISPLAY}=:0.0">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.1"
+			displayText="Blue Conditional"
+			ifProperty="${colourtarget}=#0000FF">
+			<comment
+				displayText="original syntax"
+				bold="false"/>
+			<comment
+				displayText="colourtarget is Blue"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.2"
+			displayText="Red Conditional"
+			ifProperty="${colourtarget}=#FF0000">
+			<comment
+				displayText="preferred syntax"
+				bold="false"/>
+			<comment
+				displayText="This page only shows if colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			 type="input"
+			 name="Password confirm check"
+			 displayText="Confirm password check">
+		<password 
+			property="thePassword" 
+			defaultValue="1234" 
+			displayText="Enter a password"
+			regex=".+"/>
+		<password-confirm
+			origField="thePassword"
+			property="confirm.thePassword"
+			defaultValue="1234"
+			displayText="Confirm password"
+			regex=".+"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="true"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,261 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+<!-- defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources no the classpath -->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="intro"
+			displayText="Default installer">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				displayText="This is just a comment"/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Example Splash Page"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-ai-splash.png"
+			altText="example text splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Required install options">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Select components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<large-select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</large-select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.2"
+			displayText="Required if Source code selected">
+		<text property="myProperty2" defaultValue="tiddly poop" displayText="Enter a value"/>
+		<select
+				property="colour2"
+				defaultValue="#FF0000"
+				displayText="colour2"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<text property="myProperty3" defaultValue="blah blah" displayText="Enter a value"/>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<!-- example disabled since you might not have tomcat installed -->
+		<!--app-root
+				property="tomcat.root"
+				defaultValue="/var"
+				displayText="Select the tomcat root"
+				checkFile1="conf/tomcat-users.xml"
+				checkFile2="conf/server.xml"
+				checkDir1="webapps"
+				checkDir2="conf">
+		</app-root-->
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Contributions">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="input"
+			name="envcond"
+			displayText="Environment Conditional"
+			ifProperty="${env.DISPLAY}=:0.0">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.1"
+			displayText="Blue Conditional"
+			ifProperty="${colourtarget}=#0000FF">
+			<comment
+				displayText="original syntax"
+				bold="false"/>
+			<comment
+				displayText="colourtarget is Blue"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.2"
+			displayText="Red Conditional"
+			ifProperty="${colourtarget}=#FF0000">
+			<comment
+				displayText="preferred syntax"
+				bold="false"/>
+			<comment
+				displayText="This page only shows if colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			 type="input"
+			 name="Password confirm check"
+			 displayText="Confirm password check">
+		<password 
+			property="thePassword" 
+			defaultValue="1234" 
+			displayText="Enter a password"
+			regex=".+"/>
+		<password-confirm
+			origField="thePassword"
+			property="confirm.thePassword"
+			defaultValue="1234"
+			displayText="Confirm password"
+			regex=".+"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="true"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/build-alternative.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/build-alternative.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/build-alternative.xml	(revision 18906)
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="RUNNING ALTERNATIVE BUILD"/>
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install-type.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install-type.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install-type.cmd	(revision 18906)
@@ -0,0 +1,55 @@
+@echo off
+REM #!/bin/sh
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+if "%2" == "-type" set TYPE=-type %3
+if "%1" == "-type" set TYPE=-type %2
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+set CLASSPATH=%CLASSPATH%;cp
+
+REM ### add other ant jars required here
+REM #CLASSPATH=%CLASSPATH%;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% . %TYPE%
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install-type.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install-type.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install-type.sh	(revision 18906)
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# This script is NOT the same as the other install.sh scripts since
+# it handles the command line parameters differently
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../src
+# Metouia (default) Look And Feel
+# CLASSPATH=$CLASSPATH:./lib/metouia.jar
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+CLASSPATH=$CLASSPATH:cp
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+GUI=swing
+if [ "$1" == "text" ] ; then
+	GUI=text;
+	shift;
+fi
+
+if [ "$1" != "" ] ; then
+	if [ "$1" != "-type" ] ; then
+		echo 'Usage ./install-type.sh [text] [-type alternative]'
+	fi
+fi
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI . $1 $2 $3 $4 $5 $6 $7 $8 $9
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install.cmd	(revision 18906)
@@ -0,0 +1,56 @@
+@echo off
+REM #!/bin/sh
+
+REM NOT TESTED
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+if "%2" == "-type" set TYPE=-type %3
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+if "%2" == "-type" set TYPE=-type %3
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+set CLASSPATH=%CLASSPATH%;cp
+
+REM ### add other ant jars required here
+REM #CLASSPATH=%CLASSPATH%;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% . %TYPE%
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-type/installer/install.sh	(revision 18906)
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# This script is NOT the same as the other install.sh scripts since
+# it handles the command line parameters differently
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+CLASSPATH=$CLASSPATH:cp
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+GUI=swing
+if [ "$1" == "text" ] ; then
+	GUI=text;
+	shift;
+fi
+
+if [ "$1" != "" ] ; then
+	if [ "$1" != "-type" ] ; then
+		echo 'Usage ./install-type.sh [text] [-type alternative]'
+	fi
+fi
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI . $*
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="greymetal"
+			antialiased="true"
+			wide="600:300"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/makewavesdawn.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="intro"
+			displayText="Overflow=&quot;true&quot; test"
+			overflow="true">
+		<comment
+				displayText="Wide test based on overflow"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				displayText="This is just a comment"/>
+		<comment
+				explanatoryText="This is aload of text that has tabs	in	it
+and should eventually overflow the page.
+so here is some more waffle and perhaps it is time to download lorum ipsum eh!!
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exercitation ulliam corper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem veleum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel willum lunombro dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. 
+Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musica, sport etc., li tot Europa usa li sam vocabularium. Li lingues differe solmen in li grammatica, li pronunciation e li plu commun vocabules. Omnicos directe al desirabilitÃ¡ de un nov lingua franca: on refusa continuar payar custosi traductores. It solmen va esser necessi far uniform grammatica, pronunciation e plu sommun paroles. 
+Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari quam li existent Europan lingues. It va esser tam simplic quam Occidental: in fact, it va esser Occidental. A un Angleso it va semblar un simplificat Angles, quam un skeptic Cambridge amico dit me que Occidental es. "
+				displayText=""/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Splash Pages dont support overflow"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-splash.png"
+			altText="example text splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License don't need overflow"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true"
+			imageResource="/resources/antbar.png">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Some pages can be normal">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Overflow page"
+			imageResource="/resources/antbar.png"
+			overflow="true">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language"
+				explanatoryText="a large-select would work here too">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.2"
+			displayText="Required if Source code selected">
+		<text property="myProperty2" defaultValue="tiddly poop" displayText="Enter a value"/>
+		<select
+				property="colour2"
+				defaultValue="#FF0000"
+				displayText="colour2"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<text property="myProperty3" defaultValue="blah blah" displayText="Enter a value"/>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<!-- example disabled since you might not have tomcat installed -->
+		<!--app-root
+				property="tomcat.root"
+				defaultValue="/var"
+				displayText="Select the tomcat root"
+				checkFile1="conf/tomcat-users.xml"
+				checkFile2="conf/server.xml"
+				checkDir1="webapps"
+				checkDir2="conf">
+		</app-root-->
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Overflow but no effect here"
+			overflow="true">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Progress does not need overflow"
+			imageResource="/resources/antbar.png"
+			showTargets="false"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/install.cmd	(revision 18906)
@@ -0,0 +1,62 @@
+@echo off
+REM #!/bin/sh
+
+REM # This install script runs the installer in the development directory
+REM # To create you own installers it is best to copy the structure
+REM # and scripts in the ./demo directoy
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script-wide/installer/install.sh	(revision 18906)
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# This istall script runs the installer in the development directory
+# To create you own installers it is best to copy the structure
+# and scripts in the ./demo directoy
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,261 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+<!-- defaultImageResource,windowIcon,resource and imageResource load from the classpath
+the installer script should put the locations of these resources no the classpath -->
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			antialiased="true"
+			name="Test Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/antbar.png"
+			minJavaVersion="1.4"
+			finishButtonText="Build">
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the new installer program">
+		<comment
+				displayText="This is a title comment"
+				title="true"/>
+		<comment
+				displayText="This is just a bold comment"
+				bold="true"/>
+		<comment
+				displayText="This is just a comment"/>
+	</page>
+	<page
+			type="splash"
+			name="splash"
+			displayText="Example Splash Page"
+			imageResource="/resources/antbar.png"
+			splashResource="/resources/example-ai-splash.png"
+			altText="example text splash"/>
+
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/LICENSE-ant-install.txt"
+			usePaging="true">
+	</page>
+	<page
+			type="input"
+			name="properties.1"
+			displayText="Required install options">
+		<text property="myProperty" defaultValue="blah blah" displayText="Enter a value"/>
+		<checkbox
+				property="isvalue"
+				displayText="Do you want to do this"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Select your favorite colour">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"
+				checkExists="true"/>
+		<file
+				property="webxml"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\tomcat\webapps\default\WEB-INF\web.xml"
+				displayText="Select the web.xml file"
+				checkExists="false"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Select components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="true"
+			force="false"/>
+		<validated
+			property="validatedtext"
+			displayText="Validated Text Input"
+			defaultValue="23/10/2004"
+			regex="^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]$"/>
+		<text
+			property="unvalidatedtext"
+			displayText="Unvalidated User Name"
+			defaultValue="${java.user.name}"/>
+		<password
+			property="unsafepassword"
+			displayText="Enter a password"
+			defaultValue="pa55word"
+			regex="[0-9a-zA-Z_]{8}"/>
+		<large-select
+				property="lang"
+				defaultValue="uk"
+				displayText="Select your favorite language">
+			<option text="Spanish" value="es"/>
+			<option text="Catalan" value="ca"/>
+			<option text="English" value="uk"/>
+			<option text="French" value="fr"/>
+			<option text="Japanese" value="jp"/>
+			<option text="Persian" value="pe"/>
+			<option text="Urdu" value="ur"/>
+			<option text="Flemish" value="fl"/>
+			<option text="German" value="de"/>
+			<option text="Greek" value="gk"/>
+			<option text="Turkish" value="tk"/>
+			<option text="Slav" value="sv"/>
+			<option text="Euskera" value="ek"/>
+			<option text="Welsh" value="we"/>
+			<option text="Jamaican patoi" value="ra"/>
+			<option text="Mockney" value="??"/>
+			<option text="Giberish" value="Â¿Â¿"/>
+			<option text="Love" value="lv"/>
+			<option text="Sign" value=":)"/>
+			<option text="Java" value="jv"/>
+			<option text="C++" value="++"/>
+			<option text="American" value="us"/>
+		</large-select>
+		<target
+			displayText="OS Specific target"
+			osSpecific="true"
+			target="myOsSpecific"
+			defaultValue="true"
+			force="false"/>
+	</page>
+	<page
+			ifProperty="${lang}=lv"
+			type="input"
+			name="Language of Love"
+			displayText="Language of Love">
+		<comment
+				displayText="Aaaarrr, how sweet"
+				bold="true"/>
+	</page>
+	<page
+			ifProperty="${lang}=us"
+			type="input"
+			name="American"
+			displayText="Hey Yankiee">
+		<comment
+				displayText="It totaliser and initialise, with Ss you know, but never mind"
+				bold="true"/>
+	</page>
+	<page
+			ifTarget="tgsrc"
+			type="input"
+			name="properties.2"
+			displayText="Required if Source code selected">
+		<text property="myProperty2" defaultValue="tiddly poop" displayText="Enter a value"/>
+		<select
+				property="colour2"
+				defaultValue="#FF0000"
+				displayText="colour2"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<text property="myProperty3" defaultValue="blah blah" displayText="Enter a value"/>
+		<date property="date.property" dateFormat="dd-MM-yy mm:ss" defaultValue="TODAY" displayText="Enter a date"/>
+		<!-- example disabled since you might not have tomcat installed -->
+		<!--app-root
+				property="tomcat.root"
+				defaultValue="/var"
+				displayText="Select the tomcat root"
+				checkFile1="conf/tomcat-users.xml"
+				checkFile2="conf/server.xml"
+				checkDir1="webapps"
+				checkDir2="conf">
+		</app-root-->
+	</page>
+	<page
+			type="input"
+			name="contrib"
+			displayText="Contributions">
+		<target-select
+				property="colourtarget"
+				defaultValue="tgt1"
+				displayText="Select a target"
+				explanatoryText="only one target available">
+			<option text="target-one" value="tgt1"/>
+			<option text="target-two" value="tgt2"/>
+			<option text="target-three" value="tgt3"/>
+		</target-select>
+	</page>
+	<page
+			type="input"
+			name="envcond"
+			displayText="Environment Conditional"
+			ifProperty="${env.DISPLAY}=:0.0">
+			<comment
+				displayText="This page only shows if DISPLAY=:0.0"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.1"
+			displayText="Blue Conditional"
+			ifProperty="${colourtarget}=#0000FF">
+			<comment
+				displayText="original syntax"
+				bold="false"/>
+			<comment
+				displayText="colourtarget is Blue"
+				bold="false"/>
+	</page>
+	<page
+			type="input"
+			name="propcond.2"
+			displayText="Red Conditional"
+			ifProperty="${colourtarget}=#FF0000">
+			<comment
+				displayText="preferred syntax"
+				bold="false"/>
+			<comment
+				displayText="This page only shows if colourtarget is RED"
+				bold="false"/>
+	</page>
+	<page
+			 type="input"
+			 name="Password confirm check"
+			 displayText="Confirm password check">
+		<password 
+			property="thePassword" 
+			defaultValue="1234" 
+			displayText="Enter a password"
+			regex=".+"/>
+		<password-confirm
+			origField="thePassword"
+			property="confirm.thePassword"
+			defaultValue="1234"
+			displayText="Confirm password"
+			regex=".+"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="true"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/build.xml	(revision 18906)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<project name="Installation Build"  default=""  basedir=".">
+
+	<property file="ant.install.properties"/>
+
+
+		<target name="default" depends="">
+			<echo message="Entered Property [${myProperty}]"/>
+			<echo message="Checkbox Property [${isvalue}]"/>
+			<echo message="Colour selected 	[${colour}]"/>
+			<echo message="Installation Directory [${installDir}]"/>
+			<echo message="Web xml [${webxml}]"/>
+			<echo message="validated text [${validatedtext}]"/>
+			<echo message="unvalidated text [${unvalidatedtext}]"/>
+			<echo message="insecure password [${unsafepassword}]"/>
+			<echo message="lang [${lang}]"/>
+			<echo message="myProperty2 [${myProperty2}]"/>
+			<echo message="colour2 [${colour2}]"/>
+			<echo message="myProperty3 [${myProperty3}]"/>
+			<echo message="date.property [${date.property}]"/>
+			<echo message="colourtarget [${colourtarget}]"/>
+		</target>
+		<target name="tgsrc" depends="">
+			<echo message="Installing Source files"/>
+		</target>
+		<target name="cleanuptarget" depends="">
+			<echo message="Clean up run at end it is added to the last page (the progress page)"/>
+		</target>
+
+		<!-- Operating System Specific targets -->
+		<property environment="env."/>
+		<target name="myOsSpecific-linux" depends="">
+			<echo message="Should only run on Linux"/>
+		</target>
+		<target name="myOsSpecific-mac" depends="">
+			<echo message="Should only run on Apple Mac"/>
+		</target>
+		<target name="myOsSpecific-sun" depends="">
+			<echo message="Should only run on Sun OS or Solaris"/>
+		</target>
+		<target name="myOsSpecific-win" depends="">
+			<echo message="Should only run on Windoze"/>
+		</target>
+		<target name="myOsSpecific-other" depends="">
+			<echo message="Should run if none of the others run"/>
+		</target>
+	<target name="tgt1" depends="">
+		<echo message="TARGET ONE selected"/>
+	</target>
+	<target name="tgt2" depends="">
+		<echo message="TARGET TWO selected"/>
+	</target>
+	<target name="tgt3" depends="">
+		<echo message="TARGET THREE selected"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/install.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/install.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/install.cmd	(revision 18906)
@@ -0,0 +1,61 @@
+@echo off
+REM #!/bin/sh
+
+REM # The default case runs the installer in an X session if it can
+REM # falling back to text if the Graphics environment is not available
+REM # This can be changed by uncommenting the if statement and the default
+REM # can be changed by replacing "text" with "swing" below
+REM # or passing the required option on the command line
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set INTERFACE=default
+set COMMAND=%JAVA_HOME%\bin\java
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto install
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=start %JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+
+
+REM # Installer from command line classpath
+set CLASSPATH=..\..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\ai-icons-eclipse.jar
+
+REM # JGoodies Look And Feel
+set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\jgoodies-edited-1_2_2.jar
+REM # Image resources
+set CLASSPATH=%CLASSPATH%;..\..\..\..\classes
+REM # Metouia (default) Look And Feel
+REM set CLASSPATH=%CLASSPATH%;..\..\..\..\lib\metouia.jar
+
+REM # minimal ANT classpath requirements
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\..\antlib\ant-launcher.jar
+set CLASSPATH=%CLASSPATH%;cp
+
+REM ### add other ant jars required here
+REM #CLASSPATH=$CLASSPATH;.\antlib\ant-weblogic.jar;.\antlib\ant-javamail.jar
+
+%COMMAND% -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+
+goto end
+
+:nojava
+echo you must install java to run this applicaiton
+goto end
+
+
+:end
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/install.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/install.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/script/installer/install.sh	(revision 18906)
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# The default case runs the installer in an X session if it can
+# falling back to text if the Graphics environment is not available
+# This can be changed by uncommenting the if statement and the default
+# can be changed by replacing "text" with "swing" below
+# or passing the required option on the command line
+GUI=$1
+if [ "$GUI" = "" ] ; then
+	GUI=default;
+fi
+
+dir=`expr  match "$0" '\(.*\)install.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+
+
+
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+
+# JGoodies Look And Feel
+CLASSPATH=$CLASSPATH:../../../../lib/jgoodies-edited-1_2_2.jar
+# Image resources
+CLASSPATH=$CLASSPATH:../../../../src
+# Metouia (default) Look And Feel
+# CLASSPATH=$CLASSPATH:./lib/metouia.jar
+
+# minimal ANT classpath requirements
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant-launcher.jar
+CLASSPATH=$CLASSPATH:cp
+
+### add other ant jars required here
+#CLASSPATH=$CLASSPATH:./antlib/ant-weblogic.jar:./antlib/ant-javamail.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $GUI .
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/build/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/build/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/build/build.xml	(revision 18906)
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!--
+
+This Ant script is used to package parts of the demo app to create an installer
+
+the selfextract target shows an example of creating a self extracting jar for the demo app
+
+run with ...
+
+ant -buildfile build-demo.xml
+
+-->
+<project name="Create Demo Installer Zip Build"  default="selfextract"  basedir=".">
+
+    <!-- Default location in installed tree -->
+    <property name="installDir" location="../../../.."/>
+
+    <path id="taskdef.cp">
+        <fileset dir="${installDir}/lib">
+			<include name="ant-installer-ext.jar"/>
+            <include name="ant-installer.jar"/>
+        </fileset>
+	</path>
+
+	<taskdef
+		name="installer" 
+		classname="org.tp23.antinstaller.taskdefs.Installer"
+		classpathref="taskdef.cp"/>
+  
+	<property name="demo.dir" value="${installDir}/demo"/>
+
+	<target name="selfextract">
+		<mkdir dir="../artifacts/selfextract"/>
+		<echo message="Building DEMO SELFEXTRACT"/>
+		
+		<installer file="../artifacts/selfextractpack.jar" compress="true"
+				extractType="SelfExtractor"
+				installConfig="../installer/antinstall-config.xml"
+				buildFile="../installer/build.xml"
+				antInstallLib="${installDir}/lib"
+				antLib="${installDir}/antlib"
+				validateConfig="true"
+				failOnError="true"
+				icons="bluecurve">
+			<fileset dir="${demo.dir}/artifacts">
+				<include name="installpack.zip"/>
+			</fileset>
+			<fileset dir="${demo.dir}/installclasspath">
+				<include name="resources/*"/>
+			</fileset>
+		</installer>
+		
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/checkConfig.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/checkConfig.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/checkConfig.cmd	(revision 18906)
@@ -0,0 +1,23 @@
+@echo off
+
+REM  This script check the antinstall-config.xml configuration in the current directory
+
+
+REM Installer requires Java
+if  "%JAVA_HOME%" == "" goto setjava
+
+set CLASSPATH=..\..\..\lib\xercesImpl.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\xml-apis.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;..\..\..\antlib\ant.jar
+
+
+%JAVA_HOME%\bin\java -classpath %CLASSPATH%  org.tp23.antinstaller.runtime.ConfigurationLoader installer
+goto end
+
+:setjava
+echo Installer requires Java available from http://java.sun.com
+echo If you have Java installed you may just need to set the variable JAVA_HOME
+
+:end
+pause
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/checkConfig.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/checkConfig.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/checkConfig.sh	(revision 18906)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# This script checks the configuration
+
+
+
+dir=`expr  match "$0" '\(.*\)checkConfig.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      cd "$dir" ;
+   fi
+fi
+# Installer requires Java
+if [ "$JAVA_HOME" = "" ] ; then
+	echo Installer requires Java available from http://java.sun.com
+	echo If you have Java installed you may just need to set the variable JAVA_HOME
+	exit 1;
+fi
+
+# Installer from command line classpath
+cd installer
+CLASSPATH=../../../../lib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:../../../../lib/xml-apis.jar
+CLASSPATH=$CLASSPATH:../../../../lib/ant-installer.jar
+CLASSPATH=$CLASSPATH:../../../../antlib/ant.jar
+
+COMMAND=$JAVA_HOME/bin/java
+
+#echo $COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $1
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ConfigurationLoader .
+if [ $? != 0 ] ; then
+        exit $? ;
+fi
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="true"
+			lookAndFeel="jgoodies"
+			name="Demo Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/greens.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the example installer program"
+			imageResource="/resources/greens.png">
+		<comment
+				displayText="This is a demo install"
+				title="true"/>
+		<comment
+				displayText="The application installed is yer typical Hello World"
+				bold="true"/>
+		<comment
+				displayText="There is not much more to be said really."/>
+	</page>
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/GPL.txt"
+			imageResource="/resources/rockstiles.png">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/demoapp"
+				defaultValueWin="${env.ProgramFiles}\demoapp"
+				displayText="Select an installation directory"
+				create="true"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+	</page>
+	<!--  These are some other input types -->
+	<page
+			type="input"
+			name="other-input-types"
+			displayText="Pointless install options">
+		<text
+				property="myProperty"
+				defaultValue="blah blah"
+				displayText="Enter any text"/>
+		<checkbox
+				property="truefalseprop"
+				displayText="Make a boolean decision"
+				defaultValue="true"
+				force="false"/>
+		<select
+				property="colour"
+				defaultValue="#FF0000"
+				displayText="Choose the option"
+				explanatoryText="This field can be used on any input field to render further descriptive text
+				This field can be used on any input field to render further descriptive text">
+			<option text="Red" value="#FF0000"/>
+			<option text="Green" value="#00FF00"/>
+			<option text="Blue" value="#0000FF"/>
+		</select>
+		<file
+				property="selectedfile"
+				defaultValue="/usr/tomcat/webapps/default/WEB-INF/web.xml"
+				defaultValueWin="C:\autoexec.bat"
+				displayText="Select a file"
+				checkExists="false"/>
+	</page>
+	<!--  page type="progress" shows a progress page with the install button 
+				Its target is set to cleanuptarget since it is the last page this target will be run last-->
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="false"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/installer/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/examples/buildtypes/selfextract/installer/build.xml	(revision 18906)
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+<!--
+
+This is the build.xml run by AntInstaller for the demo app
+
+It is a normal Ant build script, but remember that it is run in a similar
+way to running
+> ant -buildfile build.xml default,tgdoc,tgsrc
+
+this is targets selected in the selector page have dependencies those
+dependencies may be run once for each target selected
+e.g. if tgdoc had depends="default" and the installer passed
+default,tgdoc  ant would run default then default again then tgdoc
+
+To avoid this problem targets can be forced in the gui using the following
+input in the page to choose components to install
+		<input
+			type="target"
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+
+-->
+
+<project name="Installation Build"  default=""  basedir="${basedir}">
+
+	<!-- this is required to pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+		<echo message="Colour selected [${colour}]"/>
+		<echo message="Installation Directory [${installDir}]"/>
+		<echo message="Entered Property [${myProperty}]"/>
+		<echo message="Checkbox Property [${truefalseprop}]"/>
+		<echo message="File [${selectedfile}]"/>
+		<mkdir dir="${basedir}/temp"/>
+		<unzip src="installpack.zip" dest="${basedir}/temp"/>
+		<mkdir dir="${installDir}"/>
+		<mkdir dir="${installDir}/classes"/>
+		<mkdir dir="${installDir}/config"/>
+		<mkdir dir="${installDir}/lib"/>
+		<copy file="${basedir}/temp/bin/run.sh"  tofile="${installDir}/run.sh"/>
+		<copy file="${basedir}/temp/bin/run.cmd"  tofile="${installDir}/run.cmd"/>
+		<chmod file="${installDir}/run.sh" perm="774">
+		</chmod>
+		<copy file="${basedir}/temp/README.txt" tofile="${installDir}"/>
+		<copy todir="${installDir}/classes">
+			<fileset dir="${basedir}/temp/classes"/>
+		</copy>
+		<copy todir="${installDir}/config">
+			<fileset dir="${basedir}/temp/config"/>
+		</copy>
+		<replace file="${installDir}/config/example-config.xml">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@Boolean@" value="${truefalseprop}"/>
+		</replace>
+		<replace file="${installDir}/config/demo.properties">
+			<replacefilter token="@TextProperty@"   value="${myProperty}"/>
+			<replacefilter token="@SelectedFile@"     value="${selectedfile}"/>
+			<replacefilter token="@Colour@" value="${colour}"/>
+			<replacefilter token="@Boolean@" value="${truefalseprop}"/>
+		</replace>
+	</target>
+
+	<target name="tgdoc" depends="">
+		<echo message="Installing documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<copy todir="${installDir}/doc">
+			<fileset dir="${basedir}/temp/doc"/>
+		</copy>
+	</target>
+
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<copy todir="${installDir}/src">
+			<fileset dir="${basedir}/temp/src"/>
+		</copy>
+	</target>
+
+	<target name="cleanuptarget" depends="">
+		<delete dir="${basedir}/temp">
+		</delete>
+	</target>
+</project>
Index: /branches/rk-oran/shared/ant-installer/images/README.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/README.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/README.txt	(revision 18906)
@@ -0,0 +1,21 @@
+AntInstaller Image Readme
+
+
+This pack is spearate from the main AntInstaller download
+for two reasons
+1) to keep the size of the ant-installer.jar down
+2) to allow inclusion of the (excelent) crystal icons
+licensed under LGPL
+
+All default Icons and images are licensed under Apache2.0 
+	by Paul Hinds
+
+Crystal Icons
+	http://www.everaldo.com/crystal.html 
+
+N.B. everaldo produces comercial icons as well it should 
+not be assumed that everaldo icons are LGPL generally.  
+Icons in this pack are based on icons included with KDE 
+which are LGPL.  
+Personal/Business contact with everaldo send direct 
+e-mail to everaldo@everaldo.com
Index: /branches/rk-oran/shared/ant-installer/images/extract-images/crystal-images.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/extract-images/crystal-images.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/extract-images/crystal-images.txt	(revision 18906)
@@ -0,0 +1,4 @@
+Crystal Icons from KDE install
+
+http://www.everaldo.com/crystal.html
+License : LGPL
Index: /branches/rk-oran/shared/ant-installer/images/extract-images/default-images.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/extract-images/default-images.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/extract-images/default-images.txt	(revision 18906)
@@ -0,0 +1,5 @@
+Default Icons: Paul Hinds
+
+http://java.riereta.net
+
+License: Apache 2.0
Index: /branches/rk-oran/shared/ant-installer/images/navicons/amaranth/resources/icons/LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/navicons/amaranth/resources/icons/LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/navicons/amaranth/resources/icons/LICENSE	(revision 18906)
@@ -0,0 +1,514 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+ 
Index: /branches/rk-oran/shared/ant-installer/images/navicons/bluecurve/resources/icons/LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/navicons/bluecurve/resources/icons/LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/navicons/bluecurve/resources/icons/LICENSE	(revision 18906)
@@ -0,0 +1,56 @@
+The Fedora Project
+
+Individual Contributor License Agreement (CLA)
+
+[WWW] http://fedoraproject.org/wiki/Legal/Licenses/CLA
+
+Thank you for your interest in The Fedora Project (the "Project"). In order to clarify the intellectual property license granted with Contributions from any person or entity, Red Hat, Inc. ("Red Hat"), as maintainer of the Project, must have a Contributor License Agreement (CLA) on file that has been signed by each Contributor, indicating agreement to the license terms below. This license is for Your protection as a Contributor as well as the protection of the Project and its users; it does not change your rights to use your own Contributions for any other purpose.
+
+You and the Project hereby accept and agree to the following terms and conditions:
+
+    *
+
+      1. Contributors and Contributions.
+          o
+
+            A. The Project and any individual or legal entity that voluntarily submits to the Project a Contribution are collectively addressed herein as "Contributors". For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+          o
+
+            B. A "Contribution" is any original work, including any modification or addition to an existing work, that has been submitted for inclusion in, or documentation of, any of the products owned or managed by the Project, where such work originates from that particular Contributor or from some entity acting on behalf of that Contributor.
+          o
+
+            C. A Contribution is "submitted" when any form of electronic, verbal, or written communication is sent to the Project, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of discussing or improving software or documentation of the Project, but excluding communication that is conspicuously marked or otherwise designated in writing by you as "Not a Contribution."
+          o
+
+            D. Any Contribution submitted by you to the Project shall be under the terms and conditions of this License, without any additional terms or conditions, unless you explicitly state otherwise in the submission.
+    *
+
+      2. Contributor Grant of License. You hereby grant to Red Hat, Inc., on behalf of the Project, and to recipients of software distributed by the Project:
+          o
+
+            (a) a perpetual, non-exclusive, worldwide, fully paid-up, royalty free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your Contribution and such derivative works; and,
+          o
+
+            (b) a perpetual, non-exclusive, worldwide, fully paid-up, royalty free, irrevocable (subject to Section 3) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer your Contribution and derivative works thereof, where such license applies only to those patent claims licensable by you that are necessarily infringed by your Contribution alone or by combination of your Contribution with the work to which you submitted the Contribution. Except for the license granted in this section, you reserve all right, title and interest in and to your Contributions.
+    *
+
+      3. Reciprocity. As of the date any such litigation is filed, your patent grant shall immediately terminate with respect to any party that institutes patent litigation against you (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the work to which you have contributed, constitutes direct or contributory patent infringement.
+    *
+
+      4. You represent that you are legally entitled to grant the above license. If your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to the Project, or that your employer has executed a separate Corporate CLA with the Project.
+    *
+
+      5. You represent that each of your Contributions is your original creation (see section 7 for submissions on behalf of others). You represent that your Contribution submission(s) include complete details of any third-party license or other restriction (including, but not limited to, related copyright, patents and trademarks) of which you are personally aware and which are associated with any part of your Contribution.
+    *
+
+      6. You are not expected to provide support for your Contributions, except to the extent you desire to provide support. You may provide support for free, for a fee, or not at all. Your Contributions are provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+    *
+
+      7. Should you wish to submit work that is not your original creation, you may submit it to the Project separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".
+    *
+
+      8. You agree to notify the Project of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.
+    *
+
+      9. The Project is under no obligations to accept and include every contribution.
+ 
Index: /branches/rk-oran/shared/ant-installer/images/navicons/crystalsvg/resources/icons/LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/navicons/crystalsvg/resources/icons/LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/navicons/crystalsvg/resources/icons/LICENSE	(revision 18906)
@@ -0,0 +1,12 @@
+This copyright and license notice covers the images in this directory.
+Note the license notice contains an add-on.
+
+KDE Crystal theme icons.
+Copyright (C) 2002 and following years KDE Artists
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation, version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details. 
Index: /branches/rk-oran/shared/ant-installer/images/navicons/eclipse/resources/icons/LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/navicons/eclipse/resources/icons/LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/navicons/eclipse/resources/icons/LICENSE	(revision 18906)
@@ -0,0 +1,86 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENTâS ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+    a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+    b) in the case of each subsequent Contributor:
+
+    i)changes to the Program, and
+
+    ii)additions to the Program;
+
+    where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributorâs behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipientâs responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+    a) it complies with the terms and conditions of this Agreement; and
+
+    b) its license agreement:
+
+    i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+    ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+    iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+    iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+    a) it must be made available under this Agreement; and
+
+    b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributorâs responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipientâs patent(s), then such Recipientâs rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipientâs rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipientâs rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipientâs obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. 
Index: /branches/rk-oran/shared/ant-installer/images/navicons/krystaline/resources/icons/LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/navicons/krystaline/resources/icons/LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/navicons/krystaline/resources/icons/LICENSE	(revision 18906)
@@ -0,0 +1,513 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Index: /branches/rk-oran/shared/ant-installer/images/resources/LICENSE-ant-install.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/resources/LICENSE-ant-install.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/resources/LICENSE-ant-install.txt	(revision 18906)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2005 Paul Hinds
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: /branches/rk-oran/shared/ant-installer/images/titlebars/default-images.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/titlebars/default-images.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/titlebars/default-images.txt	(revision 18906)
@@ -0,0 +1,5 @@
+Default Icons: Paul Hinds
+
+http://java.riereta.net
+
+License: Apache 2.0
Index: /branches/rk-oran/shared/ant-installer/images/tool-credits.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/images/tool-credits.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/images/tool-credits.txt	(revision 18906)
@@ -0,0 +1,17 @@
+
+   <ant-installer> 
+      _-------_ 
+      \ ()0o< / 
+       \ /|\ /
+        \   /
+         \ /
+          Â·
+Default icons created with
+
+     - inkscape - 
+http://www.inkscape.org
+
+   - and the gimp -
+  http://www.gimp.org
+
+
Index: /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-demo.desktop
===================================================================
--- /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-demo.desktop	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-demo.desktop	(revision 18906)
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Comment=AntInstaller Demo
+Path=@installDir@
+Icon=@installDir@/kde-icons/AntInstaller.png
+Exec=java -jar '@installDir@/demo/artifacts/demo-installer.jar'
+Name=AntInstaller Demo
+StartupNotify=true
+Terminal=0
+TerminalOptions=
+Type=Application
+Encoding=UTF-8
+X-KDE-SubstituteUID=false
+X-KDE-Username=
+Categories=Development;Java
Index: /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-docs.desktop
===================================================================
--- /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-docs.desktop	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-docs.desktop	(revision 18906)
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Comment=AntInstaller Docs
+Path=@installDir@
+Icon=@installDir@/kde-icons/AntInstaller.png
+Exec=kfmclient exec '@installDir@/web/index.html'
+Name=AntInstaller Docs
+StartupNotify=true
+Terminal=0
+TerminalOptions=
+Type=Application
+Encoding=UTF-8
+X-KDE-SubstituteUID=false
+X-KDE-Username=
+Categories=Development;Java
Index: /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-wizard.desktop
===================================================================
--- /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-wizard.desktop	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/kde-icons/antinstaller-wizard.desktop	(revision 18906)
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Comment=AntInstaller Project Wizard
+Path=@installDir@
+Icon=@installDir@/kde-icons/AntInstaller.png
+Exec='@installDir@/wizard.sh'
+Name=AntInstaller Wizard
+StartupNotify=true
+Terminal=0
+TerminalOptions=
+Type=Application
+Encoding=UTF-8
+X-KDE-SubstituteUID=false
+X-KDE-Username=
+Categories=Development;Java
Index: /branches/rk-oran/shared/ant-installer/lib/LICENSE-ant-install.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/lib/LICENSE-ant-install.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/lib/LICENSE-ant-install.txt	(revision 18906)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: /branches/rk-oran/shared/ant-installer/lib/LICENSE-ant.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/lib/LICENSE-ant.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/lib/LICENSE-ant.txt	(revision 18906)
@@ -0,0 +1,203 @@
+/*
+ *                                 Apache License
+ *                           Version 2.0, January 2004
+ *                        http://www.apache.org/licenses/
+ *
+ *   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ *
+ *   1. Definitions.
+ *
+ *      "License" shall mean the terms and conditions for use, reproduction,
+ *      and distribution as defined by Sections 1 through 9 of this document.
+ *
+ *      "Licensor" shall mean the copyright owner or entity authorized by
+ *      the copyright owner that is granting the License.
+ *
+ *      "Legal Entity" shall mean the union of the acting entity and all
+ *      other entities that control, are controlled by, or are under common
+ *      control with that entity. For the purposes of this definition,
+ *      "control" means (i) the power, direct or indirect, to cause the
+ *      direction or management of such entity, whether by contract or
+ *      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ *      outstanding shares, or (iii) beneficial ownership of such entity.
+ *
+ *      "You" (or "Your") shall mean an individual or Legal Entity
+ *      exercising permissions granted by this License.
+ *
+ *      "Source" form shall mean the preferred form for making modifications,
+ *      including but not limited to software source code, documentation
+ *      source, and configuration files.
+ *
+ *      "Object" form shall mean any form resulting from mechanical
+ *      transformation or translation of a Source form, including but
+ *      not limited to compiled object code, generated documentation,
+ *      and conversions to other media types.
+ *
+ *      "Work" shall mean the work of authorship, whether in Source or
+ *      Object form, made available under the License, as indicated by a
+ *      copyright notice that is included in or attached to the work
+ *      (an example is provided in the Appendix below).
+ *
+ *      "Derivative Works" shall mean any work, whether in Source or Object
+ *      form, that is based on (or derived from) the Work and for which the
+ *      editorial revisions, annotations, elaborations, or other modifications
+ *      represent, as a whole, an original work of authorship. For the purposes
+ *      of this License, Derivative Works shall not include works that remain
+ *      separable from, or merely link (or bind by name) to the interfaces of,
+ *      the Work and Derivative Works thereof.
+ *
+ *      "Contribution" shall mean any work of authorship, including
+ *      the original version of the Work and any modifications or additions
+ *      to that Work or Derivative Works thereof, that is intentionally
+ *      submitted to Licensor for inclusion in the Work by the copyright owner
+ *      or by an individual or Legal Entity authorized to submit on behalf of
+ *      the copyright owner. For the purposes of this definition, "submitted"
+ *      means any form of electronic, verbal, or written communication sent
+ *      to the Licensor or its representatives, including but not limited to
+ *      communication on electronic mailing lists, source code control systems,
+ *      and issue tracking systems that are managed by, or on behalf of, the
+ *      Licensor for the purpose of discussing and improving the Work, but
+ *      excluding communication that is conspicuously marked or otherwise
+ *      designated in writing by the copyright owner as "Not a Contribution."
+ *
+ *      "Contributor" shall mean Licensor and any individual or Legal Entity
+ *      on behalf of whom a Contribution has been received by Licensor and
+ *      subsequently incorporated within the Work.
+ *
+ *   2. Grant of Copyright License. Subject to the terms and conditions of
+ *      this License, each Contributor hereby grants to You a perpetual,
+ *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ *      copyright license to reproduce, prepare Derivative Works of,
+ *      publicly display, publicly perform, sublicense, and distribute the
+ *      Work and such Derivative Works in Source or Object form.
+ *
+ *   3. Grant of Patent License. Subject to the terms and conditions of
+ *      this License, each Contributor hereby grants to You a perpetual,
+ *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ *      (except as stated in this section) patent license to make, have made,
+ *      use, offer to sell, sell, import, and otherwise transfer the Work,
+ *      where such license applies only to those patent claims licensable
+ *      by such Contributor that are necessarily infringed by their
+ *      Contribution(s) alone or by combination of their Contribution(s)
+ *      with the Work to which such Contribution(s) was submitted. If You
+ *      institute patent litigation against any entity (including a
+ *      cross-claim or counterclaim in a lawsuit) alleging that the Work
+ *      or a Contribution incorporated within the Work constitutes direct
+ *      or contributory patent infringement, then any patent licenses
+ *      granted to You under this License for that Work shall terminate
+ *      as of the date such litigation is filed.
+ *
+ *   4. Redistribution. You may reproduce and distribute copies of the
+ *      Work or Derivative Works thereof in any medium, with or without
+ *      modifications, and in Source or Object form, provided that You
+ *      meet the following conditions:
+ *
+ *      (a) You must give any other recipients of the Work or
+ *          Derivative Works a copy of this License; and
+ *
+ *      (b) You must cause any modified files to carry prominent notices
+ *          stating that You changed the files; and
+ *
+ *      (c) You must retain, in the Source form of any Derivative Works
+ *          that You distribute, all copyright, patent, trademark, and
+ *          attribution notices from the Source form of the Work,
+ *          excluding those notices that do not pertain to any part of
+ *          the Derivative Works; and
+ *
+ *      (d) If the Work includes a "NOTICE" text file as part of its
+ *          distribution, then any Derivative Works that You distribute must
+ *          include a readable copy of the attribution notices contained
+ *          within such NOTICE file, excluding those notices that do not
+ *          pertain to any part of the Derivative Works, in at least one
+ *          of the following places: within a NOTICE text file distributed
+ *          as part of the Derivative Works; within the Source form or
+ *          documentation, if provided along with the Derivative Works; or,
+ *          within a display generated by the Derivative Works, if and
+ *          wherever such third-party notices normally appear. The contents
+ *          of the NOTICE file are for informational purposes only and
+ *          do not modify the License. You may add Your own attribution
+ *          notices within Derivative Works that You distribute, alongside
+ *          or as an addendum to the NOTICE text from the Work, provided
+ *          that such additional attribution notices cannot be construed
+ *          as modifying the License.
+ *
+ *      You may add Your own copyright statement to Your modifications and
+ *      may provide additional or different license terms and conditions
+ *      for use, reproduction, or distribution of Your modifications, or
+ *      for any such Derivative Works as a whole, provided Your use,
+ *      reproduction, and distribution of the Work otherwise complies with
+ *      the conditions stated in this License.
+ *
+ *   5. Submission of Contributions. Unless You explicitly state otherwise,
+ *      any Contribution intentionally submitted for inclusion in the Work
+ *      by You to the Licensor shall be under the terms and conditions of
+ *      this License, without any additional terms or conditions.
+ *      Notwithstanding the above, nothing herein shall supersede or modify
+ *      the terms of any separate license agreement you may have executed
+ *      with Licensor regarding such Contributions.
+ *
+ *   6. Trademarks. This License does not grant permission to use the trade
+ *      names, trademarks, service marks, or product names of the Licensor,
+ *      except as required for reasonable and customary use in describing the
+ *      origin of the Work and reproducing the content of the NOTICE file.
+ *
+ *   7. Disclaimer of Warranty. Unless required by applicable law or
+ *      agreed to in writing, Licensor provides the Work (and each
+ *      Contributor provides its Contributions) on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ *      implied, including, without limitation, any warranties or conditions
+ *      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ *      PARTICULAR PURPOSE. You are solely responsible for determining the
+ *      appropriateness of using or redistributing the Work and assume any
+ *      risks associated with Your exercise of permissions under this License.
+ *
+ *   8. Limitation of Liability. In no event and under no legal theory,
+ *      whether in tort (including negligence), contract, or otherwise,
+ *      unless required by applicable law (such as deliberate and grossly
+ *      negligent acts) or agreed to in writing, shall any Contributor be
+ *      liable to You for damages, including any direct, indirect, special,
+ *      incidental, or consequential damages of any character arising as a
+ *      result of this License or out of the use or inability to use the
+ *      Work (including but not limited to damages for loss of goodwill,
+ *      work stoppage, computer failure or malfunction, or any and all
+ *      other commercial damages or losses), even if such Contributor
+ *      has been advised of the possibility of such damages.
+ *
+ *   9. Accepting Warranty or Additional Liability. While redistributing
+ *      the Work or Derivative Works thereof, You may choose to offer,
+ *      and charge a fee for, acceptance of support, warranty, indemnity,
+ *      or other liability obligations and/or rights consistent with this
+ *      License. However, in accepting such obligations, You may act only
+ *      on Your own behalf and on Your sole responsibility, not on behalf
+ *      of any other Contributor, and only if You agree to indemnify,
+ *      defend, and hold each Contributor harmless for any liability
+ *      incurred by, or claims asserted against, such Contributor by reason
+ *      of your accepting any such warranty or additional liability.
+ *
+ *   END OF TERMS AND CONDITIONS
+ *
+ *   APPENDIX: How to apply the Apache License to your work.
+ *
+ *      To apply the Apache License to your work, attach the following
+ *      boilerplate notice, with the fields enclosed by brackets "[]"
+ *      replaced with your own identifying information. (Don't include
+ *      the brackets!)  The text should be enclosed in the appropriate
+ *      comment syntax for the file format. We also recommend that a
+ *      file or class name and description of purpose be included on the
+ *      same "printed page" as the copyright notice for easier
+ *      identification within third-party archives.
+ *
+ *   Copyright [yyyy] [name of copyright owner]
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ */
Index: /branches/rk-oran/shared/ant-installer/lib/LICENSE-dom.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/lib/LICENSE-dom.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/lib/LICENSE-dom.txt	(revision 18906)
@@ -0,0 +1,71 @@
+This license came from:
+http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+
+W3C® SOFTWARE NOTICE AND LICENSE
+Copyright © 1994-2001 World
+Wide Web Consortium, <a href="http://www.w3.org/">World
+Wide Web Consortium</a>, (<a href=
+"http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de
+Recherche en Informatique et en Automatique</a>, <a href=
+"http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/
+
+This W3C work (including software, documents, or other related
+items) is being provided by the copyright holders under the
+following license. By obtaining, using and/or copying this work,
+you (the licensee) agree that you have read, understood, and will
+comply with the following terms and conditions:
+Permission to use, copy, modify, and distribute this software
+and its documentation, with or without modification,  for any
+purpose and without fee or royalty is hereby granted, provided that
+you include the following on ALL copies of the software and
+documentation or portions thereof, including modifications, that
+you make:
+
+The full text of this NOTICE in a location viewable to users of
+the redistributed or derivative work.
+
+Any pre-existing intellectual property disclaimers, notices, or
+terms and conditions. If none exist, a short notice of the
+following form (hypertext is preferred, text is permitted) should
+be used within the body of any redistributed or derivative code:
+"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of
+Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/"
+
+Notice of any changes or modifications to the W3C files,
+including the date changes were made. (We recommend you provide 
+URIs to the location from which the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND
+COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
+USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
+PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
+SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
+SOFTWARE OR DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without
+specific, written prior permission. Title to copyright in this
+software and any associated documentation will at all times remain
+with copyright holders.
+____________________________________
+This formulation of W3C's notice and license became active on
+August 14 1998 so as to improve compatibility with GPL. This
+version ensures that W3C software licensing terms are no more
+restrictive than GPL and consequently W3C software may be
+distributed in GPL packages. See the older formulation for the
+policy prior to this date. Please see our Copyright FAQ for common 
+questions about using materials from
+our site, including specific terms and conditions for packages like
+libwww, Amaya, and Jigsaw. 
+Other questions about this notice can be
+directed to site-policy@w3.org.
+
+webmaster
Index: /branches/rk-oran/shared/ant-installer/lib/LICENSE-jgoodies.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/lib/LICENSE-jgoodies.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/lib/LICENSE-jgoodies.txt	(revision 18906)
@@ -0,0 +1,31 @@
+
+           The BSD License for the JGoodies Looks
+           ======================================
+
+Copyright (c) 2001-2004 JGoodies Karsten Lentzsch. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+ o Redistributions of source code must retain the above copyright notice, 
+   this list of conditions and the following disclaimer. 
+    
+ o 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. 
+    
+ o Neither the name of JGoodies Karsten Lentzsch nor the names of 
+   its contributors may be used to endorse or promote products derived 
+   from this software without specific prior written permission. 
+    
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS 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 COPYRIGHT OWNER OR 
+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.
Index: /branches/rk-oran/shared/ant-installer/lib/LICENSE-sax.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/lib/LICENSE-sax.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/lib/LICENSE-sax.txt	(revision 18906)
@@ -0,0 +1,20 @@
+This license came from: http://www.megginson.com/SAX/copying.html
+  However please note future versions of SAX may be covered 
+  under http://saxproject.org/?selected=pd
+
+
+This page is now out of date -- see the new SAX site at 
+http://www.saxproject.org/ for more up-to-date
+releases and other information. Please change your bookmarks.
+
+
+SAX2 is Free!
+
+I hereby abandon any property rights to SAX 2.0 (the Simple API for
+XML), and release all of the SAX 2.0 source code, compiled code, and
+documentation contained in this distribution into the Public Domain.
+SAX comes with NO WARRANTY or guarantee of fitness for any
+purpose.
+
+David Megginson, david@megginson.com
+2000-05-05
Index: /branches/rk-oran/shared/ant-installer/lib/LICENSE-sysout.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/lib/LICENSE-sysout.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/lib/LICENSE-sysout.txt	(revision 18906)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: /branches/rk-oran/shared/ant-installer/lib/LICENSE-xerces.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/lib/LICENSE-xerces.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/lib/LICENSE-xerces.txt	(revision 18906)
@@ -0,0 +1,56 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999-2002 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 acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xerces" 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 name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * 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 and was
+ * originally based on software copyright (c) 1999, International
+ * Business Machines, Inc., http://www.ibm.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
Index: /branches/rk-oran/shared/ant-installer/lib/test.bat
===================================================================
--- /branches/rk-oran/shared/ant-installer/lib/test.bat	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/lib/test.bat	(revision 18906)
@@ -0,0 +1,3 @@
+@java -cp c:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-launcher.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-antlr.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-apache-bcel.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-apache-bsf.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-apache-log4j.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-apache-oro.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-apache-regexp.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-apache-resolver.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-commons-logging.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-commons-net.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-icontract.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-jai.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-javamail.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-jdepend.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-jmf.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-jsch.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-junit.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-launcher.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-netrexx.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-nodeps.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-starteam.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-stylebook.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-swing.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-trax.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-vaj.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-weblogic.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-xalan1.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant-xslp.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\ant.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\xercesImpl.jar;C:\research\oranfry\release-kits\wirk3\bin\apache-ant-1.6.5\lib\xml-apis.jar;C:\j2sdk1.4.2_08\lib\tools.jar;ant-installer-ext.jar;ant-installer.jar;jgoodies-edited-1_2_2.jar;xercesImpl.jar;xml-apis.jar org.tp23.antinstaller.runtime.ConfigurationLoader c:\research\oranfry\snapshots\3s2008.05.07\installer antinstall-config.xml
+
+::c:\research\oranfry\snapshots\3s2008.05.07\installer\cp;
Index: /branches/rk-oran/shared/ant-installer/src/README.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/README.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/README.txt	(revision 18906)
@@ -0,0 +1,109 @@
+
+This SelfExtracting archive should be run with Java to start the installation.
+________________________________________________________________________________
+
+If Java1.4 is installed correctly simply double click the .jar file in your 
+file browser.
+
+
+To run the installer from the commandline
+WINDOWS 
+		C:\> javaw -jar [installer-file].jar
+UNIX
+		> java -jar [installer-file].jar
+
+
+If the .jar extension has been reregistered you will need to specify the Java
+command
+
+WINDOWS
+
+	Right mouse click on the file and select "Open with" then "javaw"
+
+
+LINUX
+
+	Konquerer (KDE) right mouse click and select "Open with" then "java"
+
+
+
+
+
+TROUBLESHOOTING
+________________________________________________________________________________
+
+
+WINDOWS
+________________________________________________________________________________
+If you do not have the "javaw" entry in the "Open with" list 
+	Check that you have a current version of Java ( >1.4 ) installed.
+	The Sun Java installation process registers javaw with .jars in the 
+	installation.  
+	You can reinstall Java if you still have the original installer.
+	If you don't have the installer, or don't want to reinstall Java, you can 
+	modify the registration of the .jar extension.
+		In Explorer select "Tools" then "Folder options"
+		Select the "File types" tab
+		First check to see if teh JAR Extension is in the list
+			JAR extension IS in the list
+				click the "Change" button
+				find javaw in the list of files
+				click OK
+			JAR extension NOT in list
+				click the New button
+				enter "jar" as the file extension
+				Enter <New> as the file type
+				
+			
+				
+
+
+LINUX
+________________________________________________________________________________
+
+Using X
+
+Log in to the shell as the user that is running X
+Ensure you have exported your DISPLAY variable  (echo $DISPLAY) if not export it
+> export DISPLAY=127.0.0.1:0
+
+Check the default java is the correct version
+> java -version
+
+	If the java binary is not found, but you do have Java installed
+		Add the bin directory of the Java installation to your path
+		> export PATH=$PATH:[path to Java]/bin
+		run the installer with > java -jar [installer-file].jar
+	
+	If the default java version is below 1.4
+		If you do NOT have a recent version installed anywhere on your system
+			install the Sun Java JRE or SDK for linux.
+		If/when you DO have a recent version of Java installed
+			find the location of the java installation
+			e.g /usr/java/j2sdk1.4.2_04
+			export the JAVA_HOME variable of the installation
+			> export JAVA_HOME=/usr/java/j2sdk1.4.2_04
+			run the following command
+			> $JAVA_HOME/bin/java -jar [installer-file].jar
+			You should consider adding the export JAVA_HOME entry to your profile 
+			and/or ensure the location of the JAVA_HOME/bin directory for Java >1.4 
+			is in your PATH
+		
+	If the default java version IS above 1.4
+	run the installer with > java -jar [installer-file].jar
+
+
+Without X (command line)
+
+The installer will run on the command line with a text interface if it is not 
+possible to load the GUI.
+running the following command without a DISPLAY variable or in runlevel 3 will
+start the installer in text mode
+> java -jar [installer-file].jar
+
+
+
+
+
+
+ 
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/DefaultPropertiesFileRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/DefaultPropertiesFileRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/DefaultPropertiesFileRenderer.java	(revision 18906)
@@ -0,0 +1,108 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+import org.tp23.antinstaller.input.ConditionalField;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.SecretPropertyField;
+import org.tp23.antinstaller.page.Page;
+
+
+
+/**
+ *
+ * <p>Outputs the completed Pages as a java Properties file. </p>
+ * @author Paul Hinds
+ * @version $Id: DefaultPropertiesFileRenderer.java,v 1.8 2007/01/09 22:41:41 teknopaul Exp $
+ */
+public class DefaultPropertiesFileRenderer
+	implements PropertiesFileRenderer {
+
+	public DefaultPropertiesFileRenderer() {
+	}
+
+	public void renderProperties(InstallerContext ctx, File baseDir){
+		Installer installer = ctx.getInstaller();
+		Page[] completedPages = installer.getPages();
+		Properties props = new Properties();
+		props.put(FILE_ROOT_PROPERTY, baseDir.getAbsolutePath());
+        props.setProperty(INSTALLER_VERSION_PROPERTY,
+                ctx.getInstaller().getVersion());
+
+
+		for (int i = 0; i < completedPages.length; i++) {
+			OutputField[] fields = completedPages[i].getOutputField();
+
+            retrieveProperties( fields, props );
+			
+			// print targets selected
+			List targets = completedPages[i].getTargets(ctx);
+			if(targets.size() > 0){
+				Iterator iterator = targets.iterator();
+				StringBuffer targetProperty = new StringBuffer();
+				while (iterator.hasNext()) {
+					String target = (String) iterator.next();
+					targetProperty.append(target).append(",");
+				}
+				props.put(completedPages[i].getName() + TARGETS_SUFFIX, targetProperty.toString());				
+			}
+
+		}
+		try {
+			File antInstallProperties = new File(baseDir.getAbsolutePath(), PROPERTIES_FILE_NAME);
+            FileOutputStream fos = new FileOutputStream(antInstallProperties);
+			props.store(fos,
+						"Ant Installer - AutoGenerated properties");
+            fos.close();
+		}
+		catch (Throwable ex) {
+            if(ctx.getInstaller().isVerbose()) {
+                ctx.log(ex);
+            }
+			//swallow Exceptions as in contract for this method
+		}
+	}
+
+    private void retrieveProperties( OutputField[] fields, Properties props ) {
+        for (int f = 0; f < fields.length; f++) {
+            if (fields[f] instanceof SecretPropertyField) {
+                //InputField field = (InputField)fields[f];
+                //props.put(field.getProperty(), "XXXXXXXX");
+            }
+            else if( fields[f] instanceof ConditionalField ) {
+                ConditionalField confField = (ConditionalField) fields[f];
+                retrieveProperties( confField.getFields(), props );
+            }
+            else if (fields[f] instanceof InputField) {
+                InputField field = (InputField)fields[f];
+
+                String result = field.getInputResult();
+                //Temporary fix for PR 1353906
+                if( result == null ) {
+                    result = "";
+                }
+                props.put(field.getProperty(), result);
+            }
+        }
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ExplicitPropertiesFileRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ExplicitPropertiesFileRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ExplicitPropertiesFileRenderer.java	(revision 18906)
@@ -0,0 +1,218 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import org.tp23.antinstaller.input.ConditionalField;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.SecretPropertyField;
+import org.tp23.antinstaller.page.Page;
+
+/**
+ * <p>Outputs the completed Pages as a Java Properties file. The file produced is compatible
+ * with java.util.Properties. </p>
+ * <p>Output is commented as it is printed to aid debugging</p>
+ * @see http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100850
+ * @author Paul Hinds
+ * @version $Id: ExplicitPropertiesFileRenderer.java,v 1.9 2007/01/09 22:41:41 teknopaul Exp $
+ */
+public class ExplicitPropertiesFileRenderer
+	implements PropertiesFileRenderer {
+
+	private static String newLine = System.getProperty("line.separator");
+	private static final char[] hexidecimals = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+
+	public ExplicitPropertiesFileRenderer() {
+	}
+
+	public void renderProperties(InstallerContext ctx, File baseDir){
+		Installer installer = ctx.getInstaller();
+		Page[] completedPages = installer.getPages();
+
+		StringBuffer propertiesData = new StringBuffer();
+		propertiesData.append("### Ant Installer - properties auto generated on ");
+		propertiesData.append( convert(new Date().toString(), true) );
+		propertiesData.append(newLine);
+		propertiesData.append(newLine);
+
+		propertiesData.append(FILE_ROOT_PROPERTY);
+		propertiesData.append(" = ");
+		propertiesData.append( convert(baseDir.getAbsolutePath(), true) );
+		propertiesData.append(newLine);
+
+        propertiesData.append(INSTALLER_VERSION_PROPERTY);
+        propertiesData.append(" = ");
+        propertiesData.append( convert(ctx.getInstaller().getVersion(), true) );
+        propertiesData.append(newLine);
+
+		propertiesData.append(newLine);
+		String property = null;
+		String value = null;
+
+
+		for (int i = 0; i < completedPages.length; i++) {
+			OutputField[] fields = completedPages[i].getOutputField();
+
+			propertiesData.append(newLine);
+			propertiesData.append("## Properties from Page:" + completedPages[i].getName());
+			propertiesData.append(newLine);
+
+            retrievePropertiesData( fields, propertiesData );
+
+			// print targets selected
+			List targets = completedPages[i].getTargets(ctx);
+			if(targets.size() > 0){
+				Iterator iterator = targets.iterator();
+				StringBuffer targetProperty = new StringBuffer();
+				while (iterator.hasNext()) {
+					String target = (String) iterator.next();
+					targetProperty.append(target).append(",");
+				}
+				propertiesData.append("# Targets selected for page");
+				propertiesData.append(newLine);
+				property = convert(completedPages[i].getName() + TARGETS_SUFFIX, true);
+				value = convert(targetProperty.toString(), true);
+				propertiesData.append(property + " = " + value);
+				propertiesData.append(newLine);
+				
+			}
+		}
+		try {
+			File antInstallProperties = new File(baseDir.getAbsolutePath(), PROPERTIES_FILE_NAME);
+			FileWriter fos = new FileWriter(antInstallProperties);
+			BufferedWriter writer = new BufferedWriter(fos);
+			writer.write(propertiesData.toString());
+			writer.flush();
+			fos.close();
+		}
+		catch (Throwable ex) {
+            if(ctx.getInstaller().isVerbose()) {
+                ctx.log(ex);
+            }
+            //swallow Exceptions as in the contract for this method
+		}
+	}
+    private void retrievePropertiesData( OutputField[] fields, StringBuffer propertiesData ) {
+        String property = null;
+        String value = null;
+
+        for (int f = 0; f < fields.length; f++) {
+            if (fields[f] instanceof SecretPropertyField) {
+                InputField field = (InputField) fields[f];
+                //String result = field.getInputResult();
+                propertiesData.append("# Property hidden " + printClass(fields[f].getClass()));
+                propertiesData.append(newLine);
+                property = convert(field.getProperty(), true);
+                propertiesData.append("#" + property + "=XXXXXXXX");
+                propertiesData.append(newLine);
+            }
+            else if (fields[f] instanceof ConditionalField ) {
+                ConditionalField confField = (ConditionalField) fields[f];
+                retrievePropertiesData( confField.getFields(), propertiesData );
+            }
+            else if (fields[f] instanceof InputField) {
+                InputField field = (InputField) fields[f];
+                String result = field.getInputResult();
+                propertiesData.append("# " + printClass(fields[f].getClass()));
+                propertiesData.append(newLine);
+
+                property = convert(field.getProperty(), true);
+                value = convert(result, false);
+                propertiesData.append(property + " = " + value);
+                propertiesData.append(newLine);
+            }
+        }
+    }
+
+	private String printClass(Class clazz) {
+		String name = clazz.getName();
+		int lastDot = name.lastIndexOf('.');
+		return name.substring(lastDot, name.length());
+	}
+
+	private String convert(String input, boolean doSpaces) {
+		if (input == null) {
+			// this happens when a page is skipped in text mode
+			return "";
+		}
+		int num = input.length();
+		StringBuffer sb = new StringBuffer(num);
+
+		for (int i = 0; i < num; i++) {
+			char c = input.charAt(i);
+			switch (c) {
+				case ' ':
+					if (i == 0 || doSpaces) {
+						sb.append('\\');
+					}
+					sb.append(' ');
+					break;
+				case '\n':
+					sb.append("\\n");
+					break;
+				case '\r':
+					sb.append("\\r");
+					break;
+				case '\\':
+					sb.append("\\\\");
+					break;
+				case '\t':
+					sb.append("\\t");
+					break;
+				case '\f':
+					sb.append("\\f");
+					break;
+				case '=':
+					sb.append("\\=");
+					break;
+				case ':':
+					sb.append("\\:");
+					break;
+				case '#':
+					sb.append("\\#");
+					break;
+				case '!':
+					sb.append("\\!");
+					break;
+
+				default:
+					if ( (c < 0x0020) || (c > 0x007e) ) {
+						sb.append("\\u")
+							.append(hex( (c >> 12) & 0xF))
+							.append(hex( (c >> 8) & 0xF))
+							.append(hex( (c >> 4) & 0xF))
+							.append(hex(c & 0xF));
+					}
+					else {
+						sb.append(c);
+					}
+			}
+		}
+		return sb.toString();
+	}
+
+	private char hex(int val) {
+		return hexidecimals[ (val & 0xF)];
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/InstallException.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/InstallException.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/InstallException.java	(revision 18906)
@@ -0,0 +1,67 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+/**
+ *
+ * <p>Custom Installation Exception, Hopefully compatible with JDK1.3 and 1.4</p>
+ * @author Paul Hinds
+ * @version $Id: InstallException.java,v 1.1.1.1 2005/10/18 18:20:51 teknopaul Exp $
+ */
+public class InstallException extends Exception{
+
+	private Throwable cause;
+	
+	public InstallException() {
+	}
+	public InstallException(String message) {
+		super(message);
+	}
+	public InstallException(String message,Throwable cause) {
+		super(message);
+        this.cause = cause;
+	}
+    public Throwable getException() {
+        return cause;
+    }
+    public Throwable getCause() {
+        return getException();
+    }
+    public void printStackTrace() {
+        printStackTrace(System.err);
+    }
+    public void printStackTrace(PrintStream ps) {
+        synchronized (ps) {
+            super.printStackTrace(ps);
+            if (cause != null) {
+                ps.println("--- Nested Exception ---");
+                cause.printStackTrace(ps);
+            }
+        }
+    }
+    public void printStackTrace(PrintWriter pw) {
+        synchronized (pw) {
+            super.printStackTrace(pw);
+            if (cause != null) {
+                pw.println("--- Nested Exception ---");
+                cause.printStackTrace(pw);
+            }
+        }
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/Installer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/Installer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/Installer.java	(revision 18906)
@@ -0,0 +1,275 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller;
+
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.ResultContainer;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.renderer.swing.SizeConstants;
+import org.tp23.antinstaller.runtime.IfPropertyHelper;
+import org.tp23.antinstaller.runtime.VersionHelper;
+import org.tp23.antinstaller.runtime.exe.ExecuteRunnerFilter.AbortException;
+
+/**
+ * <p>Object representation of the Installer element in the config. </p>
+ * <p>This object holds the reference to all the Pages which in tern hold references
+ * to the InputFields,  All the properties in the Installer element are held at this level
+ * as is the ResultContainer</p>
+ * @author Paul Hinds
+ * @version $Id: Installer.java,v 1.9 2007/01/28 08:44:41 teknopaul Exp $
+ */
+public class Installer {
+
+
+	// i18n support
+	public static ResourceBundle langPack = null;
+	static {
+		try {
+			langPack = ResourceBundle.getBundle("resources.LanguagePack");
+		} catch (MissingResourceException e) {
+			// ignore, signifies no lang packs installed
+		}
+	}
+
+	private String name;
+	private String minJavaVersion = "1.4";
+	private String ui;// permitted UI override values
+	private boolean verbose;
+	private boolean debug;
+	private String lookAndFeel;
+	private String wide;
+	private String windowIcon;
+	private String defaultImageResource;
+	private String finishButtonText = "Install";
+    private String antialiased;
+    private String loadDefaults;
+    private String version = "0.0";
+    
+	private Page[] pages;
+	private ResultContainer resultContainer = new ResultContainer();
+
+	public Installer() {
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+
+	public String getMinJavaVersion() {
+		return minJavaVersion;
+	}
+    
+    public void setMinJavaVersion(String minJavaVersion) throws AbortException {
+        if(minJavaVersion != null && ! "".equals(minJavaVersion) ) {
+            VersionHelper helper = new VersionHelper();
+            if( ! helper.equalOrHigher(System.getProperty("java.version"), minJavaVersion, true) ) {
+                throw new AbortException("Incorrect Java version, installer requires: " + minJavaVersion);
+            }
+        }
+        this.minJavaVersion = minJavaVersion;
+    }
+
+	public Page[] getPages() {
+		return pages;
+	}
+
+	public void setPages(Page[] pages) {
+		this.pages = pages;
+	}
+
+    /**
+     * returns full ui attribute with spaces removed (the string is not parsed into tokens).
+     * e.g.  "text,swint,swing-auto"
+     * @return
+     */
+	public String getUi() {
+		return ui;
+	}
+
+    /**
+     * Sets the ui attrribute removing any whitespace
+     * @param ui
+     */
+	public void setUi(String ui) {
+		this.ui = ui.replaceAll("\\s", "");
+	}
+
+	public boolean supportsAutoBuild(){
+		return ui != null && ui.indexOf("-auto") > -1;
+	}
+
+	public boolean isVerbose() {
+		return verbose;
+	}
+	public void setVerbose(boolean verbose) {
+		this.verbose = verbose;
+	}
+	public void setVerbose(String strVerbose) {
+		this.verbose = OutputField.isTrue(strVerbose);
+	}
+
+	public boolean isDebug() {
+		return debug;
+	}
+	public void setDebug(boolean debug) {
+		this.debug = debug;
+	}
+	public void setDebug(String strDebug) {
+		this.debug = OutputField.isTrue(strDebug);
+	}
+
+
+	public String getLookAndFeel() {
+		return lookAndFeel;
+	}
+
+	public void setLookAndFeel(String lookAndFeel) {
+		this.lookAndFeel = lookAndFeel;
+	}
+
+	public String getWindowIcon() {
+		return windowIcon;
+	}
+
+	public void setWindowIcon(String windowIcon) {
+		this.windowIcon = windowIcon;
+	}
+
+	public String getDefaultImageResource() {
+		return defaultImageResource;
+	}
+
+	public void setDefaultImageResource(String defaultImageResource) {
+		this.defaultImageResource = defaultImageResource;
+	}
+
+	public String getFinishButtonText() {
+		if(langPack != null){
+			return langPack.getString("finishButtonText");
+		}
+		return finishButtonText;
+	}
+
+	public void setFinishButtonText(String finishButtonText) {
+		this.finishButtonText = finishButtonText;
+	}
+
+	public ResultContainer getResultContainer() {
+		return resultContainer;
+	}
+
+	public String getAntialiased() {
+		return antialiased;
+	}
+
+	public void setAntialiased(String antialiased) {
+		this.antialiased = antialiased;
+	}
+
+	public String getWide() {
+		return wide;
+	}
+
+	public void setWide(String wide) {
+		try {
+			this.wide = wide;
+			parseWideValue(wide);
+		} catch (Exception e) {
+			// ignore use defaults
+		}
+	}
+	public void parseWideValue(String wide) throws NumberFormatException, StringIndexOutOfBoundsException{
+		int pageWidth = Integer.parseInt(wide.substring(0, wide.indexOf(':')));
+		int labelWidth = Integer.parseInt(wide.substring(wide.indexOf(':') + 1, wide.length()));
+		SizeConstants.PAGE_WIDTH = pageWidth;
+		SizeConstants.LABEL_WIDTH = labelWidth;
+	}
+
+	public String getLoadDefaults() {
+		return loadDefaults;
+	}
+
+	public void setLoadDefaults(String loadDefaults) {
+		this.loadDefaults = loadDefaults;
+	}
+
+	/**
+	 * Returns the list of selected targets from the installer obeying
+	 * page order. This method is
+	 * probably only usefull after the UI screens have finished.  Using prior to that
+	 * bear in mind that the user in the Swing GUI can go back and reselect
+	 * targets that were not selected previously.
+	 * Page targets for pages that were not shown are not returned in the list 
+	 * @return Returns a Vector since Ant requires this for the Project class (Should be a List)
+	 * @throws InstallException 
+	 */
+	public Vector getTargets(InstallerContext ctx){
+		Vector argsList = new Vector();
+		for (int i = 0; i < getPages().length; i++) {
+			Page page = getPages()[i];
+			List pageTargets = page.getPageTargets();
+			boolean shown = conditionalDisplay(page, ctx);
+			for (int pt = 0; pt < pageTargets.size(); pt++) {
+				Page.IndexedTarget target = (Page.IndexedTarget)pageTargets.get(pt);
+				if( ! argsList.contains(target.getTarget()) &&
+					shown){
+					argsList.add(target.getTarget());
+				}
+			}
+			List elementTargets = page.getElementTargets();
+			for (int pt = 0; pt < elementTargets.size(); pt++) {
+				Page.IndexedTarget target = (Page.IndexedTarget)elementTargets.get(pt);
+				if( ! argsList.contains(target.getTarget()) ){
+					argsList.add(target.getTarget());
+				}
+			}
+		}
+		return argsList;
+	}
+
+	/**
+	 * @return boolean true if the page was to be shown
+	 * @throws InstallException 
+	 */
+	private boolean conditionalDisplay(Page page, InstallerContext ctx){
+		try {
+			IfPropertyHelper helper = new IfPropertyHelper(ctx);
+			return helper.ifProperty(page) && helper.ifTarget(page, ctx.getInstaller().getPages());
+		} catch (InstallException e) {
+			throw new RuntimeException("ifProperty runtime exception");
+		}
+	}
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/InstallerContext.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/InstallerContext.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/InstallerContext.java	(revision 18906)
@@ -0,0 +1,271 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller;
+
+import java.io.File;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Properties;
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.taskdefs.Execute;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.renderer.AntOutputRenderer;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+import org.tp23.antinstaller.runtime.Logger;
+import org.tp23.antinstaller.runtime.Runner;
+import org.tp23.antinstaller.runtime.exe.AntLauncherFilter;
+import org.tp23.antinstaller.runtime.exe.LoadConfigFilter;
+/**
+ *
+ * <p>A single InstallerContext is created by the ExecInstall class and
+ * exist for the duration of the Install screens and the runing of
+ * the Ant Script. </p>
+ * @author Paul Hinds
+ * @version $Id: InstallerContext.java,v 1.10 2007/01/28 08:44:41 teknopaul Exp $
+ */
+public class InstallerContext {
+
+	/**
+	 * This is the prefix for environment variables, unlike Ant this is fixed to
+	 * the common prefix of "env".  If you dont like this complain to the bug reports
+	 * on sourceforge
+	 */
+	public static final String ENV_PREFIX = "env.";
+	/**
+	 * This is the prefix for Java system property variables.
+	 * This is fixed to "java."
+	 */
+	public static final String JAVA_PREFIX = "java.";
+
+	private Logger logger = null;
+	private Installer installer = null;
+	private MessageRenderer messageRenderer = null;
+    private AntOutputRenderer antOutputRenderer = null;
+    private Runner runner = null;
+    private Page currentPage = null;
+    private java.io.File fileRoot = null; // ant basedir
+    private BuildListener buildListener = null;
+    private AntLauncherFilter antRunner = null;
+    private String uIOverride = null;
+    private String installerConfigFile = LoadConfigFilter.INSTALLER_CONFIG_FILE;
+    private String antBuildFile = "build.xml";
+    private String configResource;
+    
+    
+    // called after the Ant part has been run
+    private boolean installedSucceded = false;
+     
+	public InstallerContext() {
+	}
+
+	public void setInstallSucceded(boolean installedSucceded){
+		this.installedSucceded=installedSucceded;
+	}
+	public boolean isInstallSucceded(){
+		return installedSucceded;
+	}
+	
+	public void log(String message){
+		if(logger != null) {
+            logger.log(message);
+        }
+	}
+	public void log(Throwable message){
+		if(logger != null) {
+            logger.log(message);
+        }
+	}
+    public void log(boolean vebose, Throwable message){
+        if(vebose && logger != null) {
+            logger.log(message);
+        }
+    }
+
+	/**
+	 * Check to see if the system is windoze to be able to return the correct prompted
+	 * directories.  This method should be IsNotWindows since it assumes anything
+	 * that is not windows is Unix
+	 * @return boolean true if not windows in the os.name System Property
+	 */
+	public static boolean isUnix(){
+		return System.getProperty("os.name").toLowerCase().indexOf("windows") == -1;
+	}
+
+	/**
+	 * Use the standard Ant way to load the environment variables, this is not all inclusive
+	 * (but will be come Java 1.5 I imagine)
+	 * @return Properties
+	 */
+	public static Properties getEnvironment(){
+		Properties props = new Properties();
+		try {
+			Vector osEnv = Execute.getProcEnvironment();
+			for (Enumeration e = osEnv.elements(); e.hasMoreElements(); ) {
+				String entry = (String) e.nextElement();
+				int pos = entry.indexOf('=');
+				if (pos != -1) {
+					props.put(ENV_PREFIX + entry.substring(0, pos),
+							  entry.substring(pos + 1));
+				}
+			}
+		}
+		catch (Exception ex) {
+			// swallow exceptions so this can be loaded statically
+			// bit of a bugger if you need the environment on Mac OS 9 but not all apps
+			// do so we don't want to die inother situations
+			System.out.println("Can't load environment:"+ex.getClass()+","+ex.getMessage());
+		}
+		Properties javaSysProps = System.getProperties();
+		Iterator iter = javaSysProps.keySet().iterator();
+		while (iter.hasNext()) {
+			Object key = (Object)iter.next();
+			props.put(JAVA_PREFIX+key.toString(),javaSysProps.get(key));
+		}
+		return props;
+	}
+
+	// Bean methods
+	public Installer getInstaller() {
+		return installer;
+	}
+
+	public String getMinJavaVersion() {
+		return installer.getMinJavaVersion();
+	}
+
+	public MessageRenderer getMessageRenderer() {
+		return messageRenderer;
+	}
+
+	public void setMessageRenderer(MessageRenderer messageRenderer) {
+		this.messageRenderer = messageRenderer;
+		this.messageRenderer.setInstallerContext(this);
+	}
+	
+    public AntOutputRenderer getAntOutputRenderer() {
+		return antOutputRenderer;
+    }
+    
+    public void setAntOutputRenderer(AntOutputRenderer antOutputRenderer) {
+		this.antOutputRenderer = antOutputRenderer;
+    }
+    
+    public Page getCurrentPage() {
+		return currentPage;
+    }
+    
+    public void setCurrentPage(Page currentPage) {
+		this.currentPage = currentPage;
+    }
+	/**
+	 * in SelfExtractor - the directory the install has extracted to <br/>
+	 * in Scripted installs - the base directory of the install      <br/>
+	 * in NonExtractor - the temporary space created for the build   <br/> 
+	 * @return 
+	 */
+	public File getFileRoot() {
+		return fileRoot;
+	}
+
+	public void setFileRoot(File fileRoot) {
+		this.fileRoot = fileRoot;
+	}
+
+	public org.apache.tools.ant.BuildListener getBuildListener() {
+		return buildListener;
+	}
+
+	public void setBuildListener(org.apache.tools.ant.BuildListener buildListener) {
+		this.buildListener = buildListener;
+	}
+
+	public AntLauncherFilter getAntRunner() {
+		return antRunner;
+	}
+
+	public void setAntRunner(AntLauncherFilter antRunner) {
+		this.antRunner = antRunner;
+	}
+
+	public Logger getLogger() {
+		return logger;
+	}
+
+	public void setLogger(Logger logger) {
+		this.logger = logger;
+	}
+
+	public Runner getRunner() {
+		return runner;
+	}
+
+	public void setRunner(Runner runner) {
+		this.runner = runner;
+	}
+
+	public void setInstaller(Installer installer) {
+		this.installer = installer;
+	}
+
+	public String getUIOverride() {
+		return uIOverride;
+	}
+
+	public void setUIOverride(String override) {
+		uIOverride = override;
+	}
+	
+	public boolean isAutoBuild(){
+		return uIOverride != null && uIOverride.indexOf("-auto") > -1;
+	}
+
+	/**
+	 * RFE 1569628, the antinstaller config file to use, defaults to antinstall-config.xml
+	 * @return
+	 */
+	public String getInstallerConfigFile() {
+		return installerConfigFile;
+	}
+
+	public void setInstallerConfigFile(String installerConfigFile) {
+		this.installerConfigFile = installerConfigFile;
+	}
+	/**
+	 * RFE 1569628, the build file to use, defaults to build.xml
+	 * There should never be any path info, that is derived elsewhere
+	 * @return
+	 */
+	public String getAntBuildFile() {
+		return antBuildFile;
+	}
+
+	public void setAntBuildFile(String antBuildFile) {
+		this.antBuildFile = antBuildFile;
+	}
+
+	public String getConfigResource() {
+		return configResource;
+	}
+
+	public void setConfigResource(String configResource) {
+		this.configResource = configResource;
+	}
+}
+
+
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/PropertiesFileRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/PropertiesFileRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/PropertiesFileRenderer.java	(revision 18906)
@@ -0,0 +1,43 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller;
+
+import java.io.File;
+/**
+ *
+ * <p>Renders a properties file in the base directory for Ant to use and
+ *  available for viewing after for Debug</p>
+ * In earlier versions this was the only way to access properties it is now
+ * mostly redundant.
+ * @author Paul Hinds
+ * @version $Id: PropertiesFileRenderer.java,v 1.4 2006/12/23 04:07:23 teknopaul Exp $
+ */
+public interface PropertiesFileRenderer {
+
+	public static final String FILE_ROOT_PROPERTY = "basedir";
+    public static final String INSTALLER_VERSION_PROPERTY = "ant.install.config.version";
+	public static final String PROPERTIES_FILE_NAME = "ant.install.properties";
+	public static final String TARGETS_SUFFIX = "-targets";
+
+	/**
+	 * This method no longer throws IOException since the requirement to print properties
+	 * has been removed.  By default properties will be printed since they are usefull
+	 * for debug but classes implementing this method should swallow all Exceptions
+	 * @param ctx InstallerContext
+	 * @param baseDir File
+	 */
+	public void renderProperties(InstallerContext ctx, File baseDir);
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ResourceBundleHelper.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ResourceBundleHelper.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ResourceBundleHelper.java	(revision 18906)
@@ -0,0 +1,111 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Helper class that will catch missing bundle entries and handle formatting
+ * of message strings
+ *
+ * @author mwilson
+ * @version $Id
+ * @since 0.7.4 patch 7
+ */
+public class ResourceBundleHelper
+{
+    private String bundleName;
+    private ResourceBundle resourceBundle;
+
+    private static final Object[] EMPTY_OBJ_ARRAY = new Object[0];
+    private static final String EMPTY_STRING = "";
+
+    public ResourceBundleHelper( final String bundleName )
+    {
+        this.bundleName = bundleName;
+        resourceBundle = ResourceBundle.getBundle( bundleName );
+    }
+
+    public String getMessage( final String key )
+    {
+        return getMessage( key, EMPTY_OBJ_ARRAY );
+    }
+
+    public String getMessage( final String key, final Object obj  )
+    {
+        return getMessage( key, new Object[] { obj } );
+    }
+
+    /**
+     * Return a formatted message string.
+     * @param key resource bundle key
+     * @param objArray array of objects that will be used with formatting
+     *                 string
+     * @return formatted string or error message if the resource bundle
+     *         entry is missing
+     */
+    public String getMessage( String key, Object objArray[] )
+    {
+        String message;
+
+        //Replace null values with empty strings - safer
+        for( int i = 0; i < objArray.length; i++ )
+        {
+            if( objArray[i] == null )
+            {
+                objArray[i] = EMPTY_STRING;
+            }
+        }
+
+        String formatStr = null;
+
+        try
+        {
+            formatStr = resourceBundle.getString( key );
+        }
+        catch( MissingResourceException missingResExc )
+        {
+            //Handle missing resource below...
+        }
+
+        if( formatStr == null )
+        {
+            StringBuffer strBuffer = new StringBuffer( "Message entry with key " );
+            strBuffer.append( key );
+            strBuffer.append( " is missing from resource bundle " );
+            strBuffer.append( bundleName );
+            strBuffer.append( "\n" );
+            strBuffer.append( bundleName );
+            strBuffer.append( ":: " );
+            strBuffer.append( key );
+            for( int i = 0; i < objArray.length; i++ )
+            {
+                strBuffer.append( " " );
+                strBuffer.append( objArray[i].toString() );
+            }
+
+            message = strBuffer.toString();
+        }
+        else
+        {
+            MessageFormat msgformat = new MessageFormat( formatStr );
+            message = msgformat.format( ( (Object) ( objArray ) ) );
+        }
+
+        return message;
+    }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ValidationException.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ValidationException.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/ValidationException.java	(revision 18906)
@@ -0,0 +1,32 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller;
+/**
+ *
+ * <p>Thrown if there is a failure during validation of human entered input. </p>
+ * @author Paul Hinds
+ * @version $Id: ValidationException.java,v 1.1.1.1 2005/10/18 18:20:52 teknopaul Exp $
+ */
+public class ValidationException extends InstallException{
+	public ValidationException() {
+	}
+	public ValidationException(String message) {
+		super(message);
+	}
+	public ValidationException(String message,Throwable cause) {
+		super(message,cause);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.2.dtd
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.2.dtd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.2.dtd	(revision 18906)
@@ -0,0 +1,120 @@
+<!--
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<!ELEMENT validated EMPTY >
+<!ATTLIST validated defaultValue CDATA #REQUIRED >
+<!ATTLIST validated regex CDATA #REQUIRED >
+<!ATTLIST validated displayText CDATA #REQUIRED >
+<!ATTLIST validated property NMTOKEN #REQUIRED >
+<!ATTLIST validated explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT file EMPTY >
+<!ATTLIST file defaultValue CDATA #REQUIRED >
+<!ATTLIST file defaultValueWin CDATA #IMPLIED >
+<!ATTLIST file displayText CDATA #REQUIRED >
+<!ATTLIST file property NMTOKEN #REQUIRED >
+<!ATTLIST file checkExists (true | false) #IMPLIED  >
+<!ATTLIST file explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT option EMPTY >
+<!ATTLIST option value CDATA #REQUIRED >
+<!ATTLIST option text CDATA #REQUIRED >
+
+<!ELEMENT comment EMPTY >
+<!ATTLIST comment bold (true | false) #IMPLIED >
+<!ATTLIST comment displayText CDATA #REQUIRED >
+<!ATTLIST comment title NMTOKEN #IMPLIED >
+<!ATTLIST comment explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT checkbox EMPTY >
+<!ATTLIST checkbox defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST checkbox force (true | false) #IMPLIED  >
+<!ATTLIST checkbox displayText CDATA #REQUIRED >
+<!ATTLIST checkbox property NMTOKEN #REQUIRED >
+<!ATTLIST checkbox explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT installer ( page+ ) >
+<!ATTLIST installer verbose (true | false) #IMPLIED  >
+<!ATTLIST installer name CDATA #REQUIRED >
+<!ATTLIST installer windowIcon CDATA #IMPLIED >
+<!ATTLIST installer lookAndFeel NMTOKEN #IMPLIED >
+<!ATTLIST installer minJavaVersion NMTOKEN #IMPLIED >
+<!ATTLIST installer ui CDATA #IMPLIED >
+<!ATTLIST installer defaultImageResource CDATA #IMPLIED >
+
+<!ELEMENT directory EMPTY >
+<!ATTLIST directory defaultValue CDATA #REQUIRED >
+<!ATTLIST directory defaultValueWin CDATA #IMPLIED >
+<!ATTLIST directory create (true | false) #IMPLIED  >
+<!ATTLIST directory displayText CDATA #REQUIRED >
+<!ATTLIST directory property NMTOKEN #REQUIRED >
+<!ATTLIST directory checkExists (true | false) #IMPLIED  >
+<!ATTLIST directory explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT app-root EMPTY >
+<!ATTLIST app-root defaultValue CDATA #REQUIRED >
+<!ATTLIST app-root displayText CDATA #REQUIRED >
+<!ATTLIST app-root property NMTOKEN #REQUIRED >
+<!ATTLIST app-root explanatoryText CDATA #IMPLIED >
+<!ATTLIST app-root checkFile1 CDATA #IMPLIED >
+<!ATTLIST app-root checkFile2 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir1 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir2 CDATA #IMPLIED >
+
+<!ELEMENT target EMPTY >
+<!ATTLIST target defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST target force (true | false) #IMPLIED  >
+<!ATTLIST target displayText CDATA #REQUIRED >
+<!ATTLIST target target NMTOKEN #REQUIRED >
+<!ATTLIST target explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT page ( app-root | comment | text | checkbox | select | directory | file | target | validated | password | date )* >
+<!ATTLIST page name NMTOKEN #REQUIRED >
+<!ATTLIST page type NMTOKEN #REQUIRED >
+<!ATTLIST page imageResource CDATA #IMPLIED >
+<!ATTLIST page resource CDATA #IMPLIED >
+<!ATTLIST page displayText CDATA #REQUIRED >
+<!ATTLIST page target NMTOKEN #IMPLIED >
+<!ATTLIST page ifTarget NMTOKEN #IMPLIED >
+
+<!ELEMENT select ( option+ ) >
+<!ATTLIST select defaultValue CDATA #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+<!ATTLIST select displayText CDATA #REQUIRED >
+<!ATTLIST select property NMTOKEN #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT password EMPTY >
+<!ATTLIST password defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST password regex CDATA #REQUIRED >
+<!ATTLIST password displayText CDATA #REQUIRED >
+<!ATTLIST password property NMTOKEN #REQUIRED >
+<!ATTLIST password explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT date EMPTY >
+<!ATTLIST date defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST date dateFormat CDATA #REQUIRED >
+<!ATTLIST date displayText CDATA #REQUIRED >
+<!ATTLIST date property NMTOKEN #REQUIRED >
+<!ATTLIST date explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT text EMPTY >
+<!ATTLIST text defaultValue CDATA #REQUIRED >
+<!ATTLIST text displayText CDATA #REQUIRED >
+<!ATTLIST text property NMTOKEN #REQUIRED >
+<!ATTLIST text explanatoryText CDATA #IMPLIED >
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.3.dtd
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.3.dtd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.3.dtd	(revision 18906)
@@ -0,0 +1,121 @@
+<!--
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<!ELEMENT validated EMPTY >
+<!ATTLIST validated defaultValue CDATA #REQUIRED >
+<!ATTLIST validated regex CDATA #REQUIRED >
+<!ATTLIST validated displayText CDATA #REQUIRED >
+<!ATTLIST validated property NMTOKEN #REQUIRED >
+<!ATTLIST validated explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT file EMPTY >
+<!ATTLIST file defaultValue CDATA #REQUIRED >
+<!ATTLIST file defaultValueWin CDATA #IMPLIED >
+<!ATTLIST file displayText CDATA #REQUIRED >
+<!ATTLIST file property NMTOKEN #REQUIRED >
+<!ATTLIST file checkExists (true | false) #IMPLIED  >
+<!ATTLIST file explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT option EMPTY >
+<!ATTLIST option value CDATA #REQUIRED >
+<!ATTLIST option text CDATA #REQUIRED >
+
+<!ELEMENT comment EMPTY >
+<!ATTLIST comment bold (true | false) #IMPLIED >
+<!ATTLIST comment displayText CDATA #REQUIRED >
+<!ATTLIST comment title NMTOKEN #IMPLIED >
+<!ATTLIST comment explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT checkbox EMPTY >
+<!ATTLIST checkbox defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST checkbox force (true | false) #IMPLIED  >
+<!ATTLIST checkbox displayText CDATA #REQUIRED >
+<!ATTLIST checkbox property NMTOKEN #REQUIRED >
+<!ATTLIST checkbox explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT installer ( page+ ) >
+<!ATTLIST installer verbose (true | false) #IMPLIED  >
+<!ATTLIST installer name CDATA #REQUIRED >
+<!ATTLIST installer windowIcon CDATA #IMPLIED >
+<!ATTLIST installer lookAndFeel NMTOKEN #IMPLIED >
+<!ATTLIST installer minJavaVersion NMTOKEN #IMPLIED >
+<!ATTLIST installer ui CDATA #IMPLIED >
+<!ATTLIST installer defaultImageResource CDATA #IMPLIED >
+<!ATTLIST installer finishButtonText CDATA #IMPLIED >
+
+<!ELEMENT directory EMPTY >
+<!ATTLIST directory defaultValue CDATA #REQUIRED >
+<!ATTLIST directory defaultValueWin CDATA #IMPLIED >
+<!ATTLIST directory create (true | false) #IMPLIED  >
+<!ATTLIST directory displayText CDATA #REQUIRED >
+<!ATTLIST directory property NMTOKEN #REQUIRED >
+<!ATTLIST directory checkExists (true | false) #IMPLIED  >
+<!ATTLIST directory explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT app-root EMPTY >
+<!ATTLIST app-root defaultValue CDATA #REQUIRED >
+<!ATTLIST app-root displayText CDATA #REQUIRED >
+<!ATTLIST app-root property NMTOKEN #REQUIRED >
+<!ATTLIST app-root explanatoryText CDATA #IMPLIED >
+<!ATTLIST app-root checkFile1 CDATA #IMPLIED >
+<!ATTLIST app-root checkFile2 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir1 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir2 CDATA #IMPLIED >
+
+<!ELEMENT target EMPTY >
+<!ATTLIST target defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST target force (true | false) #IMPLIED  >
+<!ATTLIST target displayText CDATA #REQUIRED >
+<!ATTLIST target target NMTOKEN #REQUIRED >
+<!ATTLIST target explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT page ( app-root | comment | text | checkbox | select | directory | file | target | validated | password | date )* >
+<!ATTLIST page name NMTOKEN #REQUIRED >
+<!ATTLIST page type NMTOKEN #REQUIRED >
+<!ATTLIST page imageResource CDATA #IMPLIED >
+<!ATTLIST page resource CDATA #IMPLIED >
+<!ATTLIST page displayText CDATA #REQUIRED >
+<!ATTLIST page target NMTOKEN #IMPLIED >
+<!ATTLIST page ifTarget NMTOKEN #IMPLIED >
+
+<!ELEMENT select ( option+ ) >
+<!ATTLIST select defaultValue CDATA #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+<!ATTLIST select displayText CDATA #REQUIRED >
+<!ATTLIST select property NMTOKEN #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT password EMPTY >
+<!ATTLIST password defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST password regex CDATA #REQUIRED >
+<!ATTLIST password displayText CDATA #REQUIRED >
+<!ATTLIST password property NMTOKEN #REQUIRED >
+<!ATTLIST password explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT date EMPTY >
+<!ATTLIST date defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST date dateFormat CDATA #REQUIRED >
+<!ATTLIST date displayText CDATA #REQUIRED >
+<!ATTLIST date property NMTOKEN #REQUIRED >
+<!ATTLIST date explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT text EMPTY >
+<!ATTLIST text defaultValue CDATA #REQUIRED >
+<!ATTLIST text displayText CDATA #REQUIRED >
+<!ATTLIST text property NMTOKEN #REQUIRED >
+<!ATTLIST text explanatoryText CDATA #IMPLIED >
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.4.dtd
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.4.dtd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.4.dtd	(revision 18906)
@@ -0,0 +1,122 @@
+<!--
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<!ELEMENT validated EMPTY >
+<!ATTLIST validated defaultValue CDATA #REQUIRED >
+<!ATTLIST validated regex CDATA #REQUIRED >
+<!ATTLIST validated displayText CDATA #REQUIRED >
+<!ATTLIST validated property NMTOKEN #REQUIRED >
+<!ATTLIST validated explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT file EMPTY >
+<!ATTLIST file defaultValue CDATA #REQUIRED >
+<!ATTLIST file defaultValueWin CDATA #IMPLIED >
+<!ATTLIST file displayText CDATA #REQUIRED >
+<!ATTLIST file property NMTOKEN #REQUIRED >
+<!ATTLIST file checkExists (true | false) #IMPLIED  >
+<!ATTLIST file explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT option EMPTY >
+<!ATTLIST option value CDATA #REQUIRED >
+<!ATTLIST option text CDATA #REQUIRED >
+
+<!ELEMENT comment EMPTY >
+<!ATTLIST comment bold (true | false) #IMPLIED >
+<!ATTLIST comment displayText CDATA #REQUIRED >
+<!ATTLIST comment title NMTOKEN #IMPLIED >
+<!ATTLIST comment explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT checkbox EMPTY >
+<!ATTLIST checkbox defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST checkbox force (true | false) #IMPLIED  >
+<!ATTLIST checkbox displayText CDATA #REQUIRED >
+<!ATTLIST checkbox property NMTOKEN #REQUIRED >
+<!ATTLIST checkbox explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT installer ( page+ ) >
+<!ATTLIST installer verbose (true | false) #IMPLIED  >
+<!ATTLIST installer name CDATA #REQUIRED >
+<!ATTLIST installer windowIcon CDATA #IMPLIED >
+<!ATTLIST installer lookAndFeel NMTOKEN #IMPLIED >
+<!ATTLIST installer minJavaVersion NMTOKEN #IMPLIED >
+<!ATTLIST installer ui CDATA #IMPLIED >
+<!ATTLIST installer defaultImageResource CDATA #IMPLIED >
+<!ATTLIST installer finishButtonText CDATA #IMPLIED >
+
+<!ELEMENT directory EMPTY >
+<!ATTLIST directory defaultValue CDATA #REQUIRED >
+<!ATTLIST directory defaultValueWin CDATA #IMPLIED >
+<!ATTLIST directory create (true | false) #IMPLIED  >
+<!ATTLIST directory displayText CDATA #REQUIRED >
+<!ATTLIST directory property NMTOKEN #REQUIRED >
+<!ATTLIST directory checkExists (true | false) #IMPLIED  >
+<!ATTLIST directory explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT app-root EMPTY >
+<!ATTLIST app-root defaultValue CDATA #REQUIRED >
+<!ATTLIST app-root displayText CDATA #REQUIRED >
+<!ATTLIST app-root property NMTOKEN #REQUIRED >
+<!ATTLIST app-root explanatoryText CDATA #IMPLIED >
+<!ATTLIST app-root checkFile1 CDATA #IMPLIED >
+<!ATTLIST app-root checkFile2 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir1 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir2 CDATA #IMPLIED >
+
+<!ELEMENT target EMPTY >
+<!ATTLIST target defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST target force (true | false) #IMPLIED  >
+<!ATTLIST target displayText CDATA #REQUIRED >
+<!ATTLIST target target NMTOKEN #REQUIRED >
+<!ATTLIST target explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT page ( app-root | comment | text | checkbox | select | directory | file | target | validated | password | date )* >
+<!ATTLIST page name NMTOKEN #REQUIRED >
+<!ATTLIST page type NMTOKEN #REQUIRED >
+<!ATTLIST page imageResource CDATA #IMPLIED >
+<!ATTLIST page resource CDATA #IMPLIED >
+<!ATTLIST page usePaging CDATA #IMPLIED >
+<!ATTLIST page displayText CDATA #REQUIRED >
+<!ATTLIST page target NMTOKEN #IMPLIED >
+<!ATTLIST page ifTarget NMTOKEN #IMPLIED >
+
+<!ELEMENT select ( option+ ) >
+<!ATTLIST select defaultValue CDATA #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+<!ATTLIST select displayText CDATA #REQUIRED >
+<!ATTLIST select property NMTOKEN #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT password EMPTY >
+<!ATTLIST password defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST password regex CDATA #REQUIRED >
+<!ATTLIST password displayText CDATA #REQUIRED >
+<!ATTLIST password property NMTOKEN #REQUIRED >
+<!ATTLIST password explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT date EMPTY >
+<!ATTLIST date defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST date dateFormat CDATA #REQUIRED >
+<!ATTLIST date displayText CDATA #REQUIRED >
+<!ATTLIST date property NMTOKEN #REQUIRED >
+<!ATTLIST date explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT text EMPTY >
+<!ATTLIST text defaultValue CDATA #REQUIRED >
+<!ATTLIST text displayText CDATA #REQUIRED >
+<!ATTLIST text property NMTOKEN #REQUIRED >
+<!ATTLIST text explanatoryText CDATA #IMPLIED >
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.5.dtd
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.5.dtd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.5.dtd	(revision 18906)
@@ -0,0 +1,125 @@
+<!--
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<!ELEMENT validated EMPTY >
+<!ATTLIST validated defaultValue CDATA #REQUIRED >
+<!ATTLIST validated regex CDATA #REQUIRED >
+<!ATTLIST validated displayText CDATA #REQUIRED >
+<!ATTLIST validated property NMTOKEN #REQUIRED >
+<!ATTLIST validated explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT file EMPTY >
+<!ATTLIST file defaultValue CDATA #REQUIRED >
+<!ATTLIST file defaultValueWin CDATA #IMPLIED >
+<!ATTLIST file displayText CDATA #REQUIRED >
+<!ATTLIST file property NMTOKEN #REQUIRED >
+<!ATTLIST file checkExists (true | false) #IMPLIED  >
+<!ATTLIST file explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT option EMPTY >
+<!ATTLIST option value CDATA #REQUIRED >
+<!ATTLIST option text CDATA #REQUIRED >
+
+<!ELEMENT comment EMPTY >
+<!ATTLIST comment bold (true | false) #IMPLIED >
+<!ATTLIST comment displayText CDATA #REQUIRED >
+<!ATTLIST comment title NMTOKEN #IMPLIED >
+<!ATTLIST comment explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT checkbox EMPTY >
+<!ATTLIST checkbox defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST checkbox force (true | false) #IMPLIED  >
+<!ATTLIST checkbox displayText CDATA #REQUIRED >
+<!ATTLIST checkbox property NMTOKEN #REQUIRED >
+<!ATTLIST checkbox explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT installer ( page+ ) >
+<!ATTLIST installer verbose (true | false) #IMPLIED  >
+<!ATTLIST installer name CDATA #REQUIRED >
+<!ATTLIST installer windowIcon CDATA #IMPLIED >
+<!ATTLIST installer lookAndFeel NMTOKEN #IMPLIED >
+<!ATTLIST installer minJavaVersion NMTOKEN #IMPLIED >
+<!ATTLIST installer ui CDATA #IMPLIED >
+<!ATTLIST installer defaultImageResource CDATA #IMPLIED >
+<!ATTLIST installer finishButtonText CDATA #IMPLIED >
+<!ATTLIST installer antialiased CDATA #IMPLIED >
+
+<!ELEMENT directory EMPTY >
+<!ATTLIST directory defaultValue CDATA #REQUIRED >
+<!ATTLIST directory defaultValueWin CDATA #IMPLIED >
+<!ATTLIST directory create (true | false) #IMPLIED  >
+<!ATTLIST directory displayText CDATA #REQUIRED >
+<!ATTLIST directory property NMTOKEN #REQUIRED >
+<!ATTLIST directory checkExists (true | false) #IMPLIED  >
+<!ATTLIST directory explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT app-root EMPTY >
+<!ATTLIST app-root defaultValue CDATA #REQUIRED >
+<!ATTLIST app-root displayText CDATA #REQUIRED >
+<!ATTLIST app-root property NMTOKEN #REQUIRED >
+<!ATTLIST app-root explanatoryText CDATA #IMPLIED >
+<!ATTLIST app-root checkFile1 CDATA #IMPLIED >
+<!ATTLIST app-root checkFile2 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir1 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir2 CDATA #IMPLIED >
+
+<!ELEMENT target EMPTY >
+<!ATTLIST target defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST target force (true | false) #IMPLIED  >
+<!ATTLIST target displayText CDATA #REQUIRED >
+<!ATTLIST target target NMTOKEN #REQUIRED >
+<!ATTLIST target explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT page ( app-root | comment | text | checkbox | select | directory | file | target | validated | password | date )* >
+<!ATTLIST page name NMTOKEN #REQUIRED >
+<!ATTLIST page type NMTOKEN #REQUIRED >
+<!ATTLIST page imageResource CDATA #IMPLIED >
+<!ATTLIST page resource CDATA #IMPLIED >
+<!ATTLIST page usePaging CDATA #IMPLIED >
+<!ATTLIST page displayText CDATA #REQUIRED >
+<!ATTLIST page target NMTOKEN #IMPLIED >
+<!ATTLIST page ifTarget NMTOKEN #IMPLIED >
+<!ATTLIST page splashResource NMTOKEN #IMPLIED >
+<!ATTLIST page altText NMTOKEN #IMPLIED >
+
+<!ELEMENT select ( option+ ) >
+<!ATTLIST select defaultValue CDATA #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+<!ATTLIST select displayText CDATA #REQUIRED >
+<!ATTLIST select property NMTOKEN #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT password EMPTY >
+<!ATTLIST password defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST password regex CDATA #REQUIRED >
+<!ATTLIST password displayText CDATA #REQUIRED >
+<!ATTLIST password property NMTOKEN #REQUIRED >
+<!ATTLIST password explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT date EMPTY >
+<!ATTLIST date defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST date dateFormat CDATA #REQUIRED >
+<!ATTLIST date displayText CDATA #REQUIRED >
+<!ATTLIST date property NMTOKEN #REQUIRED >
+<!ATTLIST date explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT text EMPTY >
+<!ATTLIST text defaultValue CDATA #REQUIRED >
+<!ATTLIST text displayText CDATA #REQUIRED >
+<!ATTLIST text property NMTOKEN #REQUIRED >
+<!ATTLIST text explanatoryText CDATA #IMPLIED >
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.6.dtd
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.6.dtd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.6.dtd	(revision 18906)
@@ -0,0 +1,132 @@
+<!--
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<!ELEMENT validated EMPTY >
+<!ATTLIST validated defaultValue CDATA #REQUIRED >
+<!ATTLIST validated regex CDATA #REQUIRED >
+<!ATTLIST validated displayText CDATA #REQUIRED >
+<!ATTLIST validated property NMTOKEN #REQUIRED >
+<!ATTLIST validated explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT file EMPTY >
+<!ATTLIST file defaultValue CDATA #REQUIRED >
+<!ATTLIST file defaultValueWin CDATA #IMPLIED >
+<!ATTLIST file displayText CDATA #REQUIRED >
+<!ATTLIST file property NMTOKEN #REQUIRED >
+<!ATTLIST file checkExists (true | false) #IMPLIED  >
+<!ATTLIST file explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT option EMPTY >
+<!ATTLIST option value CDATA #REQUIRED >
+<!ATTLIST option text CDATA #REQUIRED >
+
+<!ELEMENT comment EMPTY >
+<!ATTLIST comment bold (true | false) #IMPLIED >
+<!ATTLIST comment displayText CDATA #REQUIRED >
+<!ATTLIST comment title NMTOKEN #IMPLIED >
+<!ATTLIST comment explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT checkbox EMPTY >
+<!ATTLIST checkbox defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST checkbox force (true | false) #IMPLIED  >
+<!ATTLIST checkbox displayText CDATA #REQUIRED >
+<!ATTLIST checkbox property NMTOKEN #REQUIRED >
+<!ATTLIST checkbox explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT installer ( page+ ) >
+<!ATTLIST installer verbose (true | false) #IMPLIED  >
+<!ATTLIST installer name CDATA #REQUIRED >
+<!ATTLIST installer windowIcon CDATA #IMPLIED >
+<!ATTLIST installer lookAndFeel NMTOKEN #IMPLIED >
+<!ATTLIST installer minJavaVersion NMTOKEN #IMPLIED >
+<!ATTLIST installer ui CDATA #IMPLIED >
+<!ATTLIST installer defaultImageResource CDATA #IMPLIED >
+<!ATTLIST installer finishButtonText CDATA #IMPLIED >
+<!ATTLIST installer antialiased CDATA #IMPLIED >
+
+<!ELEMENT directory EMPTY >
+<!ATTLIST directory defaultValue CDATA #REQUIRED >
+<!ATTLIST directory defaultValueWin CDATA #IMPLIED >
+<!ATTLIST directory create (true | false) #IMPLIED  >
+<!ATTLIST directory displayText CDATA #REQUIRED >
+<!ATTLIST directory property NMTOKEN #REQUIRED >
+<!ATTLIST directory checkExists (true | false) #IMPLIED  >
+<!ATTLIST directory explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT app-root EMPTY >
+<!ATTLIST app-root defaultValue CDATA #REQUIRED >
+<!ATTLIST app-root displayText CDATA #REQUIRED >
+<!ATTLIST app-root property NMTOKEN #REQUIRED >
+<!ATTLIST app-root explanatoryText CDATA #IMPLIED >
+<!ATTLIST app-root checkFile1 CDATA #IMPLIED >
+<!ATTLIST app-root checkFile2 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir1 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir2 CDATA #IMPLIED >
+
+<!ELEMENT target EMPTY >
+<!ATTLIST target defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST target force (true | false) #IMPLIED  >
+<!ATTLIST target displayText CDATA #REQUIRED >
+<!ATTLIST target target NMTOKEN #REQUIRED >
+<!ATTLIST target explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT page ( app-root | comment | text | checkbox | select | large-select | directory | file | target | validated | password | date )* >
+<!ATTLIST page name NMTOKEN #REQUIRED >
+<!ATTLIST page type NMTOKEN #REQUIRED >
+<!ATTLIST page imageResource CDATA #IMPLIED >
+<!ATTLIST page resource CDATA #IMPLIED >
+<!ATTLIST page usePaging CDATA #IMPLIED >
+<!ATTLIST page displayText CDATA #REQUIRED >
+<!ATTLIST page target NMTOKEN #IMPLIED >
+<!ATTLIST page ifTarget NMTOKEN #IMPLIED >
+<!ATTLIST page splashResource NMTOKEN #IMPLIED >
+<!ATTLIST page altText NMTOKEN #IMPLIED >
+
+<!ELEMENT select ( option+ ) >
+<!ATTLIST select defaultValue CDATA #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+<!ATTLIST select displayText CDATA #REQUIRED >
+<!ATTLIST select property NMTOKEN #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT large-select ( option+ ) >
+<!ATTLIST large-select defaultValue CDATA #REQUIRED >
+<!ATTLIST large-select explanatoryText CDATA #IMPLIED >
+<!ATTLIST large-select displayText CDATA #REQUIRED >
+<!ATTLIST large-select property NMTOKEN #REQUIRED >
+<!ATTLIST large-select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT password EMPTY >
+<!ATTLIST password defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST password regex CDATA #REQUIRED >
+<!ATTLIST password displayText CDATA #REQUIRED >
+<!ATTLIST password property NMTOKEN #REQUIRED >
+<!ATTLIST password explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT date EMPTY >
+<!ATTLIST date defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST date dateFormat CDATA #REQUIRED >
+<!ATTLIST date displayText CDATA #REQUIRED >
+<!ATTLIST date property NMTOKEN #REQUIRED >
+<!ATTLIST date explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT text EMPTY >
+<!ATTLIST text defaultValue CDATA #REQUIRED >
+<!ATTLIST text displayText CDATA #REQUIRED >
+<!ATTLIST text property NMTOKEN #REQUIRED >
+<!ATTLIST text explanatoryText CDATA #IMPLIED >
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.7.dtd
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.7.dtd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.7.dtd	(revision 18906)
@@ -0,0 +1,157 @@
+<!--
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<!ELEMENT validated EMPTY >
+<!ATTLIST validated defaultValue CDATA #REQUIRED >
+<!ATTLIST validated regex CDATA #REQUIRED >
+<!ATTLIST validated displayText CDATA #REQUIRED >
+<!ATTLIST validated property NMTOKEN #REQUIRED >
+<!ATTLIST validated explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT file EMPTY >
+<!ATTLIST file defaultValue CDATA #REQUIRED >
+<!ATTLIST file defaultValueWin CDATA #IMPLIED >
+<!ATTLIST file displayText CDATA #REQUIRED >
+<!ATTLIST file property NMTOKEN #REQUIRED >
+<!ATTLIST file checkExists (true | false) #IMPLIED  >
+<!ATTLIST file explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT option EMPTY >
+<!ATTLIST option value CDATA #REQUIRED >
+<!ATTLIST option text CDATA #REQUIRED >
+
+<!ELEMENT comment EMPTY >
+<!ATTLIST comment bold (true | false) #IMPLIED >
+<!ATTLIST comment displayText CDATA #REQUIRED >
+<!ATTLIST comment title NMTOKEN #IMPLIED >
+<!ATTLIST comment explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT checkbox EMPTY >
+<!ATTLIST checkbox defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST checkbox force (true | false) #IMPLIED  >
+<!ATTLIST checkbox displayText CDATA #REQUIRED >
+<!ATTLIST checkbox property NMTOKEN #REQUIRED >
+<!ATTLIST checkbox explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT installer ( page+ ) >
+<!ATTLIST installer verbose (true | false) #IMPLIED  >
+<!ATTLIST installer debug (true | false) #IMPLIED  >
+<!ATTLIST installer name CDATA #REQUIRED >
+<!ATTLIST installer windowIcon CDATA #IMPLIED >
+<!ATTLIST installer lookAndFeel NMTOKEN #IMPLIED >
+<!ATTLIST installer minJavaVersion NMTOKEN #IMPLIED >
+<!ATTLIST installer ui CDATA #IMPLIED >
+<!ATTLIST installer defaultImageResource CDATA #IMPLIED >
+<!ATTLIST installer finishButtonText CDATA #IMPLIED >
+<!ATTLIST installer antialiased CDATA #IMPLIED >
+
+<!ELEMENT directory EMPTY >
+<!ATTLIST directory defaultValue CDATA #REQUIRED >
+<!ATTLIST directory defaultValueWin CDATA #IMPLIED >
+<!ATTLIST directory create (true | false) #IMPLIED  >
+<!ATTLIST directory displayText CDATA #REQUIRED >
+<!ATTLIST directory property NMTOKEN #REQUIRED >
+<!ATTLIST directory checkExists (true | false) #IMPLIED  >
+<!ATTLIST directory explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT app-root EMPTY >
+<!ATTLIST app-root defaultValue CDATA #REQUIRED >
+<!ATTLIST app-root defaultValueWin CDATA #IMPLIED >
+<!ATTLIST app-root create (true | false) #IMPLIED  >
+<!ATTLIST app-root displayText CDATA #REQUIRED >
+<!ATTLIST app-root property NMTOKEN #REQUIRED >
+<!ATTLIST app-root checkExists (true | false) #IMPLIED  >
+<!ATTLIST app-root explanatoryText CDATA #IMPLIED >
+<!ATTLIST app-root checkFile1 CDATA #IMPLIED >
+<!ATTLIST app-root checkFile2 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir1 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir2 CDATA #IMPLIED >
+
+<!ELEMENT target EMPTY >
+<!ATTLIST target defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST target force (true | false) #IMPLIED  >
+<!ATTLIST target displayText CDATA #REQUIRED >
+<!ATTLIST target target NMTOKEN #REQUIRED >
+<!ATTLIST target explanatoryText CDATA #IMPLIED >
+<!ATTLIST target osSpecific CDATA #IMPLIED >
+<!ATTLIST target strict CDATA #IMPLIED >
+
+<!ELEMENT page ( app-root | comment | text | checkbox | select | large-select | target-select | directory | file | target | validated | password | date )* >
+<!ATTLIST page name CDATA #REQUIRED >
+<!ATTLIST page type NMTOKEN #REQUIRED >
+<!ATTLIST page imageResource CDATA #IMPLIED >
+<!ATTLIST page displayText CDATA #REQUIRED >
+<!ATTLIST page target NMTOKEN #IMPLIED >
+
+<!-- License page attributes -->
+<!ATTLIST page resource CDATA #IMPLIED >
+<!ATTLIST page usePaging CDATA #IMPLIED >
+
+<!-- Splash page attributes -->
+<!ATTLIST page splashResource CDATA #IMPLIED >
+<!ATTLIST page altText CDATA #IMPLIED >
+
+<!-- Progress page attributes -->
+<!ATTLIST page showTargets NMTOKEN #IMPLIED >
+
+<!-- Input page attributes -->
+<!ATTLIST page ifTarget NMTOKEN #IMPLIED >
+<!ATTLIST page ifProperty CDATA #IMPLIED >
+<!ATTLIST page overflow CDATA #IMPLIED >
+
+<!ELEMENT select ( option+ ) >
+<!ATTLIST select defaultValue CDATA #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+<!ATTLIST select displayText CDATA #REQUIRED >
+<!ATTLIST select property NMTOKEN #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT large-select ( option+ ) >
+<!ATTLIST large-select defaultValue CDATA #REQUIRED >
+<!ATTLIST large-select explanatoryText CDATA #IMPLIED >
+<!ATTLIST large-select displayText CDATA #REQUIRED >
+<!ATTLIST large-select property NMTOKEN #REQUIRED >
+<!ATTLIST large-select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT target-select ( option+ ) >
+<!ATTLIST target-select defaultValue CDATA #REQUIRED >
+<!ATTLIST target-select explanatoryText CDATA #IMPLIED >
+<!ATTLIST target-select displayText CDATA #REQUIRED >
+<!ATTLIST target-select property NMTOKEN #REQUIRED >
+<!ATTLIST target-select explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT password EMPTY >
+<!ATTLIST password defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST password regex CDATA #REQUIRED >
+<!ATTLIST password displayText CDATA #REQUIRED >
+<!ATTLIST password property NMTOKEN #REQUIRED >
+<!ATTLIST password explanatoryText CDATA #IMPLIED >
+<!ATTLIST password textMask CDATA #IMPLIED >
+
+<!ELEMENT date EMPTY >
+<!ATTLIST date defaultValue CDATA #REQUIRED >
+<!ATTLIST date dateFormat CDATA #REQUIRED >
+<!ATTLIST date displayText CDATA #REQUIRED >
+<!ATTLIST date property NMTOKEN #REQUIRED >
+<!ATTLIST date explanatoryText CDATA #IMPLIED >
+
+<!ELEMENT text EMPTY >
+<!ATTLIST text defaultValue CDATA #REQUIRED >
+<!ATTLIST text displayText CDATA #REQUIRED >
+<!ATTLIST text property NMTOKEN #REQUIRED >
+<!ATTLIST text explanatoryText CDATA #IMPLIED >
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.8.dtd
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.8.dtd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antinstall-config-0.8.dtd	(revision 18906)
@@ -0,0 +1,205 @@
+<!--
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<!ELEMENT validated EMPTY >
+<!ATTLIST validated defaultValue CDATA #REQUIRED >
+<!ATTLIST validated regex CDATA #REQUIRED >
+<!ATTLIST validated displayText CDATA #REQUIRED >
+<!ATTLIST validated property NMTOKEN #REQUIRED >
+<!ATTLIST validated explanatoryText CDATA #IMPLIED >
+<!ATTLIST validated name NMTOKEN #IMPLIED >
+
+<!ELEMENT file EMPTY >
+<!ATTLIST file defaultValue CDATA #REQUIRED >
+<!ATTLIST file defaultValueWin CDATA #IMPLIED >
+<!ATTLIST file displayText CDATA #REQUIRED >
+<!ATTLIST file property NMTOKEN #REQUIRED >
+<!ATTLIST file checkExists (true | false) #IMPLIED  >
+<!ATTLIST file explanatoryText CDATA #IMPLIED >
+<!ATTLIST file name NMTOKEN #IMPLIED >
+
+<!ELEMENT option EMPTY >
+<!ATTLIST option value CDATA #REQUIRED >
+<!ATTLIST option text CDATA #REQUIRED >
+<!ATTLIST option name NMTOKEN #IMPLIED >
+
+
+<!ELEMENT comment EMPTY >
+<!ATTLIST comment bold (true | false) #IMPLIED >
+<!ATTLIST comment displayText CDATA #IMPLIED >
+<!ATTLIST comment title NMTOKEN #IMPLIED >
+<!ATTLIST comment explanatoryText CDATA #IMPLIED >
+<!ATTLIST comment name NMTOKEN #IMPLIED >
+
+
+<!ELEMENT checkbox EMPTY >
+<!ATTLIST checkbox defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST checkbox force (true | false) #IMPLIED  >
+<!ATTLIST checkbox displayText CDATA #REQUIRED >
+<!ATTLIST checkbox property NMTOKEN #REQUIRED >
+<!ATTLIST checkbox explanatoryText CDATA #IMPLIED >
+<!ATTLIST checkbox name NMTOKEN #IMPLIED >
+
+
+<!ELEMENT installer ( page+ ) >
+<!ATTLIST installer verbose (true | false) #IMPLIED  >
+<!ATTLIST installer debug (true | false) #IMPLIED  >
+<!ATTLIST installer name CDATA #REQUIRED >
+<!ATTLIST installer windowIcon CDATA #IMPLIED >
+<!ATTLIST installer lookAndFeel NMTOKEN #IMPLIED >
+<!ATTLIST installer minJavaVersion NMTOKEN #IMPLIED >
+<!ATTLIST installer ui CDATA #IMPLIED >
+<!ATTLIST installer defaultImageResource CDATA #IMPLIED >
+<!ATTLIST installer finishButtonText CDATA #IMPLIED >
+<!ATTLIST installer antialiased CDATA #IMPLIED >
+<!ATTLIST installer wide CDATA #IMPLIED >
+<!ATTLIST installer loadDefaults (true | prompt | false) #IMPLIED  >
+<!ATTLIST installer version CDATA #IMPLIED  >
+
+<!ELEMENT directory EMPTY >
+<!ATTLIST directory defaultValue CDATA #REQUIRED >
+<!ATTLIST directory defaultValueWin CDATA #IMPLIED >
+<!ATTLIST directory create (true | false) #IMPLIED  >
+<!ATTLIST directory displayText CDATA #REQUIRED >
+<!ATTLIST directory property NMTOKEN #REQUIRED >
+<!ATTLIST directory checkExists (true | false) #IMPLIED  >
+<!ATTLIST directory explanatoryText CDATA #IMPLIED >
+<!ATTLIST directory name NMTOKEN #IMPLIED >
+
+
+<!ELEMENT app-root EMPTY >
+<!ATTLIST app-root defaultValue CDATA #REQUIRED >
+<!ATTLIST app-root defaultValueWin CDATA #IMPLIED >
+<!ATTLIST app-root create (true | false) #IMPLIED  >
+<!ATTLIST app-root displayText CDATA #REQUIRED >
+<!ATTLIST app-root property NMTOKEN #REQUIRED >
+<!ATTLIST app-root checkExists (true | false) #IMPLIED  >
+<!ATTLIST app-root explanatoryText CDATA #IMPLIED >
+<!ATTLIST app-root checkFile1 CDATA #IMPLIED >
+<!ATTLIST app-root checkFile2 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir1 CDATA #IMPLIED >
+<!ATTLIST app-root checkDir2 CDATA #IMPLIED >
+<!ATTLIST app-root name NMTOKEN #IMPLIED >
+
+
+<!ELEMENT target EMPTY >
+<!ATTLIST target defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST target force (true | false) #IMPLIED  >
+<!ATTLIST target displayText CDATA #REQUIRED >
+<!ATTLIST target target NMTOKEN #REQUIRED >
+<!ATTLIST target explanatoryText CDATA #IMPLIED >
+<!ATTLIST target osSpecific CDATA #IMPLIED >
+<!ATTLIST target strict CDATA #IMPLIED >
+<!ATTLIST target name NMTOKEN #IMPLIED >
+
+<!ELEMENT conditional  ( hidden+ ) >
+<!ATTLIST conditional ifProperty CDATA #REQUIRED >
+<!ELEMENT hidden EMPTY >
+<!ATTLIST hidden property NMTOKEN #REQUIRED >
+<!ATTLIST hidden value CDATA #REQUIRED >
+
+<!ELEMENT page ( app-root | comment | text | checkbox | select | large-select | target-select | directory | file | target | validated | password | password-confirm | date | hidden | conditional )* >
+<!ATTLIST page name CDATA #REQUIRED >
+<!ATTLIST page type NMTOKEN #REQUIRED >
+<!ATTLIST page imageResource CDATA #IMPLIED >
+<!ATTLIST page displayText CDATA #REQUIRED >
+<!ATTLIST page target NMTOKEN #IMPLIED >
+<!ATTLIST page postDisplayTarget NMTOKEN #IMPLIED >
+
+
+<!-- License page attributes -->
+<!ATTLIST page resource CDATA #IMPLIED >
+<!ATTLIST page usePaging CDATA #IMPLIED >
+
+<!-- Splash page attributes -->
+<!ATTLIST page splashResource CDATA #IMPLIED >
+<!ATTLIST page altText CDATA #IMPLIED >
+
+<!-- Text page attributes -->
+<!ATTLIST page htmlResource CDATA #IMPLIED >
+<!ATTLIST page textResource CDATA #IMPLIED >
+
+<!-- Progress page attributes -->
+<!ATTLIST page showTargets NMTOKEN #IMPLIED >
+
+<!-- Input page attributes -->
+<!ATTLIST page ifTarget NMTOKEN #IMPLIED >
+<!ATTLIST page ifProperty CDATA #IMPLIED >
+<!ATTLIST page overflow CDATA #IMPLIED >
+
+<!ELEMENT select ( option+ ) >
+<!ATTLIST select defaultValue CDATA #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+<!ATTLIST select displayText CDATA #REQUIRED >
+<!ATTLIST select property NMTOKEN #REQUIRED >
+<!ATTLIST select explanatoryText CDATA #IMPLIED >
+
+
+<!ELEMENT large-select ( option+ ) >
+<!ATTLIST large-select defaultValue CDATA #REQUIRED >
+<!ATTLIST large-select explanatoryText CDATA #IMPLIED >
+<!ATTLIST large-select displayText CDATA #REQUIRED >
+<!ATTLIST large-select property NMTOKEN #REQUIRED >
+<!ATTLIST large-select explanatoryText CDATA #IMPLIED >
+
+
+<!ELEMENT target-select ( option+ ) >
+<!ATTLIST target-select defaultValue CDATA #REQUIRED >
+<!ATTLIST target-select explanatoryText CDATA #IMPLIED >
+<!ATTLIST target-select displayText CDATA #REQUIRED >
+<!ATTLIST target-select property NMTOKEN #REQUIRED >
+<!ATTLIST target-select explanatoryText CDATA #IMPLIED >
+
+
+<!ELEMENT password EMPTY >
+<!ATTLIST password defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST password regex CDATA #REQUIRED >
+<!ATTLIST password displayText CDATA #REQUIRED >
+<!ATTLIST password property NMTOKEN #REQUIRED >
+<!ATTLIST password explanatoryText CDATA #IMPLIED >
+<!ATTLIST password textMask CDATA #IMPLIED >
+<!ATTLIST password name NMTOKEN #IMPLIED >
+
+
+<!ELEMENT password-confirm EMPTY >
+<!ATTLIST password-confirm defaultValue NMTOKEN #REQUIRED >
+<!ATTLIST password-confirm regex CDATA #IMPLIED >
+<!ATTLIST password-confirm displayText CDATA #REQUIRED >
+<!ATTLIST password-confirm property NMTOKEN #REQUIRED >
+<!ATTLIST password-confirm explanatoryText CDATA #IMPLIED >
+<!ATTLIST password-confirm textMask CDATA #IMPLIED >
+<!ATTLIST password-confirm origField CDATA #REQUIRED >
+<!ATTLIST password-confirm name NMTOKEN #IMPLIED >
+
+
+<!ELEMENT date EMPTY >
+<!ATTLIST date defaultValue CDATA #REQUIRED >
+<!ATTLIST date dateFormat CDATA #REQUIRED >
+<!ATTLIST date displayText CDATA #REQUIRED >
+<!ATTLIST date property NMTOKEN #REQUIRED >
+<!ATTLIST date explanatoryText CDATA #IMPLIED >
+<!ATTLIST date name NMTOKEN #IMPLIED >
+
+
+<!ELEMENT text EMPTY >
+<!ATTLIST text defaultValue CDATA #REQUIRED >
+<!ATTLIST text displayText CDATA #REQUIRED >
+<!ATTLIST text property NMTOKEN #REQUIRED >
+<!ATTLIST text explanatoryText CDATA #IMPLIED >
+<!ATTLIST text name NMTOKEN #IMPLIED >
+
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/FeedbackListener.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/FeedbackListener.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/FeedbackListener.java	(revision 18906)
@@ -0,0 +1,105 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.antmod;
+
+import java.util.ResourceBundle;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.tp23.antinstaller.renderer.swing.SwingInstallerContext;
+import org.tp23.antinstaller.Installer;
+
+/**
+ *
+ * <p>Reports a message in the swing UI this mesage is reported in the
+ * top of the window. </p>
+ * <p>The Listeners should apparently never uses System.out or System.err</p>
+ * This class is not really an Ant modification since it simply implements
+ * a public interface but is here on the offchance that one day Ant changes
+ * it's APIs
+ * @author Paul Hinds
+ * @version $Id: FeedbackListener.java,v 1.1.1.1 2005/10/18 18:20:52 teknopaul Exp $
+ */
+public class FeedbackListener implements BuildListener{
+
+	private final SwingInstallerContext swingCtx;
+
+	public FeedbackListener(SwingInstallerContext swingCtx) {
+		this.swingCtx=swingCtx;
+	}
+
+	/**
+	 * buildStarted This event results in User notification
+	 *
+	 * @param buildEvent BuildEvent
+	 */
+	public void buildStarted(BuildEvent buildEvent) {
+		//swingCtx.provideAntFeedBack(buildEvent.getMessage());
+		swingCtx.buildStarted(buildEvent);
+	}
+
+	/**
+	 * buildFinished This event results in User notification
+	 *
+	 * @param buildEvent BuildEvent
+	 */
+	public void buildFinished(BuildEvent buildEvent) {
+		swingCtx.provideAntFeedBack(org.tp23.antinstaller.Installer.langPack.getString("installFinished"));
+		swingCtx.buildFinished(buildEvent);
+	}
+
+	/**
+	 * targetStarted This event results in User notification
+	 *
+	 * @param buildEvent BuildEvent
+	 */
+	public void targetStarted(BuildEvent buildEvent) {
+		swingCtx.provideAntFeedBack(org.tp23.antinstaller.Installer.langPack.getString("running")+buildEvent.getTarget());
+		swingCtx.targetStarted(buildEvent);
+	}
+
+	/**
+	 * targetFinished This event is ignored
+	 * @param buildEvent BuildEvent
+	 */
+	public void targetFinished(BuildEvent buildEvent) {
+		swingCtx.targetFinished(buildEvent);
+	}
+
+	/**
+	 * taskStarted This event is ignored
+	 * @param buildEvent BuildEvent
+	 */
+	public void taskStarted(BuildEvent buildEvent) {
+		//swingCtx.provideAntFeedBack(buildEvent.getMessage());
+	}
+
+	/**
+	 * taskFinished This event is ignored
+	 * @param buildEvent BuildEvent
+	 */
+	public void taskFinished(BuildEvent buildEvent) {
+		//swingCtx.provideAntFeedBack(buildEvent.getMessage());
+	}
+
+	/**
+	 * messageLogged This event is ignored
+	 * @param buildEvent BuildEvent
+	 */
+	public void messageLogged(BuildEvent buildEvent) {
+		//swingCtx.provideAntFeedBack(buildEvent.getMessage());
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Jdk14RegexpMatcher.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Jdk14RegexpMatcher.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Jdk14RegexpMatcher.java	(revision 18906)
@@ -0,0 +1,139 @@
+/*
+ * Copyright  2001-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.tp23.antinstaller.antmod;
+
+import java.util.Vector;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.util.regexp.RegexpMatcher;
+import org.apache.tools.ant.util.regexp.RegexpUtil;
+
+/**
+ * Implementation of RegexpMatcher for the built-in regexp matcher of
+ * JDK 1.4. UNIX_LINES option is enabled as a default.
+ *
+ */
+public class Jdk14RegexpMatcher implements RegexpMatcher {
+
+    private String pattern;
+
+    public Jdk14RegexpMatcher() {
+    }
+
+    /**
+     * Set the regexp pattern from the String description.
+     */
+    public void setPattern(String pattern) {
+        this.pattern = pattern;
+    }
+
+    /**
+     * Get a String representation of the regexp pattern
+     */
+    public String getPattern() {
+        return pattern;
+    }
+
+    protected Pattern getCompiledPattern(int options)
+        throws BuildException {
+        int cOptions = getCompilerOptions(options);
+        try {
+            Pattern p = Pattern.compile(this.pattern, cOptions);
+            return p;
+        } catch (PatternSyntaxException e) {
+            throw new BuildException(e);
+        }
+    }
+
+    /**
+     * Does the given argument match the pattern?
+     */
+    public boolean matches(String argument) throws BuildException {
+        return matches(argument, MATCH_DEFAULT);
+    }
+
+    /**
+     * Does the given argument match the pattern?
+     */
+    public boolean matches(String input, int options)
+        throws BuildException {
+        try {
+            Pattern p = getCompiledPattern(options);
+            return p.matcher(input).find();
+        } catch (Exception e) {
+            throw new BuildException(e);
+        }
+    }
+
+    /**
+     * Returns a Vector of matched groups found in the argument.
+     *
+     * <p>Group 0 will be the full match, the rest are the
+     * parenthesized subexpressions</p>.
+     */
+    public Vector getGroups(String argument) throws BuildException {
+        return getGroups(argument, MATCH_DEFAULT);
+    }
+
+    /**
+     * Returns a Vector of matched groups found in the argument.
+     *
+     * <p>Group 0 will be the full match, the rest are the
+     * parenthesized subexpressions</p>.
+     */
+    public Vector getGroups(String input, int options)
+        throws BuildException {
+        Pattern p = getCompiledPattern(options);
+        Matcher matcher = p.matcher(input);
+        if (!matcher.find()) {
+            return null;
+        }
+        Vector v = new Vector();
+        int cnt = matcher.groupCount();
+        for (int i = 0; i <= cnt; i++) {
+            String match = matcher.group(i);
+            // treat non-matching groups as empty matches
+            if (match == null) {
+                match = "";
+            }
+            v.addElement(match);
+        }
+        return v;
+    }
+
+    protected int getCompilerOptions(int options) {
+        // be strict about line separator
+        int cOptions = Pattern.UNIX_LINES;
+
+        if (RegexpUtil.hasFlag(options, MATCH_CASE_INSENSITIVE)) {
+            cOptions |= Pattern.CASE_INSENSITIVE;
+        }
+        if (RegexpUtil.hasFlag(options, MATCH_MULTILINE)) {
+            cOptions |= Pattern.MULTILINE;
+        }
+        if (RegexpUtil.hasFlag(options, MATCH_SINGLELINE)) {
+            cOptions |= Pattern.DOTALL;
+        }
+
+        return cOptions;
+    }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Jdk14RegexpRegexp.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Jdk14RegexpRegexp.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Jdk14RegexpRegexp.java	(revision 18906)
@@ -0,0 +1,92 @@
+/*
+ * Copyright  2001-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.tp23.antinstaller.antmod;
+
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.util.regexp.Regexp;
+import org.apache.tools.ant.util.regexp.RegexpUtil;
+
+
+/***
+ * Regular expression implementation using the JDK 1.4 regular expression package
+ */
+public class Jdk14RegexpRegexp extends Jdk14RegexpMatcher implements Regexp {
+
+    public Jdk14RegexpRegexp() {
+        super();
+    }
+
+    protected int getSubsOptions(int options) {
+        int subsOptions = REPLACE_FIRST;
+        if (RegexpUtil.hasFlag(options, REPLACE_ALL)) {
+            subsOptions = REPLACE_ALL;
+        }
+        return subsOptions;
+    }
+
+    public String substitute(String input, String argument, int options)
+        throws BuildException {
+        // translate \1 to $(1) so that the Matcher will work
+        StringBuffer subst = new StringBuffer();
+        for (int i = 0; i < argument.length(); i++) {
+            char c = argument.charAt(i);
+            if (c == '$') {
+                subst.append('\\');
+                subst.append('$');
+            } else if (c == '\\') {
+                if (++i < argument.length()) {
+                    c = argument.charAt(i);
+                    int value = Character.digit(c, 10);
+                    if (value > -1) {
+                        subst.append("$").append(value);
+                    } else {
+                        subst.append(c);
+                    }
+                } else {
+                    // XXX - should throw an exception instead?
+                    subst.append('\\');
+                }
+            } else {
+                subst.append(c);
+            }
+        }
+        argument = subst.toString();
+
+        int sOptions = getSubsOptions(options);
+        Pattern p = getCompiledPattern(options);
+        StringBuffer sb = new StringBuffer();
+
+        Matcher m = p.matcher(input);
+        if (RegexpUtil.hasFlag(sOptions, REPLACE_ALL)) {
+            sb.append(m.replaceAll(argument));
+        } else {
+            boolean res = m.find();
+            if (res) {
+                m.appendReplacement(sb, argument);
+                m.appendTail(sb);
+            } else {
+                sb.append(input);
+            }
+        }
+
+        return sb.toString();
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Launcher.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Launcher.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Launcher.java	(revision 18906)
@@ -0,0 +1,250 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.tp23.antinstaller.antmod;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
+import org.apache.tools.ant.launch.LaunchException;
+import org.apache.tools.ant.launch.Locator;
+import org.tp23.antinstaller.InstallerContext;
+
+
+
+/**
+ *  This is a launcher for Ant.
+ *
+ * This file has been modified by Paul Hinds for Antinstaller and is not the same
+ * as the one delivered with Ant 1.6
+ *
+ * @since Ant 1.6
+ * @version $Id: Launcher.java,v 1.1.1.1 2005/10/18 18:20:54 teknopaul Exp $
+ */
+public class Launcher {
+	/** The Ant Home property */
+	public static final String ANTHOME_PROPERTY = "ant.home";
+
+
+	/** The Ant Library Directory property */
+	public static final String ANTLIBDIR_PROPERTY = "ant.library.dir";
+
+
+	/** The location of a per-user library directory */
+	public static final String USER_LIBDIR = ".ant/lib";
+
+
+	/** The startup class that is to be run */
+	public static final String MAIN_CLASS = "org.apache.tools.ant.Main";
+
+	private final Map allProperties;
+
+
+
+/**
+	 * Addtional Constructor to pass password properties to Ant
+	 * without saving them to a file.
+	 * Added by Paul Hinds
+	 * @param allProperties Properties
+	 */
+	public Launcher(Map allProperties) {
+		this.allProperties = allProperties;
+	}
+
+
+
+/**
+	 * Run the launcher to launch Ant
+	 *
+	 * @param args the command line arguments
+	 *
+	 * @exception MalformedURLException if the URLs required for the classloader
+	 *            cannot be created.
+	 */
+	public int run(String[] args, InstallerContext cxt) throws LaunchException, MalformedURLException {
+
+		try {
+
+			String antHomeProperty = System.getProperty(ANTHOME_PROPERTY);
+			File antHome = null;
+
+			File jarDir = null;
+
+			File sourceJar = Locator.getClassSource(getClass());
+			jarDir = sourceJar.getParentFile();
+
+			if (antHomeProperty != null) {
+				antHome = new File(antHomeProperty);
+			}
+
+			if (antHome == null || !antHome.exists()) {
+				antHome = jarDir.getParentFile();
+				System.setProperty(ANTHOME_PROPERTY, antHome.getAbsolutePath());
+			}
+
+			if (!antHome.exists()) {
+				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()) {
+					String elementName = myTokenizer.nextToken();
+					File element = new File(elementName);
+					if (elementName.indexOf("%") != -1 && !element.exists()) {
+						continue;
+					}
+					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();
+
+			// determine ant library directory for system jars: use property
+			// or default using location of ant-launcher.jar
+			File antLibDir = null;
+			String antLibDirProperty = System.getProperty(ANTLIBDIR_PROPERTY);
+			if (antLibDirProperty != null) {
+				antLibDir = new File(antLibDirProperty);
+			}
+			if ( (antLibDir == null) || !antLibDir.exists()) {
+				antLibDir = jarDir;
+				System.setProperty(ANTLIBDIR_PROPERTY, antLibDir.getAbsolutePath());
+			}
+			URL[] systemJars = Locator.getLocationURLs(antLibDir);
+
+			File userLibDir
+				= new File(System.getProperty("user.home"), USER_LIBDIR);
+			URL[] userJars = Locator.getLocationURLs(userLibDir);
+
+
+			int numJars = libJars.length + userJars.length + systemJars.length;
+			if (toolsJar != null) {
+				numJars++;
+			}
+			URL[] jars = new URL[numJars];
+			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) {
+				jars[jars.length - 1] = toolsJar.toURL();
+			}
+
+
+			// 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);
+				baseClassPath.append(Locator.fromURI(jars[i].toString()));
+			}
+
+			System.setProperty("java.class.path", baseClassPath.toString());
+
+			URLClassLoader loader = new URLClassLoader(jars);
+			Thread.currentThread().setContextClassLoader(loader);
+			try {
+				Main main = new Main();
+				Properties props = new Properties();
+				props.putAll(allProperties);
+				return main.startAnt(newArgs, props, null, cxt);
+			}
+			catch (Throwable t) {
+				t.printStackTrace();
+				return 1;
+			}
+		}
+		catch (Throwable ex) {
+			// Essentially all of the above is nice to have as far as AntInstaller is concerned
+			// ant.home may not be available when installing and application on a client that does not
+			// have and never will have Ant.  However the code is left since sometimes AntInstaller can be used
+			// for a general gui for Ant builds and features such and ANT_HOME/lib are useful
+			try {
+				System.setProperty(ANTHOME_PROPERTY, new File(".").getAbsolutePath());
+				Main main = new Main();
+				// fix for bug:1177191
+				// remove the -lib as discovered by Mark Anderson
+				String[] newArgs = new String[args.length-2];
+				for(int i=0,n=0;i<args.length;i++){
+					if(args[i].equals("-lib")){
+						i++;
+						continue;
+					}
+					newArgs[n++]=args[i];
+				}
+				Properties props = new Properties();
+				props.putAll(allProperties);
+				return main.startAnt(newArgs, props, null, cxt);
+			}
+			catch (Throwable t) {
+				t.printStackTrace();
+				return 1;
+			}
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Main.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Main.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/Main.java	(revision 18906)
@@ -0,0 +1,1064 @@
+/*
+ * Copyright  2000-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.tp23.antinstaller.antmod;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.BuildLogger;
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Diagnostics;
+import org.apache.tools.ant.ExitStatusException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.ProjectHelper;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.input.DefaultInputHandler;
+import org.apache.tools.ant.input.InputHandler;
+import org.apache.tools.ant.launch.AntMain;
+import org.apache.tools.ant.util.JavaEnvUtils;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.PropertiesFileRenderer;
+
+
+/**
+ * Command line entry point into Ant. This class is entered via the
+ * canonical `public static void main` entry point and reads the
+ * command line arguments. It then assembles and executes an Ant
+ * project.
+ * <p>
+ * If you integrating Ant into some other tool, this is not the class
+ * to use as an entry point. Please see the source code of this
+ * class to see how it manipulates the Ant project classes.
+ *
+* This file has been modified by Paul Hinds for Antinstaller and is not the same
+* as the one delivered with Ant 1.6
+* @version $Id: Main.java,v 1.5 2007/01/12 10:41:48 anothermwilson Exp $
+ */
+public class Main implements AntMain {
+
+    /** The default build file name. */
+    public static final String DEFAULT_BUILD_FILENAME = "build.xml";
+
+    /** Our current message output status. Follows Project.MSG_XXX. */
+    private int msgOutputLevel = Project.MSG_INFO;
+
+    /** File that we are using for configuration. */
+    private File buildFile; /* null */
+
+    /** Stream to use for logging. */
+    private static PrintStream out = System.out;
+
+    /** Stream that we are using for logging error messages. */
+    private static PrintStream err = System.err;
+
+    /** The build targets. */
+    private Vector targets = new Vector();
+
+    /** Set of properties that can be used by tasks. */
+    private Properties definedProps = new Properties();
+
+    /** Names of classes to add as listeners to project. */
+    private Vector listeners = new Vector(1);
+
+    /** File names of property files to load on startup. */
+    private Vector propertyFiles = new Vector(1);
+
+    /** Indicates whether this build is to support interactive input */
+    private boolean allowInput = true;
+
+    /** keep going mode */
+    private boolean keepGoingMode = false;
+
+    /**
+     * The Ant logger class. There may be only one logger. It will have
+     * the right to use the 'out' PrintStream. The class must implements the
+     * BuildLogger interface.
+     */
+    private String loggerClassname = null;
+
+    /**
+     * The Ant InputHandler class.  There may be only one input
+     * handler.
+     */
+    private String inputHandlerClassname = null;
+
+    /**
+     * Whether or not output to the log is to be unadorned.
+     */
+    private boolean emacsMode = false;
+
+    /**
+     * Whether or not this instance has successfully been
+     * constructed and is ready to run.
+     */
+    private boolean readyToRun = false;
+
+    /**
+     * Whether or not we should only parse and display the project help
+     * information.
+     */
+    private boolean projectHelp = false;
+
+    /**
+     * Whether or not a logfile is being used. This is used to
+     * check if the output streams must be closed.
+     */
+    private static boolean isLogFileUsed = false;
+
+    /**
+     * optional thread priority
+     */
+    private Integer threadPriority = null;
+	/**
+	 * Installer Context
+	 */
+	private InstallerContext ctx = null;
+
+    /**
+     * Prints the message of the Throwable if it (the message) is not
+     * <code>null</code>.
+     *
+     * @param t Throwable to print the message of.
+     *          Must not be <code>null</code>.
+     */
+    private static void printMessage(Throwable t) {
+        String message = t.getMessage();
+        if (message != null) {
+            System.err.println(message);
+        }
+    }
+
+    /**
+     * Creates a new instance of this class using the
+     * arguments specified, gives it any extra user properties which have been
+     * specified, and then runs the build using the classloader provided.
+     *
+     * @param args Command line arguments. Must not be <code>null</code>.
+     * @param additionalUserProperties Any extra properties to use in this
+     *        build. May be <code>null</code>, which is the equivalent to
+     *        passing in an empty set of properties.
+     * @param coreLoader Classloader used for core classes. May be
+     *        <code>null</code> in which case the system classloader is used.
+     */
+    public static void start(String[] args, Properties additionalUserProperties,
+                             ClassLoader coreLoader) {
+        throw new UnsupportedOperationException("Required by Ant interface but not used");
+        //Main m = new Main();
+        //m.startAnt(args, additionalUserProperties, coreLoader);
+    }
+
+    
+	public void startAnt(String[] args, Properties additionalUserProperties,
+						 ClassLoader coreLoader) {
+        throw new UnsupportedOperationException("Required by Ant interface but not used");
+		//startAnt(args, additionalUserProperties, coreLoader, null); // FindBugs does not like this
+	}
+    /**
+     * Start Ant
+     * @param args command line args
+     * @param additionalUserProperties properties to set beyond those that
+     *        may be specified on the args list
+     * @param coreLoader - not used
+     * @return the return code that was used for System.exit() in the original Ant 
+     *
+     * @since Ant 1.6
+     */
+    public int startAnt(String[] args, Properties additionalUserProperties,
+                         ClassLoader coreLoader, InstallerContext ctx) {
+		 this.ctx = ctx;
+		 out = ctx.getAntOutputRenderer().getOut();
+		 err = ctx.getAntOutputRenderer().getErr();
+        try {
+            Diagnostics.validateVersion();
+            processArgs(args);
+        } catch (Throwable exc) {
+            handleLogfile();
+            printMessage(exc);
+            return 1;
+        }
+
+        if (additionalUserProperties != null) {
+            for (Enumeration e = additionalUserProperties.keys();
+                    e.hasMoreElements();) {
+                String key = (String) e.nextElement();
+                String property = additionalUserProperties.getProperty(key);
+                definedProps.put(key, property);
+            }
+        }
+
+        // expect the worst
+        int exitCode = 1;
+        try {
+            try {
+                runBuild(coreLoader);
+                exitCode = 0;
+            } catch (ExitStatusException ese) {
+                exitCode = ese.getStatus();
+                if (exitCode != 0) {
+                    throw ese;
+                }
+            }
+        } catch (BuildException be) {
+            if (err != System.err) {
+                printMessage(be);
+            }
+        } catch (Throwable exc) {
+            exc.printStackTrace();
+            printMessage(exc);
+        } finally {
+            handleLogfile();
+        }
+        //mod by Paul Hinds
+		return exitCode;
+		//System.exit(exitCode);
+    }
+
+    /**
+     * Close logfiles, if we have been writing to them.
+     *
+     * @since Ant 1.6
+     */
+    private static void handleLogfile() {
+        if (isLogFileUsed) {
+            if (out != null) {
+                try {
+                    out.close();
+                } catch (final Exception e) {
+                    //ignore
+                }
+            }
+            if (err != null) {
+                try {
+                    err.close();
+                } catch (final Exception e) {
+                    //ignore
+                }
+            }
+        }
+    }
+
+    /**
+     * Command line entry point. This method kicks off the building
+     * of a project object and executes a build using either a given
+     * target or the default target.
+     *
+     * @param args Command line arguments. Must not be <code>null</code>.
+     */
+//    public static void main(String[] args) {
+//        start(args, null, null);
+//    }
+//
+    /**
+     * Constructor used when creating Main for later arg processing
+     * and startup
+     */
+    public Main() {
+    }
+
+    /**
+     * Sole constructor, which parses and deals with command line
+     * arguments.
+     *
+     * @param args Command line arguments. Must not be <code>null</code>.
+     *
+     * @exception BuildException if the specified build file doesn't exist
+     *                           or is a directory.
+     *
+     * @deprecated
+     */
+    protected Main(String[] args) throws BuildException {
+        processArgs(args);
+    }
+
+    /**
+     * 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.
+     *
+     * @since Ant 1.6
+     */
+    private void processArgs(String[] args) {
+        String searchForThis = null;
+        PrintStream logTo = null;
+
+        // cycle through given args
+
+        for (int i = 0; i < args.length; i++) {
+            String arg = args[i];
+
+            if (arg.equals("-help") || arg.equals("-h")) {
+                printUsage();
+                return;
+            } else if (arg.equals("-version")) {
+                printVersion();
+                return;
+            } else if (arg.equals("-diagnostics")) {
+                Diagnostics.doReport(System.out);
+                return;
+            } else if (arg.equals("-quiet") || arg.equals("-q")) {
+                msgOutputLevel = Project.MSG_WARN;
+            } else if (arg.equals("-verbose") || arg.equals("-v")) {
+                printVersion();
+                msgOutputLevel = Project.MSG_VERBOSE;
+            } else if (arg.equals("-debug") || arg.equals("-d")) {
+                printVersion();
+                msgOutputLevel = Project.MSG_DEBUG;
+            } else if (arg.equals("-noinput")) {
+                allowInput = false;
+            } else if (arg.equals("-logfile") || arg.equals("-l")) {
+                try {
+                    File logFile = new File(args[i + 1]);
+                    i++;
+                    logTo = new PrintStream(new FileOutputStream(logFile));
+                    isLogFileUsed = true;
+                } catch (IOException ioe) {
+                    String msg = "Cannot write on the specified log file. "
+                        + "Make sure the path exists and you have write "
+                        + "permissions.";
+                    throw new BuildException(msg);
+                } catch (ArrayIndexOutOfBoundsException aioobe) {
+                    String msg = "You must specify a log file when "
+                        + "using the -log argument";
+                    throw new BuildException(msg);
+                }
+            } else if (arg.equals("-buildfile") || arg.equals("-file")
+                       || arg.equals("-f")) {
+                try {
+                    buildFile = new File(args[i + 1].replace('/', File.separatorChar));
+                    i++;
+                } catch (ArrayIndexOutOfBoundsException aioobe) {
+                    String msg = "You must specify a buildfile when "
+                        + "using the -buildfile argument";
+                    throw new BuildException(msg);
+                }
+            } else if (arg.equals("-listener")) {
+                try {
+                    listeners.addElement(args[i + 1]);
+                    i++;
+                } catch (ArrayIndexOutOfBoundsException aioobe) {
+                    String msg = "You must specify a classname when "
+                        + "using the -listener argument";
+                    throw new BuildException(msg);
+                }
+            } else if (arg.startsWith("-D")) {
+
+                /* Interestingly enough, we get to here when a user
+                 * uses -Dname=value. However, in some cases, the OS
+                 * goes ahead and parses this out to args
+                 *   {"-Dname", "value"}
+                 * so instead of parsing on "=", we just make the "-D"
+                 * characters go away and skip one argument forward.
+                 *
+                 * I don't know how to predict when the JDK is going
+                 * to help or not, so we simply look for the equals sign.
+                 */
+
+                String name = arg.substring(2, arg.length());
+                String value = null;
+                int posEq = name.indexOf("=");
+                if (posEq > 0) {
+                    value = name.substring(posEq + 1);
+                    name = name.substring(0, posEq);
+                } else if (i < args.length - 1) {
+                    value = args[++i];
+                } else {
+                    throw new BuildException("Missing value for property "
+                                             + name);
+                }
+
+                definedProps.put(name, value);
+            } else if (arg.equals("-logger")) {
+                if (loggerClassname != null) {
+                    throw new BuildException("Only one logger class may "
+                        + " be specified.");
+                }
+                try {
+                    loggerClassname = args[++i];
+                } catch (ArrayIndexOutOfBoundsException aioobe) {
+                    throw new BuildException("You must specify a classname when"
+                                             + " using the -logger argument");
+                }
+            } else if (arg.equals("-inputhandler")) {
+                if (inputHandlerClassname != null) {
+                    throw new BuildException("Only one input handler class may "
+                                             + "be specified.");
+                }
+                try {
+                    inputHandlerClassname = args[++i];
+                } catch (ArrayIndexOutOfBoundsException aioobe) {
+                    throw new BuildException("You must specify a classname when"
+                                             + " using the -inputhandler"
+                                             + " argument");
+                }
+            } else if (arg.equals("-emacs") || arg.equals("-e")) {
+                emacsMode = true;
+            } else if (arg.equals("-projecthelp") || arg.equals("-p")) {
+                // set the flag to display the targets and quit
+                projectHelp = true;
+            } else if (arg.equals("-find") || arg.equals("-s")) {
+                // eat up next arg if present, default to build.xml
+                if (i < args.length - 1) {
+                    searchForThis = args[++i];
+                } else {
+                    searchForThis = DEFAULT_BUILD_FILENAME;
+                }
+            } else if (arg.startsWith("-propertyfile")) {
+                try {
+                    propertyFiles.addElement(args[i + 1]);
+                    i++;
+                } catch (ArrayIndexOutOfBoundsException aioobe) {
+                    String msg = "You must specify a property filename when "
+                        + "using the -propertyfile argument";
+                    throw new BuildException(msg);
+                }
+            } else if (arg.equals("-k") || arg.equals("-keep-going")) {
+                keepGoingMode = true;
+            } else if (arg.equals("-nice")) {
+                try {
+                    threadPriority=Integer.decode(args[i + 1]);
+                } catch (ArrayIndexOutOfBoundsException aioobe) {
+                    throw new BuildException(
+                            "You must supply a niceness value (1-10)"+
+                            " after the -nice option");
+                } catch (NumberFormatException e) {
+                    throw new BuildException("Unrecognized niceness value: " +
+                            args[i + 1]);
+                }
+                i++;
+                if(threadPriority.intValue()<Thread.MIN_PRIORITY ||
+                        threadPriority.intValue()>Thread.MAX_PRIORITY) {
+                    throw new BuildException(
+                            "Niceness value is out of the range 1-10");
+                }
+            } else if (arg.startsWith("-")) {
+                // we don't have any more args to recognize!
+                String msg = "Unknown argument: " + arg;
+                System.out.println(msg);
+                printUsage();
+                throw new BuildException("");
+            } else {
+                // if it's no other arg, it may be the target
+                targets.addElement(arg);
+            }
+        }
+
+        // if buildFile was not specified on the command line,
+        if (buildFile == null) {
+            // but -find then search for it
+            if (searchForThis != null) {
+                buildFile = findBuildFile(System.getProperty("user.dir"),
+                                          searchForThis);
+            } else {
+                buildFile = new File(DEFAULT_BUILD_FILENAME);
+            }
+        }
+
+        // make sure buildfile exists
+        if (!buildFile.exists()) {
+            System.out.println("Buildfile: " + buildFile + " does not exist!");
+            throw new BuildException("Build failed");
+        }
+
+        // make sure it's not a directory (this falls into the ultra
+        // paranoid lets check everything category
+
+        if (buildFile.isDirectory()) {
+            System.out.println("What? Buildfile: " + buildFile + " is a dir!");
+            throw new BuildException("Build failed");
+        }
+
+        // Load the property files specified by -propertyfile
+        for (int propertyFileIndex = 0;
+             propertyFileIndex < propertyFiles.size();
+             propertyFileIndex++) {
+            String filename
+                = (String) propertyFiles.elementAt(propertyFileIndex);
+            Properties props = new Properties();
+            FileInputStream fis = null;
+            try {
+                fis = new FileInputStream(filename);
+                props.load(fis);
+            } catch (IOException e) {
+                System.out.println("Could not load property file "
+                   + filename + ": " + e.getMessage());
+            } finally {
+                if (fis != null) {
+                    try {
+                        fis.close();
+                    } catch (IOException e) {
+                        // ignore
+                    }
+                }
+            }
+
+            // ensure that -D properties take precedence
+            Enumeration propertyNames = props.propertyNames();
+            while (propertyNames.hasMoreElements()) {
+                String name = (String) propertyNames.nextElement();
+                if (definedProps.getProperty(name) == null) {
+                    definedProps.put(name, props.getProperty(name));
+                }
+            }
+        }
+
+        if (msgOutputLevel >= Project.MSG_INFO) {
+            System.out.println("Buildfile: " + buildFile);
+        }
+
+        if (logTo != null) {
+            out = logTo;
+            err = logTo;
+            System.setOut(out);
+            System.setErr(err);
+        }
+        readyToRun = true;
+    }
+
+    /**
+     * Helper to get the parent file for a given file.
+     * <p>
+     * Added to simulate File.getParentFile() from JDK 1.2.
+     * @deprecated
+     *
+     * @param file   File to find parent of. Must not be <code>null</code>.
+     * @return       Parent file or null if none
+     */
+    private File getParentFile(File file) {
+        File parent = file.getParentFile();
+
+        if (parent != null && msgOutputLevel >= Project.MSG_VERBOSE) {
+            System.out.println("Searching in " + parent.getAbsolutePath());
+        }
+
+        return parent;
+    }
+
+    /**
+     * Search parent directories for the build file.
+     * <p>
+     * Takes the given target as a suffix to append to each
+     * parent directory in search of a build file.  Once the
+     * root of the file-system has been reached an exception
+     * is thrown.
+     *
+     * @param start  Leaf directory of search.
+     *               Must not be <code>null</code>.
+     * @param suffix  Suffix filename to look for in parents.
+     *                Must not be <code>null</code>.
+     *
+     * @return A handle to the build file if one is found
+     *
+     * @exception BuildException if no build file is found
+     */
+    private File findBuildFile(String start, String suffix)
+         throws BuildException {
+        if (msgOutputLevel >= Project.MSG_INFO) {
+            System.out.println("Searching for " + suffix + " ...");
+        }
+
+        File parent = new File(new File(start).getAbsolutePath());
+        File file = new File(parent, suffix);
+
+        // check if the target file exists in the current directory
+        while (!file.exists()) {
+            // change to parent directory
+            parent = getParentFile(parent);
+
+            // if parent is null, then we are at the root of the fs,
+            // complain that we can't find the build file.
+            if (parent == null) {
+                throw new BuildException("Could not locate a build file!");
+            }
+
+            // refresh our file handle
+            file = new File(parent, suffix);
+        }
+
+        return file;
+    }
+
+    /**
+     * Executes the build. If the constructor for this instance failed
+     * (e.g. returned after issuing a warning), this method returns
+     * immediately.
+     *
+     * @param coreLoader The classloader to use to find core classes.
+     *                   May be <code>null</code>, in which case the
+     *                   system classloader is used.
+     *
+     * @exception BuildException if the build fails
+     */
+    private void runBuild(ClassLoader coreLoader) throws BuildException {
+
+        if (!readyToRun) {
+            return;
+        }
+
+        final Project project = new Project();
+        project.setCoreLoader(coreLoader);
+
+        Throwable error = null;
+
+        try {
+            addBuildListeners(project);
+            addInputHandler(project);
+
+            PrintStream err = System.err;
+            PrintStream out = System.out;
+            InputStream in = System.in;
+
+            // use a system manager that prevents from System.exit()
+            // only in JDK > 1.1
+            SecurityManager oldsm = null;
+            if (!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_0)
+                && !JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) {
+                oldsm = System.getSecurityManager();
+
+                //SecurityManager can not be installed here for backwards
+                //compatibility reasons (PD). Needs to be loaded prior to
+                //ant class if we are going to implement it.
+                //System.setSecurityManager(new NoExitSecurityManager());
+            }
+            try {
+                if (allowInput) {
+                    project.setDefaultInputStream(System.in);
+                }
+                //System.setIn(new DemuxInputStream(project));
+                //System.setOut(new PrintStream(new DemuxOutputStream(project, false)));
+                //System.setErr(new PrintStream(new DemuxOutputStream(project, true)));
+
+
+                if (!projectHelp) {
+                    project.fireBuildStarted();
+                }
+
+                // set the thread priorities
+                if (threadPriority != null) {
+                    try {
+                        project.log("Setting Ant's thread priority to "
+                                + threadPriority,Project.MSG_VERBOSE);
+                        Thread.currentThread().setPriority(threadPriority.intValue());
+                    } catch (SecurityException swallowed) {
+                        //we cannot set the priority here.
+                        project.log("A security manager refused to set the -nice value");
+                    }
+                }
+
+                project.init();
+                project.setUserProperty("ant.version", getAntVersion());
+
+                // set user-define properties
+                Enumeration e = definedProps.keys();
+                while (e.hasMoreElements()) {
+                    String arg = (String) e.nextElement();
+                    String value = (String) definedProps.get(arg);
+                    project.setUserProperty(arg, value);
+                }
+
+                project.setUserProperty("ant.file",
+                                        buildFile.getAbsolutePath());
+                project.setKeepGoingMode(keepGoingMode);
+
+                ProjectHelper.configureProject(project, buildFile);
+
+				project.setBasedir(definedProps.getProperty(PropertiesFileRenderer.FILE_ROOT_PROPERTY));
+
+
+                if (projectHelp) {
+                    printDescription(project);
+                    printTargets(project, msgOutputLevel > Project.MSG_INFO);
+                    return;
+                }
+
+                // make sure that we have a target to execute
+                if (targets.size() == 0) {
+                    if (project.getDefaultTarget() != null) {
+                        targets.addElement(project.getDefaultTarget());
+                    }
+                }
+                project.executeTargets(targets);
+            } finally {
+                // put back the original security manager
+                //The following will never eval to true. (PD)
+                if (oldsm != null) {
+                    System.setSecurityManager(oldsm);
+                }
+
+                System.setOut(out);
+                System.setErr(err);
+                System.setIn(in);
+            }
+        } catch (RuntimeException exc) {
+            error = exc;
+            throw exc;
+        } catch (Error err) {
+            error = err;
+            throw err;
+        } finally {
+            if (!projectHelp) {
+                project.fireBuildFinished(error);
+            } else if (error != null) {
+                project.log(error.toString(), Project.MSG_ERR);
+            }
+        }
+    }
+
+    /**
+     * Adds the listeners specified in the command line arguments,
+     * along with the default listener, to the specified project.
+     *
+     * @param project The project to add listeners to.
+     *                Must not be <code>null</code>.
+     */
+    protected void addBuildListeners(Project project) {
+
+        // Add the default listener
+        project.addBuildListener(createLogger());
+
+		//Add the AntInstaller Listener
+        if(ctx.getBuildListener()!=null){
+        	project.addBuildListener(ctx.getBuildListener());
+        }
+
+        for (int i = 0; i < listeners.size(); i++) {
+            String className = (String) listeners.elementAt(i);
+            try {
+                BuildListener listener =
+                    (BuildListener) Class.forName(className).newInstance();
+                if (project != null) {
+                    project.setProjectReference(listener);
+                }
+                project.addBuildListener(listener);
+            } catch (Throwable exc) {
+                throw new BuildException("Unable to instantiate listener "
+                    + className, exc);
+            }
+        }
+    }
+
+    /**
+     * Creates the InputHandler and adds it to the project.
+     *
+     * @param project the project instance.
+     *
+     * @exception BuildException if a specified InputHandler
+     *                           implementation could not be loaded.
+     */
+    private void addInputHandler(Project project) throws BuildException {
+        InputHandler handler = null;
+        if (inputHandlerClassname == null) {
+            handler = new DefaultInputHandler();
+        } else {
+            try {
+                handler = (InputHandler)
+                    (Class.forName(inputHandlerClassname).newInstance());
+                if (project != null) {
+                    project.setProjectReference(handler);
+                }
+            } catch (ClassCastException e) {
+                String msg = "The specified input handler class "
+                    + inputHandlerClassname
+                    + " does not implement the InputHandler interface";
+                throw new BuildException(msg);
+            } catch (Exception e) {
+                String msg = "Unable to instantiate specified input handler "
+                    + "class " + inputHandlerClassname + " : "
+                    + e.getClass().getName();
+                throw new BuildException(msg);
+            }
+        }
+        project.setInputHandler(handler);
+    }
+
+    // XXX: (Jon Skeet) Any reason for writing a message and then using a bare
+    // RuntimeException rather than just using a BuildException here? Is it
+    // in case the message could end up being written to no loggers (as the
+    // loggers could have failed to be created due to this failure)?
+    /**
+     * Creates the default build logger for sending build events to the ant
+     * log.
+     *
+     * @return the logger instance for this build.
+     */
+    private BuildLogger createLogger() {
+        BuildLogger logger = null;
+        if (loggerClassname != null) {
+            try {
+                Class loggerClass = Class.forName(loggerClassname);
+                logger = (BuildLogger) (loggerClass.newInstance());
+            } catch (ClassCastException e) {
+                System.err.println("The specified logger class "
+                    + loggerClassname
+                    + " does not implement the BuildLogger interface");
+                throw new RuntimeException();
+            } catch (Exception e) {
+                System.err.println("Unable to instantiate specified logger "
+                    + "class " + loggerClassname + " : "
+                    + e.getClass().getName());
+                throw new RuntimeException();
+            }
+        } else {
+            logger = new DefaultLogger();
+        }
+
+        logger.setMessageOutputLevel(msgOutputLevel);
+        logger.setOutputPrintStream(out);
+        logger.setErrorPrintStream(err);
+        logger.setEmacsMode(emacsMode);
+
+        return logger;
+    }
+
+    /**
+     * Prints the usage information for this class to <code>System.out</code>.
+     */
+    private static void printUsage() {
+        String lSep = System.getProperty("line.separator");
+        StringBuffer msg = new StringBuffer();
+        msg.append("ant [options] [target [target2 [target3] ...]]" + lSep);
+        msg.append("Options: " + lSep);
+        msg.append("  -help, -h              print this message" + lSep);
+        msg.append("  -projecthelp, -p       print project help information" + lSep);
+        msg.append("  -version               print the version information and exit" + lSep);
+        msg.append("  -diagnostics           print information that might be helpful to" + lSep);
+        msg.append("                         diagnose or report problems." + lSep);
+        msg.append("  -quiet, -q             be extra quiet" + lSep);
+        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);
+        msg.append("  -listener <classname>  add an instance of class as a project listener" + lSep);
+        msg.append("  -noinput               do not allow interactive input" + lSep);
+        msg.append("  -buildfile <file>      use given buildfile" + lSep);
+        msg.append("    -file    <file>              ''" + lSep);
+        msg.append("    -f       <file>              ''" + lSep);
+        msg.append("  -D<property>=<value>   use value for given property" + lSep);
+        msg.append("  -keep-going, -k        execute all targets that do not depend" + lSep);
+        msg.append("                         on failed target(s)" + lSep);
+        msg.append("  -propertyfile <name>   load all properties from file with -D" + lSep);
+        msg.append("                         properties taking precedence" + lSep);
+        msg.append("  -inputhandler <class>  the class which will handle input requests" + lSep);
+        msg.append("  -find <file>           (s)earch for buildfile towards the root of" + lSep);
+        msg.append("    -s  <file>           the filesystem and use it" + lSep);
+        msg.append("  -nice  number          A niceness value for the main thread:" + lSep +
+                   "                         1 (lowest) to 10 (highest); 5 is the default" + lSep);
+        System.out.println(msg.toString());
+    }
+
+    /**
+     * Prints the Ant version information to <code>System.out</code>.
+     *
+     * @exception BuildException if the version information is unavailable
+     */
+    private static void printVersion() throws BuildException {
+        System.out.println(getAntVersion());
+    }
+
+    /**
+     * Cache of the Ant version information when it has been loaded.
+     */
+    private static String antVersion = null;
+
+    /**
+     * Returns the Ant version information, if available. Once the information
+     * has been loaded once, it's cached and returned from the cache on future
+     * calls.
+     *
+     * @return the Ant version information as a String
+     *         (always non-<code>null</code>)
+     *
+     * @exception BuildException if the version information is unavailable
+     */
+    public static synchronized String getAntVersion() throws BuildException {
+        if (antVersion == null) {
+            try {
+                Properties props = new Properties();
+                InputStream in =
+                    Main.class.getResourceAsStream("/org/apache/tools/ant/version.txt");
+                props.load(in);
+                in.close();
+
+                StringBuffer msg = new StringBuffer();
+                msg.append("Apache Ant version ");
+                msg.append(props.getProperty("VERSION"));
+                msg.append(" compiled on ");
+                msg.append(props.getProperty("DATE"));
+                antVersion = msg.toString();
+            } catch (IOException ioe) {
+                throw new BuildException("Could not load the version information:"
+                                         + ioe.getMessage());
+            } catch (NullPointerException npe) {
+                throw new BuildException("Could not load the version information.");
+            }
+        }
+        return antVersion;
+    }
+
+     /**
+      * Prints the description of a project (if there is one) to
+      * <code>System.out</code>.
+      *
+      * @param project The project to display a description of.
+      *                Must not be <code>null</code>.
+      */
+    private static void printDescription(Project project) {
+       if (project.getDescription() != null) {
+          project.log(project.getDescription());
+       }
+    }
+
+    /**
+     * Prints a list of all targets in the specified project to
+     * <code>System.out</code>, optionally including subtargets.
+     *
+     * @param project The project to display a description of.
+     *                Must not be <code>null</code>.
+     * @param printSubTargets Whether or not subtarget names should also be
+     *                        printed.
+     */
+    private static void printTargets(Project project, boolean printSubTargets) {
+        // find the target with the longest name
+        int maxLength = 0;
+        Enumeration ptargets = project.getTargets().elements();
+        String targetName;
+        String targetDescription;
+        Target currentTarget;
+        // split the targets in top-level and sub-targets depending
+        // on the presence of a description
+        Vector topNames = new Vector();
+        Vector topDescriptions = new Vector();
+        Vector subNames = new Vector();
+
+        while (ptargets.hasMoreElements()) {
+            currentTarget = (Target) ptargets.nextElement();
+            targetName = currentTarget.getName();
+            if (targetName.equals("")) {
+                continue;
+            }
+            targetDescription = currentTarget.getDescription();
+            // maintain a sorted list of targets
+            if (targetDescription == null) {
+                int pos = findTargetPosition(subNames, targetName);
+                subNames.insertElementAt(targetName, pos);
+            } else {
+                int pos = findTargetPosition(topNames, targetName);
+                topNames.insertElementAt(targetName, pos);
+                topDescriptions.insertElementAt(targetDescription, pos);
+                if (targetName.length() > maxLength) {
+                    maxLength = targetName.length();
+                }
+            }
+        }
+
+        printTargets(project, topNames, topDescriptions, "Main targets:",
+                     maxLength);
+        //if there were no main targets, we list all subtargets
+        //as it means nothing has a description
+        if (topNames.size() == 0) {
+            printSubTargets = true;
+        }
+        if (printSubTargets) {
+            printTargets(project, subNames, null, "Other targets:", 0);
+        }
+
+        String defaultTarget = project.getDefaultTarget();
+        if (defaultTarget != null && !"".equals(defaultTarget)) {
+            // shouldn't need to check but...
+            project.log("Default target: " + defaultTarget);
+        }
+    }
+
+    /**
+     * Searches for the correct place to insert a name into a list so as
+     * to keep the list sorted alphabetically.
+     *
+     * @param names The current list of names. Must not be <code>null</code>.
+     * @param name  The name to find a place for.
+     *              Must not be <code>null</code>.
+     *
+     * @return the correct place in the list for the given name
+     */
+    private static int findTargetPosition(Vector names, String name) {
+        int res = names.size();
+        for (int i = 0; i < names.size() && res == names.size(); i++) {
+            if (name.compareTo((String) names.elementAt(i)) < 0) {
+                res = i;
+            }
+        }
+        return res;
+    }
+
+    /**
+     * Writes a formatted list of target names to <code>System.out</code>
+     * with an optional description.
+     *
+     *
+     * @param project the project instance.
+     * @param names The names to be printed.
+     *              Must not be <code>null</code>.
+     * @param descriptions The associated target descriptions.
+     *                     May be <code>null</code>, in which case
+     *                     no descriptions are displayed.
+     *                     If non-<code>null</code>, this should have
+     *                     as many elements as <code>names</code>.
+     * @param heading The heading to display.
+     *                Should not be <code>null</code>.
+     * @param maxlen The maximum length of the names of the targets.
+     *               If descriptions are given, they are padded to this
+     *               position so they line up (so long as the names really
+     *               <i>are</i> shorter than this).
+     */
+    private static void printTargets(Project project, Vector names,
+                                     Vector descriptions, String heading,
+                                     int maxlen) {
+        // now, start printing the targets and their descriptions
+        String lSep = System.getProperty("line.separator");
+        // got a bit annoyed that I couldn't find a pad function
+        String spaces = "    ";
+        while (spaces.length() <= maxlen) {
+            spaces += spaces;
+        }
+        StringBuffer msg = new StringBuffer();
+        msg.append(heading);
+        msg.append(lSep);
+        msg.append(lSep);
+        for (int i = 0; i < names.size(); i++) {
+            msg.append(" ");
+            msg.append(names.elementAt(i));
+            if (descriptions != null) {
+                msg.append(spaces.substring(0, maxlen - ((String) names.elementAt(i)).length() + 2));
+                msg.append(descriptions.elementAt(i));
+            }
+            msg.append(lSep);
+        }
+        project.log(msg.toString());
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/ProjectHelper3.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/ProjectHelper3.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/ProjectHelper3.java	(revision 18906)
@@ -0,0 +1,1043 @@
+/*
+ * Copyright  2000-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.tp23.antinstaller.antmod;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.util.Hashtable;
+import java.util.Stack;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Location;
+import org.apache.tools.ant.Project;
+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.UnknownElement;
+import org.apache.tools.ant.helper.AntXMLContext;
+import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.ant.util.JAXPUtils;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Sax2 based project reader
+ * 
+* This file has been modified by Paul Hinds for Antinstaller and is not the same
+* as the ProjectHelper2 delivered with Ant 1.6 although almost identical
+ */
+public class ProjectHelper3 extends ProjectHelper {
+    /* Stateless */
+
+    // singletons - since all state is in the context
+    private static AntHandler elementHandler = new ElementHandler();
+    private static AntHandler targetHandler = new TargetHandler();
+    private static AntHandler mainHandler = new MainHandler();
+    private static AntHandler projectHandler = new ProjectHandler();
+
+    /**
+     * helper for path -> URI and URI -> path conversions.
+     */
+    private static FileUtils fu = FileUtils.newFileUtils();
+
+    /**
+     * Parse an unknown element from a url
+     *
+     * @param project the current project
+     * @param source  the url containing the task
+     * @return a configured task
+     * @exception BuildException if an error occurs
+     */
+    public UnknownElement parseUnknownElement(Project project, URL source)
+        throws BuildException {
+        Target dummyTarget = new Target();
+        dummyTarget.setProject(project);
+
+        AntXMLContext context = new AntXMLContext(project);
+        context.addTarget(dummyTarget);
+        context.setImplicitTarget(dummyTarget);
+
+        parse(context.getProject(), source,
+              new RootHandler(context, elementHandler));
+        Task[] tasks = dummyTarget.getTasks();
+        if (tasks.length != 1) {
+            throw new BuildException("No tasks defined");
+        }
+        return (UnknownElement) tasks[0];
+    }
+    /**
+     * Parse a source xml input.
+     *
+     * @param project the current project
+     * @param source  the xml source
+     * @exception BuildException if an error occurs
+     */
+    public void parse(Project project, Object source)
+            throws BuildException {
+        getImportStack().addElement(source);
+        //System.out.println("Adding " + source);
+        AntXMLContext context = null;
+        context = (AntXMLContext) project.getReference("ant.parsing.context");
+//        System.out.println("Parsing " + getImportStack().size() + " " +
+//                context+ " " + getImportStack() );
+        if (context == null) {
+            context = new AntXMLContext(project);
+            project.addReference("ant.parsing.context", context);
+            project.addReference("ant.targets", context.getTargets());
+        }
+
+        if (getImportStack().size() > 1) {
+            // we are in an imported file.
+            context.setIgnoreProjectTag(true);
+            Target currentTarget = context.getCurrentTarget();
+            try {
+                Target newCurrent = new Target();
+                newCurrent.setProject(project);
+                newCurrent.setName("");
+                context.setCurrentTarget(newCurrent);
+                parse(project, source, new RootHandler(context, mainHandler));
+                newCurrent.execute();
+            } finally {
+                context.setCurrentTarget(currentTarget);
+            }
+        } else {
+            // top level file
+            parse(project, source, new RootHandler(context, mainHandler));
+            // Execute the top-level target
+            context.getImplicitTarget().execute();
+        }
+    }
+
+    /**
+     * Parses the project file, configuring the project as it goes.
+     *
+     * @param project the current project
+     * @param source  the xml source
+     * @param handler the root handler to use (contains the current context)
+     * @exception BuildException if the configuration is invalid or cannot
+     *                           be read
+     */
+    public void parse(Project project, Object source, RootHandler handler)
+            throws BuildException {
+
+        AntXMLContext context = handler.context;
+
+        File buildFile = null;
+        URL  url = null;
+        String buildFileName = null;
+
+        if (source instanceof File) {
+            buildFile = (File) source;
+            buildFile = fu.normalize(buildFile.getAbsolutePath());
+            context.setBuildFile(buildFile);
+            buildFileName = buildFile.toString();
+//         } else if (source instanceof InputStream ) {
+        } else if (source instanceof URL) {
+//        	These commented out code is the only difference
+//			between this class and ProjectHelper2
+//            if (handler.getCurrentAntHandler() != elementHandler) {
+//                throw new BuildException(
+//                    "Source " + source.getClass().getName()
+//                    + " not supported by this plugin for "
+//                    + " non task xml");
+//            }
+            url = (URL) source;
+            buildFileName = url.toString();
+//         } else if (source instanceof InputSource ) {
+        } else {
+            throw new BuildException("Source " + source.getClass().getName()
+                                     + " not supported by this plugin");
+        }
+
+        InputStream inputStream = null;
+        InputSource inputSource = null;
+
+
+        try {
+            /**
+             * SAX 2 style parser used to parse the given file.
+             */
+            XMLReader parser = JAXPUtils.getNamespaceXMLReader();
+
+            String uri = null;
+            if (buildFile != null) {
+                uri = fu.toURI(buildFile.getAbsolutePath());
+                inputStream = new FileInputStream(buildFile);
+            } else {
+                inputStream = url.openStream();
+                uri = url.toString(); // ?? OK ??
+            }
+
+            inputSource = new InputSource(inputStream);
+            if (uri != null) {
+                inputSource.setSystemId(uri);
+            }
+            project.log("parsing buildfile " + buildFileName
+                        + " with URI = " + uri, Project.MSG_VERBOSE);
+
+            DefaultHandler hb = handler;
+
+            parser.setContentHandler(hb);
+            parser.setEntityResolver(hb);
+            parser.setErrorHandler(hb);
+            parser.setDTDHandler(hb);
+            parser.parse(inputSource);
+        } catch (SAXParseException exc) {
+            Location location = new Location(exc.getSystemId(),
+                exc.getLineNumber(), exc.getColumnNumber());
+
+            Throwable t = exc.getException();
+            if (t instanceof BuildException) {
+                BuildException be = (BuildException) t;
+                if (be.getLocation() == Location.UNKNOWN_LOCATION) {
+                    be.setLocation(location);
+                }
+                throw be;
+            }
+
+            throw new BuildException(exc.getMessage(), t, location);
+        } catch (SAXException exc) {
+            Throwable t = exc.getException();
+            if (t instanceof BuildException) {
+                throw (BuildException) t;
+            }
+            throw new BuildException(exc.getMessage(), t);
+        } catch (FileNotFoundException exc) {
+            throw new BuildException(exc);
+        } catch (UnsupportedEncodingException exc) {
+              throw new BuildException("Encoding of project file "
+                                       + buildFileName + " is invalid.",
+                                       exc);
+        } catch (IOException exc) {
+            throw new BuildException("Error reading project file "
+                                     + buildFileName + ": " + exc.getMessage(),
+                                     exc);
+        } finally {
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (IOException ioe) {
+                    // ignore this
+                }
+            }
+        }
+    }
+
+    /**
+     * The common superclass for all SAX event handlers used to parse
+     * the configuration file.
+     *
+     * The context will hold all state information. At each time
+     * there is one active handler for the current element. It can
+     * use onStartChild() to set an alternate handler for the child.
+     */
+    public static class AntHandler  {
+        /**
+         * Handles the start of an element. This base implementation does
+         * nothing.
+         *
+         * @param uri the namespace URI for the tag
+         * @param tag The name of the element being started.
+         *            Will not be <code>null</code>.
+         * @param qname The qualified name of the element.
+         * @param attrs Attributes of the element being started.
+         *              Will not be <code>null</code>.
+         * @param context The context that this element is in.
+         *
+         * @exception SAXParseException if this method is not overridden, or in
+         *                              case of error in an overridden version
+         */
+        public void onStartElement(String uri, String tag, String qname,
+                                   Attributes attrs,
+                                   AntXMLContext context)
+            throws SAXParseException {
+        }
+
+        /**
+         * Handles the start of an element. This base implementation just
+         * throws an exception - you must override this method if you expect
+         * child elements.
+         *
+         * @param uri The namespace uri for this element.
+         * @param tag The name of the element being started.
+         *            Will not be <code>null</code>.
+         * @param qname The qualified name for this element.
+         * @param attrs Attributes of the element being started.
+         *              Will not be <code>null</code>.
+         * @param context The current context.
+         * @return a handler (in the derived classes)
+         *
+         * @exception SAXParseException if this method is not overridden, or in
+         *                              case of error in an overridden version
+         */
+        public AntHandler onStartChild(String uri, String tag, String qname,
+                                       Attributes attrs,
+                                       AntXMLContext context)
+            throws SAXParseException {
+            throw new SAXParseException("Unexpected element \"" + qname
+                + " \"", context.getLocator());
+        }
+
+        /**
+         * Handle the end of a element.
+         *
+         * @param uri the namespace uri of the element
+         * @param tag the tag of the element
+         * @param qname the qualified name of the element
+         * @param context the current context
+         * @exception SAXParseException if an error occurs
+         */
+        public void onEndChild(String uri, String tag, String qname,
+                                     AntXMLContext context)
+            throws SAXParseException {
+        }
+
+        /**
+         * This method is called when this element and all elements nested into it have been
+         * handled. I.e., this happens at the &lt;/end_tag_of_the_element&gt;.
+         * @param uri the namespace uri for this element
+         * @param tag the element name
+         * @param context the current context
+         */
+        public void onEndElement(String uri, String tag,
+                                 AntXMLContext context) {
+        }
+
+        /**
+         * Handles text within an element. This base implementation just
+         * throws an exception, you must override it if you expect content.
+         *
+         * @param buf A character array of the text within the element.
+         *            Will not be <code>null</code>.
+         * @param start The start element in the array.
+         * @param count The number of characters to read from the array.
+         * @param context The current context.
+         *
+         * @exception SAXParseException if this method is not overridden, or in
+         *                              case of error in an overridden version
+         */
+        public void characters(char[] buf, int start, int count, AntXMLContext context)
+            throws SAXParseException {
+            String s = new String(buf, start, count).trim();
+
+            if (s.length() > 0) {
+                throw new SAXParseException("Unexpected text \"" + s
+                    + "\"", context.getLocator());
+            }
+        }
+
+        /**
+         * Will be called every time a namespace is reached.
+         * It'll verify if the ns was processed, and if not load the task
+         * definitions.
+         * @param uri The namespace uri.
+         */
+        protected void checkNamespace(String uri) {
+
+        }
+    }
+
+    /**
+     * Handler for ant processing. Uses a stack of AntHandlers to
+     * implement each element ( the original parser used a recursive behavior,
+     * with the implicit execution stack )
+     */
+    public static class RootHandler extends DefaultHandler {
+        private Stack antHandlers = new Stack();
+        private AntHandler currentHandler = null;
+        private AntXMLContext context;
+
+        /**
+         * Creates a new RootHandler instance.
+         *
+         * @param context The context for the handler.
+         * @param rootHandler The handler for the root element.
+         */
+        public RootHandler(AntXMLContext context, AntHandler rootHandler) {
+            currentHandler = rootHandler;
+            antHandlers.push(currentHandler);
+            this.context = context;
+        }
+
+        /**
+         * Returns the current ant handler object.
+         * @return the current ant handler.
+         */
+        public AntHandler getCurrentAntHandler() {
+            return currentHandler;
+        }
+
+        /**
+         * Resolves file: URIs relative to the build file.
+         *
+         * @param publicId The public identifier, or <code>null</code>
+         *                 if none is available. Ignored in this
+         *                 implementation.
+         * @param systemId The system identifier provided in the XML
+         *                 document. Will not be <code>null</code>.
+         * @return an inputsource for this identifier
+         */
+        public InputSource resolveEntity(String publicId,
+                                         String systemId) {
+
+            context.getProject().log("resolving systemId: "
+                + systemId, Project.MSG_VERBOSE);
+
+            if (systemId.startsWith("file:")) {
+                String path = fu.fromURI(systemId);
+
+                File file = new File(path);
+                if (!file.isAbsolute()) {
+                    file = fu.resolveFile(context.getBuildFileParent(), path);
+                }
+                try {
+                    InputSource inputSource =
+                            new InputSource(new FileInputStream(file));
+                    inputSource.setSystemId(fu.toURI(file.getAbsolutePath()));
+                    return inputSource;
+                } catch (FileNotFoundException fne) {
+                    context.getProject().log(file.getAbsolutePath()
+                        + " could not be found", Project.MSG_WARN);
+                }
+
+            }
+            // use default if not file or file not found
+            return null;
+        }
+
+        /**
+         * Handles the start of a project element. A project handler is created
+         * and initialised with the element name and attributes.
+         *
+         * @param uri The namespace uri for this element.
+         * @param tag The name of the element being started.
+         *            Will not be <code>null</code>.
+         * @param qname The qualified name for this element.
+         * @param attrs Attributes of the element being started.
+         *              Will not be <code>null</code>.
+         *
+         * @exception org.xml.sax.SAXParseException if the tag given is not
+         *                              <code>"project"</code>
+         */
+        public void startElement(String uri, String tag, String qname, Attributes attrs)
+            throws SAXParseException {
+            AntHandler next
+                = currentHandler.onStartChild(uri, tag, qname, attrs, context);
+            antHandlers.push(currentHandler);
+            currentHandler = next;
+            currentHandler.onStartElement(uri, tag, qname, attrs, context);
+        }
+
+        /**
+         * Sets the locator in the project helper for future reference.
+         *
+         * @param locator The locator used by the parser.
+         *                Will not be <code>null</code>.
+         */
+        public void setDocumentLocator(Locator locator) {
+            context.setLocator(locator);
+        }
+
+        /**
+         * Handles the end of an element. Any required clean-up is performed
+         * by the onEndElement() method and then the original handler
+         * is restored to the parser.
+         *
+         * @param uri  The namespace URI for this element.
+         * @param name The name of the element which is ending.
+         *             Will not be <code>null</code>.
+         * @param qName The qualified name for this element.
+         *
+         * @exception SAXException in case of error (not thrown in
+         *                         this implementation)
+         *
+         */
+        public void endElement(String uri, String name, String qName) throws SAXException {
+            currentHandler.onEndElement(uri, name, context);
+            AntHandler prev = (AntHandler) antHandlers.pop();
+            currentHandler = prev;
+            if (currentHandler != null) {
+                currentHandler.onEndChild(uri, name, qName, context);
+            }
+        }
+
+        /**
+         * Handle text within an element, calls currentHandler.characters.
+         *
+         * @param buf  A character array of the test.
+         * @param start The start offset in the array.
+         * @param count The number of characters to read.
+         * @exception SAXParseException if an error occurs
+         */
+        public void characters(char[] buf, int start, int count)
+            throws SAXParseException {
+            currentHandler.characters(buf, start, count, context);
+        }
+
+        /**
+         * Start a namespace prefix to uri mapping
+         *
+         * @param prefix the namespace prefix
+         * @param uri the namespace uri
+         */
+        public void startPrefixMapping(String prefix, String uri) {
+            context.startPrefixMapping(prefix, uri);
+        }
+
+        /**
+         * End a namepace prefix to uri mapping
+         *
+         * @param prefix the prefix that is not mapped anymore
+         */
+        public void endPrefixMapping(String prefix) {
+            context.endPrefixMapping(prefix);
+        }
+    }
+
+    /**
+     * The main handler - it handles the &lt;project&gt; tag.
+     *
+     * @see AntHandler
+     */
+    public static class MainHandler extends AntHandler {
+
+        /**
+         * Handle the project tag
+         *
+         * @param uri The namespace uri.
+         * @param name The element tag.
+         * @param qname The element qualified name.
+         * @param attrs The attributes of the element.
+         * @param context The current context.
+         * @return The project handler that handles subelements of project
+         * @exception SAXParseException if the qualified name is not "project".
+         */
+        public AntHandler onStartChild(String uri, String name, String qname,
+                                       Attributes attrs,
+                                       AntXMLContext context)
+            throws SAXParseException {
+            if (name.equals("project")
+                && (uri.equals("") || uri.equals(ANT_CORE_URI))) {
+                return ProjectHelper3.projectHandler;
+            } else {
+//                 if (context.importlevel > 0) {
+//                     // we are in an imported file. Allow top-level <target>.
+//                     if (qname.equals( "target" ) )
+//                         return ProjectHelper3.targetHandler;
+//                 }
+                throw new SAXParseException("Unexpected element \"" + qname
+                    + "\" " + name, context.getLocator());
+            }
+        }
+    }
+
+    /**
+     * Handler for the top level "project" element.
+     */
+    public static class ProjectHandler extends AntHandler {
+
+        /**
+         * Initialisation routine called after handler creation
+         * with the element name and attributes. The attributes which
+         * this handler can deal with are: <code>"default"</code>,
+         * <code>"name"</code>, <code>"id"</code> and <code>"basedir"</code>.
+         *
+         * @param uri The namespace URI for this element.
+         * @param tag Name of the element which caused this handler
+         *            to be created. Should not be <code>null</code>.
+         *            Ignored in this implementation.
+         * @param qname The qualified name for this element.
+         * @param attrs Attributes of the element which caused this
+         *              handler to be created. Must not be <code>null</code>.
+         * @param context The current context.
+         *
+         * @exception SAXParseException if an unexpected attribute is
+         *            encountered or if the <code>"default"</code> attribute
+         *            is missing.
+         */
+        public void onStartElement(String uri, String tag, String qname,
+                                   Attributes attrs,
+                                   AntXMLContext context)
+            throws SAXParseException {
+            String id = null;
+            String baseDir = null;
+            boolean nameAttributeSet = false;
+
+            Project project = context.getProject();
+
+            /** XXX I really don't like this - the XML processor is still
+             * too 'involved' in the processing. A better solution (IMO)
+             * would be to create UE for Project and Target too, and
+             * then process the tree and have Project/Target deal with
+             * its attributes ( similar with Description ).
+             *
+             * If we eventually switch to ( or add support for ) DOM,
+             * things will work smoothly - UE can be avoided almost completely
+             * ( it could still be created on demand, for backward compatibility )
+             */
+
+            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()) {
+                            project.setDefault(value);
+                        }
+                    }
+                } else if (key.equals("name")) {
+                    if (value != null) {
+                        context.setCurrentProjectName(value);
+                        nameAttributeSet = true;
+                        if (!context.isIgnoringProjectTag()) {
+                            project.setName(value);
+                            project.addReference(value, project);
+                        }
+                    }
+                } else if (key.equals("id")) {
+                    if (value != null) {
+                        // What's the difference between id and name ?
+                        if (!context.isIgnoringProjectTag()) {
+                            project.addReference(value, project);
+                        }
+                    }
+                } else if (key.equals("basedir")) {
+                    if (!context.isIgnoringProjectTag()) {
+                        baseDir = value;
+                    }
+                } else {
+                    // XXX ignore attributes in a different NS ( maybe store them ? )
+                    throw new SAXParseException("Unexpected attribute \""
+                        + attrs.getQName(i) + "\"", context.getLocator());
+                }
+            }
+
+            // XXX Move to Project ( so it is shared by all helpers )
+            String antFileProp = "ant.file." + context.getCurrentProjectName();
+            String dup = project.getProperty(antFileProp);
+            if (dup != null && nameAttributeSet) {
+                File dupFile = new File(dup);
+                if (context.isIgnoringProjectTag()
+                    && !dupFile.equals(context.getBuildFile())) {
+                    project.log("Duplicated project name in import. Project "
+                        + context.getCurrentProjectName() + " defined first in "
+                        + dup + " and again in " + context.getBuildFile(),
+                        Project.MSG_WARN);
+                }
+            }
+
+            if (context.getBuildFile() != null) {
+                project.setUserProperty("ant.file."
+                    + context.getCurrentProjectName(),
+                    context.getBuildFile().toString());
+            }
+
+            if (context.isIgnoringProjectTag()) {
+                // no further processing
+                return;
+            }
+            // set explicitly before starting ?
+            if (project.getProperty("basedir") != null) {
+                project.setBasedir(project.getProperty("basedir"));
+            } else {
+                // Default for baseDir is the location of the build file.
+                if (baseDir == null) {
+                    project.setBasedir(context.getBuildFileParent().getAbsolutePath());
+                } else {
+                    // check whether the user has specified an absolute path
+                    if ((new File(baseDir)).isAbsolute()) {
+                        project.setBasedir(baseDir);
+                    } else {
+                        project.setBaseDir(fu.resolveFile(
+                                               context.getBuildFileParent(), baseDir));
+                    }
+                }
+            }
+
+            project.addTarget("", context.getImplicitTarget());
+            context.setCurrentTarget(context.getImplicitTarget());
+        }
+
+        /**
+         * Handles the start of a top-level element within the project. An
+         * appropriate handler is created and initialised with the details
+         * of the element.
+         *
+         * @param uri The namespace URI for this element.
+         * @param name The name of the element being started.
+         *            Will not be <code>null</code>.
+         * @param qname The qualified name for this element.
+         * @param attrs Attributes of the element being started.
+         *              Will not be <code>null</code>.
+         * @param context The context for this element.
+         * @return a target or an element handler.
+         *
+         * @exception org.xml.sax.SAXParseException if the tag given is not
+         *            <code>"taskdef"</code>, <code>"typedef"</code>,
+         *            <code>"property"</code>, <code>"target"</code>
+         *            or a data type definition
+         */
+        public AntHandler onStartChild(String uri, String name, String qname,
+                                       Attributes attrs,
+                                       AntXMLContext context)
+            throws SAXParseException {
+            if (name.equals("target")
+                && (uri.equals("") || uri.equals(ANT_CORE_URI))) {
+                return ProjectHelper3.targetHandler;
+            } else {
+                return ProjectHelper3.elementHandler;
+            }
+        }
+
+    }
+
+    /**
+     * Handler for "target" elements.
+     */
+    public static class TargetHandler extends AntHandler {
+
+        /**
+         * Initialisation routine called after handler creation
+         * with the element name and attributes. The attributes which
+         * this handler can deal with are: <code>"name"</code>,
+         * <code>"depends"</code>, <code>"if"</code>,
+         * <code>"unless"</code>, <code>"id"</code> and
+         * <code>"description"</code>.
+         *
+         * @param uri The namespace URI for this element.
+         * @param tag Name of the element which caused this handler
+         *            to be created. Should not be <code>null</code>.
+         *            Ignored in this implementation.
+         * @param qname The qualified name for this element.
+         * @param attrs Attributes of the element which caused this
+         *              handler to be created. Must not be <code>null</code>.
+         * @param context The current context.
+         *
+         * @exception SAXParseException if an unexpected attribute is encountered
+         *            or if the <code>"name"</code> attribute is missing.
+         */
+        public void onStartElement(String uri, String tag, String qname,
+                                   Attributes attrs,
+                                   AntXMLContext context)
+            throws SAXParseException {
+            String name = null;
+            String depends = "";
+
+            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);
+
+                if (key.equals("name")) {
+                    name = value;
+                    if ("".equals(name)) {
+                        throw new BuildException("name attribute must "
+                            + "not be empty");
+                    }
+                } else if (key.equals("depends")) {
+                    depends = value;
+                } else if (key.equals("if")) {
+                    target.setIf(value);
+                } else if (key.equals("unless")) {
+                    target.setUnless(value);
+                } else if (key.equals("id")) {
+                    if (value != null && !value.equals("")) {
+                        context.getProject().addReference(value, target);
+                    }
+                } else if (key.equals("description")) {
+                    target.setDescription(value);
+                } else {
+                    throw new SAXParseException("Unexpected attribute \""
+                        + key + "\"", context.getLocator());
+                }
+            }
+
+            if (name == null) {
+                throw new SAXParseException("target element appears without "
+                    + "a name attribute", context.getLocator());
+            }
+
+            Hashtable currentTargets = project.getTargets();
+
+            // If the name has already been defined ( import for example )
+            if (currentTargets.containsKey(name)) {
+                if (!context.isIgnoringProjectTag()) {
+                    // not in a import'ed file
+                    throw new BuildException(
+                        "Duplicate target '" + name + "'",
+                        new Location(context.getLocator().getSystemId(),
+                                     context.getLocator().getLineNumber(),
+                                     context.getLocator().getColumnNumber()));
+                }
+                // Alter the name.
+                if (context.getCurrentProjectName() != null) {
+                    String newName = context.getCurrentProjectName()
+                        + "." + name;
+                    project.log("Already defined in main or a previous import, "
+                        + "define " + name + " as " + newName,
+                                Project.MSG_VERBOSE);
+                    name = newName;
+                } else {
+                    project.log("Already defined in main or a previous import, "
+                        + "ignore " + name, Project.MSG_VERBOSE);
+                    name = null;
+                }
+            }
+
+            if (name != null) {
+                target.setName(name);
+                project.addOrReplaceTarget(name, target);
+            }
+
+            // take care of dependencies
+            if (depends.length() > 0) {
+                target.setDepends(depends);
+            }
+        }
+
+        /**
+         * Handles the start of an element within a target.
+         *
+         * @param uri The namespace URI for this element.
+         * @param name The name of the element being started.
+         *            Will not be <code>null</code>.
+         * @param qname The qualified name for this element.
+         * @param attrs Attributes of the element being started.
+         *              Will not be <code>null</code>.
+         * @param context The current context.
+         * @return an element handler.
+         *
+         * @exception SAXParseException if an error occurs when initialising
+         *                              the appropriate child handler
+         */
+        public AntHandler onStartChild(String uri, String name, String qname,
+                                       Attributes attrs,
+                                       AntXMLContext context)
+            throws SAXParseException {
+            return ProjectHelper3.elementHandler;
+        }
+
+        /**
+         * Handle the end of the project, sets the current target of the
+         * context to be the implicit target.
+         *
+         * @param uri The namespace URI of the element.
+         * @param tag The name of the element.
+         * @param context The current context.
+         */
+        public void onEndElement(String uri, String tag, AntXMLContext context) {
+            context.setCurrentTarget(context.getImplicitTarget());
+        }
+    }
+
+    /**
+     * Handler for all project elements ( tasks, data types )
+     */
+    public static class ElementHandler extends AntHandler {
+
+        /**
+         * Constructor.
+         */
+        public ElementHandler() {
+        }
+
+        /**
+         * Initialisation routine called after handler creation
+         * with the element name and attributes. This configures
+         * the element with its attributes and sets it up with
+         * its parent container (if any). Nested elements are then
+         * added later as the parser encounters them.
+         *
+         * @param uri The namespace URI for this element.
+         * @param tag Name of the element which caused this handler
+         *            to be created. Must not be <code>null</code>.
+         * @param qname The qualified name for this element.
+         * @param attrs Attributes of the element which caused this
+         *              handler to be created. Must not be <code>null</code>.
+         * @param context The current context.
+         *
+         * @exception SAXParseException in case of error (not thrown in
+         *                              this implementation)
+         */
+        public void onStartElement(String uri, String tag, String qname,
+                                   Attributes attrs,
+                                   AntXMLContext context)
+            throws SAXParseException {
+            RuntimeConfigurable parentWrapper = context.currentWrapper();
+            Object parent = null;
+
+            if (parentWrapper != null) {
+                parent = parentWrapper.getProxy();
+            }
+
+            /* UnknownElement is used for tasks and data types - with
+               delayed eval */
+            UnknownElement task = new UnknownElement(tag);
+            task.setProject(context.getProject());
+            task.setNamespace(uri);
+            task.setQName(qname);
+            task.setTaskType(
+                ProjectHelper.genComponentName(task.getNamespace(), tag));
+            task.setTaskName(qname);
+
+            Location location = new Location(context.getLocator().getSystemId(),
+                    context.getLocator().getLineNumber(),
+                    context.getLocator().getColumnNumber());
+            task.setLocation(location);
+            task.setOwningTarget(context.getCurrentTarget());
+
+            context.configureId(task, attrs);
+
+            if (parent != null) {
+                // Nested element
+                ((UnknownElement) parent).addChild(task);
+            }  else {
+                // Task included in a target ( including the default one ).
+                context.getCurrentTarget().addTask(task);
+            }
+
+            // container.addTask(task);
+            // This is a nop in UE: task.init();
+
+            RuntimeConfigurable wrapper
+                = new RuntimeConfigurable(task, task.getTaskName());
+
+            for (int i = 0; i < attrs.getLength(); i++) {
+                String name = attrs.getLocalName(i);
+                String attrUri = attrs.getURI(i);
+                if (attrUri != null
+                    && !attrUri.equals("")
+                    && !attrUri.equals(uri)) {
+                    name = attrUri + ":" + attrs.getQName(i);
+                }
+                String value = attrs.getValue(i);
+                // PR: Hack for ant-type value
+                //  an ant-type is a component name which can
+                // be namespaced, need to extract the name
+                // and convert from qualified name to uri/name
+                if (ANT_TYPE.equals(name)
+                    || (ANT_CORE_URI.equals(attrUri)
+                        && ANT_TYPE.equals(attrs.getLocalName(i)))) {
+                    name = ANT_TYPE;
+                    int index = value.indexOf(":");
+                    if (index != -1) {
+                        String prefix = value.substring(0, index);
+                        String mappedUri = context.getPrefixMapping(prefix);
+                        if (mappedUri == null) {
+                            throw new BuildException(
+                                "Unable to find XML NS prefix " + prefix);
+                        }
+                        value = ProjectHelper.genComponentName(
+                            mappedUri, value.substring(index + 1));
+                    }
+                }
+                wrapper.setAttribute(name, value);
+            }
+
+            if (parentWrapper != null) {
+                parentWrapper.addChild(wrapper);
+            }
+
+            context.pushWrapper(wrapper);
+        }
+
+        /**
+         * Adds text to the task, using the wrapper
+         *
+         * @param buf A character array of the text within the element.
+         *            Will not be <code>null</code>.
+         * @param start The start element in the array.
+         * @param count The number of characters to read from the array.
+         * @param context The current context.
+         *
+         * @exception SAXParseException if the element doesn't support text
+         *
+         * @see ProjectHelper#addText(Project,java.lang.Object,char[],int,int)
+         */
+        public void characters(char[] buf, int start, int count,
+                               AntXMLContext context)
+            throws SAXParseException {
+            RuntimeConfigurable wrapper = context.currentWrapper();
+            wrapper.addText(buf, start, count);
+        }
+
+        /**
+         * Handles the start of an element within a target. Task containers
+         * will always use another task handler, and all other tasks
+         * will always use a nested element handler.
+         *
+         * @param uri The namespace URI for this element.
+         * @param tag The name of the element being started.
+         *            Will not be <code>null</code>.
+         * @param qname The qualified name for this element.
+         * @param attrs Attributes of the element being started.
+         *              Will not be <code>null</code>.
+         * @param context The current context.
+         * @return The handler for elements.
+         *
+         * @exception SAXParseException if an error occurs when initialising
+         *                              the appropriate child handler
+         */
+        public AntHandler onStartChild(String uri, String tag, String qname,
+                                       Attributes attrs,
+                                       AntXMLContext context)
+            throws SAXParseException {
+            return ProjectHelper3.elementHandler;
+        }
+
+        /**
+         * Handles the end of the element. This pops the wrapper from
+         * the context.
+         *
+         * @param uri The namespace URI for the element.
+         * @param tag The name of the element.
+         * @param context The current context.
+         */
+        public void onEndElement(String uri, String tag, AntXMLContext context) {
+            context.popWrapper();
+        }
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/RegexpMatcherFactory.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/RegexpMatcherFactory.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/RegexpMatcherFactory.java	(revision 18906)
@@ -0,0 +1,43 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.antmod;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.util.regexp.RegexpMatcher;
+
+
+/**
+ * This class exists because the default Regexp handler is not part of ant.jar
+ * @author Paul Hinds
+ * @version $Id: RegexpMatcherFactory.java,v 1.2 2006/12/21 00:03:05 teknopaul Exp $
+ */
+public class RegexpMatcherFactory {
+
+	/**
+	 * 
+	 */
+	public RegexpMatcherFactory() {
+		super();
+	}
+    public RegexpMatcher newRegexpMatcher() throws BuildException {
+    	try{
+    		return new org.apache.tools.ant.util.regexp.RegexpMatcherFactory().newRegexpMatcher(null);
+    	}
+    	catch(BuildException be){
+    		return new Jdk14RegexpMatcher();
+    	}
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/RuntimeLauncher.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/RuntimeLauncher.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/RuntimeLauncher.java	(revision 18906)
@@ -0,0 +1,144 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.tp23.antinstaller.antmod;
+
+import java.io.File;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.ProjectHelper;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.antmod.taskdefs.LogTask;
+import org.tp23.antinstaller.antmod.taskdefs.MessageTask;
+import org.tp23.antinstaller.antmod.taskdefs.PropertyTask;
+import org.tp23.antinstaller.runtime.ExecInstall;
+import org.tp23.antinstaller.selfextract.NonExtractor;
+import org.tp23.antinstaller.selfextract.SelfExtractor;
+
+
+
+/**
+ * This is a launcher for Ant which swallows all messages and logs.
+ *
+ * This file has been modified by Paul Hinds for Antinstaller and is not the same
+ * as the one delivered with Ant 1.6
+ *
+ * @since Ant 1.6
+ * @version $Id$
+ */
+public class RuntimeLauncher {
+
+	public final static String CONTEXT_REFERENCE = "antinstaller.internal.context";
+
+	private final Map allProperties = new HashMap();
+	private final Project project = new Project();
+	private InstallerContext ctx;
+
+	public RuntimeLauncher(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void updateProps(){
+		allProperties.clear();
+		allProperties.putAll(InstallerContext.getEnvironment());
+		allProperties.putAll(ctx.getInstaller().getResultContainer().getAllProperties());
+		// add properties
+		String arg;
+		String value;
+		Iterator iter = allProperties.keySet().iterator();
+		while (iter.hasNext()) {
+			arg = (String) iter.next();
+			value = (String) allProperties.get(arg);
+			project.setUserProperty(arg, value);
+		}
+	}
+
+	public void parseProject(){
+		project.setCoreLoader(this.getClass().getClassLoader());
+		//project.addBuildListener(this);
+        project.init();
+
+		ProjectHelper helper = new ProjectHelper3();
+		project.addReference("ant.projectHelper", helper);
+		
+		//SelfExtractor requirements
+		if(SelfExtractor.CONFIG_RESOURCE == ctx.getConfigResource()){
+			File buildXml = new File(ctx.getFileRoot(), ctx.getAntBuildFile());
+			if(!buildXml.exists()){
+				ctx.log("No build file found??: " + buildXml);
+			}
+			helper.parse(project, buildXml);
+			project.setUserProperty("ant.file", buildXml.getAbsolutePath());
+		}
+
+		//NonExtractor requirements
+		if(NonExtractor.CONFIG_RESOURCE == ctx.getConfigResource()){
+			URL buildIS = this.getClass().getResource("/" + ctx.getAntBuildFile());
+			helper.parse(project, buildIS);
+			project.setUserProperty("ant.file", buildIS.toExternalForm());
+			try {
+				File enclosingJar = SelfExtractor.getEnclosingJar(this);
+				project.setUserProperty(NonExtractor.ANTINSTALLER_JAR_PROPERTY, enclosingJar.getAbsolutePath());
+			} catch (RuntimeException e) {
+				ctx.log("No enclosing jar found");
+			}
+		}
+		
+		//Scripted install requirements
+		if(ExecInstall.CONFIG_RESOURCE == ctx.getConfigResource()){
+			File buildXml = new File(ctx.getFileRoot(), ctx.getAntBuildFile());
+			helper.parse(project, buildXml);
+			if(!buildXml.exists()){
+				ctx.log("No build file found??: " + buildXml);
+			}
+			project.setUserProperty("ant.file", buildXml.getAbsolutePath());
+		}
+		
+		project.setBaseDir(ctx.getFileRoot());
+		
+		// clever stuff for callbacks
+		project.addReference(CONTEXT_REFERENCE, ctx);
+		project.addTaskDefinition("antinstaller-property", PropertyTask.class);
+		project.addTaskDefinition("antinstaller-message", MessageTask.class);
+		project.addTaskDefinition("antinstaller-log", LogTask.class);
+
+	}
+    /**
+	 * Run the launcher to launch Ant with a specific target, there is no classpath
+	 * additions set or ant.home; everything should be loaded for this to run correctly.
+	 *
+	 * @param args the command line arguments
+	 */
+	public int run(String target){
+        try {
+			ctx.getLogger().log("internal target execution started:" + target);
+        	project.fireBuildStarted();
+        	project.executeTarget(target);
+			project.fireBuildFinished(null);
+			ctx.getLogger().log("internal target execution successful:" + target);
+			return 0;
+		}
+		catch (Throwable t) {
+			ctx.getLogger().log("internal target execution error:" + target);
+            ctx.getLogger().log(ctx.getInstaller(), t);
+			return 1;
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/package.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/package.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/package.html	(revision 18906)
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--
+  Copyright (c) 2004 tp23
+  All Rights Reserved.
+--></head>
+
+<body bgcolor="white">Contains modifications of Apache Ant code.</body>
+</html>
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/GetResourceTask.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/GetResourceTask.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/GetResourceTask.java	(revision 18906)
@@ -0,0 +1,73 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.antmod.taskdefs;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.tp23.antinstaller.selfextract.ResourceExtractor;
+/**
+ * Extracts a resource from the classpath into the filesystem
+ * @author teknopaul
+ *
+ */
+public class GetResourceTask extends Task{
+
+	String resource;
+	String dest;
+	String regex;
+	String replace;
+	
+	public void execute() throws BuildException{
+		try {
+			ResourceExtractor re = new ResourceExtractor();
+			if(regex != null){
+				re.copyResource(resource, new File(dest), regex, replace);
+			}
+			else{
+				re.copyResourceBinary(resource, new File(dest));
+			}
+		} catch (IOException e) {
+			throw new BuildException(e.getMessage());
+		}
+	}
+	public String getDest() {
+		return dest;
+	}
+	public void setDest(String file) {
+		this.dest = file;
+	}
+	public String getResource() {
+		return resource;
+	}
+	public void setResource(String resource) {
+		this.resource = resource;
+	}
+	public String getReplace() {
+		return replace;
+	}
+	public void setReplace(String replace) {
+		this.replace = replace;
+	}
+	public String getRegex() {
+		return regex;
+	}
+	public void setRegex(String token) {
+		this.regex = token;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/LogTask.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/LogTask.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/LogTask.java	(revision 18906)
@@ -0,0 +1,54 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.antmod.taskdefs;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.antmod.RuntimeLauncher;
+/**
+ * usage: 
+ * &lt;antinstaller-log message="log message"/&gt;
+ * @author teknopaul
+ *
+ */
+public class LogTask extends Task {
+	
+	private String message;
+	/**
+	 * Ant Tasks must have a noargs constructor
+	 */
+	public LogTask(){
+	}
+
+	/**
+	 * the "main" method
+	 */
+    public void execute() throws BuildException {
+    	InstallerContext ctx = (InstallerContext)getProject().getReference(RuntimeLauncher.CONTEXT_REFERENCE);
+    	ctx.log(message);
+    }
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/MessageTask.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/MessageTask.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/MessageTask.java	(revision 18906)
@@ -0,0 +1,54 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.antmod.taskdefs;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.antmod.RuntimeLauncher;
+/**
+ * usage: 
+ * &lt;antinstaller-message message="output"/&gt;
+ * @author teknopaul
+ *
+ */
+public class MessageTask extends Task {
+	
+	private String message;
+	/**
+	 * Ant Tasks must have a noargs constructor
+	 */
+	public MessageTask(){
+	}
+
+	/**
+	 * the "main" method
+	 */
+    public void execute() throws BuildException {
+    	InstallerContext ctx = (InstallerContext)getProject().getReference(RuntimeLauncher.CONTEXT_REFERENCE);
+    	ctx.getMessageRenderer().printMessage(message);
+    }
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/PropertyTask.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/PropertyTask.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/antmod/taskdefs/PropertyTask.java	(revision 18906)
@@ -0,0 +1,114 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.antmod.taskdefs;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.antmod.RuntimeLauncher;
+/**
+ * usage: 
+ * &lt;antinstaller-property name="property.name" value="myValue"/&gt;
+ * <br />
+ * or: 
+ * &lt;antinstaller-property resource="/resources/my.props"/&gt;
+ * @author teknopaul
+ *
+ */
+public final class PropertyTask extends Task {
+	
+	private String name;
+	private String value;
+    private String resource;
+	/**
+	 * Ant Tasks must have a noargs constructor
+	 */
+	public PropertyTask(){
+	}
+
+	/**
+	 * the "main" method
+	 */
+    public void execute() throws BuildException {
+        if(resource != null){
+            executeResource();
+        }
+        else {
+            if(name == null || value == null) {
+                throw new BuildException("either resource or (name and value) can not be null for antinstaller-property task");
+            }
+            executePropVal();
+        }
+    }
+    
+    private void executePropVal(){
+        InstallerContext ctx = (InstallerContext)getProject().getReference(RuntimeLauncher.CONTEXT_REFERENCE);
+        ctx.log("setting property: name=" + name + ", value=" + value);
+        ctx.getInstaller().getResultContainer().setProperty(name, value);
+    }
+    
+    // FindBugs - this class should stay final since getResourceAsStream() may not work in subclasses
+    private void executeResource() throws BuildException{
+        InstallerContext ctx = (InstallerContext)getProject().getReference(RuntimeLauncher.CONTEXT_REFERENCE);
+        InputStream is = this.getClass().getResourceAsStream(resource);
+        if(is == null){
+            ctx.log("Can not find resource: " + resource);
+            throw new BuildException("Can not find resource: " + resource);
+        }
+        try {
+            Properties props = new Properties();
+            props.load(is);
+            is.close();
+            if(ctx.getInstaller().isVerbose()){
+                ctx.log("loaded properties: " + props.size());
+            }
+            
+            ctx.getInstaller().getResultContainer().getAllProperties().putAll(props);
+        } catch (IOException e) {
+            ctx.log("Can not load resource: " + resource);
+            throw new BuildException("Can not load resource: " + resource);
+        }
+    }
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getValue() {
+		return value;
+	}
+
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+    public String getResource() {
+        return resource;
+    }
+
+    public void setResource(String resource) {
+        this.resource = resource;
+    }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/AppRootInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/AppRootInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/AppRootInput.java	(revision 18906)
@@ -0,0 +1,159 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import java.io.File;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+
+/**
+ *
+ * <p>Input type to select a directory and validate it by checking the existence of
+ * files relative to the directory selected.  An Expected use for this is to find the
+ * Application root of an exiting app on the clients machine.  for example to find
+ * Tomcat, ask the user to select the tomcat root and check the existence of ./conf/tomcat-users.xml
+ * and ./webapps </p>
+ * @author Paul Hinds
+ * @version $Id: AppRootInput.java,v 1.2 2005/10/23 14:39:20 teknopaul Exp $
+ */
+public class AppRootInput
+	extends DirectoryInput {
+
+    private String checkFile1;
+    private String checkFile2;
+	private String checkDir1;
+	private String checkDir2;
+
+	public AppRootInput() {
+	}
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		if (getInputResult() == null)return false;
+		MessageRenderer mr = cxt.getMessageRenderer();
+		String directorySelected = getInputResult();
+		File file = new File(directorySelected);
+		// removed in response to BUG:1303230
+//		if(!file.exists()){
+//			if(mr.prompt(res.getString("dirNotExistCreate"))){
+//				boolean ok = file.mkdirs();
+//				if(!ok)mr.printMessage(res.getString("dirNotCreated"));
+//			}
+//		}
+		if(!file.isDirectory()){
+			mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("dirNotExist")+":"+file.getAbsolutePath());
+			return false;
+		}
+		else if(checkFile1!=null && ! checkExists(mr,file,checkFile1)){
+			return false ;
+		}
+		else if(checkFile2!=null && ! checkExists(mr,file,checkFile2)){
+			return false ;
+		}
+		else if(checkDir1!=null && ! checkExists(mr,file,checkDir1)){
+			return false ;
+		}
+		else if(checkDir2!=null && ! checkExists(mr,file,checkDir2)){
+			return false ;
+		}
+		return true;
+	}
+
+	private boolean checkExists(MessageRenderer mr,File root,String check){
+		File checkFile = new File(root,checkFile1);
+		if(!checkFile.exists()){
+			reportMissing(mr,checkFile);
+			return false;
+		}
+		return true;
+	}
+
+	private void reportMissing(MessageRenderer mr,File missing){
+		StringBuffer message = new StringBuffer();
+		message.append(org.tp23.antinstaller.Installer.langPack.getString("appRootInvalid"));
+		message.append(System.getProperty("line.separator"));
+		if(missing.isDirectory()){
+			message.append(org.tp23.antinstaller.Installer.langPack.getString("dirNotExist"));
+		}
+		else{
+			message.append(org.tp23.antinstaller.Installer.langPack.getString("fileNotExist"));
+		}
+		message.append(":");
+		message.append(missing.getAbsolutePath());
+		mr.printMessage(message.toString());
+	}
+
+
+
+	public String getCheckDir1() {
+		return checkDir1;
+	}
+
+	public String getCheckDir2() {
+		return checkDir2;
+	}
+
+	public String getCheckFile1() {
+		return checkFile1;
+	}
+
+	public String getCheckFile2() {
+		return checkFile2;
+	}
+
+	public void setCheckFile2(String checkFile2) {
+		this.checkFile2 = checkFile2;
+	}
+
+	public void setCheckFile1(String checkFile1) {
+		this.checkFile1 = checkFile1;
+	}
+
+	public void setCheckDir2(String checkDir2) {
+		this.checkDir2 = checkDir2;
+	}
+
+	public void setCheckDir1(String checkDir1) {
+		this.checkDir1 = checkDir1;
+	}
+	
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText()==null){
+			System.out.println("AppRoot:displayText must be set");
+			return false;
+		}
+		if(getProperty()==null){
+			System.out.println("AppRoot:property must be set");
+			return false;
+		}
+		if(getDefaultValue()==null){
+			System.out.println("AppRoot:defaultValue must be set");
+			return false;
+		}
+		return true;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/CheckboxInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/CheckboxInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/CheckboxInput.java	(revision 18906)
@@ -0,0 +1,86 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+
+/**
+ *
+ * <p>Input type for boolean choices represented as a checkbox in swing and a yes/no option
+ * on the command line </p>
+ * @author Paul Hinds
+ * @version $Id: CheckboxInput.java,v 1.3 2006/12/07 02:42:22 teknopaul Exp $
+ */
+public class CheckboxInput
+	extends InputField{
+
+
+	private String force;
+
+	public CheckboxInput() {
+	}
+
+	public String getForce() {
+		return force;
+	}
+
+	public void setForce(String force) {
+		this.force = force;
+	}
+
+	public void setValue(String trueOrFalse){
+			setInputResult(trueOrFalse);
+	}
+	/**
+	 * Called to validate the user input
+	 * @TODO should validate against non internationalized true or false flags 
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		return true;
+	}
+
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getProperty()==null){
+			System.out.println("Checkbox:property must be set");
+			return false;
+		}
+		if(getDisplayText()==null){
+			System.out.println("Checkbox:displayText must be set");
+			return false;
+		}
+		if(!InputField.requiredBoolean(getDefaultValue())){
+			System.out.println("Checkbox:defaultValue must be true or false");
+			return false;
+		}
+		if(!InputField.optionalBoolean(getForce())){
+			System.out.println("Checkbox:defaultValue must be true or false or null");
+			return false;
+		}
+		return true;
+	}
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/CommentOutput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/CommentOutput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/CommentOutput.java	(revision 18906)
@@ -0,0 +1,97 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+
+/**
+ *
+ * <p>This "Input type" is strictly for Output! Unlike all the other
+ * concrete classes in this package CommentOutputs refer to text
+ * that will be printed but nothing will be collected from
+ * the user.</p>
+ * The text outputted in Comments will have property values resolved
+ * if they are in the format ${property.name}
+ * @author Paul Hinds
+ * @version $Id: CommentOutput.java,v 1.2 2006/03/24 18:25:58 teknopaul Exp $
+ */
+public class CommentOutput
+	extends OutputField {
+
+	private String bold;
+	private String title;
+
+	public CommentOutput() {
+	}
+
+	public String getBold() {
+		return bold;
+	}
+
+	public void setBold(String bold) {
+		this.bold = bold;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+	
+	public String getDisplayText() {
+		return 	resultContainer.getDefaultValue(super.getDisplayText()) ;
+	}
+
+	public String getExplanatoryText() {
+		return resultContainer.getDefaultValue(super.getExplanatoryText());
+	}
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		return true;
+	}
+	
+	
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+//  null accepted now if only using explanatory text		
+//		if(getDisplayText() == null){
+//			System.out.println("Comment:displayText must be set");
+//			return false;
+//		}
+		if(!InputField.optionalBoolean(getBold())){
+			System.out.println("Comment:bold must be true or false or null:" + getBold());
+			return false;
+		}
+		if(!InputField.optionalBoolean(getTitle())){
+			System.out.println("Comment:title must be true or false or null:" + getTitle());
+			return false;
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ConditionalField.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ConditionalField.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ConditionalField.java	(revision 18906)
@@ -0,0 +1,119 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.input;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+import org.tp23.antinstaller.runtime.logic.Expression;
+import org.tp23.antinstaller.runtime.logic.ExpressionBuilder;
+
+/**
+ * Container for other <code>OutputField</code> members that will be
+ * conditionally updated. Typical use is with <code>&lt;hidden&gt;</code>
+ * to conditionally set property values.
+ *
+ * @author mwilson
+ * @version $Id
+ * @since 0.7.4 patch 7
+ */
+public class ConditionalField extends InputField {
+    
+    private String ifProperty;
+    private Expression expression;
+    private InputField[] fields;
+
+    public void setIfProperty(final String expressionStr) {
+        this.ifProperty = expressionStr;
+    }
+
+    public String getIfProperty() {
+        return ifProperty;
+    }
+
+    public InputField[] getFields() {
+        return fields;
+    }
+
+    public void setFields(InputField[] fields) {
+        this.fields = fields;
+    }
+
+    /**
+     * Runtime validation of user input
+     *
+     * @param context Installer context
+     * @return <code>true</code> if user input is valid, otherwise <code>false</code>
+     * @throws ValidationException
+     */
+    public boolean validate(InstallerContext context)
+            throws ValidationException {
+        try {
+            getExpression();
+            if ((fields != null) && (fields.length > 0)) {
+                int i = 0;
+                for (; (i < fields.length) && (fields[i].validate(context)); i++) {
+                }
+
+                if (i == fields.length) {
+                    return true;
+                }
+            }
+        } catch (ConfigurationException configExc) {
+            if(context.getInstaller().isVerbose()) {
+                context.log(configExc);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Build-time validation of installer configuration file
+     *
+     * @return <code>true</code> if configuration is ok, otherwise <code>false</code>
+     */
+    public boolean validateObject() {
+        try {
+            getExpression();
+            if ((fields != null) && (fields.length > 0)) {
+                int i = 0;
+                for (; (i < fields.length) && (fields[i].validateObject()); i++) {
+                }
+
+                if (i == fields.length) {
+                    return true;
+                }
+
+                System.out.println("Invalid field:" + fields[i]);
+            }
+        } catch (ConfigurationException configExc) {
+            System.out.println("Invalid conditional expression: " + configExc);
+        }
+        return false;
+    }
+
+    /**
+     * Get the conditional expression in preparation for evaluation
+     *
+     * @throws ConfigurationException if the expression is invalid
+     */
+    public Expression getExpression() throws ConfigurationException {
+        if (expression == null) {
+            expression = ExpressionBuilder.parseLogicalExpressions(resultContainer, ifProperty);
+        }
+
+        return expression;
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ConfirmPasswordTextInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ConfirmPasswordTextInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ConfirmPasswordTextInput.java	(revision 18906)
@@ -0,0 +1,70 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+/**
+ * a second password filed that checks to see if a password entered twice matches
+ * @author Paul Hinds
+ * @version $Id$
+ */
+public class ConfirmPasswordTextInput
+	extends PasswordTextInput
+{
+	private String origField;
+
+	/**
+	 * Called to validate the user input, if the confirm flag is set
+	 * and there is a password field on the same page with the same property name
+	 * both passwords must match for validation to pass
+	 */
+	public boolean validate(InstallerContext ctx) throws ValidationException{
+		OutputField[] otherFields = ctx.getCurrentPage().getOutputField();
+		for (int i = 0; i < otherFields.length; i++) {
+			if(otherFields[i] instanceof PasswordTextInput &&
+					otherFields[i] != this){
+				PasswordTextInput pwd = (PasswordTextInput)otherFields[i];
+				if(pwd.getProperty().equals(getOrigField())){
+					return this.getInputResult().equals(pwd.getInputResult());
+				}
+			}
+		}
+		throw new ValidationException("Confirm password requires a PasswordTextInput, on the same page, with  property " + getOrigField());
+	}
+
+	public boolean validateObject() {
+		if ( ! super.validateObject()){
+			return false;
+		}
+		if(getOrigField() == null){
+			System.out.println("ConfirmPassword:origField must be set");
+			return false;
+		}
+		// @TODO check the orig field exists
+		return true;
+	}
+	
+	public String getOrigField() {
+		return origField;
+	}
+
+	public void setOrigField(String origField) {
+		this.origField = origField;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/DateInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/DateInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/DateInput.java	(revision 18906)
@@ -0,0 +1,107 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+/**
+ *
+ * <p>Free text input type with validation a SimpleDataFormat instance. </p>
+ * <p>By default the date format is <code>dd/MM/yyyy</code> unless it
+ * is overriden in teh antinstall-config.xml file. </p>
+ * @author Paul Hinds
+ * @version $Id: DateInput.java,v 1.1.1.1 2005/10/18 18:20:54 teknopaul Exp $
+ */
+public class DateInput
+	extends InputField{
+
+    private String dateFormat = "dd/MM/yyyy";
+	private DateFormat formatter = new SimpleDateFormat(dateFormat);
+
+	public DateInput() {
+		formatter.setLenient(false);
+	}
+
+	public String getDateFormat() {
+		return dateFormat;
+	}
+	public void setDateFormat(String dateFormat) {
+		try {
+			formatter = new SimpleDateFormat(dateFormat);
+			formatter.setLenient(false);
+			this.dateFormat = dateFormat;
+		}
+		catch (RuntimeException e) {
+			throw new InputException("Invalid date format in DateInput");
+		}
+	}
+
+	public void setValue(String dir){
+		setInputResult(dir);
+	}
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		if (getInputResult() == null)return false;
+		String toTest = getInputResult();
+		try {
+			formatter.parse(toTest);
+		}
+		catch (ParseException ex) {
+			return false;
+		}
+		return true;
+	}
+
+	public void setDefaultValue(String defaultValue) {
+		if(defaultValue.equals("TODAY")){
+			this.defaultValue = formatter.format(new Date());
+		} else {
+			this.defaultValue = defaultValue;
+		}
+	}
+	
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText()==null){
+			System.out.println("Date:displayText must be set");
+			return false;
+		}
+		if(getProperty()==null){
+			System.out.println("Date:property must be set");
+			return false;
+		}
+		if(getDefaultValue()==null){
+			System.out.println("Date:defaultValue must be set");
+			return false;
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/DirectoryInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/DirectoryInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/DirectoryInput.java	(revision 18906)
@@ -0,0 +1,189 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import java.io.File;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+
+/**
+ * <p>Input type to select a directory </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: DirectoryInput.java,v 1.5 2007/01/28 10:25:48 teknopaul Exp $
+ */
+
+public class DirectoryInput extends OSSpecific {
+
+	private boolean abort = false;
+    private String create;
+    private String checkExists;
+
+	//to detect previous installations
+	private String flagFile;
+	private String flagFileExistsProperty;
+
+	public DirectoryInput() {
+	}
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		if (getInputResult() == null)return false;
+		MessageRenderer mr = cxt.getMessageRenderer();
+        String selectedName = getInputResult();
+        // handle no directory option
+        if( "".equals(selectedName) ){
+            if( InputField.isTrue(create) || InputField.isTrue(checkExists) ){
+                mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("dirNotExist"));
+                return false;
+            }
+            else {
+                return true;
+            }
+        } 
+		File file = new File(selectedName);
+		if(InputField.isTrue(create)){
+			if(!file.exists()){
+				try {
+					if(mr.prompt(org.tp23.antinstaller.Installer.langPack.getString("dirNotExistCreate") + "\n" + file.getAbsolutePath())){
+						boolean ok = file.mkdirs();
+						if(!ok){
+							mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("dirNotCreated"));
+							return false;
+						}
+					} else {
+						//make them stay on the page until they manage to select an existent folder
+						return false;
+					}
+				}
+				catch (Exception ex) {
+					mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("canNotCreateFile") + "\n" + file.getAbsolutePath());
+                    //FIXME should not throw here, should do something better so users on linux can chmod where necessary
+                    // then try again
+					throw new ValidationException(org.tp23.antinstaller.Installer.langPack.getString("canNotCreateFile"),ex);
+					
+				}
+			}
+		}
+		if(InputField.isTrue(checkExists)){
+//			if( ( !file.exists() || !file.isDirectory() ) && triedToCreate){
+//				//TODO add some usefull text here to explain that we can not continue
+//			}
+			if(!file.exists() || !file.isDirectory()){
+				mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("dirNotExist") + "\n" + file.getAbsolutePath());
+				return false;
+			}
+		}
+		return true;
+	}
+
+	public boolean isAbort() {
+		return abort;
+	}
+
+	public void setAbort(boolean abort) {
+		this.abort = abort;
+	}
+
+    public String getCreate() {
+		return create;
+    }
+    public void setCreate(String create) {
+		this.create = create;
+    }
+	public void setValue(String dir){
+		setInputResult(dir);
+	}
+
+	public String getCheckExists() {
+		return checkExists;
+	}
+
+	public void setCheckExists(String checkExists) {
+		this.checkExists = checkExists;
+	}
+
+	public String getFlagFile() {
+		return flagFile;
+	}
+
+	public void setFlagFile(String flagFile) {
+		this.flagFile = flagFile;
+	}
+
+    public String getFlagFileExistsProperty() {
+    	return flagFileExistsProperty;
+    }
+
+    public void setFlagFileExistsProperty( String flagFileExistsProperty ) {
+    	this.flagFileExistsProperty = flagFileExistsProperty;
+    }
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText() == null){
+			System.out.println("Directory:displayText must be set");
+			return false;
+		}
+		if(getProperty() == null){
+			System.out.println("Directory:property must be set");
+			return false;
+		}
+		if(getDefaultValue() == null){
+			System.out.println("Directory:defaultValue must be set");
+			return false;
+		}
+        if(getDefaultValue().equals("")){
+            if( isTrue(getCreate()) || isTrue(getCheckExists()) ) {
+                System.out.println("Directory:defaultValue must be set if checkExists or create are true");
+                return false;
+            }
+        }
+		if(!InputField.optionalBoolean(getCreate())){
+			System.out.println("Directory:create must be true or false or null");
+			return false;
+		}
+		if(!InputField.optionalBoolean(getCheckExists())){
+			System.out.println("Directory:checkExists must be true or false or null");
+			return false;
+		}
+		return true;
+	}
+
+	public void setInputResult(String inputResult) {
+		resultContainer.setProperty(getProperty(), inputResult);
+
+		if ( flagFile != null ) {
+			File ff = new File( inputResult + File.separator + flagFile );
+			Boolean ffExists = new Boolean(ff.exists());
+			resultContainer.setProperty( flagFileExistsProperty, ffExists.toString() );
+		}
+	
+	}
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ExtValidatedTextInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ExtValidatedTextInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ExtValidatedTextInput.java	(revision 18906)
@@ -0,0 +1,108 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+/**
+ *
+ * <p>Free text input type with validation using a custon supplied class.</p>
+ * This enable very coplext validation, for example, a class could be written
+ * to validate a port number enterd by a user that tries to open a socket
+ * on the port and returns false to the validate method if the socket is in use. 
+ * @author Paul Hinds
+ * @version $Id: ExtValidatedTextInput.java,v 1.2 2007/01/09 22:41:41 teknopaul Exp $
+ */
+public class ExtValidatedTextInput
+	extends ValidatedTextInput{
+
+    private String validationClass;
+    private Validator validator;
+    private Throwable throwable ;
+
+	public ExtValidatedTextInput() {
+	}
+
+	public void setValue(String dir){
+		setInputResult(dir);
+	}
+    public String getValidationClass() {
+		return validationClass;
+    }
+    public void setValidationClass(String validationClass) {
+		this.validationClass = validationClass;
+		try {
+			validator = (Validator)Class.forName(validationClass).newInstance();
+		}
+		catch (Exception ex) {
+			throw new InputException("Invalid Class in ExtValidated text input");
+		}
+    }
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext ctx) throws ValidationException{
+		String result = getInputResult();
+		try{
+			validator.validate(result,ctx);
+			throwable = null;
+			return true;
+		}
+		catch(Throwable t){
+			throwable = t;
+			return false;
+		}
+		
+	}
+	/**
+	 * @return Returns the validator.
+	 */
+	public Validator getValidator() {
+		return validator;
+	}
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText() == null){
+			System.out.println("ExtValidated:displayText must be set");
+			return false;
+		}
+		if(getProperty() == null){
+			System.out.println("ExtValidated:property must be set");
+			return false;
+		}
+		if(getValidationClass() == null){
+			System.out.println("ExtValidated:validationClass must be set");
+			return false;
+		}
+		return true;
+	}
+	/**
+	 * @return Returns the throwable.
+	 */
+	public Throwable getThrowable() {
+		return throwable;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/FileInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/FileInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/FileInput.java	(revision 18906)
@@ -0,0 +1,100 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import java.io.File;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+/**
+ *
+ * <p>Input type to select a directory </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: FileInput.java,v 1.2 2007/01/28 10:25:48 teknopaul Exp $
+ */
+public class FileInput
+	extends OSSpecific{
+
+	private boolean abort = false;
+    private String checkExists;
+
+	public FileInput() {
+	}
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext ctx) throws ValidationException{
+		if (getInputResult() == null) { // this does not happen
+            return false;
+        }
+		if(InputField.isTrue(checkExists)){
+            File file = new File(getInputResult());
+			if(!file.exists()){
+				return false;
+			}
+		}
+		return true;
+	}
+
+	public boolean isAbort() {
+		return abort;
+	}
+
+	public void setAbort(boolean abort) {
+		this.abort = abort;
+	}
+
+	public String getCheckExists() {
+		return checkExists;
+	}
+	public void setCheckExists(String checkExists) {
+		this.checkExists = checkExists;
+	}
+	public void setValue(String dir){
+		setInputResult(dir);
+	}
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText()==null){
+			System.out.println("File:displayText must be set");
+			return false;
+		}
+		if(getProperty()==null){
+			System.out.println("File:property must be set");
+			return false;
+		}
+		if(getDefaultValue()==null){
+			System.out.println("File:defaultValue must be set");
+			return false;
+		}
+		if(!InputField.optionalBoolean(getCheckExists())){
+			System.out.println("File:checkExists must be true or false or null");
+			return false;
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/HiddenPropertyInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/HiddenPropertyInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/HiddenPropertyInput.java	(revision 18906)
@@ -0,0 +1,67 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+/**
+ * @author mwilson
+ * @version $Id
+ * @since 0.7.4 patch 6
+ */
+public class HiddenPropertyInput extends InputField
+{
+
+    public HiddenPropertyInput()
+    {
+    }
+
+    public void setValue( String propValue )
+    {
+        //Use default value to allow updates when page re-displayed
+        setDefaultValue( propValue );
+    }
+
+    /**
+     * Called to validate the non-existent user input
+     */
+    public boolean validate( InstallerContext cxt ) throws ValidationException
+    {
+        return true;
+    }
+
+    /**
+     * Used by checkConfig to validate the configuration file.
+     * Not used at runtime.
+     *
+     * @return boolean
+     */
+    public boolean validateObject()
+    {
+
+        final String typeName = "hidden";
+        if( getProperty() == null )
+        {
+            System.out.println( typeName + ": property must be set" );
+            return false;
+        }
+        if( getDefaultValue() == null )
+        {
+            System.out.println( typeName + ": value must be set" );
+            return false;
+        }
+        return true;
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/InputException.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/InputException.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/InputException.java	(revision 18906)
@@ -0,0 +1,12 @@
+package org.tp23.antinstaller.input;
+
+
+/**
+ * @author Paul Hinds
+ * @version $Id: InputException.java,v 1.1.1.1 2005/10/18 18:20:55 teknopaul Exp $
+ */
+public class InputException extends RuntimeException {
+	public InputException(String message){
+		super(message);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/InputField.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/InputField.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/InputField.java	(revision 18906)
@@ -0,0 +1,102 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import org.tp23.antinstaller.Installer;
+
+/**
+ *
+ * <p>Object representation of an inputField XML Element </p>
+ * <p>Also used to hold data of the results of the installer questions </p>
+ * @author Paul Hinds
+ * @version $Id: InputField.java,v 1.4 2006/12/07 02:50:27 teknopaul Exp $
+ */
+public abstract class InputField
+	extends OutputField {
+
+	private String property;
+	protected String defaultValue;
+
+	/**
+	 * Flag to indicate that the user has already editted this field
+	 */
+	private boolean editted = false;
+	private Installer i = new Installer();
+
+	public InputField() {
+	}
+
+	public String getDisplayText() {
+		if( org.tp23.antinstaller.Installer.langPack != null){
+			try {
+				String r = org.tp23.antinstaller.Installer.langPack.getString(getProperty().replaceAll(" ","_") + ".displayText");
+				return r;
+			} catch (MissingResourceException e) {}
+		}
+		return displayText;
+	}
+	public String getExplanatoryText() {
+		if( org.tp23.antinstaller.Installer.langPack != null ) {
+			try {
+				return org.tp23.antinstaller.Installer.langPack.getString(getProperty().replaceAll(" ","_") + ".explanatoryText");
+			} catch (MissingResourceException e) {
+				// ignore and return null explanatoryText is optional
+			}
+		}
+		return explanatoryText;
+	}
+
+	/**
+	 * Returns the input result if there is one and if this is a PropertyField
+	 * @return String
+	 */
+	public String getInputResult() {
+		return resultContainer.getProperty(property);
+	}
+
+	public void setInputResult(String inputResult) {
+		resultContainer.setProperty(property, inputResult);
+	}
+	public boolean isEditted() {
+		return editted;
+	}
+	public void setEditted(boolean editted) {
+		this.editted = editted;
+	}
+	public void setResultContainer(ResultContainer resultContainer) {
+		this.resultContainer = resultContainer;
+	}
+
+	public String getProperty() {
+		return property;
+	}
+
+	public void setProperty(String property) {
+		this.property = property;
+	}
+
+	public String getDefaultValue() {
+		return resultContainer.getDefaultValue(defaultValue);
+	}
+
+	public void setDefaultValue(String defaultValue) {
+		this.defaultValue = defaultValue;
+	}
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/LargeSelectInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/LargeSelectInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/LargeSelectInput.java	(revision 18906)
@@ -0,0 +1,142 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+
+/**
+ *
+ * <p>Input type to choose a single value from a (numbered) list of options </p>
+ * <p>This input is designed to handle larger lists of options </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: LargeSelectInput.java,v 1.3 2006/12/07 02:50:27 teknopaul Exp $
+ */
+public class LargeSelectInput
+	extends InputField{
+
+	private int optionIdx = 0;
+
+	private LargeSelectInput.Option[] options;
+
+	public LargeSelectInput() {
+	}
+
+
+	public LargeSelectInput.Option[] getOptions() {
+		return options;
+	}
+
+	public void setOptions(LargeSelectInput.Option[] options) {
+		this.options = options;
+	}
+	public Option getNewOption(){
+		return new Option();
+	}
+	
+	public class Option {
+
+		private int idx = ++optionIdx;
+		private String text;
+		public String value;
+		public void setText(String text) {
+			this.text = text;
+		}
+		public String getText() {
+			if( org.tp23.antinstaller.Installer.langPack != null ) {
+				return org.tp23.antinstaller.Installer.langPack.getString(getProperty() + "." + idx +".displayText");
+			}
+			return text;
+		}
+	}
+	
+	public void setValue(String dir){
+		setInputResult(dir);
+	}
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		if(getInputResult()==null)return false;
+		String value = getInputResult();
+		boolean ok = false;
+		for (int i = 0; i < options.length; i++) {
+			ok |= options[i].value.equals(value);
+		}
+		return ok;
+	}
+
+
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText()==null){
+			System.out.println("LargeSelect:displayText must be set");
+			return false;
+		}
+		if(getProperty()==null){
+			System.out.println("LargeSelect:property must be set");
+			return false;
+		}
+		if(getDefaultValue()==null){
+			System.out.println("LargeSelect:defaultValue must be set");
+			return false;
+		}
+		if(getOptions()==null){
+			System.out.println("LargeSelect:option must have at least two options");
+			return false;
+		}
+		if(getOptions().length<2){
+			System.out.println("LargeSelect:option must have at least two options");
+			return false;
+		}
+		for (int i = 0; i < getOptions().length; i++) {
+			Option o = getOptions()[i];
+			if(o.getText()==null){
+				System.out.println("LargeSelect:option:text must be set");
+				return false;
+			}
+			if(o.value==null){
+				System.out.println("LargeSelect:option:value must be set");
+				return false;
+			}
+		}
+		boolean defaultExists = false;
+		for (int i = 0; i < getOptions().length; i++) {
+			Option o = getOptions()[i];
+			if(o.value.equals(getDefaultValue())){
+				defaultExists=true;
+			}
+		}
+		if(!defaultExists){
+			System.out.println("LargeSelect:option:Default must be one of the options");
+			return false;
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/OSSpecific.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/OSSpecific.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/OSSpecific.java	(revision 18906)
@@ -0,0 +1,49 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import org.tp23.antinstaller.InstallerContext;
+/**
+ * Operating System Specific input fields have different default values for Unix and Windoze
+ * TODO something more with defaults for optionally supporting more OSs
+ */
+public abstract class OSSpecific extends InputField {
+
+	private String defaultValueWin;
+
+	public String getDefaultValue(boolean correctForOS) {
+		if(InstallerContext.isUnix() || defaultValueWin == null){
+            if("".equals(defaultValue)){
+                return "";
+            }
+			return resultContainer.getDefaultFileRef(defaultValue);
+		}
+		else {
+            if("".equals(defaultValueWin)){
+                return "";
+            }
+            return resultContainer.getDefaultFileRef(defaultValueWin);
+        }
+	}
+
+	public String getDefaultValueWin() {
+		return defaultValueWin;
+	}
+
+	public void setDefaultValueWin(String defaultValueWin) {
+		this.defaultValueWin = defaultValueWin;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/OutputField.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/OutputField.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/OutputField.java	(revision 18906)
@@ -0,0 +1,137 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+/**
+ * This is the super class of all "Input types".  It is called OutputField since
+ * it handles the base features of "Input types" for outputing text for
+ * the user to read.  It also encapsulates some convenience methods for
+ * interpreting boolean values from the command line and in configuration files.
+ */
+public abstract class OutputField {
+
+	private static int commentIdx = 0;
+	
+	/* This is redundant unless language packs are used
+	 */
+	private String name = "comment." + ++commentIdx;
+	
+	protected String displayText;
+	protected String explanatoryText;
+	protected ResultContainer resultContainer;
+	
+	public OutputField() {
+		
+	}
+
+	/* This is redundant unless language packs are used
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/* This is redundant unless language packs are used
+	 */
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getDisplayText() {
+		if( org.tp23.antinstaller.Installer.langPack != null ) {
+			return org.tp23.antinstaller.Installer.langPack.getString(getName() + ".displayText");
+		}
+		return displayText;
+	}
+
+	public void setDisplayText(String displayText) {
+		this.displayText = displayText;
+	}
+
+	public String getExplanatoryText() {
+		if( org.tp23.antinstaller.Installer.langPack != null ) {
+			try {
+				return org.tp23.antinstaller.Installer.langPack.getString(getName() + ".explanatoryText");
+			} catch (MissingResourceException e) {
+				// ignore and return null explanatoryText is optional
+			}
+		}
+		return explanatoryText;
+	}
+
+	public void setExplanatoryText(String explanatoryText) {
+		this.explanatoryText = explanatoryText;
+	}
+
+	public void setResultContainer(ResultContainer resultContainer) {
+		this.resultContainer = resultContainer;
+	}
+
+	/**
+	 * Validate the user input (or lack of it)
+	 * This method should return false if the validation fails an throw an exception
+	 * if it is not possible to validate or there is an error.
+	 *
+	 * @param cxt InstallerContext
+	 * @throws ValidationException thrown in error conditions not validation failure
+	 * @return boolean
+	 */
+	public abstract boolean validate(InstallerContext cxt) throws ValidationException;
+
+	/**
+	 * Used to validate the configuration, this can be run prior to distributing the
+	 * installer to check that the config is valid. Will not be used at runtime.
+	 * @throws ValidationException
+	 * @return boolean
+	 */
+	public abstract boolean validateObject();
+
+	//////////////////////Static convenience methods
+
+	    /** true if specified and true or yes.
+	     *  N.B it is possible for X,  isTrue(X) == isFalse(X); 
+	     *  This occurs if the value is null.
+	     */
+		public static boolean isTrue(String value){
+			if(value == null)return false;
+			return value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes");
+		}
+		/** same as isTrue() but default is false if not specified */
+		public static boolean isFalse(String value){
+			if(value == null)return false;
+			return value.equalsIgnoreCase("false") || value.equalsIgnoreCase("no");
+		}
+		/**
+		 * Return true if the value is set to true or false, returns false if the value is null
+		 * @param value String
+		 * @return boolean
+		 */
+		public static boolean requiredBoolean(String value){
+			return isTrue(value) || isFalse(value);
+		}
+		/**
+		 * Return true if the value is set to true or false, returns false if the value is null
+		 * @param value String
+		 * @return boolean
+		 */
+		public static boolean optionalBoolean(String value){
+			return value == null || isTrue(value) || isFalse(value);
+		}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/PasswordTextInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/PasswordTextInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/PasswordTextInput.java	(revision 18906)
@@ -0,0 +1,75 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+/**
+ *
+ * <p>Free validated text input type that does not echo the value in the GUI.</p>
+ * <p>This class implements SecretPropertyField so the
+ * values are not printed in the properties file.  It is the responsibility of the renderer
+ * not to show the password. Hiding is currently not supported on the console.</p>
+ * @author Paul Hinds
+ * @version $Id: PasswordTextInput.java,v 1.3 2006/12/21 00:03:09 teknopaul Exp $
+ */
+public class PasswordTextInput
+	extends ValidatedTextInput implements SecretPropertyField
+{
+
+	private String textMask = "false";
+
+	/**
+	 * @return Returns true if text masking is requested.
+	 */
+	public String getTextMask() {
+		return textMask;
+	}
+	/**
+	 * @param textMask The textMask value true or false.
+	 */
+	public void setTextMask(String textMask) {
+		this.textMask = textMask;
+	}
+	/**
+	 * Used by checkConfig to validate the configuration file
+	 * not at runtime
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if( ! InputField.optionalBoolean(getTextMask())){
+			System.out.println("Comment:textMask must be true or false or null:" + getTextMask());
+			return false;
+		}
+		if(getDisplayText() == null){
+			System.out.println("Password:displayText must be set");
+			return false;
+		}
+		if(getProperty() == null){
+			System.out.println("Password:property must be set");
+			return false;
+		}
+		if(getDefaultValue() == null){
+			System.out.println("Password:defaultValue must be set");
+			return false;
+		}
+		if(getRegex() == null){
+			System.out.println("Password:regex must be set");
+			return false;
+		}
+		return true;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ResultContainer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ResultContainer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ResultContainer.java	(revision 18906)
@@ -0,0 +1,190 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.tp23.antinstaller.InstallerContext;
+
+
+
+/**
+ * <p>Data Holder for results of the data collection and convenience methods for
+ * obtaining default values containing ${prop.name}/blah syntax </p>
+ * @todo   Ensure in the validator (and Docs) that developers only add ${refs} for properties set on earlier pages
+ * @author Paul Hinds
+ * @version $Id: ResultContainer.java,v 1.6 2007/01/28 10:25:48 teknopaul Exp $
+ */
+public class ResultContainer {
+
+	private HashMap properties = new HashMap();
+	private Properties environment = InstallerContext.getEnvironment();
+	private File installRoot;
+
+	public ResultContainer() {
+	}
+
+	/**
+	 * fetch a string for File and Directory inputs that expands ${refs} and
+	 * also creates absolute paths from relative paths in the default value
+	 * @param defaultString String
+	 * @return String
+	 */
+	public String getDefaultFileRef(String defaultString){
+		if(defaultString == null) {
+            return null;
+        }
+        
+		String expandedRefs = getDefaultValue(defaultString);
+		File ref = new File(expandedRefs);
+		if(!ref.isAbsolute()){
+			String path = null;
+			try {
+				path = new File(installRoot, expandedRefs).getCanonicalPath();
+			}
+			catch (IOException ex) {
+				// this is a bugger, but it should not happen it implies . or ..
+				// can not be resolved, all we can do is return the . or .. and hope
+				// it works later
+				 path = new File(installRoot, expandedRefs).getAbsolutePath();
+			}
+			return path;
+		} else {
+			String path = ref.getAbsolutePath();
+			return path;
+		}
+	}
+
+    /**
+	 *
+     * Handles dereferenceing ${propName} syntax in default value fields
+	 * @param defaultString String a plain String or a String with ${ref} references
+	 * @return String
+	 */
+	public String getDefaultValue(String defaultString) {
+		if(defaultString == null) {
+            return null;
+        }
+
+		char[] characters = defaultString.toCharArray();
+		char c;
+		StringBuffer result = new StringBuffer();
+
+		StringBuffer propertyNameBuffer = new StringBuffer();
+		boolean inProp = false; // state flag indicating parsing a propertyName
+		for (int i = 0; i < characters.length;) {
+			c = characters[i];
+			if ( c == '$' && ( characters.length > i + 1 && characters[i + 1] == '{' ) ){
+				if(inProp){
+                    //Nested property
+                    int endIndex = defaultString.indexOf( '}', i + 1 );
+                    if( endIndex != -1 ) {
+                        ++endIndex;
+                        propertyNameBuffer.append( getDefaultValue( defaultString.substring( i, endIndex ) ) );
+                        i = endIndex;
+                        continue;
+                    }
+                    else {
+                        result.append(propertyNameBuffer.toString());
+                        propertyNameBuffer = new StringBuffer();
+                    }
+                }
+				else{
+					inProp = true;
+					propertyNameBuffer.append(c);
+                    ++i;
+                    continue;
+				}
+			}
+			else if (c == '{') {
+				if (inProp) {
+					propertyNameBuffer.append(c);
+					if(characters[i - 1] != '$') {
+						inProp=false;
+						result.append(propertyNameBuffer.toString());
+						propertyNameBuffer = new StringBuffer();
+					}
+                    ++i;
+                    continue;
+				}
+			}
+			else if (c == '}') {
+				if (inProp) {
+					appendProperty(propertyNameBuffer, result);
+					propertyNameBuffer = new StringBuffer();
+					inProp = false;
+                    ++i;
+                    continue;
+				}
+			}
+			if (!inProp) result.append(c);
+			else propertyNameBuffer.append(c);
+            ++i;
+        }
+		if(propertyNameBuffer.length() != 0) {
+            result.append(propertyNameBuffer.toString());
+        }
+		return result.toString();
+	}
+
+
+
+	public HashMap getResults() {
+		return properties;
+	}
+	public void setProperty(String key, String value){
+		properties.put(key, value);
+	}
+	public String getProperty(String key){
+		return (String)properties.get(key);
+	}
+
+	public void setInstallRoot(File installRoot) {
+		this.installRoot = installRoot;
+	}
+	/**
+	 * @since 0.7.1 to support installs from readonly media
+	 * @return Map
+	 */
+	public Map getAllProperties(){
+		return properties;
+	}
+
+	/**
+	 * Appends the property if found or inserts an empty string.
+	 * This method now supports loading environment variables.
+	 * @param propertyNameBuffer StringBuffer
+	 * @param result StringBuffer
+	 */
+	private void appendProperty(StringBuffer propertyNameBuffer, StringBuffer result) {
+		String propertyName = propertyNameBuffer.toString();
+		String key = propertyName.substring(2);
+		String value = (String)properties.get(key);
+		if(value == null && key.startsWith(InstallerContext.ENV_PREFIX)) {
+			value = environment.getProperty(key);
+		}
+		if(value == null && key.startsWith(InstallerContext.JAVA_PREFIX)) {
+			value = environment.getProperty(key);
+		}
+		if (value != null) {
+			result.append(value);
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/SecretPropertyField.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/SecretPropertyField.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/SecretPropertyField.java	(revision 18906)
@@ -0,0 +1,30 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+/**
+ *
+ * <p>An InputField that should not have its property printed to the properties
+ * file, probably for security reasons such as a PasswordTextInput </p>
+ * <p>It is imperative that all classes that implement this interface extend
+* InputField </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: SecretPropertyField.java,v 1.1.1.1 2005/10/18 18:20:55 teknopaul Exp $
+ */
+public interface SecretPropertyField{
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/SelectInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/SelectInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/SelectInput.java	(revision 18906)
@@ -0,0 +1,162 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Locale;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.Installer;
+
+
+/**
+ *
+ * <p>Input type to choose a single value from a (numbered) list of options </p>
+ * <p>N.B. subclassed for TargetSelectInput </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: SelectInput.java,v 1.4 2006/12/07 02:50:27 teknopaul Exp $
+ */
+public class SelectInput
+	extends InputField {
+
+	private int optionIdx = 0;
+	private SelectInput.Option[] options;
+	private boolean useAsLocale = false;
+
+	public SelectInput() {
+	}
+
+	public void setUseAsLocale(boolean ual) {
+		this.useAsLocale = ual;
+	}
+
+
+	public SelectInput.Option[] getOptions() {
+		return options;
+	}
+
+	public void setOptions(SelectInput.Option[] options) {
+		this.options = options;
+	}
+	public Option getNewOption(){
+		return new Option();
+	}
+	
+	public class Option {
+		
+		private int idx = ++optionIdx;
+		private String text;
+		public String value;
+		
+		public void setText(String text) {
+			this.text = text;
+		}
+		public String getText() {
+			if( org.tp23.antinstaller.Installer.langPack != null ) {
+				try {
+					String r = org.tp23.antinstaller.Installer.langPack.getString( getProperty() + "." + idx + ".displayText" );
+					return r;
+				} catch ( java.util.MissingResourceException mre ) {}
+			}
+			return text;
+		}
+	}
+	
+	public void setValue(String value){
+		setInputResult(value);
+		if ( useAsLocale ) {
+			//expect something like 'en' or or something like 'en_US'
+			Locale newLocale = null;
+			if ( value.length() == 2 ) {
+				newLocale = new Locale(value);
+				Locale.setDefault( newLocale );
+			} else if ( value.length() == 5 ) {
+				newLocale = new Locale(value.substring(0,2), value.substring(3,5));
+				Locale.setDefault( newLocale );
+			} //else { you're out of luck }
+			org.tp23.antinstaller.Installer.langPack = ResourceBundle.getBundle("resources.LanguagePack", newLocale );
+		}
+	}
+	
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		if(getInputResult() == null){
+			return false;
+		}
+		String value = getInputResult();
+		boolean ok = false;
+		for (int i = 0; i < options.length; i++) {
+			ok |= options[i].value.equals(value);
+		}
+		return ok;
+	}
+
+
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText()==null){
+			System.out.println("Select:displayText must be set");
+			return false;
+		}
+		if(getProperty()==null){
+			System.out.println("Select:property must be set");
+			return false;
+		}
+		if(getDefaultValue()==null){
+			System.out.println("Select:defaultValue must be set");
+			return false;
+		}
+		if(getOptions()==null){
+			System.out.println("Select:option must have at least two options");
+			return false;
+		}
+		if(getOptions().length<2){
+			System.out.println("Select:option must have at least two options");
+			return false;
+		}
+		for (int i = 0; i < getOptions().length; i++) {
+			Option o = getOptions()[i];
+			if(o.getText()==null){
+				System.out.println("Select:option:text must be set");
+				return false;
+			}
+			if(o.value==null){
+				System.out.println("Select:option:value must be set");
+				return false;
+			}
+		}
+		boolean defaultExists = false;
+		for (int i = 0; i < getOptions().length; i++) {
+			Option o = getOptions()[i];
+			if(o.value.equals(getDefaultValue())){
+				defaultExists=true;
+			}
+		}
+		if(!defaultExists){
+			System.out.println("Select:option:Default must be one of the options");
+			return false;
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/Target.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/Target.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/Target.java	(revision 18906)
@@ -0,0 +1,11 @@
+package org.tp23.antinstaller.input;
+/**
+ * Indicates the input type is a target based type and requires special
+ * processing in the properties loader
+ * @author teknopaul
+ *
+ */
+public interface Target {
+	public int getIdx();
+	public String getTarget();
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/TargetInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/TargetInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/TargetInput.java	(revision 18906)
@@ -0,0 +1,226 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+/**
+ *
+ * <p>Input type to select targets to install </p>
+ * If the osSpecific flag is set the OS of the current system will
+ * be appended to the name of the target actually by ant run so that different
+ * Targets can be run according to the target platform.
+ * This feature goes against the principles of
+ * building cross platform installers, but is provided so that common installer
+ * tasks such as creating icons and shortcuts can be run on Windows for
+ * all those useless users who can't run a command script ;)
+ * <br>
+ * Currently there are two modes strict and not strict (lax).</p>
+ * <p>Strict target will return the target name plus the exact String in the
+ * System Property "os.name" this means you will have to provide targets for
+ * every possible OS version. See
+ * <a href="http://lopica.sourceforge.net/os.html">this page</a> for a list of possible values
+ * There are a great many but you may not want to consider some of the options.</p>
+ * <p>Lax target will return one of the following strings only
+ * <ul>
+ * <li>"[target-name]-linux" - Linux </li>
+ * <li>"[target-name]-mac" - Mac OS and Mac OS X</li>
+ * <li>"[target-name]-sun" - SunOS and Solaris</li>
+ * <li>"[target-name]-win" - Windows *</li>
+ * <li>"[target-name]-other" - any thing else</li>
+ * </ul></p> so you only have to create 5 ant targets to support all the cases.
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: TargetInput.java,v 1.3 2006/12/07 02:42:22 teknopaul Exp $
+ */
+public class TargetInput
+	extends InputField
+	implements Target{
+
+
+	private String target;
+	private String force;
+	private String osSpecific;
+	private String strict;
+	//targets are ordered
+	private int idx;
+	private String diskRequirement;
+	private boolean hidden;
+
+	private static int globalIdx = 1;
+
+	public TargetInput() {
+		idx = getGlobalIdx();
+	}
+
+	public String getTarget() {
+		if(isTrue(osSpecific)){
+			return getOSSpecificTarget();
+		} else {
+			return target;
+		}
+	}
+
+	/**
+	 * Used to fetch the target value that was set in the config file
+	 * @return
+	 */
+	public String getTargetName() {
+		return target;
+	}
+
+	public void setTarget(String target) {
+		this.target = target;
+		setProperty(target);
+	}
+
+	public void setDiskRequirement(String diskRequirement) {
+		this.diskRequirement = diskRequirement;
+	}
+
+	public boolean getHidden() {
+		return this.hidden;
+	}
+
+	public void setHidden(String hidden) {
+		this.hidden = hidden.equals("true");
+	}
+
+	public String getForce() {
+		return force;
+	}
+
+	public void setForce(String force) {
+		this.force = force;
+	}
+
+	public String getStrict() {
+		return strict;
+	}
+
+	public void setStrict(String strict) {
+		this.strict = strict;
+	}
+
+	public String getOsSpecific() {
+		return osSpecific;
+	}
+
+	public void setOsSpecific(String osSpecific) {
+		this.osSpecific = osSpecific;
+	}
+
+	public String getDiskRequirement() {
+		return diskRequirement;
+	}
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException {
+		//setInputResult(target);
+		return true;
+	}
+
+
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText()==null){
+			System.out.println("Target:displayText must be set");
+			return false;
+		}
+		if(getTarget()==null){
+			System.out.println("Target:target must be set");
+			return false;
+		}
+//		if(getTarget().equals("default")){
+//			System.out.println("Target:target can not be \"default\"");
+//			return false;
+//		}
+		if(!InputField.optionalBoolean(getForce())){
+			System.out.println("Target:force must be true or false or null");
+			return false;
+		}
+		if(!InputField.optionalBoolean(getStrict())){
+			System.out.println("Target:strict must be true or false or null");
+			return false;
+		}
+		if(!InputField.optionalBoolean(getOsSpecific())){
+			System.out.println("Target:osSpecific must be true or false or null");
+			return false;
+		}
+		if(!InputField.requiredBoolean(getDefaultValue())){
+			System.out.println("Target:defaultValue must be true or false");
+			return false;
+		}
+		return true;
+	}
+    public int getIdx() {
+		return idx;
+    }
+	public static int getGlobalIdx() {
+		return globalIdx++;
+	}
+
+	public String getOSSpecificTarget() {
+		if(isTrue(strict)){
+			return getStrictTarget();
+		}
+		else return getLaxTarget();
+	}
+
+	private String getStrictTarget(){
+		return target + getOsSpecificSuffix();
+	}
+
+	private String getLaxTarget(){
+		return target + getLaxOsSpecificSuffix();
+	}
+
+	/**
+	 * N.B.  should have added a "-" but to late to change now and not important
+	 * @return
+	 */
+	public static String getOsSpecificSuffix(){
+		return System.getProperty("os.name");
+	}
+	public static String getLaxOsSpecificSuffix(){
+		String osName = System.getProperty("os.name").toLowerCase();
+		if(osName.indexOf("linux") != -1){
+			return "-linux";
+		}
+		if(osName.indexOf("mac") != -1){
+			return "-mac";
+		}
+		if(osName.indexOf("windows") != -1){
+			return "-win";
+		}
+		if(osName.indexOf("solaris") != -1 || osName.indexOf("sunos") != -1){
+			return "-sun";
+		}
+		return "-other";
+		
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/TargetSelectInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/TargetSelectInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/TargetSelectInput.java	(revision 18906)
@@ -0,0 +1,100 @@
+/* 
+ * Copyright 2005 Paul Hinds, Mark Anderson
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+/**
+ *
+ * <p>Input type to choose a single value from a (numbered) list of options
+ * which will be rendered as radio buttons in the Swing GUI </p>
+ * REF: 1177206
+ * @author Paul Hinds, Mark Anderson
+ * @version $Id: TargetSelectInput.java,v 1.4 2006/12/21 00:03:08 teknopaul Exp $
+ */
+public class TargetSelectInput
+	extends SelectInput
+	implements Target{
+
+	//targets are ordered
+	private int idx;
+
+	public TargetSelectInput() {
+		idx = TargetInput.getGlobalIdx();
+	}
+
+	public int getIdx() {
+		return idx;
+	}
+	
+	public String getTarget(){
+		return super.getDefaultValue();
+	}
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText() == null){
+			System.out.println("TargetSelect:displayText must be set");
+			return false;
+		}
+		if(getProperty() == null){
+			System.out.println("TargetSelect:property must be set");
+			return false;
+		}
+		if(getDefaultValue() == null){
+			System.out.println("TargetSelect:defaultValue must be set");
+			return false;
+		}
+		if(getOptions() == null){
+			System.out.println("TargetSelect:option must have at least two options");
+			return false;
+		}
+		if(getOptions().length < 2){
+			System.out.println("TargetSelect:option must have at least two options");
+			return false;
+		}
+		for (int i = 0; i < getOptions().length; i++) {
+			Option o = getOptions()[i];
+			if(o.getText() == null){
+				System.out.println("TargetSelect:option:text must be set");
+				return false;
+			}
+			if(o.value == null){
+				System.out.println("TargetSelect:option:value must be set");
+				return false;
+			}
+		}
+		boolean defaultExists = false;
+		for (int i = 0; i < getOptions().length; i++) {
+			Option o = getOptions()[i];
+			if(o.value.equals(getDefaultValue())){
+				defaultExists=true;
+			}
+//			if(o.value.equals("default")){
+//				System.out.println("Target:target can not be \"default\"");
+//				return false;
+//			}
+		}
+		if(!defaultExists){
+			System.out.println("TargetSelect:option:Default must be one of the options");
+			return false;
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/UnvalidatedTextInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/UnvalidatedTextInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/UnvalidatedTextInput.java	(revision 18906)
@@ -0,0 +1,66 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+/**
+ *
+ * <p>Free text input type </p>
+ * @author Paul Hinds
+ * @version $Id: UnvalidatedTextInput.java,v 1.1.1.1 2005/10/18 18:20:54 teknopaul Exp $
+ */
+public class UnvalidatedTextInput
+	extends InputField{
+
+	public UnvalidatedTextInput() {
+	}
+
+	public void setValue(String dir){
+		setInputResult(dir);
+	}
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		return true;
+	}
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText()==null){
+			System.out.println("Simple:displayText must be set");
+			return false;
+		}
+		if(getProperty()==null){
+			System.out.println("Simple:property must be set");
+			return false;
+		}
+		if(getDefaultValue()==null){
+			System.out.println("Simple:defualtValue must be set");
+			return false;
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ValidatedTextInput.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ValidatedTextInput.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/ValidatedTextInput.java	(revision 18906)
@@ -0,0 +1,113 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.input;
+
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+
+
+/**
+ *
+ * <p>Free text input type with validation using regular expressions</p>
+ * @author Paul Hinds
+ * @version $Id: ValidatedTextInput.java,v 1.2 2006/12/21 00:03:09 teknopaul Exp $
+ */
+public class ValidatedTextInput
+	extends InputField{
+
+    private String regex;
+	private Pattern pattern;
+	//private RegexpMatcher matcher; // use ant version in an attempt to support jdk1.3
+
+	public ValidatedTextInput() {
+	}
+
+	public void setValue(String dir){
+		setInputResult(dir);
+	}
+    public String getRegex() {
+		return regex;
+    }
+    public void setRegex(String regex) {
+		this.regex = regex;
+		try {
+			//matcher = new RegexpMatcherFactory().newRegexpMatcher();
+			//matcher.setPattern(regex);
+			pattern = Pattern.compile(regex);
+		}
+		catch (BuildException ex) {
+			throw new InputException("Invalid regex in Validated text input");
+		}
+    }
+
+	/**
+	 * Called to validate the user input
+	 */
+	public boolean validate(InstallerContext cxt) throws ValidationException{
+		try {
+			if (getInputResult() == null)return false;
+			String toTest = getInputResult();
+
+			Matcher matcher = pattern.matcher(toTest);
+			//boolean matches =  matcher.matches(toTest);
+			boolean matches =  matcher.matches();
+
+			return matches;
+		}
+		catch (Throwable e) {
+			cxt.log(e);
+			return false;
+		}
+	}
+
+	/**
+	 * Used by checkConfig to validate the configuration file.
+	 * Not used at runtime.
+	 * @return boolean
+	 */
+	public boolean validateObject() {
+		if(getDisplayText()==null){
+			System.out.println("Validated:displayText must be set");
+			return false;
+		}
+		if(getProperty()==null){
+			System.out.println("Validated:property must be set");
+			return false;
+		}
+		if(getDefaultValue()==null){
+			System.out.println("Validated:defaultValue must be set");
+			return false;
+		}
+		if(getRegex()==null){
+			System.out.println("Validated:regex must be set");
+			return false;
+		}
+		try{
+			//matcher = new RegexpMatcherFactory().newRegexpMatcher();
+			//matcher.setPattern(getRegex());
+		}
+		catch(Exception e){
+			System.out.println("Validated:regex must compile");
+			
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/Validator.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/Validator.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/Validator.java	(revision 18906)
@@ -0,0 +1,40 @@
+package org.tp23.antinstaller.input;
+
+import java.util.Locale;
+
+import org.tp23.antinstaller.InstallerContext;
+
+
+/**
+ * A no args constructor should be provided
+ * @author Paul Hinds
+ * @version $Id: Validator.java,v 1.1.1.1 2005/10/18 18:20:54 teknopaul Exp $
+ */
+public interface Validator {
+
+	/**
+	 * Validate the user entry.  The InstallerContext is provided to allow
+	 * conditional failure based on user input. for example the implementation
+	 * of this class could call the following code after failing to open a socket
+	 * <pre>
+	 * boolean usrOverride = ctx.getMessageRenderer().prompt("Prot not available are you sure?");
+	 * if(userOverride)return true;
+	 * else{
+	 * 	throw new SocketException();
+	 * }
+	 * </pre>
+	 * @param text  may be null it is up to the validator to decide if null or ""
+	 * is acceptable
+	 * @throws Exception
+	 */
+	public void validate(String text,InstallerContext ctx)throws Exception;
+	/**
+	 * This method should return a string for every exception that might be 
+	 * thrown by the validate method.  The top level Throwable should be 
+	 * handled at least.  
+	 * @param ex
+	 * @param l Locale (ignored, but one day we should be internationalized)
+	 * @return
+	 */
+	public String getErrorMessage(Throwable ex,Locale l);
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/package.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/package.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/input/package.html	(revision 18906)
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--
+  Copyright (c) 2004 tp23
+  All Rights Reserved.
+--></head>
+
+<body bgcolor="white">Contains classes for representing Input/Output elements and holding the data collected for each input type.</body>
+</html>
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/LicensePage.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/LicensePage.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/LicensePage.java	(revision 18906)
@@ -0,0 +1,52 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.page;
+
+
+/**
+ *
+ * <p>Represents a license page witha  resouce that contains the text of the licenses </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: LicensePage.java,v 1.1.1.1 2005/10/18 18:21:04 teknopaul Exp $
+ */
+public class LicensePage
+	extends Page {
+
+	private String resource;
+	private String usePaging;
+
+	public LicensePage() {
+	}
+
+	public String getResource() {
+		return resource;
+	}
+
+	public void setResource(String resource) {
+		this.resource = resource;
+	}
+
+	public String getUsePaging() {
+		return usePaging;
+	}
+
+	public void setUsePaging(String usePaging) {
+		this.usePaging = usePaging;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/Page.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/Page.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/Page.java	(revision 18906)
@@ -0,0 +1,286 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.page;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.TreeSet;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.TargetInput;
+import org.tp23.antinstaller.runtime.IfPropertyHelper;
+/**
+ *
+ * <p>Represents a page in the installer. </p>
+ * <p>This object maintians an ordered list of targets that have been selected
+* so that when ant is run the targets are run in the correct order.  If
+* Targets exist in multiple pages they are run in the order they appear in the config file.  </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: Page.java,v 1.10 2007/01/19 00:24:36 teknopaul Exp $
+ */
+
+public abstract class Page {
+
+	//private static final int MAX_TARGETS = 10;
+	private String name;
+	private String displayText;
+	private String imageResource;
+	private OutputField[] outputField;
+	private boolean abort;
+
+	private boolean showNextButton = true;
+
+	/**
+	 *  target to be called as the installer is running
+	 */
+	private String postDisplayTarget;
+	private Set targets = new TreeSet();
+
+	public Page() {
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getDisplayText() {
+		if( org.tp23.antinstaller.Installer.langPack != null ) {
+			return org.tp23.antinstaller.Installer.langPack.getString("page." + getName() + ".displayText");
+		}
+		return displayText;
+	}
+
+	public void setDisplayText(String displayText) {
+		this.displayText = displayText;
+	}
+
+	public String getImageResource() {
+		return imageResource;
+	}
+
+	public void setImageResource(String imageResource) {
+		this.imageResource = imageResource;
+	}
+
+	public OutputField[] getOutputField() {
+		return outputField;
+	}
+
+	public void setOutputField(OutputField[] outputField) {
+		this.outputField = outputField;
+	}
+
+	public String getPostDisplayTarget() {
+		return postDisplayTarget;
+	}
+
+	public void setPostDisplayTarget(String runtimeTarget) {
+		this.postDisplayTarget = runtimeTarget;
+	}
+
+	public boolean isShowNextButton() {
+		return showNextButton;
+	}
+	public void setShowNextButton(boolean snb) {
+		this.showNextButton = snb;
+	}
+	public void setShowNextButton(String snb) {
+		this.showNextButton = OutputField.isTrue(snb);
+	}
+
+    /**
+	 * These are the ant targets that will be run, this is decided after
+	 * the Page has been displayed.  For example if the user chooses not
+	 * to enter a field that may signify that a target should not be run
+	 * @return A sorted List a list of Ant targets as Strings;
+     * @throws InstallException 
+	 */
+	public List getTargets(InstallerContext ctx) {
+		List results = new ArrayList(targets.size());
+		try {
+			Iterator iter = targets.iterator();
+			IfPropertyHelper helper = new IfPropertyHelper(ctx);
+			while(iter.hasNext()){
+				IndexedTarget idxTarget = (IndexedTarget)iter.next();
+				if( IndexedTarget.PAGE.equals(idxTarget.getTargetType()) ){
+					if( helper.ifProperty(this) || helper.ifTarget(this, ctx.getInstaller().getPages() ) ){
+						results.add(idxTarget.target);
+					}
+				}
+				else{
+					results.add(idxTarget.target);
+				}
+			}
+		} catch (InstallException e) {
+			// should not happen at runtime if ifProperty has been validated
+			e.printStackTrace();
+            ctx.log(ctx.getInstaller().isVerbose(), e);
+			throw new RuntimeException();
+		}
+		return results;
+	}
+	/**
+	 * get input targets that are selected and all page targets, independent of
+	 * the ifProperty value 
+	 * @return
+	 */
+	public List getAllTargets() {
+		List results = new ArrayList(targets.size());
+		Iterator iter = targets.iterator();
+		while(iter.hasNext()){
+			IndexedTarget idxTarget = (IndexedTarget)iter.next();
+			results.add(idxTarget.target);
+		}
+		return results;
+	}
+	/**
+	 * Comma separated list of targets for this page, called when parsing the
+	 * config file
+	 * @param target String
+	 */
+	public void setTarget(String targetList) {
+		StringTokenizer st = new StringTokenizer(targetList, ",");
+		while (st.hasMoreTokens()) {
+			targets.add(new IndexedTarget(TargetInput.getGlobalIdx(), 
+					st.nextToken(),
+					IndexedTarget.PAGE));
+		}
+	}
+	/**
+	 * Adds an INPUT target to the Page config
+	 * @param idx
+	 * @param target
+	 */
+	public void addTarget(int idx, String target) {
+		this.targets.add(new IndexedTarget(idx, target, IndexedTarget.INPUT));
+	}
+	public void removeTarget(int idx) {
+		this.targets.remove(new IndexedTarget(idx, null));
+	}
+	/**
+	 * returns true if the page has the current target set
+	 * @param target String
+	 * @return boolean
+	 */
+	public boolean isTarget(String target) {
+		if(target == null){
+			return false;
+		}
+		Iterator iter = targets.iterator();
+		while(iter.hasNext()) {
+			IndexedTarget idxTarget = (IndexedTarget)iter.next();
+			if(idxTarget.target.equals(target)){
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * @return a List of IndexedTarget objects
+	 */
+	public List getPageTargets(){
+		List toReturn = new ArrayList(targets.size());
+		Iterator iter = targets.iterator();
+		while(iter.hasNext()) {
+			IndexedTarget idxTarget = (IndexedTarget)iter.next();
+			if( IndexedTarget.PAGE.equals(idxTarget.targetType) ){
+				toReturn.add(idxTarget);
+			}
+		}
+		return toReturn;
+	}
+
+	/**
+	 * @return a List of IndexedTarget objects
+	 */
+	public List getElementTargets(){
+		List toReturn = new ArrayList(targets.size());
+		Iterator iter = targets.iterator();
+		while(iter.hasNext()) {
+			IndexedTarget idxTarget = (IndexedTarget)iter.next();
+			if( IndexedTarget.INPUT.equals(idxTarget.targetType) ){
+				toReturn.add(idxTarget);
+			}
+		}
+		return toReturn;
+	}
+    /**
+	 * This is called after the page is displayed, a page can return false to indicate
+	 * that the installation should abort.  Should be false if the cancel button is pressed.
+	 * System.exit is not called to allow the installer to clean up temporary files.
+	 * @return boolean
+	 */
+	public boolean isAbort() {
+		return abort;
+	}
+
+	public void setAbort(boolean abort) {
+		this.abort = abort;
+	}
+	public static class IndexedTarget implements Comparable{
+		
+		private static final String PAGE = "page";
+		private static final String INPUT = "input";
+		
+		int idx;
+		String target;
+		String targetType = INPUT;
+		
+		IndexedTarget(int idx, String target){
+			this.idx = idx;
+			this.target = target;
+		}
+		IndexedTarget(int idx, String target, String targetType){
+			this.idx = idx;
+			this.target = target;
+			this.targetType = targetType;
+		}
+		
+		public boolean equals(Object target){
+			IndexedTarget test = (IndexedTarget)target;
+			return test.idx == idx;
+		}
+        // FindBugs - part of equals() contract
+        public int hashCode(){
+            return this.idx;
+        }
+		public int compareTo(Object o) {
+			IndexedTarget test = (IndexedTarget)o;
+			return idx - test.idx;
+		}
+		public String getTarget() {
+			return target;
+		}
+		public String getTargetType() {
+			return targetType;
+		}
+
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/ProgressPage.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/ProgressPage.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/ProgressPage.java	(revision 18906)
@@ -0,0 +1,43 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.page;
+
+import org.tp23.antinstaller.input.OutputField;
+
+public class ProgressPage extends Page{
+	
+	private boolean showTargets = true;
+	
+	
+	public ProgressPage() {
+	}
+	/**
+	 * @return Returns the showTargets.
+	 */
+	public boolean isShowTargets() {
+		return showTargets;
+	}
+	/**
+	 * @param showTargets indicates that the graphical display of
+	 * progress should be used in the Swing renderer
+	 */
+	public void setShowTargets(boolean showTargets) {
+		this.showTargets = showTargets;
+	}
+	public void setShowTargets(String strShowTargets) {
+		this.showTargets = OutputField.isTrue(strShowTargets);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/SimpleInputPage.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/SimpleInputPage.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/SimpleInputPage.java	(revision 18906)
@@ -0,0 +1,59 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.page;
+
+import org.tp23.antinstaller.input.OutputField;
+
+
+
+public class SimpleInputPage
+	extends Page {
+
+
+	private String ifTarget;
+	private String ifProperty;
+	private boolean overflow;
+
+	private boolean showNextButton;
+
+	public SimpleInputPage() {
+	}
+
+	public String getIfTarget() {
+		return ifTarget;
+	}
+
+	public void setIfTarget(String ifTarget) {
+		this.ifTarget = ifTarget;
+	}
+    public String getIfProperty() {
+    	return ifProperty;
+    }
+    public void setIfProperty(String ifProperty) {
+    	this.ifProperty = ifProperty;
+    }
+
+	public boolean isOverflow() {
+		return overflow;
+	}
+	public void setOverflow(boolean overflow) {
+		this.overflow = overflow;
+	}
+	public void setOverflow(String strOverflow) {
+		this.overflow = OutputField.isTrue(strOverflow);
+	}
+	
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/SplashPage.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/SplashPage.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/SplashPage.java	(revision 18906)
@@ -0,0 +1,40 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.page;
+
+public class SplashPage
+	extends Page {
+	private String splashResource;
+	private String altText;
+	public SplashPage() {
+	}
+
+	public String getSplashResource() {
+		return splashResource;
+	}
+
+	public void setSplashResource(String splashResource) {
+		this.splashResource = splashResource;
+	}
+
+	public String getAltText() {
+		return altText;
+	}
+
+	public void setAltText(String altText) {
+		this.altText = altText;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/TextPage.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/TextPage.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/TextPage.java	(revision 18906)
@@ -0,0 +1,42 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.page;
+
+public class TextPage
+	extends Page {
+	
+	private String htmlResource;
+	private String textResource;
+	
+	public TextPage() {
+	}
+
+	public String getHtmlResource() {
+		return htmlResource;
+	}
+
+	public void setHtmlResource(String htmlResource) {
+		this.htmlResource = htmlResource;
+	}
+
+	public String getTextResource() {
+		return textResource;
+	}
+
+	public void setTextResource(String textResource) {
+		this.textResource = textResource;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/package.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/package.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/page/package.html	(revision 18906)
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--
+  Copyright (c) 2004 tp23
+  All Rights Reserved.
+--></head>
+
+<body bgcolor="white">Contains holders for the three different types of Page in an installer and the base class.</body>
+</html>
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/AntOutputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/AntOutputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/AntOutputRenderer.java	(revision 18906)
@@ -0,0 +1,24 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer;
+
+import java.io.PrintStream;
+
+public interface AntOutputRenderer {
+	public PrintStream getOut();
+	public PrintStream getErr();
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/MessageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/MessageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/MessageRenderer.java	(revision 18906)
@@ -0,0 +1,42 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer;
+
+import org.tp23.antinstaller.InstallerContext;
+/**
+ *
+ * <p>Abstract message renderer asking user questions or providing feedback</p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: MessageRenderer.java,v 1.1.1.1 2005/10/18 18:20:59 teknopaul Exp $
+ */
+public interface MessageRenderer {
+
+	public void setInstallerContext(InstallerContext ctx);
+	/**
+	 * Print a message for which there is not option to reply
+	 * @param message String
+	 */
+	public void printMessage(String message);
+	/**
+	 * ask the user for Yes or No
+	 * @param message String
+	 * @return boolean  true = Yes  false = No
+	 */
+	public boolean prompt(String message);
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/PageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/PageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/PageRenderer.java	(revision 18906)
@@ -0,0 +1,25 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.page.Page;
+
+public interface PageRenderer {
+	public void setContext(InstallerContext ctx);
+	public InstallerContext getContext();
+	public boolean renderPage(Page page) throws Exception;
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/RendererFactory.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/RendererFactory.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/RendererFactory.java	(revision 18906)
@@ -0,0 +1,136 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer;
+
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.renderer.swing.SwingOutputFieldRenderer;
+import org.tp23.antinstaller.renderer.swing.SwingPageRenderer;
+import org.tp23.antinstaller.renderer.text.AbstractTextPageRenderer;
+import org.tp23.antinstaller.renderer.text.TextOutputFieldRenderer;
+
+
+
+/**
+ *
+ * <p>Fetches an instance of a Renderers by using the class of the method parameter and
+ * a naming convention </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: RendererFactory.java,v 1.3 2006/12/21 00:03:30 teknopaul Exp $
+ */
+public class RendererFactory {
+	public RendererFactory() {
+	}
+
+	public static TextOutputFieldRenderer getTextRenderer(OutputField field) throws ClassNotFoundException {
+		String fullyQualified = field.getClass().getName();
+		int lastDot = fullyQualified.lastIndexOf('.');
+		if (lastDot == -1) {
+			throw new UnsupportedOperationException("InputField can not be a member of the default package");
+		}
+		int prevDot = fullyQualified.substring(0,lastDot-1).lastIndexOf('.', lastDot - 1);
+		if (prevDot == -1) {
+			throw new UnsupportedOperationException("InputField can not be a member of a single level package");
+		}
+		StringBuffer rendererClassName = new StringBuffer();
+		rendererClassName.append(fullyQualified.substring(0, prevDot));
+		rendererClassName.append(".renderer.text.");
+		rendererClassName.append(fullyQualified.substring(lastDot + 1));
+		rendererClassName.append("Renderer");
+		try {
+			Class clazz = Class.forName(rendererClassName.toString());
+			return (TextOutputFieldRenderer) clazz.newInstance();
+		}
+		catch (Exception ex) {
+			throw new ClassNotFoundException("Class does not meet the contract for TextInputFieldRenderer:" + rendererClassName);
+		}
+	}
+	
+	public static AbstractTextPageRenderer getTextPageRenderer(Page page) throws ClassNotFoundException {
+		String fullyQualified = page.getClass().getName();
+		int lastDot = fullyQualified.lastIndexOf('.');
+		if (lastDot == -1) {
+			throw new UnsupportedOperationException("Pages can not be a member of the default package");
+		}
+		int prevDot = fullyQualified.substring(0,lastDot-1).lastIndexOf('.', lastDot - 1);
+		if (prevDot == -1) {
+			throw new UnsupportedOperationException("Pages can not be a member of a single level package");
+		}
+		StringBuffer rendererClassName = new StringBuffer();
+		rendererClassName.append(fullyQualified.substring(0, prevDot));
+		rendererClassName.append(".renderer.text.");
+		rendererClassName.append(fullyQualified.substring(lastDot + 1));
+		rendererClassName.append("Renderer");
+		try {
+			Class clazz = Class.forName(rendererClassName.toString());
+			return (AbstractTextPageRenderer) clazz.newInstance();
+		}
+		catch (Exception ex) {
+			throw new ClassNotFoundException("Class does not meet the contract for TextPageRenderer:" + rendererClassName);
+		}
+	}
+	public static SwingPageRenderer getSwingPageRenderer(Page page) throws ClassNotFoundException {
+		String fullyQualified = page.getClass().getName();
+		int lastDot = fullyQualified.lastIndexOf('.');
+		if (lastDot == -1) {
+			throw new UnsupportedOperationException("Pages can not be a member of the default package");
+		}
+		int prevDot = fullyQualified.substring(0,lastDot-1).lastIndexOf('.', lastDot - 1);
+		if (prevDot == -1) {
+			throw new UnsupportedOperationException("Pages can not be a member of a single level package");
+		}
+		StringBuffer rendererClassName = new StringBuffer();
+		rendererClassName.append(fullyQualified.substring(0, prevDot));
+		rendererClassName.append(".renderer.swing.");
+		rendererClassName.append(fullyQualified.substring(lastDot + 1));
+		rendererClassName.append("Renderer");
+		try {
+			Class clazz = Class.forName(rendererClassName.toString());
+			return (SwingPageRenderer) clazz.newInstance();
+		}
+		catch (Exception ex) {
+			throw new ClassNotFoundException("Class does not meet the contract for SwingPageRenderer:" + rendererClassName);
+		}
+	}
+	
+	public static SwingOutputFieldRenderer getSwingRenderer(OutputField field) throws ClassNotFoundException {
+		String fullyQualified = field.getClass().getName();
+		int lastDot = fullyQualified.lastIndexOf('.');
+		if (lastDot == -1) {
+			throw new UnsupportedOperationException("OutputField can not be a member of the default package");
+		}
+		int prevDot = fullyQualified.substring(0,lastDot-1).lastIndexOf('.', lastDot - 1);
+		if (prevDot == -1) {
+			throw new UnsupportedOperationException("OutputField can not be a member of a single level package");
+		}
+		StringBuffer rendererClassName = new StringBuffer();
+		rendererClassName.append(fullyQualified.substring(0, prevDot));
+		rendererClassName.append(".renderer.swing.");
+		rendererClassName.append(fullyQualified.substring(lastDot + 1));
+		rendererClassName.append("Renderer");
+		try {
+			Class clazz = Class.forName(rendererClassName.toString());
+			return (SwingOutputFieldRenderer) clazz.newInstance();
+		}
+		catch (Exception ex) {
+			ex.printStackTrace();
+			throw new ClassNotFoundException("Class does not meet the contract for SwingInputFieldRenderer:" + rendererClassName);
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res.properties	(revision 18906)
@@ -0,0 +1,48 @@
+#resources.LanguagePack
+#Wed Nov 10 01:06:42 CET 2004
+
+dirNotExistCreate=The Directory does not exist, create it?
+dirNotExist=The Directory does not exist
+fileNotExist=The File does not exist
+dirNotCreated=The Directory could not be created
+canNotCreateFile=Can not create file
+appRootInvalid=This directory does not appear to be the root of the application
+selectFile=Select File
+selectFolder=Select Folder
+notValidSelection=Not a valid selection
+showDetails=Show Details
+
+#Default loading
+promptLoadDefaults=Installation configuration found. Load the existing configuration?
+promptMissingDefaultPassword=A password was not found it may have been omitted for security reasons, it will be set to the default.
+
+click=Click
+toContinue=to continue
+failed=Failed
+exit=Exit
+complete=Complete
+finished=Finished
+extracting=Extracting...
+installFinished=Install Finished
+running=Running:
+
+backButton=Back
+cancelButton=Cancel
+nextButton=Next
+
+output=Output
+errors=Errors
+notCorrectFormat=The field is not of the correct format
+notCorrectPasswordFormat=The password is not of the correct format
+passwordsDoNotMatch=The passwords do not match
+installationFailed=Install failed
+propertiesVersionMismatch=Some options are missing from the previous version and must be manually entered, continue?
+
+Finished=Finished
+Failed=Failed, view the error messages
+ant.failure=Ant run failed - examine the error logs for details
+
+#Text for license page buttons
+license.next.text=Accept
+license.cancel.text=Reject
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_de.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_de.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_de.properties	(revision 18906)
@@ -0,0 +1,48 @@
+#resources.LanguagePack
+#Wed Nov 10 01:06:42 CET 2004
+
+dirNotExistCreate=Das Verzeichnis existiert nicht, erzeugen?
+dirNotExist=Das Verzeichnis existiert nicht
+fileNotExist=Die Datei existiert nicht
+dirNotCreated=Das Verzeichnis konnte nicht erzeugt werden
+canNotCreateFile=Kann die Datei nicht erzeugen
+appRootInvalid=Das Verzeichnis scheint nicht das Wurzelverzeichnis der Applikation zu sein
+selectFile=Datei auswählen
+selectFolder=Verzeichnis auswählen
+notValidSelection=Keine gültige Auswahl
+showDetails=Details anzeigen
+
+#Default loading
+promptLoadDefaults=Installation configuration found. Load the existing configuration?
+promptMissingDefaultPassword=A password was not found it may have been omitted for security reasons, it will be set to the default.
+
+click=Klicken
+toContinue=zum Fortfahren
+failed=fehlgeschlagen
+exit=Beenden
+complete=Fertigstellen
+finished=abgeschlossen
+extracting=Auspacken ...
+installFinished=Installation beendet
+running=Ausführung:
+
+backButton=Zurück
+cancelButton=Abbrechen
+nextButton=Weiter
+
+output=Ausgabe
+errors=Fehler
+notCorrectFormat=Der Wert hat nicht das vorgegebene Format
+notCorrectPasswordFormat=Das Kennwort hat nicht das vorgegebene Format
+passwordsDoNotMatch=The passwords do not match
+installationFailed=Installation fehlgeschlagen
+propertiesVersionMismatch=Some properties are missing from and must be manually entered, continue?
+
+Finished=Fertig
+Failed=Fehlgeschlagen, Details siehe Fehlermeldungen
+ant.failure=Ant run failed - examine the error logs for details
+
+#Text for license page buttons
+license.next.text=Accept
+license.cancel.text=Reject
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_es.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_es.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_es.properties	(revision 18906)
@@ -0,0 +1,47 @@
+#resources.LanguagePack
+#Wed Nov 10 01:06:42 CET 2004
+
+dirNotExistCreate=El directorio no existe, quieres crearlo?
+dirNotExist=El directorio no existe.
+fileNotExist=El fichero no existe.
+dirNotCreated=El directorio no se ha creado.
+canNotCreateFile=No se puede crear el fichero.
+appRootInvalid=Este directorio no parece ser la raiz de la aplicaciòn.
+selectFile=Seleccionar fichero.
+selectFolder=Seleccionar carpeta.
+notValidSelection=No es una opciòn vàlida.
+showDetails=Enseñar detalles.
+
+#Default loading
+promptLoadDefaults=Configuracion de instalaciòn encontrada. Carga configuraciòn?
+promptMissingDefaultPassword=A password was not found it may have been omitted for security reasons, it will be set to the default.
+
+click=Click
+toContinue=Para continuar
+failed= Intento Fallido
+exit=Salir
+complete=Completar
+finished=Terminado
+extracting=Extrayendo...
+installFinished=Se ha terminado la instalaciòn
+running=Ejecutando:
+
+backButton=Atras
+cancelButton=Cancelar
+nextButton=Proxima
+
+output=Salida
+errors=Errores
+notCorrectFormat=El fichero no tiene un formato adecuado.
+notCorrectPasswordFormat=El fichero no tiene un formato adecuado.
+passwordsDoNotMatch=Las contraseñas tienen que ser iguales
+installationFailed=Instalaciòn fallado
+propertiesVersionMismatch=Faltan datos del versión anterior, continuar y entrar los manualmente?
+
+Finished=Terminado
+Failed=Intento fallido, enseñar mensajes de error
+ant.failure=Ant run failed - examine the error logs for details
+
+#Text for license page buttons
+license.next.text=Aceptar
+license.cancel.text=Cancellar
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_es_EU.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_es_EU.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/Res_es_EU.properties	(revision 18906)
@@ -0,0 +1,47 @@
+#resources.LanguagePack
+#Wed Nov 10 01:06:42 CET 2004
+
+dirNotExistCreate=Direktorioa ez da existitzen, sortu nahi al duzu?
+dirNotExist=Direktorioa ez da existitzen.
+fileNotExist=Fitxategia ez da existitzen.
+dirNotCreated=Ezin izan da direktorioa sortu.
+canNotCreateFile=Fitxategia ezin da sortu.
+appRootInvalid=Ez dirutdi direktorio hay aplikazioaren erroa denik.
+selectFile=Fitxategia aukeratu.
+selectFolder=karpeta aukeratu.
+notValidSelection=Ez da aukera onargarria.
+showDetails=Erakutsi xehetasunak.
+
+#Default loading
+promptLoadDefaults=Instalazio konfigurazio bat aurkituta. Kargatu instalazioa?
+promptMissingDefaultPassword=A password was not found it may have been omitted for security reasons, it will be set to the default.
+
+click=Sakatu
+toContinue=Jarraitzeko
+failed=Hutsegitea
+exit=Atera
+complete=Bukatu
+finished=Bukatuta
+extracting=Ateratzen...
+installFinished=Instalazioa bukatuta.
+running=Exekutatzen:
+
+backButton=Atzera
+cancelButton=Ezeztatu
+nextButton=Hurrengoa
+
+output=Irteera
+errors=Akatsak
+notCorrectFormat=Fitxategia ez da formatu egokikoa.
+notCorrectPasswordFormat=Fitxategia ez da formatu egokikoa.
+passwordsDoNotMatch=Pasa hitzak berdinak izan behar dira 
+installationFailed=Instalaciòn fallado
+propertiesVersionMismatch=Faltan datos del versión anterior, continuar y entrar los manualmente?
+
+Finished=Bukatuta
+Failed=Huts egin da, erakutsi akats mezuak
+ant.failure=Ant run failed - examine the error logs for details
+
+#Text for license page buttons
+license.next.text=Aceptar
+license.cancel.text=Cancellar
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/package.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/package.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/package.html	(revision 18906)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--
+  Copyright (c) 2004 tp23
+  All Rights Reserved.
+--></head>
+
+<body bgcolor="white">Classes of this package follow a strict naming convention to define the supported renderers
+for a specific input class.</body>
+</html>
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIButton.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIButton.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIButton.java	(revision 18906)
@@ -0,0 +1,71 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JButton;
+
+
+/**
+ * A JButton with altered prefered size to facilitate fixing the width
+ * but still using a GridBagLayout
+ * @author Paul Hinds
+ * @version $Id: AIButton.java,v 1.2 2006/12/09 15:26:09 teknopaul Exp $
+ */
+public class AIButton extends JButton {
+
+	public AIButton() {
+		super();
+	}
+
+	public AIButton(String text) {
+		super(text);
+	}
+
+	public AIButton(Action a) {
+		super(a);
+	}
+
+	public AIButton(Icon icon) {
+		super(icon);
+	}
+
+	public AIButton(String text, Icon icon) {
+		super(text, icon);
+	}
+
+	private Dimension prefSize = new Dimension(SizeConstants.BUTTON_WIDTH, 
+					                           SizeConstants.FIELD_HEIGHT);
+
+	public Dimension getMinimumSize() {
+		return prefSize;
+	}
+
+	public Dimension getPreferredSize() {
+		return prefSize;
+	}
+	public void setOverflow(Dimension prefSize) {
+		this.prefSize = prefSize;
+	}
+
+	public Dimension getMaximumSize() {
+		return prefSize;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AICheckBox.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AICheckBox.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AICheckBox.java	(revision 18906)
@@ -0,0 +1,82 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JCheckBox;
+
+
+/**
+ * A JCheckBox with altered prefered size to facilitate fixing the width
+ * but still using a GridBagLayout
+ * @author Paul Hinds
+ * @version $Id: AICheckBox.java,v 1.2 2006/12/09 15:26:09 teknopaul Exp $
+ */
+public class AICheckBox extends JCheckBox {
+
+	public AICheckBox() {
+		super();
+	}
+
+	public AICheckBox(String text) {
+		super(text);
+	}
+
+	public AICheckBox(String text, boolean selected) {
+		super(text, selected);
+	}
+
+	public AICheckBox(Action a) {
+		super(a);
+	}
+
+	public AICheckBox(Icon icon) {
+		super(icon);
+	}
+
+	public AICheckBox(Icon icon, boolean selected) {
+		super(icon, selected);
+	}
+
+	public AICheckBox(String text, Icon icon) {
+		super(text, icon);
+	}
+
+	public AICheckBox(String text, Icon icon, boolean selected) {
+		super(text, icon, selected);
+	}
+
+	private Dimension prefSize = new Dimension(SizeConstants.FIELD_WIDTH, SizeConstants.FIELD_HEIGHT);
+
+	public Dimension getMinimumSize() {
+		return prefSize;
+	}
+
+	public Dimension getPreferredSize() {
+		return prefSize;
+	}
+	public void setOverflow(Dimension prefSize) {
+		this.prefSize = prefSize;
+	}
+
+	public Dimension getMaximumSize() {
+		return prefSize;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AILabel.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AILabel.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AILabel.java	(revision 18906)
@@ -0,0 +1,65 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.Icon;
+import javax.swing.JLabel;
+
+
+/**
+ * A JLabel with altered prefered size to facilitate fixing the width
+ * but still using a GridBagLayout
+ * @author Paul Hinds
+ * @version $Id: AILabel.java,v 1.2 2006/12/09 15:26:09 teknopaul Exp $
+ */
+public class AILabel extends JLabel {
+
+	public AILabel() {
+		super();
+	}
+	public AILabel(String text) {
+		super(text);
+	}
+	public AILabel(String text, int horizontalAlignment) {
+		super(text, horizontalAlignment);
+	}
+	public AILabel(Icon image) {
+		super(image);
+	}
+	public AILabel(Icon image, int horizontalAlignment) {
+		super(image, horizontalAlignment);
+	}
+	public AILabel(String text, Icon icon, int horizontalAlignment) {
+		super(text, icon, horizontalAlignment);
+	}
+	private Dimension prefSize= new Dimension(SizeConstants.LABEL_WIDTH,
+			SizeConstants.FIELD_HEIGHT);
+	public Dimension getMinimumSize() {
+		return prefSize;
+	}
+	public Dimension getPreferredSize() {
+		return prefSize;
+	}
+	public void setOverflow(Dimension prefSize) {
+		this.prefSize = prefSize;
+	}
+	public Dimension getMaximumSize() {
+		return prefSize;
+	}
+	
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIPasswordField.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIPasswordField.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIPasswordField.java	(revision 18906)
@@ -0,0 +1,52 @@
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.JPasswordField;
+import javax.swing.text.Document;
+
+
+/**
+ * @author Paul Hinds
+ * @version $Id: AIPasswordField.java,v 1.3 2006/12/21 00:02:59 teknopaul Exp $
+ */
+public class AIPasswordField extends JPasswordField {
+
+	public AIPasswordField() {
+		super();
+	}
+
+	public AIPasswordField(int columns) {
+		super(columns);
+	}
+
+	public AIPasswordField(String text) {
+		super(text);
+	}
+
+	public AIPasswordField(String text, int columns) {
+		super(text, columns);
+	}
+
+	public AIPasswordField(Document doc, String txt, int columns) {
+		super(doc, txt, columns);
+	}
+
+	private Dimension prefSize = new Dimension(SizeConstants.FIELD_WIDTH, SizeConstants.FIELD_HEIGHT);
+
+	public Dimension getMinimumSize() {
+		return prefSize;
+	}
+
+	public Dimension getPreferredSize() {
+		return prefSize;
+	}
+	public void setOverflow(Dimension prefSize) {
+		this.prefSize = prefSize;
+	}
+
+	public Dimension getMaximumSize() {
+		return prefSize;
+	}
+	
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIRadioButton.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIRadioButton.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIRadioButton.java	(revision 18906)
@@ -0,0 +1,82 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JRadioButton;
+
+
+/**
+ * A JRadioButton with altered prefered size to facilitate fixing the width
+ * but still using a GridBagLayout
+ * @author Paul Hinds
+ * @version $Id: AIRadioButton.java,v 1.2 2006/12/09 15:26:09 teknopaul Exp $
+ */
+public class AIRadioButton extends JRadioButton {
+
+	public AIRadioButton() {
+		super();
+	}
+
+	public AIRadioButton(String text) {
+		super(text);
+	}
+
+	public AIRadioButton(String text, boolean selected) {
+		super(text, selected);
+	}
+
+	public AIRadioButton(Action a) {
+		super(a);
+	}
+
+	public AIRadioButton(Icon icon) {
+		super(icon);
+	}
+
+	public AIRadioButton(Icon icon, boolean selected) {
+		super(icon, selected);
+	}
+
+	public AIRadioButton(String text, Icon icon) {
+		super(text, icon);
+	}
+
+	public AIRadioButton(String text, Icon icon, boolean selected) {
+		super(text, icon, selected);
+	}
+
+	private Dimension prefSize = new Dimension(SizeConstants.FIELD_WIDTH, SizeConstants.FIELD_HEIGHT);
+
+	public Dimension getMinimumSize() {
+		return prefSize;
+	}
+
+	public Dimension getPreferredSize() {
+		return prefSize;
+	}
+	public void setOverflow(Dimension prefSize) {
+		this.prefSize = prefSize;
+	}
+
+	public Dimension getMaximumSize() {
+		return prefSize;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIShortLabel.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIShortLabel.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIShortLabel.java	(revision 18906)
@@ -0,0 +1,65 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.Icon;
+import javax.swing.JLabel;
+
+
+/**
+ * A JLabel with altered prefered size to facilitate fixing the width
+ * but still using a GridBagLayout
+ * @author Paul Hinds
+ * @version $Id: AILabel.java,v 1.2 2006/12/09 15:26:09 teknopaul Exp $
+ */
+public class AIShortLabel extends JLabel {
+
+	public AIShortLabel() {
+		super();
+	}
+	public AIShortLabel(String text) {
+		super(text);
+	}
+	public AIShortLabel(String text, int horizontalAlignment) {
+		super(text, horizontalAlignment);
+	}
+	public AIShortLabel(Icon image) {
+		super(image);
+	}
+	public AIShortLabel(Icon image, int horizontalAlignment) {
+		super(image, horizontalAlignment);
+	}
+	public AIShortLabel(String text, Icon icon, int horizontalAlignment) {
+		super(text, icon, horizontalAlignment);
+	}
+	private Dimension prefSize= new Dimension(60,
+			SizeConstants.FIELD_HEIGHT);
+	public Dimension getMinimumSize() {
+		return prefSize;
+	}
+	public Dimension getPreferredSize() {
+		return prefSize;
+	}
+	public void setOverflow(Dimension prefSize) {
+		this.prefSize = prefSize;
+	}
+	public Dimension getMaximumSize() {
+		return prefSize;
+	}
+	
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIShortTextField.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIShortTextField.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AIShortTextField.java	(revision 18906)
@@ -0,0 +1,71 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.JTextField;
+import javax.swing.text.Document;
+
+
+/**
+ * A JTextField with altered prefered size to facilitate fixing the width
+ * but still using a GridBagLayout. This text field is for use inconjunction
+ * with a button for example file chooser.
+ * @author Paul Hinds
+ * @version $Id: AIShortTextField.java,v 1.2 2006/12/09 15:26:10 teknopaul Exp $
+ */
+public class AIShortTextField extends JTextField {
+
+	public AIShortTextField() {
+		super();
+	}
+
+	public AIShortTextField(int columns) {
+		super(columns);
+	}
+
+	public AIShortTextField(String text) {
+		super(text);
+	}
+
+	public AIShortTextField(String text, int columns) {
+		super(text, columns);
+	}
+
+	public AIShortTextField(Document doc, String text, int columns) {
+		super(doc, text, columns);
+	}
+
+	private Dimension prefSize = new Dimension(SizeConstants.SHORT_FIELD_WIDTH, SizeConstants.FIELD_HEIGHT);
+
+	public Dimension getMinimumSize() {
+		return prefSize;
+	}
+
+	public Dimension getPreferredSize() {
+		return prefSize;
+	}
+	public void setOverflow(Dimension prefSize) {
+		this.prefSize = prefSize;
+	}
+
+	public Dimension getMaximumSize() {
+		return prefSize;
+	}
+
+	
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AITextfield.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AITextfield.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AITextfield.java	(revision 18906)
@@ -0,0 +1,70 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.JTextField;
+import javax.swing.text.Document;
+
+
+/**
+ * A JTextField with altered prefered size to facilitate fixing the width
+ * but still using a GridBagLayout
+ * @author Paul Hinds
+ * @version $Id: AITextfield.java,v 1.2 2006/12/09 15:26:09 teknopaul Exp $
+ */
+public class AITextfield extends JTextField {
+
+	public AITextfield() {
+		super();
+	}
+
+	public AITextfield(int columns) {
+		super(columns);
+	}
+
+	public AITextfield(String text) {
+		super(text);
+	}
+
+	public AITextfield(String text, int columns) {
+		super(text, columns);
+	}
+
+	public AITextfield(Document doc, String text, int columns) {
+		super(doc, text, columns);
+	}
+
+	private Dimension prefSize = new Dimension(SizeConstants.FIELD_WIDTH, SizeConstants.FIELD_HEIGHT);
+
+	public Dimension getMinimumSize() {
+		return prefSize;
+	}
+
+	public Dimension getPreferredSize() {
+		return prefSize;
+	}
+	public void setOverflow(Dimension prefSize) {
+		this.prefSize = prefSize;
+	}
+
+	public Dimension getMaximumSize() {
+		return prefSize;
+	}
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AppRootInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AppRootInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/AppRootInputRenderer.java	(revision 18906)
@@ -0,0 +1,20 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+public class AppRootInputRenderer
+	extends DirectoryInputRenderer {
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/CheckboxInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/CheckboxInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/CheckboxInputRenderer.java	(revision 18906)
@@ -0,0 +1,90 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.input.CheckboxInput;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.gui.GBCF;
+
+public class CheckboxInputRenderer
+	extends SwingOutputFieldRenderer {
+
+	protected CheckboxInput inputField;
+
+    protected JLabel fieldLabel = new AILabel();
+	protected AICheckBox checkBox = new AICheckBox();
+
+	public CheckboxInputRenderer() {
+	}
+	public void initComponent(JPanel parent){
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+
+
+	public void setOutputField(OutputField inputField) {
+		this.inputField = (CheckboxInput)inputField;
+	}
+	public void updateInputField(){
+		boolean selected = checkBox.isSelected();
+		if(selected)inputField.setValue("true");
+		else inputField.setValue("false");
+	}
+	public void updateDefaultValue(){
+		if(!inputField.isEditted()){
+			String newDefault = inputField.getDefaultValue();
+			checkBox.setSelected(InputField.isTrue(newDefault));
+		}
+	}
+
+    private void jbInit() throws Exception {
+		fieldLabel.setText(inputField.getDisplayText());
+		checkBox.setSelected(OutputField.isTrue(inputField.getDefaultValue()));
+		checkBox.setEnabled(!OutputField.isTrue(inputField.getForce()));
+		checkBox.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				updateInputField();
+				inputField.setEditted(true);
+			}
+		});
+    }
+	public int addSelf(JPanel content, GBCF cf,  int row, boolean overflow) {
+		content.add(fieldLabel, cf.getCell(row, 0));
+		content.add(checkBox, cf.getCell(row, 1));
+		if(overflow){
+			checkBox.setOverflow(SizeConstants.OVERFLOW_FIELD_SIZE);
+		}
+		return ++row;
+	}
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ClasspathHTMLEditorKit.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ClasspathHTMLEditorKit.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ClasspathHTMLEditorKit.java	(revision 18906)
@@ -0,0 +1,54 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.net.URL;
+
+import javax.swing.text.Element;
+import javax.swing.text.View;
+import javax.swing.text.ViewFactory;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.ImageView;
+/**
+ * HTMLEditor kit that replaces the source of images in the document
+ * with resources loaded from the classpath.
+ * @author teknopaul
+ */
+public class ClasspathHTMLEditorKit extends HTMLEditorKit {
+
+	public ViewFactory getViewFactory(){
+		
+		return new HTMLEditorKit.HTMLFactory(){
+			
+			public View create(Element elem){
+				if(! elem.getName().equals("img")){
+					return super.create(elem);
+				}
+				return new ImageView(elem){
+					public URL getImageURL() {
+						String src = (String)getElement().getAttributes().
+							getAttribute(HTML.Attribute.SRC);
+						return TextPageRenderer.class.getResource(src);
+					}
+				};
+			}
+			
+		};
+		
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/CommentOutputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/CommentOutputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/CommentOutputRenderer.java	(revision 18906)
@@ -0,0 +1,135 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Color;
+
+import javax.swing.JTextArea;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.text.JTextComponent;
+
+import org.tp23.antinstaller.input.CommentOutput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.gui.GBCF;
+
+public class CommentOutputRenderer
+	extends SwingOutputFieldRenderer {
+
+    protected JTextArea fieldLabel = new JTextArea();
+    //protected AILabel fieldLabel = new AILabel();
+    // hack callback, should move this to superclass
+    protected JTextComponent explanatoryTextField;
+
+	private static Font boldCommentFont;
+	private static Font titleCommentFont;
+	static{
+		boldCommentFont = new JLabel().getFont();// reusing the variable
+		try {
+			boldCommentFont = new Font(boldCommentFont.getFamily(), Font.BOLD, boldCommentFont.getSize());
+			titleCommentFont = new Font(boldCommentFont.getFamily(), Font.BOLD, 16);
+		}
+		catch (Exception ex) {
+			// lets not fail due to font errors
+		}
+	}
+
+	public CommentOutputRenderer() {
+	}
+
+	public void initComponent(JPanel parent){
+		fieldLabel.setLineWrap(true);
+		fieldLabel.setWrapStyleWord(true);
+		fieldLabel.setEditable(false);
+		fieldLabel.setBackground( parent.getBackground() );
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void setOutputField(OutputField outputField) {
+		this.outputField = (CommentOutput)outputField;// trap ClassCast bugs early
+	}
+	public void updateInputField(){
+	}
+
+//   hack callback, should move this to superclass
+    public JTextComponent getExplanatoryTextField() {
+        return explanatoryTextField;
+    }
+//  hack callback, should move this to superclass
+    public void setExplanatoryTextField(JTextComponent explanatoryTextField) {
+        this.explanatoryTextField = explanatoryTextField;
+    }
+    /**
+     * Since comments may now include expanded properties this should be called when the 
+     * field is rendered.  For no ONLY comment fields have property values expanded
+     */
+	public void updateDefaultValue(){
+        fieldLabel.setText(outputField.getDisplayText());
+        if(explanatoryTextField != null) {
+            explanatoryTextField.setText(outputField.getExplanatoryText());
+        }
+	}
+    private void jbInit() throws Exception {
+        
+        // FindBugs - cast is performed here to avoid overriding protected superclass field 
+        CommentOutput cOutputField = (CommentOutput)outputField;
+        
+		fieldLabel.setText(cOutputField.getDisplayText());
+		
+		if( OutputField.isTrue(cOutputField.getBold()) ){
+			fieldLabel.setFont(boldCommentFont);
+		}
+		if( OutputField.isTrue(cOutputField.getTitle()) ){
+			fieldLabel.setFont(titleCommentFont);
+		}
+    }
+	public int addSelf(JPanel content, GBCF cf,  int row, boolean overflow) {
+
+		//JPanel np = new JPanel();
+		//np.setLayout( new FlowLayout() );
+		//np.add( fieldLabel );
+
+		content.add(fieldLabel);
+
+		JPanel p = new JPanel();
+		p.setMinimumSize( new Dimension(0,1) );
+		content.add(p);
+
+		//content.add(fieldLabel);
+		/*
+		if(overflow){
+			fieldLabel.setOverflow(SizeConstants.OVERFLOW_TOTAL_SIZE);
+		} else {
+			fieldLabel.setOverflow(new Dimension(SizeConstants.FIELD_WIDTH + SizeConstants.LABEL_WIDTH, SizeConstants.FIELD_HEIGHT));
+		}
+		*/
+		return ++row;
+	}
+
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ConditionalFieldRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ConditionalFieldRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ConditionalFieldRenderer.java	(revision 18906)
@@ -0,0 +1,111 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.util.ArrayList;
+
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.ResourceBundleHelper;
+import org.tp23.antinstaller.input.ConditionalField;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.renderer.RendererFactory;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+import org.tp23.antinstaller.runtime.logic.Expression;
+import org.tp23.gui.GBCF;
+
+/**
+ * Conditionally render a collection of fields.
+ * For now, will ONLY handle <code>&lt;hiddeb&gt;</code> fields
+ *
+ * @author mwilson
+ * @version $Id
+ * @since 0.7.4 patch 7
+ */
+public class ConditionalFieldRenderer extends SwingOutputFieldRenderer {
+    
+    private ResourceBundleHelper resHelper = new ResourceBundleHelper( "resources.LanguagePack" );
+    private ConditionalField condField;
+    private ArrayList renderers = new ArrayList( );
+
+    public ConditionalFieldRenderer() {
+    }
+
+    public void initComponent( JPanel parent ) {
+
+        condField = (ConditionalField) outputField;
+        InputField[] fields = condField.getFields();
+
+        for (int i = 0; i < fields.length; i++) {
+            try {
+                SwingOutputFieldRenderer renderer = RendererFactory.getSwingRenderer(fields[i]);
+                renderer.setOutputField(fields[i]);
+                renderer.setInstallerContext(ctx);
+                renderers.add( renderer );
+            }
+            catch( ClassNotFoundException clsNotFndExc ) {
+
+            }
+        }
+
+    }
+
+    public void updateInputField() {
+
+        if( expressionIsTrue() ) {
+            int listSize  = renderers.size();
+            for( int i = 0; i < listSize; i++ ) {
+                SwingOutputFieldRenderer renderer = (SwingOutputFieldRenderer) renderers.get( i );
+                renderer.updateInputField();
+            }
+        }
+
+    }
+
+    public void updateDefaultValue() {
+        if( expressionIsTrue() ) {
+            int listSize  = renderers.size();
+            for( int i = 0; i < listSize; i++ ) {
+                SwingOutputFieldRenderer renderer = (SwingOutputFieldRenderer) renderers.get( i );
+                renderer.updateDefaultValue();
+            }
+        }
+    }
+
+    public void renderError() {
+        int listSize  = renderers.size();
+        for( int i = 0; i < listSize; i++ ) {
+            SwingOutputFieldRenderer renderer = (SwingOutputFieldRenderer) renderers.get( i );
+            renderer.renderError();
+        }
+    }
+
+    public int addSelf( JPanel content, GBCF cf, int row, boolean overflow ) {
+        return row;
+    }
+
+    private boolean expressionIsTrue() {
+        Expression expr = null;
+
+        try {
+            expr = condField.getExpression();
+        }
+        catch( ConfigurationException configExc ) {
+            ctx.log( resHelper.getMessage( "invalid.conditional.expression", configExc ) );
+            return false;
+        }
+
+         return expr.evaluate();
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ConfirmPasswordTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ConfirmPasswordTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ConfirmPasswordTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,25 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.util.ResourceBundle;
+
+public class ConfirmPasswordTextInputRenderer extends PasswordTextInputRenderer{
+	
+	protected String getErrorMessage(){
+		return org.tp23.antinstaller.Installer.langPack.getString("passwordsDoNotMatch");
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/DateInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/DateInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/DateInputRenderer.java	(revision 18906)
@@ -0,0 +1,102 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Color;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.util.ResourceBundle;
+
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.input.DateInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+import org.tp23.gui.GBCF;
+
+public class DateInputRenderer
+	extends SwingOutputFieldRenderer {
+
+	protected DateInput inputField;
+
+    protected AILabel fieldLabel = new AILabel();
+    protected AITextfield jTextField = new AITextfield();
+	protected Color origFore;
+
+	public DateInputRenderer() {
+		origFore = jTextField.getForeground();
+	}
+
+	public void initComponent(JPanel parent){
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void setOutputField(OutputField inputField) {
+		this.inputField = (DateInput)inputField;
+		this.inputField.setValue(this.inputField.getDefaultValue());
+	}
+	public void updateInputField(){
+		inputField.setValue(jTextField.getText());
+	}
+	public void updateDefaultValue(){
+		if(!inputField.isEditted())jTextField.setText(inputField.getDefaultValue());
+	}
+
+    private void jbInit() throws Exception {
+		fieldLabel.setText(inputField.getDisplayText());
+		jTextField.setText(inputField.getDefaultValue());
+		jTextField.addKeyListener(new KeyAdapter() {
+			public void keyTyped(KeyEvent e) {
+				if(e.getKeyChar() != '\t'){
+					inputField.setEditted(true);
+				}
+			}
+		});
+		jTextField.addFocusListener(new FocusAdapter() {
+			public void focusLost(FocusEvent fe){
+				jTextField.setForeground(origFore);
+			}
+		});
+    }
+	public int addSelf(JPanel content, GBCF cf,  int row,boolean overflow) {
+		content.add(fieldLabel, cf.getCell(row, 0));
+		content.add(jTextField, cf.getCell(row, 1));
+		if(overflow){
+			jTextField.setOverflow(SizeConstants.OVERFLOW_FIELD_SIZE);
+		}
+		return ++row;
+	}
+
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+		MessageRenderer mr = ctx.getMessageRenderer();
+		mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("notCorrectFormat") + "\n\n " + inputField.getDateFormat());
+		//fixed BUG1295944 mr.printMessage("The field is not of the correct format\n\n "+inputField.getDateFormat());
+		this.jTextField.requestFocus();
+		this.jTextField.setForeground(Color.red);
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/DirectoryInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/DirectoryInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/DirectoryInputRenderer.java	(revision 18906)
@@ -0,0 +1,151 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import javax.swing.BoxLayout;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.Insets;
+import java.io.File;
+import java.util.ResourceBundle;
+
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+import javax.swing.JLabel;
+
+import org.tp23.antinstaller.input.DirectoryInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.gui.GBCF;
+import org.tp23.gui.widget.DefaultingDirectoryChooser;
+
+public class DirectoryInputRenderer
+	extends SwingOutputFieldRenderer {
+
+    private static final String EMPTY_STRING = "";
+	protected DirectoryInput inputField;
+	private boolean createMode;
+	private DefaultingDirectoryChooser chooser = null;
+
+	protected JLabel fieldLabel = new AILabel();
+	protected AIShortTextField jTextField = new AIShortTextField();
+	protected AIButton browseButton = new AIButton();
+	protected JPanel browsePanel = new JPanel();
+	private JPanel parent;
+
+	public DirectoryInputRenderer() {
+	}
+	public void initComponent(JPanel parent){
+		this.parent = parent;
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void setOutputField(OutputField inputField) {
+		this.inputField = (DirectoryInput)inputField;
+		this.inputField.setValue(this.inputField.getDefaultValue(true));
+		this.createMode = OutputField.isTrue(this.inputField.getCreate());
+
+	}
+	public void updateInputField(){
+		if( !inputField.getDefaultValue(true).equals(jTextField.getText()) ){
+			inputField.setEditted(true);			
+		}
+		inputField.setValue(jTextField.getText());	
+	}
+	public void updateDefaultValue(){
+		if(!inputField.isEditted())jTextField.setText(inputField.getDefaultValue(true));
+	}
+
+	private void jbInit() throws Exception {
+		BorderLayout bl = new BorderLayout();
+		//bl.setHgap(3);
+		browsePanel.setLayout(bl);
+		fieldLabel.setText(inputField.getDisplayText());
+		jTextField.setText(inputField.getDefaultValue(true));
+		browsePanel.add(jTextField, BorderLayout.CENTER);
+
+		JPanel browseButtonWrapper = new JPanel( new BorderLayout() );
+		browseButtonWrapper.add( browseButton, BorderLayout.EAST );
+		browsePanel.add(browseButtonWrapper, BorderLayout.SOUTH);
+		browseButton.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				File selectedFile = null;
+				if(chooser==null){
+					chooser = new DefaultingDirectoryChooser(createMode);
+					//chooser.setFileHidingEnabled(false);
+				}
+
+                //PR 1468823 - if input is cleared, dialogue won't be displayed
+                String dirPath = jTextField.getText();
+                if( dirPath == null ) {
+                    dirPath = EMPTY_STRING;
+                }
+                dirPath = dirPath.trim();
+
+                if( dirPath.length() == 0 ) {
+                    dirPath = inputField.getDefaultValue(true);
+                    jTextField.setText(dirPath);
+                }
+                chooser.setDefaultDirectory(new File(dirPath));
+
+                int returnVal = chooser.showDialog(parent, org.tp23.antinstaller.Installer.langPack.getString("selectFolder") );
+				if (returnVal == JFileChooser.APPROVE_OPTION) {
+					selectedFile = chooser.getSelectedFile();
+				}
+				if (selectedFile != null) {
+					jTextField.setText(selectedFile.getAbsolutePath());
+					inputField.setValue(selectedFile.getAbsolutePath());
+					inputField.setEditted(true);
+				}
+			}
+		});
+		browseButton.setText(org.tp23.antinstaller.Installer.langPack.getString("browseDotDotDot"));
+		browseButton.setPreferredSize(new Dimension(150, SizeConstants.FIELD_HEIGHT));
+
+		jTextField.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				updateInputField();
+			}
+		});
+
+	}
+	public int addSelf(JPanel content,GBCF cf,  int row, boolean overflow) {
+		FlowLayout l = new FlowLayout(FlowLayout.LEFT);
+		JPanel p = new JPanel(l);
+		p.add(fieldLabel);
+		content.add(p);
+		content.add(browsePanel);
+		if(overflow){
+			jTextField.setOverflow(SizeConstants.OVERFLOW_SHORT_FIELD_SIZE);
+		}
+		return ++row;
+	}
+
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+        jTextField.requestFocus();
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ExtValidatedTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ExtValidatedTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ExtValidatedTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,40 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Color;
+
+import org.tp23.antinstaller.input.ExtValidatedTextInput;
+import org.tp23.antinstaller.input.Validator;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+
+public class ExtValidatedTextInputRenderer
+	extends ValidatedTextInputRenderer {
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+		MessageRenderer mr = ctx.getMessageRenderer();
+		ExtValidatedTextInput extVal = (ExtValidatedTextInput)inputField;
+		Validator validator = extVal.getValidator();
+		Throwable t = extVal.getThrowable();
+		mr.printMessage(validator.getErrorMessage(t, null));
+		this.jTextField.requestFocus();
+		this.jTextField.setForeground(Color.red);
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/FileInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/FileInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/FileInputRenderer.java	(revision 18906)
@@ -0,0 +1,137 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.io.File;
+import java.util.ResourceBundle;
+
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.input.FileInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+import org.tp23.gui.GBCF;
+
+public class FileInputRenderer
+	extends SwingOutputFieldRenderer {
+
+	protected FileInput inputField;
+
+	protected AILabel fieldLabel = new AILabel();
+	protected AIShortTextField jTextField = new AIShortTextField();
+	protected AIButton browseButton = new AIButton();
+	protected JPanel browsePanel = new JPanel();
+	private Color origFore = jTextField.getForeground();
+	private JPanel parent;
+
+	public FileInputRenderer() {
+	}
+	public void initComponent(JPanel parent){
+		this.parent=parent;
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void setOutputField(OutputField inputField) {
+		this.inputField = (FileInput)inputField;
+		this.inputField.setValue(this.inputField.getDefaultValue(true));
+	}
+	public void updateInputField(){
+		if( !inputField.getDefaultValue(true).equals(jTextField.getText()) ){
+			inputField.setEditted(true);			
+		}
+		inputField.setValue(jTextField.getText());
+	}
+	public void updateDefaultValue(){
+		if(!inputField.isEditted())jTextField.setText(inputField.getDefaultValue(true));
+	}
+
+	private void jbInit() throws Exception {
+		BorderLayout bl = new BorderLayout();
+		//bl.setHgap(3);
+		browsePanel.setLayout(bl);
+		fieldLabel.setText(inputField.getDisplayText());
+		jTextField.setText(inputField.getDefaultValue(true));
+		browsePanel.add(jTextField, BorderLayout.CENTER);
+		browsePanel.add(browseButton, BorderLayout.EAST);
+		browseButton.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				File selectedFile = null;
+
+				JFileChooser chooser = new JFileChooser();
+				chooser.setFileHidingEnabled(false);
+				chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
+				if (jTextField.getText() != null) {
+					chooser.setCurrentDirectory(new File(jTextField.getText()).getParentFile());
+				}
+				int returnVal = chooser.showDialog(parent, e.getActionCommand());
+				if (returnVal == JFileChooser.APPROVE_OPTION) {
+					selectedFile = chooser.getSelectedFile();
+				}
+				if (selectedFile != null) {
+					jTextField.setText(selectedFile.getAbsolutePath());
+					inputField.setValue(selectedFile.getAbsolutePath());
+					inputField.setEditted(true);
+				}
+			}
+		});
+		browseButton.setText(org.tp23.antinstaller.Installer.langPack.getString("selectFile"));
+		browseButton.setPreferredSize(new Dimension(150, SizeConstants.FIELD_HEIGHT));
+
+		jTextField.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				updateInputField();
+			}
+		});
+		jTextField.addFocusListener(new FocusAdapter() {
+			public void focusLost(FocusEvent fe){
+				jTextField.setForeground(origFore);
+			}
+		});
+
+	}
+	public int addSelf(JPanel content,GBCF cf,  int row,boolean overflow) {
+		content.add(fieldLabel,cf.getCell(row,0));
+		content.add(browsePanel,cf.getCell(row,1));
+		if(overflow){
+			jTextField.setOverflow(SizeConstants.OVERFLOW_SHORT_FIELD_SIZE);
+		}
+		return ++row;
+	}
+
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+		MessageRenderer mr = ctx.getMessageRenderer();
+		mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("fileNotExist"));
+		this.jTextField.requestFocus();
+		this.jTextField.setForeground(Color.red);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/HiddenPropertyInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/HiddenPropertyInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/HiddenPropertyInputRenderer.java	(revision 18906)
@@ -0,0 +1,66 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.input.HiddenPropertyInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.gui.GBCF;
+
+/**
+ * Swing UI hidden property renderer - displays nothing
+ *
+ * @author mwilson
+ * @version $Id
+ * @since 0.7.4 patch 6
+ */
+public class HiddenPropertyInputRenderer extends SwingOutputFieldRenderer
+{
+    HiddenPropertyInput inputField;
+
+    public void setOutputField( OutputField ioField )
+    {
+        inputField = (HiddenPropertyInput) ioField;
+        inputField.setInputResult( inputField.getDefaultValue() );
+    }
+
+    public void initComponent( JPanel parent )
+    {
+
+    }
+
+    public void updateInputField()
+    {
+
+    }
+
+    public void updateDefaultValue()
+    {
+        if( !inputField.isEditted() )
+        {
+            inputField.setInputResult( inputField.getDefaultValue() );
+        }
+    }
+
+    public void renderError()
+    {
+
+    }
+
+    public int addSelf( JPanel content, GBCF cf, int row, boolean overflow )
+    {
+        return row;
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/LargeSelectInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/LargeSelectInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/LargeSelectInputRenderer.java	(revision 18906)
@@ -0,0 +1,114 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.ResourceBundle;
+
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.input.LargeSelectInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.gui.GBCF;
+
+public class LargeSelectInputRenderer
+	extends SwingOutputFieldRenderer {
+
+	protected LargeSelectInput inputField;
+
+	protected JLabel fieldLabel = new AILabel();
+	protected JComboBox optionCombo = new JComboBox();
+
+	//private int numOfEntries = 2;
+
+	public LargeSelectInputRenderer() {
+	}
+	public void initComponent(JPanel parent){
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+
+
+	public void setOutputField(OutputField inputField) {
+		this.inputField=(LargeSelectInput)inputField;
+		//this.numOfEntries=this.inputField.getOptions().length;
+	}
+	public void updateInputField(){
+
+		int selectedIdx = optionCombo.getSelectedIndex();
+		if (selectedIdx != -1) {
+			inputField.setValue(inputField.getOptions()[selectedIdx].value);
+
+		}else{
+			inputField.setValue(inputField.getDefaultValue());
+		}
+	}
+	public void updateDefaultValue(){
+		if(!inputField.isEditted()){
+
+			String newDefault = inputField.getDefaultValue();
+
+			for(int i=0;i<optionCombo.getItemCount();i++){
+				if(newDefault.equals(inputField.getOptions()[i].value)){
+					optionCombo.setSelectedIndex(i);
+					break;
+				}
+			}
+		}
+	}
+
+    private void jbInit() throws Exception {
+		fieldLabel.setText(inputField.getDisplayText());
+		LargeSelectInput.Option[] options = inputField.getOptions();
+
+
+		for (int i = 0; i < options.length; i++) {
+			optionCombo.addItem(options[i].getText());
+			if(options[i].value.equals(inputField.getDefaultValue())){
+				optionCombo.setSelectedIndex(i);
+			}
+		}
+		optionCombo.addItemListener(new ItemListener(){
+			public void itemStateChanged(ItemEvent e) {
+				inputField.setEditted(true);
+			}
+		});
+    }
+	public int addSelf(JPanel content,GBCF cf,  int row,boolean overflow) {
+		content.add(fieldLabel,cf.getCell(row,0));
+		content.add(optionCombo,cf.getCell(row,1));
+		if(overflow){
+			optionCombo.setPreferredSize(SizeConstants.OVERFLOW_FIELD_SIZE);
+		}
+		return ++row;
+	}
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+		ctx.getMessageRenderer().printMessage(org.tp23.antinstaller.Installer.langPack.getString("notValidSelection"));
+		optionCombo.requestFocus();
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/LicensePageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/LicensePageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/LicensePageRenderer.java	(revision 18906)
@@ -0,0 +1,113 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ResourceBundle;
+
+import javax.swing.BorderFactory;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.page.LicensePage;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+
+/**
+ *
+ * <p>Renders the license page </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+* @todo this could be an input type and simple renderer
+ * @author Paul Hinds
+ * @version $Id: LicensePageRenderer.java,v 1.5 2007/01/12 10:49:09 anothermwilson Exp $
+ */
+public class LicensePageRenderer
+	extends SwingPageRenderer {
+
+	private JTextArea licenseTextArea = new JTextArea();
+	private JScrollPane scrollPane = new JScrollPane();
+
+	public LicensePageRenderer(){
+	}
+
+	public boolean validateFields()throws ValidationException{
+		return true; // @todo option to force accepting or tick box to accept
+	}
+
+	public void reInstanceInit() {
+		getNextButton().setText( org.tp23.antinstaller.Installer.langPack.getString( "license.next.text" ) );
+		getCancelButton().setText( org.tp23.antinstaller.Installer.langPack.getString( "license.cancel.text" ) );
+	}
+
+	public void instanceInit() throws Exception {
+
+		String resource = ((LicensePage)page).getResource();
+		InputStream licensein = this.getClass().getResourceAsStream(resource);
+		if (licensein == null) {
+			//delete me
+			System.out.println( "licensein is null" );
+			throw new ConfigurationException("License resource '" + resource + "' is missing from installer");
+		}
+		BufferedReader reader = new BufferedReader(new InputStreamReader(licensein));
+		StringBuffer sb = new StringBuffer();
+		String line;
+		while((line = reader.readLine()) != null){
+			sb.append(line);
+			sb.append('\n');
+		}
+
+		licenseTextArea.setText(sb.toString());
+		licenseTextArea.setTabSize(4);
+		licenseTextArea.setAutoscrolls(true);
+		licenseTextArea.setCaretPosition(0);
+		licenseTextArea.setEditable(false);
+		licenseTextArea.setLineWrap(true);
+		licenseTextArea.setWrapStyleWord(true);
+		licenseTextArea.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
+		scrollPane.getViewport().add(licenseTextArea);
+		scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+
+		scrollPane.setBorder(
+			BorderFactory.createCompoundBorder(
+				BorderFactory.createEmptyBorder(4, 4, 4, 4),
+				BorderFactory.createEtchedBorder()
+				)
+			);
+		this.add(scrollPane, BorderLayout.CENTER);
+
+		getNextButton().setText( org.tp23.antinstaller.Installer.langPack.getString( "license.next.text" ) );
+		getNextButton().setIcon(getImage("/resources/icons/ok.png"));
+		getCancelButton().setText( org.tp23.antinstaller.Installer.langPack.getString( "license.cancel.text" ) );
+
+    }
+
+	public void updateInputFields(){
+		;
+	}
+
+
+
+	/**
+	 * updateDefaultValues
+	 */
+	public void updateDefaultValues() {
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/PageCompletionListener.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/PageCompletionListener.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/PageCompletionListener.java	(revision 18906)
@@ -0,0 +1,33 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import org.tp23.antinstaller.page.Page;
+/**
+ *
+ * <p>Called when a page is complete and the user presses next.
+* At this point the pages fields are validated.  If validation passes
+* the next page is shown </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: PageCompletionListener.java,v 1.1.1.1 2005/10/18 18:21:01 teknopaul Exp $
+ */
+public interface PageCompletionListener {
+	public void pageComplete(Page page);
+	public void pageBack(Page page);
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/PasswordTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/PasswordTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/PasswordTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,64 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Color;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.util.ResourceBundle;
+
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.renderer.MessageRenderer;
+import org.tp23.gui.GBCF;
+
+public class PasswordTextInputRenderer extends ValidatedTextInputRenderer{
+	
+    public PasswordTextInputRenderer() {
+		this.jTextField = new AIPasswordField();
+		origFore = jTextField.getForeground(); // this is lazy there must be a way to shift this line of code to the superclass (is it worth it)
+    }
+
+
+	public void renderError() {
+		MessageRenderer mr = ctx.getMessageRenderer();
+		mr.printMessage( getErrorMessage() );
+		// fixed BUG:1295944 mr.printMessage("The password is not of the correct format\n\n e.g. "+inputField.getDefaultValue());
+		this.jTextField.requestFocus();
+		this.jTextField.setForeground(Color.red);
+		jTextField.addKeyListener(new KeyAdapter() {
+			public void keyTyped(KeyEvent e) {
+				if(e.getKeyChar() != '\t'){
+					inputField.setEditted(true);
+				}
+			}
+		});
+	}
+	public int addSelf(JPanel content, GBCF cf,  int row, boolean overflow) {
+		content.add(fieldLabel, cf.getCell(row, 0));
+		content.add(jTextField, cf.getCell(row, 1));
+		if(overflow){
+			((AIPasswordField)jTextField).setOverflow(SizeConstants.OVERFLOW_FIELD_SIZE);
+		}
+		return ++row;
+	}
+	protected String getErrorMessage(){
+		return org.tp23.antinstaller.Installer.langPack.getString("notCorrectPasswordFormat") + 
+				"\n\n e.g. " + 
+				inputField.getDefaultValue();
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ProgressPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ProgressPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ProgressPageRenderer.java	(revision 18906)
@@ -0,0 +1,251 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import javax.swing.BorderFactory;
+import javax.swing.JLabel;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JToggleButton;
+import javax.swing.ImageIcon;
+
+import org.tp23.antinstaller.page.ProgressPage;
+import org.tp23.antinstaller.renderer.AntOutputRenderer;
+import org.tp23.gui.widget.SystemOutJTextArea;
+/**
+ *
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @todo change absolute to Border layout and panels
+ * @author Paul Hinds
+ * @version $Id: ProgressPageRenderer.java,v 1.4 2006/12/21 00:03:00 teknopaul Exp $
+ */
+public class ProgressPageRenderer
+	extends SwingPageRenderer
+	implements AntOutputRenderer {
+
+	private static final int MESSAGE_PANEL_HEIGHT = 30;
+
+	private JPanel contentPanel = new JPanel();
+
+	private JTabbedPane jTabbedPane = new JTabbedPane();
+	private JPanel messagesPanel = new JPanel();
+	private BorderLayout borderLayout1 = new BorderLayout();
+	private JToggleButton jToggleButton = new JToggleButton();
+	private JLabel feedBackLabel = new JLabel();
+	private JLabel progressOn = null;
+	private JLabel progressOff = null;
+	private JPanel messagesLeft = null;
+	private JPanel messagesRight = null;
+
+	private SystemOutJTextArea outPanel = new SystemOutJTextArea();
+	private SystemOutJTextArea errPanel = new SystemOutJTextArea();
+	
+	private boolean showTargets = true;
+	private JScrollPane progressScrollPane = new JScrollPane();;
+	private ProgressPanel progressPanel;
+
+	public ProgressPageRenderer() {
+		errPanel.setAsSystemErr();
+		outPanel.setAsSystemOut();
+	}
+    /**
+	 * getErr
+	 * @return PrintStream
+	 */
+	public PrintStream getErr() {
+		return errPanel.getOut();
+	}
+    /**
+	 * getOut
+	 * @return PrintStream
+	 */
+	public PrintStream getOut() {
+		return outPanel.getOut();
+	}
+
+	/**
+	 * instanceInit
+	 */
+	public void reInstanceInit() {
+		feedBackLabel.setText(org.tp23.antinstaller.Installer.langPack.getString("click")+" "+ctx.getInstaller().getFinishButtonText()+" "+org.tp23.antinstaller.Installer.langPack.getString("toContinue"));
+		jToggleButton.setText(org.tp23.antinstaller.Installer.langPack.getString("showDetails"));
+
+		jTabbedPane.removeAll();
+		jTabbedPane.add(org.tp23.antinstaller.Installer.langPack.getString("output"), outPanel);
+		jTabbedPane.add(org.tp23.antinstaller.Installer.langPack.getString("errors"), errPanel);
+	}
+
+	public void instanceInit() {
+		showTargets = ((ProgressPage)page).isShowTargets();
+		contentPanel.setLayout(borderLayout1);
+		this.add(contentPanel,BorderLayout.CENTER);
+		
+		messagesPanel.setLayout( new BorderLayout() );
+		//Dimension messPanelSize = new Dimension(SizeConstants.PAGE_WIDTH,MESSAGE_PANEL_HEIGHT);
+		//messagesPanel.setSize(messPanelSize);
+		//messagesPanel.setPreferredSize(messPanelSize);
+		//messagesPanel.setMaximumSize(messPanelSize);
+		//messagesPanel.setMinimumSize(messPanelSize);
+
+		ImageIcon progressOnIcon = createImageIcon("/resources/icons/progressOn.gif");
+		progressOn = new JLabel( progressOnIcon );
+		progressOnIcon.setImageObserver(progressOn);
+		progressOff = new JLabel( createImageIcon("/resources/icons/progressOff.gif") );
+
+		//FIXME not i18n properly since the sentence is not correct ordering in German
+		feedBackLabel.setText(org.tp23.antinstaller.Installer.langPack.getString("click")+" "+ctx.getInstaller().getFinishButtonText()+" "+org.tp23.antinstaller.Installer.langPack.getString("toContinue"));
+		//feedBackLabel.setBounds(new Rectangle(115, 7, 272, 22));
+		jToggleButton.setText(org.tp23.antinstaller.Installer.langPack.getString("showDetails"));
+		//jToggleButton.setBounds(new Rectangle(5, 7, 104, 22));
+		//jToggleButton.setMargin(new Insets(0,0,0,0));
+
+		messagesLeft = new JPanel();
+		messagesLeft.add(jToggleButton, null);
+		messagesLeft.add(feedBackLabel, null);
+
+		messagesRight = new JPanel();
+		messagesRight.add( progressOff );
+
+		messagesPanel.add(messagesLeft, BorderLayout.WEST);
+		messagesPanel.add(messagesRight, BorderLayout.EAST);
+		
+		jToggleButton.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent e) {
+				if(jToggleButton.isSelected()){
+					if(showTargets){
+						contentPanel.remove(progressScrollPane);
+					}
+					contentPanel.add(jTabbedPane, BorderLayout.CENTER);
+					contentPanel.doLayout();
+					contentPanel.repaint();
+				}
+				else {
+					contentPanel.remove(jTabbedPane);
+					if(showTargets){
+						contentPanel.add(progressScrollPane, BorderLayout.CENTER);
+						progressScrollPane.revalidate();
+					}
+					contentPanel.doLayout();
+					contentPanel.repaint();
+				}
+			}
+		});
+
+		jToggleButton.setIcon(getImage("/resources/icons/showdetails.png"));
+		contentPanel.add(messagesPanel, BorderLayout.NORTH);
+
+
+		if(showTargets){
+			progressScrollPane.setBorder(BorderFactory.createEmptyBorder(10,5,5,5));
+			contentPanel.add(progressScrollPane, BorderLayout.CENTER);
+		}
+		jTabbedPane.add(org.tp23.antinstaller.Installer.langPack.getString("output"), outPanel);
+		jTabbedPane.add(org.tp23.antinstaller.Installer.langPack.getString("errors"), errPanel);
+//		if(OutputField.isTrue( ctx.getInstaller().getAntialiased())){
+//			outPanel.setAntialiased(true);
+//			errPanel.setAntialiased(true);
+//		}
+
+
+		//jTabbedPane.setVisible(false);
+		jTabbedPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+		contentPanel.setMaximumSize(new Dimension(SizeConstants.PAGE_WIDTH, Integer.MAX_VALUE));
+		contentPanel.setMinimumSize(new Dimension(SizeConstants.PAGE_WIDTH, 100));
+		contentPanel.setPreferredSize(new Dimension(SizeConstants.PAGE_WIDTH, SizeConstants.PAGE_HEIGHT-100));
+		//contentPanel.add(jTabbedPane, null);
+		//jTabbedPane.setBounds(new Rectangle(4, MESSAGE_PANEL_HEIGHT, PAGE_WIDTH-12, 214));
+
+
+		this.getNextButton().setVisible(false);
+		this.getFinishButton().setText(ctx.getInstaller().getFinishButtonText());
+		this.getFinishButton().setVisible(true);
+		this.getFinishButton().addActionListener(
+			new ActionListener() {
+				public void actionPerformed( ActionEvent e ) {
+					messagesRight.removeAll();
+					messagesRight.add( progressOn );
+				}
+			}
+		);
+
+	}
+
+	public void setContext(SwingInstallerContext swingCtx){
+		super.setContext(swingCtx);
+		if(showTargets){
+			progressPanel = new ProgressPanel(swingCtx.getInstallerContext());
+			progressScrollPane.getViewport().add(progressPanel);
+			this.swingCtx.setProgressPanel(progressPanel);
+		}
+		this.swingCtx.setFeedBackLabel(feedBackLabel);
+	}
+
+
+	/**
+	 * updateInputFields
+	 */
+	public void updateInputFields() {
+
+	}
+
+
+
+	/**
+	 * validateFields
+	 *
+	 * @return boolean
+	 */
+	public boolean validateFields() {
+		return true;
+	}
+
+
+
+	/**
+	 * updateDefaultValues
+	 */
+	public void updateDefaultValues() {
+	}
+
+    /** Returns an ImageIcon, or null if the path was invalid. */
+    protected static ImageIcon createImageIcon(String path) {
+        java.net.URL imgURL = org.tp23.antinstaller.Installer.class.getResource(path);
+        if (imgURL != null) {
+            return new ImageIcon(imgURL);
+        } else {
+            System.err.println("Couldn't find file: " + path);
+            return null;
+        }
+    }
+
+	public void stopPage() {
+		messagesRight.removeAll();
+		messagesRight.add( progressOff );
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ProgressPanel.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ProgressPanel.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ProgressPanel.java	(revision 18906)
@@ -0,0 +1,279 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.JPanel;
+import javax.swing.Scrollable;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.Target;
+import org.tp23.antinstaller.InstallerContext;
+
+
+/**
+ * Progress panel prints a graphical view of the progress of the Ant targets
+ * being run.  It supports displaying one layer of dependent targets.
+ * @author Paul Hinds
+ * @version $Id: ProgressPanel.java,v 1.5 2006/12/21 00:02:59 teknopaul Exp $
+ */
+public class ProgressPanel extends JPanel implements Scrollable{
+
+	public static final int tHeight = 19;
+	public static final int leftIndent = 15;
+	public static final int DONE = 0;
+	public static final int INPROGRESS = 1;
+	public static final int TODO = 2;
+	private static final Color progressColor = new Color(0, 125, 0);
+	private static final Font mainFont = new Font("Dialog", Font.PLAIN, 11);
+	private static final Font subFont = new Font("Dialog", Font.PLAIN, 10);
+	List targets = null;
+	
+	private final InstallerContext ctx;
+	private int mainTargetPos = 0;
+	private ProgressModel currentPM = null;
+
+	public ProgressPanel(InstallerContext ctx) {
+		super(true);
+		this.ctx = ctx;
+	}
+
+	public synchronized void prepareCalledTargets(){
+		List targetStrings = ctx.getInstaller().getTargets(ctx);
+		Iterator iter = targetStrings.iterator();
+		targets = new ArrayList();
+		while (iter.hasNext()) {
+			String tgt = (String) iter.next();
+			targets.add(new ProgressModel(tgt));
+		}
+		this.setSize(getSize());// panel size changes
+		revalidate();
+		repaint();
+	}
+	/**
+	 * This method assumes that we are send target started methods in order
+	 * but that we do not have the information about "depends" targets and have to
+	 * insert the information as it arrives.  If a TargetStarted event arrives that
+	 * is not the expected target is is assumed to be a depends.
+	 * @param buildEvent
+	 */
+	public synchronized void targetStarted(BuildEvent buildEvent){
+		try {
+			Target tgt = buildEvent.getTarget();
+			ProgressModel pm = (ProgressModel)targets.get(mainTargetPos);
+            pm.state = INPROGRESS;
+			if(tgt.getName().equals(pm.name)){
+				// main target
+				currentPM = pm;
+				mainTargetPos++;
+				revalidate();
+				repaint();
+			}
+			else {
+				//dependency
+				ProgressModel dependency = new ProgressModel(tgt.getName());
+				dependency.state = INPROGRESS;
+				if(currentPM != null){
+					currentPM.state = DONE;// this to catch antcall strangenesses
+				}
+				currentPM = dependency;
+				pm.subTargets.add(dependency);
+				this.setSize(getSize());// panel size changes
+				revalidate();
+				repaint();
+			}
+		}
+		catch (Exception e) {
+			ctx.log(e);
+		}
+	}
+	public synchronized void targetFinished() {
+		// BUG 1494105 reports NPE here, looks like no targets specified in his antinstaller-config.xml
+		currentPM.state = DONE;
+	}
+
+	/**
+	 * N.B. buildFinished must be fired manually in Ant
+	 */
+	public synchronized void buildFinished() {
+        // this is done because antcall sometimes results in targetFinished not being called
+        setToDone(targets);
+		repaint();
+	}
+    
+    private void setToDone(List pModels){
+        if(pModels == null || pModels.size() == 0){
+        	return;
+        }
+        Iterator iter = pModels.iterator();
+        while (iter.hasNext()) {
+            ProgressModel pm = (ProgressModel)iter.next();
+            pm.state = DONE;
+            setToDone(pm.subTargets);
+        }
+    }
+    /**
+     */
+	public synchronized void paintComponent(Graphics g){
+		super.paintComponent(g);
+		if(targets == null){
+			return;
+		}
+//		g.setColor(getBackground());
+//		g.fillRect(g.getClipBounds().x,
+//					g.getClipBounds().y,
+//					g.getClipBounds().width,
+//					g.getClipBounds().height);
+		Iterator iter = targets.iterator();
+		int offset = 0;
+		for(int i = 1; iter.hasNext(); i++){
+			ProgressModel pmodel = (ProgressModel)iter.next();
+			drawTarget(pmodel, (Graphics2D)g, offset, i < targets.size(), i > 1);
+			offset += tHeight;
+			offset += pmodel.subTargets.size() * tHeight;
+		}
+	}
+
+	public synchronized Dimension getPreferredSize(){
+		return getSize();
+	}
+	/**
+	 * @see java.awt.Component#getSize()
+	 */
+	public synchronized Dimension getSize() {
+		if(targets == null){
+			return new Dimension(SizeConstants.PAGE_WIDTH, tHeight * 5);
+		}
+		int count = targets.size();
+		Iterator iter = targets.iterator();
+		while(iter.hasNext()){
+			ProgressModel pmodel = (ProgressModel)iter.next();
+			count += pmodel.subTargets.size();
+		}
+		return new Dimension(SizeConstants.PAGE_WIDTH, count * tHeight);
+	}
+	/**
+	 *
+	 * @param target the main target to be rendered
+	 * @param g
+	 * @param yOffset the vertical offset where this target should be drawn
+	 * @param hasMore if false this target is the last in the list
+	 * @param hasPrev if false this target is the first in the list
+	 */
+	private void drawTarget(ProgressModel target, Graphics2D g,
+			int yOffset, boolean hasMore, boolean hasPrev){
+		g.setFont(mainFont);
+		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		g.setColor(Color.gray);
+		//7 vertical line (up)
+		if(hasPrev){
+			g.drawLine(leftIndent + 8, yOffset, leftIndent + 8, yOffset + 8);
+		}
+		//7 vertical line (down)
+		if(hasMore || target.subTargets.size() > 0){
+			g.drawLine(leftIndent + 8, (tHeight/2) + yOffset, 
+					leftIndent + 8, tHeight + yOffset);
+		}
+		// sideways line
+		int xOffset = 0;
+		g.drawLine(leftIndent + 8, 8 + yOffset, leftIndent + xOffset + 20, 8 + yOffset);
+		if(target.state == DONE){
+			g.setColor(Color.darkGray);
+		}
+		if(target.state == INPROGRESS){
+			g.setColor(progressColor);
+		}
+		if(target.state == TODO){
+			g.setColor(Color.gray);
+		}
+		g.fillRoundRect(leftIndent + xOffset + 3, yOffset + 4, 11, 9, 7, 7);
+		g.setColor(Color.black);
+		g.drawString(target.name, leftIndent + xOffset + 22, 13 + yOffset);
+		if(target.subTargets.size() > 0){
+			Iterator iter = target.subTargets.iterator();
+			for(int i = 1; iter.hasNext(); i++){
+				drawSubTarget((ProgressModel)iter.next(), g, 
+						yOffset += tHeight, hasMore | i < target.subTargets.size());
+			}
+		}
+	}
+	private void drawSubTarget(ProgressModel target, Graphics2D g, 
+			int yOffset, boolean hasMore){
+		g.setFont(subFont);
+		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		g.setColor(Color.gray);
+		//7 vertical line (up)
+		g.drawLine(leftIndent + 8, yOffset, leftIndent + 8, yOffset + 8);
+		//7 vertical line (down)
+		if(hasMore){
+			g.drawLine(leftIndent + 8, (tHeight/2) + yOffset, leftIndent + 8, tHeight + yOffset);
+		}
+		int xOffset = 15;
+		// sideways line
+		g.drawLine(leftIndent + 8, 8 + yOffset, leftIndent + xOffset + 4, 8 + yOffset);
+		if(target.state == DONE){
+			g.setColor(Color.darkGray);
+		}
+		if(target.state == INPROGRESS){
+			g.setColor(progressColor);
+		}
+		if(target.state == TODO){
+			g.setColor(Color.gray);
+		}
+		g.fillRoundRect(leftIndent + xOffset + 4, yOffset + 5, 9, 7, 7, 7);
+		g.setColor(Color.black);
+		g.drawString(target.name, leftIndent + xOffset + 15, 12 + yOffset);
+	}
+
+    public synchronized Dimension getPreferredScrollableViewportSize(){
+    	return getPreferredSize();
+    }
+    public synchronized int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction){
+    	return tHeight;
+    }
+    public synchronized int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction){
+    	return tHeight * 3;
+    }
+    public synchronized boolean getScrollableTracksViewportWidth(){
+    	return true;
+    }
+    public synchronized boolean getScrollableTracksViewportHeight(){
+    	return false;
+    }
+	public static class ProgressModel{
+		int state = TODO;
+		String name;
+		List subTargets = new ArrayList();
+
+		public ProgressModel(String name){
+			this.name = name;
+		}
+
+		int getHeight(){
+			return tHeight + subTargets.size() * tHeight;
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SelectInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SelectInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SelectInputRenderer.java	(revision 18906)
@@ -0,0 +1,151 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import javax.swing.BoxLayout;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.Enumeration;
+import java.util.ResourceBundle;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.SelectInput;
+import org.tp23.gui.GBCF;
+
+public class SelectInputRenderer
+	extends SwingOutputFieldRenderer {
+	
+	protected SelectInput inputField;
+
+	protected JLabel fieldLabel = new AILabel();
+	protected ButtonGroup optionGroup = new ButtonGroup();
+
+	public SelectInputRenderer() {
+	}
+	public void initComponent(JPanel parent){
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+            ctx.log(e.getMessage());
+            if(ctx.getInstaller().isVerbose()) {
+                ctx.log(e);
+            }
+		}
+	}
+
+
+
+	public void setOutputField(OutputField inputField) {
+		this.inputField = (SelectInput)inputField;
+	}
+	public void updateInputField(){
+		Enumeration enumumeration = optionGroup.getElements();
+		int i = 0;
+		for(; enumumeration.hasMoreElements(); i++){
+			JRadioButton o = (JRadioButton)enumumeration.nextElement();
+			if(o.isSelected()) {
+				inputField.setValue(inputField.getOptions()[i].value);
+				break;
+			}
+		}
+		if(i > inputField.getOptions().length) {
+			inputField.setValue(inputField.getDefaultValue());
+		}
+	}
+	public void updateDefaultValue() {
+		if(!inputField.isEditted()) {
+			String newDefault = inputField.getDefaultValue();
+			Enumeration enumeration = optionGroup.getElements();
+			for(int i = 0; enumeration.hasMoreElements(); i++){
+				if(newDefault.equals(inputField.getOptions()[i].value)) {
+					JRadioButton jrb = (JRadioButton) enumeration.nextElement();
+					jrb.setSelected(true);
+					// @todo should break?
+				} else {
+					enumeration.nextElement();
+				}
+			}
+		}
+	}
+
+    private void jbInit() throws Exception {
+		fieldLabel.setText( "<html>" + inputField.getDisplayText() + "</html>" );
+		SelectInput.Option[] options = inputField.getOptions();
+
+		for (int i = 0; i < options.length; i++) {
+			JRadioButton jrb = new AIRadioButton( "<html><font size=+0>" + options[i].getText() + "</font></html>" );
+			optionGroup.add(jrb);
+			if(options[i].value.equals(inputField.getDefaultValue())){
+				jrb.setSelected(true);
+			}
+			jrb.addItemListener(new ItemListener(){
+				public void itemStateChanged(ItemEvent e) {
+					inputField.setEditted(true);
+				}
+			});
+		}
+    }
+	public int addSelf(JPanel content,GBCF cf,  int row,boolean overflow) {
+
+		JPanel superContainer = new JPanel(new BorderLayout());
+
+		JPanel container = new JPanel();
+		container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
+
+		if ( !fieldLabel.getText().equals("") ) {
+			container.add(fieldLabel);
+		}
+
+		Enumeration enumeration = optionGroup.getElements();
+		// there should be at least two
+		enumeration.hasMoreElements();
+		AIRadioButton jrb = (AIRadioButton)enumeration.nextElement();
+		container.add(jrb);
+		if( overflow ) {
+			jrb.setOverflow(SizeConstants.OVERFLOW_FIELD_SIZE);
+		}
+		JPanel empty = new JPanel();
+		while(enumeration.hasMoreElements()){
+			jrb = (AIRadioButton)enumeration.nextElement();
+			//content.add(empty,cf.getCell(row, 0));
+			container.add(jrb);
+			if(overflow) {
+				jrb.setOverflow(SizeConstants.OVERFLOW_FIELD_SIZE);
+			}
+		}
+		container.add(empty);
+		superContainer.add(BorderLayout.WEST,container);
+		content.add(superContainer);
+
+		return row;
+	}
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+		ctx.getMessageRenderer().printMessage(org.tp23.antinstaller.Installer.langPack.getString("notValidSelection"));
+		// fixed BUG:1295944  ctx.getMessageRenderer().printMessage("Not a valid selection");
+		//optionGroup.requestFocus();
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SimpleInputPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SimpleInputPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SimpleInputPageRenderer.java	(revision 18906)
@@ -0,0 +1,187 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.awt.GridLayout;
+import javax.swing.BoxLayout;
+import java.awt.FlowLayout;
+import java.awt.Insets;
+import java.util.ArrayList;
+
+import javax.swing.BorderFactory;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.ToolTipManager;
+
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.input.CommentOutput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.page.SimpleInputPage;
+import org.tp23.antinstaller.renderer.RendererFactory;
+import org.tp23.gui.GBCF;
+
+/**
+ *
+ * <p>This PageRenderer just renders a list of SwingInputRenderers using
+* a BoxLayout </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: SimpleInputPageRenderer.java,v 1.6 2006/12/27 21:46:35 teknopaul Exp $
+ */
+public class SimpleInputPageRenderer
+	extends SwingPageRenderer {
+
+     //Prevent displayText and explanatoryText being rendered using different fonts
+    private static final Font defaultFont = new JLabel().getFont();
+
+	private JPanel contentPanel = new JPanel();
+
+	
+	//private GridBagLayout gridLayout = new GridBagLayout();
+	private BoxLayout layout = new BoxLayout(contentPanel,BoxLayout.Y_AXIS);
+	//private BorderLayout layout = new BorderLayout();
+	private GBCF cf = new GBCF(); // GridBagConstraintsFactory
+	private boolean overflow = false;
+	// used in overflow
+	JScrollPane scroller = null;
+	
+
+	private ArrayList renderers = new ArrayList();
+
+	public SimpleInputPageRenderer(){
+	}
+		
+	public boolean validateFields() throws ValidationException {
+		OutputField[] fields = page.getOutputField();
+		for (int i = 0; i < fields.length; i++) {
+			if(!fields[i].validate(ctx)){
+				SwingOutputFieldRenderer renderer = (SwingOutputFieldRenderer)renderers.get(i);
+				renderer.renderError();
+				return false;
+			}
+		}
+		return true;
+	}
+	public void updateInputFields(){
+		for (int i = 0; i < renderers.size(); i++) {
+			((SwingOutputFieldRenderer)renderers.get(i)).updateInputField();
+		}
+	}
+
+	public void updateDefaultValues(){
+		for (int i = 0; i < renderers.size(); i++) {
+			((SwingOutputFieldRenderer)renderers.get(i)).updateDefaultValue();
+		}
+	}
+
+	public void reInstanceInit() {}
+
+	public void instanceInit() throws Exception {
+		ToolTipManager.sharedInstance().setInitialDelay(0);
+		ToolTipManager.sharedInstance().setDismissDelay(Integer.MAX_VALUE);
+		overflow = ((SimpleInputPage)page).isOverflow();
+		if(overflow){
+			//WARNING this causes flickering in the UI 
+			//contentPanel.setMaximumSize(new Dimension(SizeConstants.PAGE_WIDTH - 50, SizeConstants.PAGE_HEIGHT));
+			scroller = new JScrollPane();
+			scroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+			scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+			scroller.setBorder(BorderFactory.createCompoundBorder(
+							BorderFactory.createEmptyBorder(4,4,4,4),
+							BorderFactory.createEtchedBorder()				
+							));
+			scroller.getViewport().add(contentPanel);
+
+			masterPanel.add( scroller, BorderLayout.CENTER );
+			//contentPanel.setBackground(Color.red);
+		}
+		else {
+			masterPanel.add(contentPanel, BorderLayout.CENTER);
+			contentPanel.setBorder(BorderFactory.createEmptyBorder(SizeConstants.TOP_INDENT, 4, 4, 4));
+		}
+
+		OutputField[] fields = page.getOutputField();
+		contentPanel.setDoubleBuffered(true);
+		contentPanel.setLayout(layout);
+		int row = 0;
+		for (int i = 0; i < fields.length; i++) {
+			SwingOutputFieldRenderer renderer = RendererFactory.getSwingRenderer(fields[i]);
+/*			String text = fields[i].getExplanatoryText();
+			if(fields[i].getExplanatoryText() != null){
+				JTextArea area = new DisplayTextArea(contentPanel.getBackground(), contentPanel.getForeground());
+				//JTextArea area = new JTextArea();
+				//area.setBackground( new Color(0xaaaaff) );
+				area.setIgnoreRepaint(true);
+            area.setFont( defaultFont );
+            area.setText(text);
+				//area.setLineWrap(true);
+				contentPanel.add(area, cf.getSpan(row++));
+            if(fields[i] instanceof CommentOutput){
+               CommentOutputRenderer crenderer = (CommentOutputRenderer)renderer;
+               crenderer.setExplanatoryTextField(area);
+               if(fields[i].getDisplayText() == null){
+                  continue;
+               }
+				}
+			}
+*/
+			renderer.setOutputField(fields[i]);
+			renderer.setInstallerContext(ctx);
+			renderer.initComponent(contentPanel);
+			row = renderer.addSelf(contentPanel, cf, row, overflow);
+			renderers.add(renderer);
+		}
+		contentPanel.add(new JPanel(), cf.getVertGlue(row++));
+	}
+}
+/**
+ * A JTextArea that is not editable and looks like a JLabel but uses 
+ * JTextAreas ability to wrap.  Also has a fixed prefered width; 
+ * @author Paul Hinds
+ * @version $Id: SimpleInputPageRenderer.java,v 1.6 2006/12/27 21:46:35 teknopaul Exp $
+ */
+class DisplayTextArea extends JTextArea{
+	DisplayTextArea(Color back, Color fore){
+		super();
+		this.setBackground(back);
+		this.setForeground(fore);
+		this.setLineWrap(true);
+		this.setWrapStyleWord(true);
+		this.setEditable(false);
+		this.setSelectionColor(back);
+		this.setSelectionColor(back);
+		this.setMargin(new Insets(5,0,0,0));
+	}
+
+/*	public Dimension getPreferredSize(){
+		Dimension pref = super.getPreferredSize();
+		return new Dimension(SizeConstants.PAGE_WIDTH - 40, pref.height);
+	}
+	public Dimension getMinimumSize(){
+		Dimension pref = super.getMinimumSize();
+		return new Dimension(SizeConstants.PAGE_WIDTH - 40, pref.height);
+	}*/
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SizeConstants.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SizeConstants.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SizeConstants.java	(revision 18906)
@@ -0,0 +1,49 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Dimension;
+/**
+ * Extracted contants with aim of making these variables configurable
+ * @author teknopaul
+ */
+public class SizeConstants {
+
+	// Page size constants
+	public static int PAGE_WIDTH = 640; // orig value 472
+	public static int PAGE_HEIGHT = 480;// orig value 400
+	public static int LABEL_WIDTH = 200;// orig value 175
+	
+	public static int TITLE_IMAGE_HEIGHT = 100;
+	public static int TITLE_PANEL_HEIGHT = 75; // suspect this is irrelevant
+
+	// Field size constants
+	public static int LEFT_INDENT = 15;
+	public static int TOP_INDENT = 8;
+	public static int BUTTON_WIDTH = 90; // file and directory chooser
+	public static int FIELD_HEIGHT = 20;// field Y
+	public static int FIELD_WIDTH = SizeConstants.PAGE_WIDTH - SizeConstants.LABEL_WIDTH - SizeConstants.LEFT_INDENT;
+	public static int SHORT_FIELD_WIDTH = FIELD_WIDTH - SizeConstants.BUTTON_WIDTH;
+
+	// overflow resizing
+	// in the gridbaglayout it seems that only preferred size
+	// is significant
+	private static int OVERFLOW_REDUCTION = 40;
+	public static Dimension OVERFLOW_FIELD_SIZE = new Dimension(FIELD_WIDTH - OVERFLOW_REDUCTION, FIELD_HEIGHT);
+	public static Dimension OVERFLOW_SHORT_FIELD_SIZE = new Dimension(FIELD_WIDTH - SizeConstants.BUTTON_WIDTH - OVERFLOW_REDUCTION, FIELD_HEIGHT);
+	public static Dimension OVERFLOW_TOTAL_SIZE = new Dimension(FIELD_WIDTH + SizeConstants.LABEL_WIDTH - OVERFLOW_REDUCTION, FIELD_HEIGHT);
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SplashPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SplashPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SplashPageRenderer.java	(revision 18906)
@@ -0,0 +1,73 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.page.SplashPage;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+/**
+ * A page containing only a single image. 
+ * 
+ * @author teknopaul
+ */
+public class SplashPageRenderer extends SwingPageRenderer{
+
+	private JLabel imagePanel = new JLabel();
+
+	public SplashPageRenderer() {
+	}
+	public boolean validateFields()throws ValidationException{
+		return true;
+	}
+
+	public void reInstanceInit() {}
+	
+	public void instanceInit() throws Exception {
+		String resource = ((SplashPage)page).getSplashResource();
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		InputStream in = this.getClass().getResourceAsStream(resource);
+		if(in == null) {
+            throw new ConfigurationException("Splash page resource is missing: " + resource);
+        }
+		byte[] buffer = new byte[2048];
+		int read = -1;
+		while ( (read = in.read(buffer)) != -1) {
+			baos.write(buffer, 0, read);
+		}
+		ImageIcon icon = new ImageIcon(baos.toByteArray());
+		imagePanel.setHorizontalAlignment(JLabel.CENTER);
+		imagePanel.setIcon(icon);
+		this.add(imagePanel, BorderLayout.CENTER);
+	}
+
+	public void updateInputFields(){
+		;
+	}
+
+	/**
+	 * updateDefaultValues
+	 */
+	public void updateDefaultValues() {
+	}
+	
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingInstallerContext.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingInstallerContext.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingInstallerContext.java	(revision 18906)
@@ -0,0 +1,149 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.SwingUtilities;
+
+import org.apache.tools.ant.BuildEvent;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.runtime.SwingRunner;
+
+public class SwingInstallerContext{
+
+	private static JFrame masterFrame;
+    private JLabel feedBackPanel;
+    private ProgressPanel progressPanel;
+    private InstallerContext ctx;
+
+	public SwingInstallerContext(InstallerContext ctx,
+								 JFrame masterFrame) {
+		this.ctx = ctx;
+		SwingInstallerContext.masterFrame = masterFrame;
+	}
+
+	public JFrame getMasterFrame() {
+		return masterFrame;
+	}
+    public SwingRunner getSwingRunner() {
+		return (SwingRunner)ctx.getRunner();
+    }
+
+	public void setFeedBackLabel(JLabel feedBackPanel) {
+		this.feedBackPanel = feedBackPanel;
+	}
+	/**
+	 * The progress panel is optional so not calling this method
+	 * should not cause errors or NPEs
+	 * @param progressPanel
+	 */
+	public void setProgressPanel(ProgressPanel progressPanel) {
+		this.progressPanel = progressPanel;
+	}
+	
+	public void buildStarted(BuildEvent buildEvent) {
+		provideAntFeedBack(buildEvent.getMessage());
+		try {
+			SwingUtilities.invokeAndWait(new Runnable(){
+				public void run(){
+					if(SwingInstallerContext.this.progressPanel != null){
+						SwingInstallerContext.this.progressPanel.prepareCalledTargets();
+					}
+				}
+			});
+		} catch (Exception e) { //Interrupted or InvocationTarget
+			SwingInstallerContext.this.ctx.log(e);
+		}
+	}
+    
+	public void buildFinished(BuildEvent buildEvent) {
+		if(this.progressPanel != null){
+			try {
+				SwingUtilities.invokeLater(new Runnable(){
+					public void run(){
+						SwingInstallerContext.this.progressPanel.buildFinished();
+					}
+				});
+			} catch (Exception e) { //Interrupted or InvocationTarget
+				SwingInstallerContext.this.ctx.log(e);
+			}			
+		}
+	}
+    
+	public void targetStarted(BuildEvent buildEvent) {
+		TargetStarted targetStarted = new TargetStarted();
+		targetStarted.buildEvent = buildEvent;
+		try {
+			if(this.progressPanel != null){
+				//Invoke and wait used since strict ordering od started and finished is requried
+				SwingUtilities.invokeAndWait(targetStarted);
+			}
+		} catch (Exception e) { //Interrupted or InvocationTarget
+			SwingInstallerContext.this.ctx.log(e);
+		}			
+	}
+    
+	public void targetFinished(BuildEvent buildEvent) {
+		try {
+			//Invoke and wait used since strict ordering od started and finished is requried
+			SwingUtilities.invokeAndWait(new Runnable(){
+				public void run(){
+					if(SwingInstallerContext.this.progressPanel != null){
+						SwingInstallerContext.this.progressPanel.targetFinished();
+					}
+				}
+			});
+		} catch (Exception e) { //Interrupted or InvocationTarget
+			SwingInstallerContext.this.ctx.log(e);
+		}
+	}
+	
+	public void provideAntFeedBack(String message){
+		// We should never have Ant running without a ProgressPane
+		// but do an if null here in case future FilterChains are different
+		ProvideAntFeedBack provideAntFeedBack = new ProvideAntFeedBack();
+		provideAntFeedBack.message = message;
+		try {
+			if(feedBackPanel != null){
+				SwingUtilities.invokeLater(provideAntFeedBack);
+			}
+		} catch (Exception e) { //Interrupted or InvocationTarget
+			SwingInstallerContext.this.ctx.log(e);
+		}
+	}
+	
+	
+	/**
+	 * @return Returns the ctx.
+	 */
+	public InstallerContext getInstallerContext() {
+		return ctx;
+	}
+	
+	private class TargetStarted implements Runnable{
+		private BuildEvent buildEvent;
+		public void run(){
+			SwingInstallerContext.this.progressPanel.targetStarted(buildEvent);
+		}
+	}
+	private class ProvideAntFeedBack implements Runnable{
+		private String message;
+		public void run(){
+			SwingInstallerContext.this.feedBackPanel.setText(message);
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingMessageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingMessageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingMessageRenderer.java	(revision 18906)
@@ -0,0 +1,113 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+/**
+ *
+ * <p>Render User messages in Popup windows </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: SwingMessageRenderer.java,v 1.4 2006/12/21 00:02:59 teknopaul Exp $
+ */
+public class SwingMessageRenderer
+	implements MessageRenderer {
+
+	private InstallerContext ctx = null;
+	private JFrame owner = null;
+
+
+	public SwingMessageRenderer() {
+	}
+	public SwingMessageRenderer(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void setInstallerContext(InstallerContext ctx){
+		this.ctx = ctx;
+	}
+	public void printMessage(String message){
+		MessageRunnable messageRunnable = new MessageRunnable();
+		messageRunnable.message = message;
+		if(SwingUtilities.isEventDispatchThread()){
+			messageRunnable.run();
+		}
+		else{
+			try {
+				SwingUtilities.invokeAndWait(messageRunnable);
+			} catch (Exception e) { // Interrupted or InvocationTarget
+				ctx.log(e);
+			}
+		}
+	}
+
+	public boolean prompt(String message){
+		OptionRunnable optionRunnable = new OptionRunnable();
+		optionRunnable.message = message;
+		if(SwingUtilities.isEventDispatchThread()){
+			optionRunnable.run();
+		}
+		else{
+			try {
+				SwingUtilities.invokeAndWait(optionRunnable);
+			} catch (Exception e) { // Interrupted or InvocationTarget
+				ctx.log(e);
+			}
+		}
+		return optionRunnable.ok;
+	}
+	/**
+	 * @param owner The owner to set.
+	 */
+	public void setOwner(JFrame owner) {
+		this.owner = owner;
+	}
+	
+	private class MessageRunnable implements Runnable{
+		String message;
+
+		public void run() {
+			JOptionPane.showMessageDialog(SwingMessageRenderer.this.owner, 
+					message, "Message", JOptionPane.INFORMATION_MESSAGE );
+		}
+		
+	}
+	
+	private class OptionRunnable implements Runnable{
+		String message;
+		boolean ok;
+		public void run() {
+			int ret = JOptionPane.showConfirmDialog(SwingMessageRenderer.this.owner,
+					message,
+					"Question",
+					JOptionPane.YES_NO_OPTION);
+			if (ret == JOptionPane.YES_OPTION) {
+				ok = true;
+			}
+			else {
+				ok = false;
+			}
+		}
+		
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingOutputFieldRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingOutputFieldRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingOutputFieldRenderer.java	(revision 18906)
@@ -0,0 +1,86 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.gui.GBCF;
+/**
+ *
+ * <p>Instances of this interface should have a no args constructor.
+* They sould
+* be Swing JComponent (e.g. subclass JPanel) and render normally responding
+* to update paint and requests to change Look & Feel in a normal way. </p>
+ * <p>Instances of this class should follow the naming convention. for each OutputField
+* Xxx in the package org.tp23.antinstaller.input  there should exist a SwingOutputFieldRenderer
+* called org.tp23.antinstaller.renderer.swing.XxxRenderer</p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: SwingOutputFieldRenderer.java,v 1.5 2007/01/04 22:57:17 teknopaul Exp $
+ */
+public abstract class SwingOutputFieldRenderer{
+
+    //TODO From FindBugs - sometimes this field is not used in subclasses to avoid casting
+    // replace with for example, getInputField() that casts in InputRenderers
+    // requires work in ConditionalFieldRenderer
+	protected OutputField outputField;
+	protected InstallerContext ctx;
+	
+	/**
+	 * this should hold a local reference and set the input fields default value
+	 * if one exists
+	 * @param inputField InputField
+	 */
+	public void setOutputField(OutputField outputField){
+		this.outputField = outputField;
+	}
+	/**
+	 * Init the swing components
+	 */
+	public abstract void initComponent(JPanel parent);
+	/**
+	 * Called by the Page prior to firing pagecompletion events
+	 */
+	public abstract void updateInputField();
+	/**
+	 * Called to update the defaults from the ResultContainer
+	 */
+	public abstract void updateDefaultValue();
+
+	/**
+	 * Called when validation fails
+	 */
+	public abstract void renderError();
+	/**
+	 * Called when the renderer should add itself to the content pane;
+	 * @param content the panel to which the Renderer should add itself
+	 * @param GridBagConstraintsFactory
+	 * @param row the current row index in the table
+	 * @param components should adjust preferred size when the overflow flag is set
+	 * to compensate for width loss due to the scroll bar
+	 * @return the row index after adding all its components
+	 */
+	public abstract int addSelf(JPanel content, GBCF cf, int row, boolean overflow);
+
+	public void setInstallerContext(InstallerContext ctx){
+		this.ctx = ctx;
+	}
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SwingPageRenderer.java	(revision 18906)
@@ -0,0 +1,281 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.ResourceBundle;
+
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.border.Border;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.page.Page;
+
+/**
+ *
+ * <p>Abstract super class for page renderers.  setPage will always be called. </p>
+ * <p>Subclasses should implement instanceInit for initialising swing components
+ * on the page. </p>
+ * @author Paul Hinds
+ * @version $Id: SwingPageRenderer.java,v 1.10 2007/01/19 00:24:35 teknopaul Exp $
+ */
+public abstract class SwingPageRenderer
+	extends JPanel {
+	
+	// gui components
+	private BorderLayout borderLayout1 = new BorderLayout();
+	
+    // holds the next back buttons etc
+	private JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.CENTER,12,3));
+
+	private JButton backButton = new JButton();
+	private JButton cancelButton = new JButton();
+	private JButton nextButton = new JButton();
+	private JButton finishButton = new JButton();
+
+	public JPanel masterPanel = new JPanel( new BorderLayout() );
+
+	private JPanel titlePanel = new JPanel();
+	private JLabel titleLabel = new JLabel();
+	private JLabel imagePanel = new JLabel(); // Graphic for the installer
+	private GridLayout titleLayout = new GridLayout();
+
+	// app components
+	protected Page page;
+	protected SwingInstallerContext swingCtx;
+	protected InstallerContext ctx;
+	protected PageCompletionListener listener;
+	private Border bevelBorder;
+		
+
+	private static Font titleFont;
+	static{
+		titleFont = new JLabel().getFont();
+		try {
+			titleFont = new Font(titleFont.getFamily(), Font.BOLD, 14);
+		}
+		catch (Exception ex) {
+			// lets not fail due to font errors
+		}
+	}
+
+	public SwingPageRenderer(){
+		super();
+	}
+	public void setPage(Page page){
+		this.page = page;
+		try {
+			jbInit();
+		}
+		catch (Exception e) {
+            ctx.log(e.getMessage());
+            if(ctx.getInstaller().isVerbose()) {
+                ctx.log(e);
+            }
+		}
+	}
+
+	public void setContext(SwingInstallerContext swingCtx){
+		this.ctx = swingCtx.getInstallerContext();
+		this.swingCtx = swingCtx;
+	}
+		
+	public void reInit() {
+		backButton.setText(org.tp23.antinstaller.Installer.langPack.getString("backButton"));// "<< Back");
+		cancelButton.setText(org.tp23.antinstaller.Installer.langPack.getString("cancelButton"));// "Cancel");
+		nextButton.setText(org.tp23.antinstaller.Installer.langPack.getString("nextButton"));// "Next >>");
+		finishButton.setText(ctx.getInstaller().getFinishButtonText());
+		titleLabel.setText(page.getDisplayText());
+	}
+
+	private void jbInit() throws Exception {
+		
+		this.setDoubleBuffered(true);
+        //emptyBorder = BorderFactory.createEmptyBorder(2,5,2,2);
+		//bevelBorder = BorderFactory.createCompoundBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(116, 116, 112),new Color(166, 166, 161)),BorderFactory.createEmptyBorder(2,SwingInputFieldRenderer.LEFT_INDENT,2,2));
+		bevelBorder = BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black,1),BorderFactory.createEmptyBorder(2,SizeConstants.LEFT_INDENT,2,2));
+		bevelBorder = BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(),BorderFactory.createEmptyBorder(2,SizeConstants.LEFT_INDENT,2,2));
+		Border tripleBorder = BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(3,4,1,4),bevelBorder);
+		this.setLayout(borderLayout1);
+		titleLabel.setBorder(tripleBorder);
+		controlPanel.setBorder(tripleBorder);
+
+		masterPanel.add(titlePanel, BorderLayout.NORTH);
+		this.add(masterPanel, BorderLayout.NORTH);
+		this.add(controlPanel, BorderLayout.SOUTH);
+
+		// title panel
+		titlePanel.add(imagePanel, null);
+		titlePanel.add(titleLabel, null);
+
+		titlePanel.setLayout(titleLayout);
+		titleLayout.setColumns(1);
+		titleLayout.setHgap(0);
+		titleLayout.setRows(2);
+		titleLayout.setVgap(2);
+		titlePanel.setMinimumSize(new Dimension(SizeConstants.PAGE_WIDTH, SizeConstants.TITLE_PANEL_HEIGHT));
+		titlePanel.setMaximumSize(new Dimension(SizeConstants.PAGE_WIDTH, SizeConstants.TITLE_PANEL_HEIGHT));
+		titlePanel.setPreferredSize(new Dimension(SizeConstants.PAGE_WIDTH, SizeConstants.TITLE_PANEL_HEIGHT));
+
+		titleLabel.setText(page.getDisplayText());
+		titleLabel.setFont(titleFont);
+		setImage(page.getImageResource());
+		imagePanel.setMinimumSize(new Dimension(SizeConstants.PAGE_WIDTH, SizeConstants.TITLE_IMAGE_HEIGHT));
+		imagePanel.setMaximumSize(new Dimension(SizeConstants.PAGE_WIDTH, SizeConstants.TITLE_IMAGE_HEIGHT));
+		imagePanel.setPreferredSize(new Dimension(SizeConstants.PAGE_WIDTH, SizeConstants.TITLE_IMAGE_HEIGHT));
+
+		// Ctrl Panel
+		controlPanel.add(cancelButton, null);
+		controlPanel.add(backButton, null);
+		controlPanel.add(nextButton, null);
+		controlPanel.add(finishButton, null);
+		backButton.setText(org.tp23.antinstaller.Installer.langPack.getString("backButton"));// "<< Back");
+		cancelButton.setText(org.tp23.antinstaller.Installer.langPack.getString("cancelButton"));// "Cancel");
+		nextButton.setText(org.tp23.antinstaller.Installer.langPack.getString("nextButton"));// "Next >>");
+		nextButton.setVisible( page.isShowNextButton() );
+		finishButton.setText(ctx.getInstaller().getFinishButtonText());
+		finishButton.setVisible(false);
+		setEventListeners();
+		setIcons();
+	}
+	public abstract void instanceInit() throws Exception ;
+	public abstract void reInstanceInit();
+	public abstract void updateInputFields();
+	public abstract void updateDefaultValues();
+	public abstract boolean validateFields()throws ValidationException;
+
+	public void setPageCompletionListener(PageCompletionListener listener){
+		this.listener = listener;
+	}
+
+	public void stopPage() {}
+
+	private void setImage(String resource) throws Exception{
+		if(resource == null){
+		   resource = ctx.getInstaller().getDefaultImageResource();
+		}
+		ImageIcon icon = getImage(resource);
+		imagePanel.setIcon(icon);
+	}
+	
+	protected ImageIcon getImage(String resource){
+		try {
+			if (resource != null) {
+				ByteArrayOutputStream baos = new ByteArrayOutputStream();
+				InputStream in = this.getClass().getResourceAsStream(resource);
+				byte[] buffer = new byte[2048];
+				int read = -1;
+				while ( (read = in.read(buffer)) != -1) {
+					baos.write(buffer, 0, read);
+				}
+				ImageIcon icon = new ImageIcon(baos.toByteArray());
+				return icon;
+			}
+		}
+		catch (Exception ex) {
+			ctx.log("Can't load image resource:" + resource);
+			if(ctx.getInstaller().isVerbose()){
+				ctx.log(ex);
+			}
+		}
+		return null;
+	}
+	
+	
+	private void setEventListeners(){
+		backButton.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent e){
+				listener.pageBack(page);
+			}
+		});
+		cancelButton.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent e){
+				page.setAbort(true);
+                if (ctx.getInstaller().isVerbose()) {
+                    ctx.log("Abort called");
+                }
+				listener.pageComplete(page);
+			}
+		});
+		nextButton.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent e){
+				listener.pageComplete(page);
+
+			}
+		});
+		finishButton.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent e){
+				if(finishButton.getText().equals(org.tp23.antinstaller.Installer.langPack.getString("exit"))) {
+                    //TODO FindBugs this will prevent cleanup in FinalizerFilter
+					System.exit(0);
+				}
+				listener.pageComplete(page);
+				//((SwingInstallerContext)ctx).getSwingRunner().finish();
+			}
+		});
+	}
+	
+	private void setIcons(){
+		backButton.setIcon(getImage("/resources/icons/back.png"));
+		cancelButton.setIcon(getImage("/resources/icons/cancel.png"));
+		nextButton.setIcon(getImage("/resources/icons/next.png"));
+		finishButton.setIcon(getImage("/resources/icons/finish.png"));
+	}
+
+	public JButton getCancelButton() {
+		return cancelButton;
+	}
+
+	public InstallerContext getCtx() {
+		return ctx;
+	}
+
+	public JPanel getControlPanel() {
+		return controlPanel;
+	}
+
+	public JLabel getImagePanel() {
+		return imagePanel;
+	}
+
+	public JButton getNextButton() {
+		return nextButton;
+	}
+
+	public JLabel getTitleLabel() {
+		return titleLabel;
+	}
+    public JButton getFinishButton() {
+		return finishButton;
+    }
+    public JButton getBackButton() {
+		return backButton;
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TargetInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TargetInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TargetInputRenderer.java	(revision 18906)
@@ -0,0 +1,156 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+import javax.swing.JLabel;
+import javax.swing.JCheckBox;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JOptionPane;
+
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.TargetInput;
+import org.tp23.gui.GBCF;
+
+public class TargetInputRenderer
+	extends SwingOutputFieldRenderer {
+
+	protected TargetInput outputField;
+
+	protected AILabel fieldLabel = new AILabel();
+	protected AIShortLabel sizeLabel = new AIShortLabel();
+	protected JCheckBox targetCheckBox = new JCheckBox();
+
+	JPanel parent = null;
+	public TargetInputRenderer() {
+	}
+	public void initComponent(JPanel parent){
+		this.parent = parent;
+
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+            ctx.log(e.getMessage());
+            if(ctx.getInstaller().isVerbose()) {
+                ctx.log(e);
+            }
+
+		}
+	}
+
+
+
+	public void setOutputField(OutputField outputField) {
+		this.outputField = (TargetInput)outputField;
+	}
+	public void updateInputField(){
+		String target = outputField.getTarget();
+		int targetIdx = outputField.getIdx();
+		boolean selected = targetCheckBox.isSelected();
+		outputField.setInputResult(String.valueOf(selected));
+		if(selected && !ctx.getCurrentPage().getAllTargets().contains(target)){
+			ctx.getCurrentPage().addTarget(targetIdx, target);
+		}
+		else if(!selected && ctx.getCurrentPage().isTarget(target)){
+			ctx.getCurrentPage().removeTarget(targetIdx);
+		}
+	}
+	public void updateDefaultValue(){
+		if(!outputField.isEditted()){
+			targetCheckBox.setSelected(InputField.isTrue(outputField.getDefaultValue()));
+		}
+	}
+
+    private void jbInit() throws Exception {
+		fieldLabel.setText(outputField.getDisplayText());
+		sizeLabel.setText(outputField.getDiskRequirement());
+		sizeLabel.setMinimumSize( new Dimension( 80, 0 ) );
+		targetCheckBox.setSelected(InputField.isTrue(outputField.getDefaultValue()));
+		if(InputField.isTrue(outputField.getForce())){
+			targetCheckBox.setEnabled(false);
+		}
+
+		targetCheckBox.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				updateInputField();
+				outputField.setEditted(true);
+			}
+		});
+    }
+	public int addSelf(JPanel content,GBCF cf,  int row,boolean overflow) {
+		if ( outputField.getHidden() ) {
+			return row;
+		}
+
+		ImageIcon helpIcon = createImageIcon("/resources/help.png");
+		JButton hlp = new JButton(helpIcon);
+
+		hlp.addActionListener(
+			new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					JOptionPane.showMessageDialog(parent, outputField.getExplanatoryText(), outputField.getDisplayText(), JOptionPane.QUESTION_MESSAGE);
+				}
+			}
+		);
+
+		//hlp.setToolTipText();
+
+		JPanel spacer = new JPanel();
+		spacer.setPreferredSize(new Dimension(50, 1));
+
+		JPanel p;
+
+		p = new JPanel(new FlowLayout(FlowLayout.LEFT));
+		p.add( fieldLabel );
+		p.add( sizeLabel );
+		p.add( targetCheckBox );
+		p.add( spacer );
+		p.add( hlp );
+		content.add(p);
+
+		return ++row;
+	}
+
+
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+	}
+
+    /** Returns an ImageIcon, or null if the path was invalid. */
+    protected static ImageIcon createImageIcon(String path) {
+        java.net.URL imgURL = org.tp23.antinstaller.Installer.class.getResource(path);
+        if (imgURL != null) {
+            return new ImageIcon(imgURL);
+        } else {
+            //System.err.println("Couldn't find file: " + path);
+            return null;
+        }
+    }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TargetSelectInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TargetSelectInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TargetSelectInputRenderer.java	(revision 18906)
@@ -0,0 +1,53 @@
+/* 
+ * Copyright 2005 Paul Hinds, Mark Anderson
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.util.Enumeration;
+
+import javax.swing.JRadioButton;
+
+import org.tp23.antinstaller.input.TargetSelectInput;
+/**
+ * 
+ * @author Paul Hinds, Mark Anderson
+ * @version $Id: TargetSelectInputRenderer.java,v 1.3 2006/08/04 17:13:24 anothermwilson Exp $
+ */
+public class TargetSelectInputRenderer
+	extends SelectInputRenderer {
+
+	public TargetSelectInputRenderer() {
+	}
+
+	public void updateInputField(){
+		Enumeration enumeration = optionGroup.getElements();
+		int targetIdx = ((TargetSelectInput)inputField).getIdx();
+		int i = 0;
+		for(; enumeration.hasMoreElements(); i++){
+			JRadioButton o = (JRadioButton)enumeration.nextElement();
+			ctx.getCurrentPage().removeTarget(targetIdx);
+			if(o.isSelected()){
+				String target = inputField.getOptions()[i].value;        
+				ctx.getCurrentPage().addTarget(targetIdx, target);
+				inputField.setValue(target);
+				break;
+			}
+		}
+		if(i > inputField.getOptions().length){
+			inputField.setValue(inputField.getDefaultValue());
+		}
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TextPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TextPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/TextPageRenderer.java	(revision 18906)
@@ -0,0 +1,115 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.BorderLayout;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import javax.swing.BorderFactory;
+import javax.swing.JLabel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextPane;
+import javax.swing.text.html.HTMLEditorKit;
+
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.page.TextPage;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+/**
+ * A page containing a text file's contents, may be HTML in swing.
+ * The HTML supported is the standard Swing subset of HTML3.2 so 
+ * it really just adds a bit of formatting and looks pretty bad.
+ * The page is also parsed and property references in the document
+ * are converted to the runtime values.
+ * e.g. ${java.user.name} would be replaced with the current user in the HTML text.
+ * 
+ * Both the html page and embeded images are loaded from the classpath so
+ * can be packaged in the jar.
+ * 
+ * The default font and background are determined by 
+ * the LAF.
+ * @author teknopaul
+ *
+ */
+public class TextPageRenderer extends SwingPageRenderer{
+
+	private JTextPane textPane = new JTextPane();
+	private StringBuffer buffer = new StringBuffer();
+	
+	public TextPageRenderer() {
+	}
+	
+	public boolean validateFields()throws ValidationException{
+		return true;
+	}
+
+	public void reInstanceInit() {}
+	
+	public void instanceInit() throws Exception {
+		final String resource = ((TextPage)page).getHtmlResource();
+		InputStream in = this.getClass().getResourceAsStream(resource);
+		if(in == null){
+			throw new ConfigurationException("Html page resource is missing:" + resource);
+		}
+		BufferedReader br = new BufferedReader(new InputStreamReader(in));
+		String read = null;
+		while ( (read = br.readLine()) != null) {
+			buffer.append(read);
+		}
+		// as per FindBugs 
+        br.close();
+		
+		JLabel defaults = new JLabel();
+		textPane.setBackground(defaults.getBackground());
+		textPane.setEditable(false);
+		textPane.setContentType("text/html");
+		HTMLEditorKit classpathKit = new ClasspathHTMLEditorKit();
+		textPane.setEditorKit(classpathKit);
+		textPane.setAutoscrolls(true);
+		
+		String rule = "body{font-family:" + defaults.getFont().getFamily() + 
+		";font-size:" + defaults.getFont().getSize() + "}";
+		classpathKit.getStyleSheet().addRule(rule);
+		textPane.setBorder(BorderFactory.createEmptyBorder());
+
+		JScrollPane scroller = new JScrollPane();
+		scroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+		scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+		scroller.setBorder(BorderFactory.createCompoundBorder(
+						BorderFactory.createEmptyBorder(4, 4, 4, 4),
+						BorderFactory.createEtchedBorder()				
+						));
+		add(scroller, BorderLayout.CENTER);
+		scroller.getViewport().add(textPane);
+		this.add(scroller, BorderLayout.CENTER);
+	}
+
+	public void updateInputFields(){
+	}
+
+
+
+	/**
+	 * updateDefaultValues
+	 */
+	public void updateDefaultValues() {
+		// parse property references
+		String parsedHtml = ctx.getInstaller().getResultContainer().getDefaultValue(buffer.toString());
+		textPane.setText(parsedHtml);
+		textPane.setCaretPosition(0);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/UnvalidatedTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/UnvalidatedTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/UnvalidatedTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,114 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.Dimension;
+import java.awt.Insets;
+
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.BorderLayout;
+import javax.swing.JPanel;
+
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.UnvalidatedTextInput;
+import org.tp23.gui.GBCF;
+
+public class UnvalidatedTextInputRenderer
+	extends SwingOutputFieldRenderer {
+
+	protected UnvalidatedTextInput inputField;
+
+    protected AILabel fieldLabel = new AILabel();
+    protected AITextfield jTextField = new AITextfield();
+
+	public UnvalidatedTextInputRenderer() {
+	}
+
+	public void initComponent(JPanel parent){
+		try {
+			jbInit();
+		}
+		catch(Exception e) {
+            ctx.log(e.getMessage());
+            if(ctx.getInstaller().isVerbose()) {
+                ctx.log(e);
+            }
+
+		}
+	}
+
+	public void setOutputField(OutputField inputField) {
+		this.inputField=(UnvalidatedTextInput)inputField;
+		this.inputField.setValue(this.inputField.getDefaultValue());
+	}
+	public void updateInputField(){
+		inputField.setValue(jTextField.getText());
+	}
+	public void updateDefaultValue(){
+		if(!inputField.isEditted())jTextField.setText(inputField.getDefaultValue());
+	}
+
+    private void jbInit() throws Exception {
+		fieldLabel.setText(inputField.getDisplayText());
+		fieldLabel.setMinimumSize( new Dimension( SizeConstants.LABEL_WIDTH, 0) );
+
+		jTextField.setText(inputField.getDefaultValue());
+		jTextField.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				updateInputField();
+			}
+		});
+		jTextField.addKeyListener(new KeyAdapter() {
+			public void keyTyped(KeyEvent e) {
+				if (e.getKeyChar() != '\t') {
+					inputField.setEditted(true);
+				}
+			}
+		});
+
+    }
+	public int addSelf(JPanel content,GBCF cf,  int row,boolean overflow) {
+		JPanel p;
+
+		//p = new JPanel(new FlowLayout(FlowLayout.LEFT));
+		BorderLayout l = new BorderLayout();
+		p = new JPanel(l);
+		p.add( fieldLabel, BorderLayout.WEST );
+		p.add( jTextField, BorderLayout.CENTER );
+		content.add(p);
+
+		p = new JPanel();
+		p.setMinimumSize( new Dimension(0,1) );
+		content.add(p);
+
+
+		if(overflow){
+			jTextField.setOverflow(SizeConstants.OVERFLOW_FIELD_SIZE);
+		}
+		return ++row;
+	}
+
+	/**
+	 * renderError
+	 */
+	public void renderError() {
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ValidatedTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ValidatedTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/ValidatedTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,109 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing;
+
+import java.awt.Color;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.util.ResourceBundle;
+
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.ValidatedTextInput;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+import org.tp23.gui.GBCF;
+
+public class ValidatedTextInputRenderer extends SwingOutputFieldRenderer {
+
+    protected ValidatedTextInput inputField;
+    protected AILabel fieldLabel = new AILabel();
+    protected JTextField jTextField = new AITextfield();
+    protected Color origFore;
+
+    public ValidatedTextInputRenderer() {
+        origFore = jTextField.getForeground();
+    }
+
+    public void initComponent(JPanel parent) {
+        try {
+            jbInit();
+        } catch (Exception e) {
+            ctx.log(e.getMessage());
+            if (ctx.getInstaller().isVerbose()) {
+                ctx.log(e);
+            }
+
+        }
+    }
+
+    public void setOutputField(OutputField inputField) {
+        this.inputField = (ValidatedTextInput) inputField;
+        this.inputField.setValue(this.inputField.getDefaultValue());
+    }
+
+    public void updateInputField() {
+        inputField.setValue(jTextField.getText());
+    }
+
+    public void updateDefaultValue() {
+        if (!inputField.isEditted()) {
+            jTextField.setText(inputField.getDefaultValue());
+        }
+    }
+
+    private void jbInit() throws Exception {
+        fieldLabel.setText(inputField.getDisplayText());
+        jTextField.setText(inputField.getDefaultValue());
+
+        jTextField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent fe) {
+                jTextField.setForeground(origFore);
+            }
+        });
+        jTextField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() != '\t') {
+                    inputField.setEditted(true);
+                }
+            }
+        });
+    }
+
+    public int addSelf(JPanel content, GBCF cf, int row, boolean overflow) {
+        content.add(fieldLabel, cf.getCell(row, 0));
+        content.add(jTextField, cf.getCell(row, 1));
+        if (overflow) {
+            ((AITextfield) jTextField).setOverflow(SizeConstants.OVERFLOW_FIELD_SIZE);
+        }
+        return ++row;
+    }
+
+    /**
+     * renderError
+     */
+    public void renderError() {
+        MessageRenderer mr = ctx.getMessageRenderer();
+        mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("notCorrectFormat") + "\n\n e.g. "
+                + inputField.getDefaultValue());
+        this.jTextField.requestFocus();
+        this.jTextField.setForeground(Color.red);
+    }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/package.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/package.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/package.html	(revision 18906)
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--
+  Copyright (c) 2004 tp23
+  All Rights Reserved.
+--></head>
+
+<body bgcolor="white">Renderers for the Swing UI.</body>
+</html>
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/LookAndFeelFactory.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/LookAndFeelFactory.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/LookAndFeelFactory.java	(revision 18906)
@@ -0,0 +1,105 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing.plaf;
+
+import java.lang.reflect.Method;
+
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+
+
+/**
+ * @author Paul Hinds
+ * @version $Id: LookAndFeelFactory.java,v 1.9 2007/01/28 21:31:08 teknopaul Exp $
+ */
+public class LookAndFeelFactory {
+
+	public static final String DEFAULT_LAF = "org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel";
+	public static final String GREYMETAL_LAF = "greymetal";
+	public static final String NATIVE_LAF = "native";
+	public static final String JGOODIES_LAF = "jgoodies";
+	public static final String NULL_LAF = "null";
+	
+	private final String specifiedLAF;
+	private final InstallerContext ctx;
+	/**
+	 * 
+	 */
+	public LookAndFeelFactory(InstallerContext ctx) {
+		this.ctx = ctx;
+		this.specifiedLAF = ctx.getInstaller().getLookAndFeel();
+	}
+
+	public void setLAF(){
+		String lafClassName = null;
+		try{
+			lafClassName = getLafFromToken(specifiedLAF);
+			if(lafClassName == null){
+				return;
+			}
+			LookAndFeel look = (LookAndFeel)Class.forName(lafClassName).newInstance();
+			ctx.log("Setting look and feel:" + lafClassName);
+			UIManager.setLookAndFeel(look);
+
+			boolean antialias = OutputField.isTrue(ctx.getInstaller().getAntialiased());
+			// Reflection used here to avoid dependencies on JGoodies
+			if(antialias){
+				Method setAntialiased = look.getClass().getMethod("setAntiAliased", new Class[]{boolean.class});
+				if(setAntialiased != null){
+					ctx.log("Setting antialiasing:" + antialias);
+                    // JDK1.5 warning fix
+                    Object[] args = new Boolean[]{new Boolean(antialias)};
+					setAntialiased.invoke(null, args);
+				}
+			}
+		}catch(Exception ex ){
+			ctx.getLogger().log("Can not correctly set Look And Feel:" + ex.getMessage());
+			ctx.getLogger().log(ctx.getInstaller(), ex);
+		}
+	}
+    
+    public static boolean isDefault(String laf){
+        return ( laf == null || laf.equals(JGOODIES_LAF) || laf.equals(DEFAULT_LAF) );
+    }
+	/**
+	 * Gets a look and feel class name respecting the tokens supported
+	 * such as jgoodies, null, native and greymetal
+	 * @param token
+	 * @return look and feel class name
+	 */
+	public static String getLafFromToken(String token) {
+		String laf = null;
+        if(token == null || token.equals(JGOODIES_LAF)) {
+            laf = DEFAULT_LAF;
+        }
+        else if(token.equals(NULL_LAF)) {
+			laf = null;
+		}
+		else if(token.equals(NATIVE_LAF)) {
+			laf = UIManager.getSystemLookAndFeelClassName();
+		}
+		else if(token.equals(GREYMETAL_LAF)) {
+			laf = "org.tp23.antinstaller.renderer.swing.plaf.ModMetalLookAndFeel";
+		}
+		else {
+			laf = token;
+		}
+		return laf;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/ModMetalLookAndFeel.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/ModMetalLookAndFeel.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/ModMetalLookAndFeel.java	(revision 18906)
@@ -0,0 +1,118 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing.plaf;
+
+import java.awt.Font;
+import java.awt.Insets;
+
+import javax.swing.LookAndFeel;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+		
+		
+/**
+ * This LAF is a replacement for Metal for those of us who can't stand the
+ * exsessive use of the <b>BOLD</b> font in the default MetalLookAndFeel
+ * but don't want a heavy LAF that uses excessive memory or increases download
+ * size.  The excessive use of Sun's corporate color purple has also been
+ * removed, but icons have been left as they are since they would add
+ * to the download size significantly.
+ * @author Paul Hinds
+ * @version $Id: ModMetalLookAndFeel.java,v 1.3 2006/12/21 00:03:03 teknopaul Exp $
+ */		 
+public class ModMetalLookAndFeel extends MetalLookAndFeel {
+		
+	private static final long serialVersionUID = 1L;
+	private static boolean isInstalled = false;
+    protected static final Font defaultFont = new Font("Dialog",Font.PLAIN,11);
+     
+     
+     public ModMetalLookAndFeel(){
+         if(!isInstalled){
+             isInstalled = true;
+             UIManager.installLookAndFeel(new javax.swing.UIManager.LookAndFeelInfo("ModMetal", "org.tp23.laf.modmetal.ModMetalLookAndFeel"));
+         }
+     }
+     public static void setAntiAliased(boolean antialiased){
+         
+     }
+
+     public String getID(){
+         return "ModMetalLookAndFeel";
+     }
+
+     public String getName()
+     {
+         return "ModMetalLookAndFeel";
+     }
+
+     public String getDescription(){
+         return "Metal LAF with minor changes to default Fonts";
+     }
+
+     public boolean isNativeLookAndFeel(){
+         return false;
+     }
+
+     public boolean isSupportedLookAndFeel(){
+         return true;
+     }
+
+     protected void initClassDefaults(UIDefaults table){
+         super.initClassDefaults(table);
+     }
+
+     protected void createDefaultTheme(){
+         setCurrentTheme(new ModMetalTheme());
+         super.createDefaultTheme();
+     }
+
+     protected void initSystemColorDefaults(UIDefaults table){
+         super.initSystemColorDefaults(table);
+     }
+
+     protected void initComponentDefaults(UIDefaults table){
+         super.initComponentDefaults(table);
+         table.put("Button.font", defaultFont);
+         table.put("Checkbox.font", defaultFont);
+         table.put("CheckboxMenuItem.font", defaultFont);
+         table.put("ComboBox.font", defaultFont);
+         table.put("ComboBox.font", defaultFont);
+         table.put("FormattedTextField.font", defaultFont);
+         table.put("Label.font", defaultFont);
+         table.put("List.font", defaultFont);
+         table.put("Menu.font", defaultFont);
+         table.put("MenuItem.font", defaultFont);
+         table.put("PopupMenu.font", defaultFont);
+         table.put("ProgressBar.font", defaultFont);
+         table.put("RadioButton.font", defaultFont);
+         table.put("RadioButtonMenuItem.font", defaultFont);
+         table.put("TextArea.font", defaultFont);
+         table.put("TextField.font", defaultFont);
+         table.put("TextPane.font", defaultFont);
+         table.put("TabbedPane.font", defaultFont);
+         table.put("ToggleButton.font", defaultFont);
+         table.put("Tree.font", defaultFont);
+         table.put("Viewport.font", defaultFont);
+         table.put("OptionPane.errorIcon", LookAndFeel.makeIcon(MetalLookAndFeel.class, "icons/Error.gif"));
+         table.put("OptionPane.informationIcon", LookAndFeel.makeIcon(MetalLookAndFeel.class, "icons/Inform.gif"));
+         table.put("OptionPane.warningIcon", LookAndFeel.makeIcon(MetalLookAndFeel.class, "icons/Warn.gif"));
+         table.put("Button.margin", new Insets(2,4,2,4));
+     }
+	
+}
+		
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/ModMetalTheme.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/ModMetalTheme.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/plaf/ModMetalTheme.java	(revision 18906)
@@ -0,0 +1,53 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.swing.plaf;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
+/**
+ * @author Paul Hinds
+ * @version $Id: ModMetalTheme.java,v 1.4 2006/12/21 00:03:03 teknopaul Exp $
+ */
+public class ModMetalTheme extends DefaultMetalTheme{
+
+        private static final ColorUIResource primary1 = new ColorUIResource(
+                                  102, 102, 102);
+        private static final ColorUIResource primary2 = new ColorUIResource(
+                				  153, 153, 153);
+        private static final ColorUIResource primary3 = new ColorUIResource(
+                                  204, 204, 204);
+        
+        
+        private static final ColorUIResource secondary1 = new ColorUIResource(
+        						  192, 192, 192);
+        private static final ColorUIResource secondary2 = new ColorUIResource(
+                                  213, 213, 213);
+        private static final ColorUIResource secondary3 = new ColorUIResource(
+                                  234, 234, 234);
+
+
+        // these are blue in Metal Default Theme
+        protected ColorUIResource getPrimary1() { return primary1; } 
+        protected ColorUIResource getPrimary2() { return primary2; }
+        protected ColorUIResource getPrimary3() { return primary3; }
+
+        // these are gray in Metal Default Theme
+        protected ColorUIResource getSecondary1() { return secondary1; }
+        protected ColorUIResource getSecondary2() { return secondary2; }
+        protected ColorUIResource getSecondary3() { return secondary3; }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/AbstractTextPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/AbstractTextPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/AbstractTextPageRenderer.java	(revision 18906)
@@ -0,0 +1,120 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.renderer.PageRenderer;
+/**
+ * renamed from TextPageRenderer in version 0.8 to enable
+ * the use of the page type TextPage, TextPageRenderer is now 
+ * the renderer for these page types
+ * @author teknopaul
+ *
+ */
+public abstract class AbstractTextPageRenderer
+	implements PageRenderer {
+
+	public static final int PAGE_BLANK_LINES = 20;
+	public static final int PAGE_DECO_WIDTH = 80;
+
+	protected BufferedReader reader;
+	protected PrintStream out;
+	private InstallerContext ctx;
+
+
+	public AbstractTextPageRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx){
+		this.ctx = ctx;
+	}
+	public InstallerContext getContext(){
+		return ctx;
+	}
+
+	public void init( BufferedReader reader, PrintStream out){
+		this.out = out;
+		this.reader = reader;
+	}
+	/**
+	 *
+	 * @param page Page
+	 * @throws InstallException
+	 * @return boolean false implys user aborted
+	 */
+	public abstract boolean renderPage(Page page) throws InstallException;
+
+	protected void printHeader(Page page) throws IOException{
+		for (int i = 0; i < PAGE_BLANK_LINES; i++) {
+			out.println();
+		}
+
+
+		for (int i = 0; i < PAGE_DECO_WIDTH; i++) {
+			out.print('~');
+		}
+		out.println();
+		out.println("  " + page.getDisplayText());
+		for (int i = 0; i < PAGE_DECO_WIDTH; i++) {
+			out.print('~');
+		}
+		out.println();
+		out.println();
+		out.println();
+	}
+
+	private static final char[] affimativeChars = parseChars(org.tp23.antinstaller.Installer.langPack.getString("affirmativeChars"));
+    
+	private static char[] parseChars(String commaSeparated){
+		char[] input = commaSeparated.toCharArray();
+		char[] theChars = new char[input.length];
+		int j = 0;
+		for (int i = 0; i < input.length; i++) {
+			if(Character.isWhitespace(input[i]))continue;
+			if(',' == input[i]) {
+                continue;
+            }
+			else theChars[j++] = input[i];
+		}
+		char[] toReturn = new char[j];
+		System.arraycopy(theChars,0,toReturn,0,j);
+		return toReturn;
+	}
+
+	/**
+	 * does the string represent true default = true
+	 * @param entered String
+	 * @return boolean
+	 */
+	protected boolean isTrue(String entered){
+		if(entered.length() == 0) {
+            return true;
+        }
+		char first = entered.charAt(0);
+		boolean isTrue= false;
+		for (int i = 0; i < affimativeChars.length; i++) {
+			isTrue |= Character.toUpperCase(first) == affimativeChars[i];
+		}
+		return isTrue;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/AppRootInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/AppRootInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/AppRootInputRenderer.java	(revision 18906)
@@ -0,0 +1,20 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+public class AppRootInputRenderer
+	extends DirectoryInputRenderer {
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/CheckboxInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/CheckboxInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/CheckboxInputRenderer.java	(revision 18906)
@@ -0,0 +1,91 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.CheckboxInput;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.OutputField;
+
+
+public class CheckboxInputRenderer
+	implements TextOutputFieldRenderer {
+
+	protected InstallerContext ctx;
+
+	public CheckboxInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		CheckboxInput iField = (CheckboxInput) field;
+		out.print(iField.getDisplayText());
+		out.print("   [");
+		out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+		out.print(":");
+		out.print(iField.getDefaultValue());
+		out.print("]");
+		if (InputField.isTrue(iField.getForce())) {
+			out.println(org.tp23.antinstaller.Installer.langPack.getString("_required_"));
+			iField.setValue(iField.getDefaultValue());
+			return;
+		}
+		else {
+			out.println();
+		}
+
+
+		String input = reader.readLine();
+		out.println();
+		if (input == null || input.trim().equals("")) {
+			input = iField.getDefaultValue();
+		}
+		if(InputField.isTrue(input)){
+			iField.setValue("true");
+		}
+		//@TODO should accept true or false only and complain toher wise looping till sensible input
+		//else if (InputField.isFalse(input)){
+		//	iField.setValue("false");
+		//}
+		else{
+			iField.setValue("false");
+		}
+	}
+
+	public boolean isAbort() {
+		return false;
+	}
+
+
+
+	/**
+	 * renderError
+	 *
+	 * @param field InputField
+	 * @param in InputStream
+	 * @param out PrintStream
+	 */
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) {
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/CommentOutputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/CommentOutputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/CommentOutputRenderer.java	(revision 18906)
@@ -0,0 +1,68 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.CommentOutput;
+import org.tp23.antinstaller.input.OutputField;
+
+
+public class CommentOutputRenderer
+	implements TextOutputFieldRenderer {
+	protected InstallerContext ctx;
+	
+	public CommentOutputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		CommentOutput comField = (CommentOutput) field;
+		String text = field.getDisplayText();
+		if(text == null){
+			return;
+		}
+
+		if( OutputField.isTrue(comField.getBold()) ){
+			text = text.toUpperCase();
+		}
+		else if( OutputField.isTrue(comField.getTitle()) ){
+			text = text.toUpperCase();
+		}
+
+		out.println(text);
+	}
+	public boolean isAbort(){
+		return false;
+	}
+
+
+
+	/**
+	 * renderError
+	 *
+	 * @param field InputField
+	 * @param out PrintStream
+	 */
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) {
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ConditionalFieldRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ConditionalFieldRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ConditionalFieldRenderer.java	(revision 18906)
@@ -0,0 +1,85 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ResourceBundleHelper;
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.input.ConditionalField;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+
+/**
+ * Conditionally render a collection of fields
+ *
+ * @author mwilson
+ * @version $Id
+ * @since 0.7.4.patch 7
+ */
+public class ConditionalFieldRenderer implements TextOutputFieldRenderer
+{
+
+    private ResourceBundleHelper resHelper = new ResourceBundleHelper( "resources.LanguagePack" );
+    private InstallerContext context;
+
+    public void setContext( InstallerContext context )
+    {
+        this.context = context;
+    }
+
+    public void renderOutput( OutputField field, BufferedReader reader, PrintStream out )
+            throws ValidationException, InstallException, IOException
+    {
+        ConditionalField conditional = (ConditionalField) field;
+
+        try
+        {
+
+            OutputField[] fields = null;
+
+            if( conditional.getExpression().evaluate() )
+            {
+                fields = conditional.getFields();
+
+                SimpleInputPageRenderer.renderFields( context, fields, reader, out);
+            }
+        }
+        catch( ConfigurationException configExc )
+        {
+            throw new InstallException( resHelper.getMessage( "invalid.conditional.expression", conditional.getIfProperty()),
+                                                        configExc );
+        }
+        catch( ClassNotFoundException clsNotFoundExc )
+        {
+            throw new InstallException( resHelper.getMessage( "text.render.not.found" ),
+                                                        clsNotFoundExc );
+        }
+    }
+
+    public void renderError( OutputField field, BufferedReader reader, PrintStream out ) throws IOException
+    {
+        //renderOutput will have already rendered any errors
+    }
+
+    public boolean isAbort()
+    {
+        return false;
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ConfirmPasswordTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ConfirmPasswordTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ConfirmPasswordTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,11 @@
+package org.tp23.antinstaller.renderer.text;
+
+import java.util.ResourceBundle;
+
+public class ConfirmPasswordTextInputRenderer extends PasswordTextInputRenderer {
+	
+	protected String getErrorMessage(){
+		return org.tp23.antinstaller.Installer.langPack.getString("passwordsDoNotMatch");
+	}	
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/DateInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/DateInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/DateInputRenderer.java	(revision 18906)
@@ -0,0 +1,64 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.DateInput;
+import org.tp23.antinstaller.input.OutputField;
+
+
+public class DateInputRenderer
+	implements TextOutputFieldRenderer {
+
+	protected InstallerContext ctx;
+	public DateInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		DateInput iField = (DateInput) field;
+		out.print(field.getDisplayText());
+
+		out.print("   [");
+		out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+		out.print(":");
+		out.print(iField.getDefaultValue());
+		out.println("]");
+
+// @TODO check this from the patch submitted for bug 1469254
+		String input = reader.readLine();
+		
+		out.println();
+		if(input==null || input.equals(""))input = iField.getDefaultValue();
+		iField.setInputResult(input);
+	}
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException{
+		DateInput iField = (DateInput) field;
+		out.println("The input is not in the correct format:"+iField.getDateFormat());
+		renderOutput(field, reader, out);
+	}
+	public boolean isAbort(){
+		return false;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/DirectoryInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/DirectoryInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/DirectoryInputRenderer.java	(revision 18906)
@@ -0,0 +1,84 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.DirectoryInput;
+import org.tp23.antinstaller.input.OutputField;
+
+public class DirectoryInputRenderer implements TextOutputFieldRenderer {
+
+    protected InstallerContext ctx;
+
+    public DirectoryInputRenderer() {
+    }
+
+    public void setContext(InstallerContext ctx) {
+        this.ctx = ctx;
+    }
+
+    public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+        DirectoryInput iField = (DirectoryInput) field;
+        out.print(iField.getDisplayText());
+
+        out.print("   [");
+        out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+        out.print(":");
+        out.print(iField.getDefaultValue(true));
+        out.print("]");
+
+        out.println();
+        String input = reader.readLine();
+        out.println();
+        if (input == null || input.equals("")) {
+            input = iField.getDefaultValue(true);
+            if("".equals(input)) { // if we have empty default and empty input getAbsolutePath() produces a temporary directory
+                iField.setInputResult("");
+            }
+            else {
+                iField.setInputResult(new File(input).getAbsolutePath());
+            }
+        }
+        else {
+            iField.setInputResult(new File(input).getAbsolutePath());
+        }
+    }
+
+    public boolean isAbort() {
+        return false;
+    }
+
+    /**
+     * renderError
+     * 
+     * @param field
+     *            InputField
+     * @param in
+     *            InputStream
+     * @param out
+     *            PrintStream
+     */
+    public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+        renderOutput(field, reader, out);
+    }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ExtValidatedTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ExtValidatedTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ExtValidatedTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,38 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.tp23.antinstaller.input.ExtValidatedTextInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.Validator;
+
+
+public class ExtValidatedTextInputRenderer
+	extends ValidatedTextInputRenderer {
+
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException{
+		ExtValidatedTextInput extVal = (ExtValidatedTextInput) field;
+		Validator validator = extVal.getValidator();
+		Throwable t = extVal.getThrowable();
+		String message = validator.getErrorMessage(t,null);
+		out.println(message);
+		renderOutput(field, reader, out);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/FileInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/FileInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/FileInputRenderer.java	(revision 18906)
@@ -0,0 +1,68 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.FileInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+
+
+public class FileInputRenderer
+	implements TextOutputFieldRenderer {
+
+	protected InstallerContext ctx;
+	public FileInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		FileInput iField = (FileInput) field;
+		out.print(iField.getDisplayText());
+
+		out.print("   [");
+		out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+		out.print(":");
+		out.print(iField.getDefaultValue(true));
+		out.print("]");
+
+		out.println();
+		String input = reader.readLine();
+		out.println();
+		if(input == null || input.equals("")){
+			input = iField.getDefaultValue(true);
+		}
+		iField.setInputResult(new File(input).getAbsolutePath());
+	}
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException{
+		MessageRenderer mr = ctx.getMessageRenderer();
+		mr.printMessage(org.tp23.antinstaller.Installer.langPack.getString("fileDoesNotExist"));
+		renderOutput(field, reader, out);
+	}
+	public boolean isAbort(){
+		return false;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/HiddenPropertyInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/HiddenPropertyInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/HiddenPropertyInputRenderer.java	(revision 18906)
@@ -0,0 +1,58 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.HiddenPropertyInput;
+import org.tp23.antinstaller.input.OutputField;
+
+/**
+ * Text UI Renderer for hidden properties - displays nothing
+ *
+ * @author mwilson
+ * @version $Id
+ * @since 0.7.4 patch 6
+ */
+public class HiddenPropertyInputRenderer implements TextOutputFieldRenderer
+{
+
+    public void setContext( InstallerContext ctx )
+    {
+
+    }
+
+    public void renderOutput( OutputField field, BufferedReader reader, PrintStream out ) throws IOException
+    {
+        HiddenPropertyInput propertyField = (HiddenPropertyInput) field;
+
+        if( !propertyField.isEditted() )
+        {
+            propertyField.setInputResult( propertyField.getDefaultValue() );
+        }
+    }
+
+    public void renderError( OutputField field, BufferedReader reader, PrintStream out ) throws IOException
+    {
+
+    }
+
+    public boolean isAbort()
+    {
+        return false;
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/LargeSelectInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/LargeSelectInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/LargeSelectInputRenderer.java	(revision 18906)
@@ -0,0 +1,114 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.LargeSelectInput;
+import org.tp23.antinstaller.input.OutputField;
+
+
+public class LargeSelectInputRenderer
+	implements TextOutputFieldRenderer {
+
+	private static final String nextChar = org.tp23.antinstaller.Installer.langPack.getString("nextChar");
+
+	protected InstallerContext ctx;
+	public LargeSelectInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		LargeSelectInput iField = (LargeSelectInput) field;
+
+		printText(iField,out,reader);
+		String input = reader.readLine();
+		out.println();
+		if(input == null || input.equals("")) {
+            input = iField.getDefaultValue();
+        }
+		else {
+			try {
+				int idx = Integer.parseInt(input.trim());
+				input = iField.getOptions()[idx - 1].value;
+			} catch(Exception numFormatOrIndexOutOfBounds) {
+				return;
+			}
+		}
+		iField.setInputResult(input);
+	}
+	
+	public boolean isAbort(){
+		return false;
+	}
+	private void printText(LargeSelectInput iField, PrintStream out,BufferedReader reader) throws IOException{
+		out.println(iField.getDisplayText());
+		LargeSelectInput.Option[] options = iField.getOptions();
+		out.print("  ");
+		out.println(org.tp23.antinstaller.Installer.langPack.getString("availableOptions"));
+		StringBuffer optionsData = new StringBuffer();
+		for (int i = 0; i < options.length; i++) {
+			optionsData.append("  ");
+			optionsData.append(i+1);
+			optionsData.append(") ");
+			optionsData.append(options[i].getText());
+			if(iField.getDefaultValue().equals(options[i].value)){
+				optionsData.append(" [");
+				optionsData.append(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+				optionsData.append("]");
+			}
+			optionsData.append("\n");
+		}
+		optionsData.append("  ");
+		optionsData.append(org.tp23.antinstaller.Installer.langPack.getString("enterNumber")).append("\n");
+		Pager pager = new Pager(optionsData.toString());
+		String command = null;
+		do {
+			if (!pager.next(out)) {
+				break;
+			}
+			out.println();
+			out.println(getNextInstructions());
+			command = reader.readLine();
+		}
+		while (command.toUpperCase().startsWith( nextChar ));
+		pager.rest(out);
+
+	}
+
+
+
+	/**
+	 * renderError
+	 *
+	 * @param field InputField
+	 * @param out PrintStream
+	 */
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		ctx.getMessageRenderer().printMessage("Not a valid selection");
+		renderOutput(field, reader, out);
+	}
+	private String getNextInstructions() {
+		return org.tp23.antinstaller.Installer.langPack.getString("large_select_next");
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/LicensePageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/LicensePageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/LicensePageRenderer.java	(revision 18906)
@@ -0,0 +1,118 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+import org.tp23.antinstaller.page.LicensePage;
+import org.tp23.antinstaller.page.Page;
+
+
+public class LicensePageRenderer
+	extends AbstractTextPageRenderer {
+
+	private static final String nextChar = org.tp23.antinstaller.Installer.langPack.getString("nextChar");
+	
+	private boolean usePaging = false;
+
+	public LicensePageRenderer() {
+	}
+
+	public boolean renderPage(Page page) throws InstallException {
+		if (page instanceof LicensePage) {
+			LicensePage lPage = (LicensePage) page;
+			String strUsePaging = lPage.getUsePaging();
+			usePaging = strUsePaging!=null && isTrue(strUsePaging);
+			return renderLicensePage(lPage);
+		}
+		else {
+			throw new InstallException("Wrong Renderer in LicensePageRenderer.renderPage");
+		}
+	}
+
+	private boolean renderLicensePage(LicensePage page) throws InstallException {
+		try {
+			BufferedReader commandReader = reader;
+			out.println();
+			out.println(org.tp23.antinstaller.Installer.langPack.getString("clickViewLicense"));
+			commandReader.readLine();
+
+			String resource = page.getResource();
+			InputStream licensein = this.getClass().getResourceAsStream(resource);
+			if (licensein == null) {
+				throw new ConfigurationException("License resource '" + resource + "' is missing from installer");
+			}
+			BufferedReader reader = new BufferedReader(new InputStreamReader(licensein));
+			printHeader(page);
+			String lineread = null;
+			StringBuffer sb = new StringBuffer();
+
+			while ( (lineread = reader.readLine()) != null) {
+				sb.append(lineread);
+				sb.append('\n');
+			}
+            // as per FindBugs
+            reader.close();
+
+			String command = null;
+			Pager pager = new Pager(sb.toString());
+			if (usePaging) {
+				do {
+					if (!pager.next(out)) {
+						break;
+					}
+					out.println();
+					out.println(getNextInstructions());
+					command = commandReader.readLine();
+				}
+				while (command.toUpperCase().startsWith(nextChar));
+				pager.rest(out);
+			}
+			else {
+				out.println(pager.getText());
+			}
+
+			for (int i = 0; i < PAGE_DECO_WIDTH; i++) {
+				out.print('~');
+			}
+			out.println();
+			out.println(org.tp23.antinstaller.Installer.langPack.getString("licenseAccept"));
+			command = commandReader.readLine();
+			command = command.trim();
+			if (isTrue(command)) {
+				return true;
+			}
+			else {
+				page.setAbort(true);
+				return false;
+			}
+		}
+		catch (IOException ex) {
+			throw new InstallException("Not able to read license file", ex);
+		}
+	}
+
+	private String getNextInstructions() {
+		return org.tp23.antinstaller.Installer.langPack.getString("license_next");
+	}
+}
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Pager.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Pager.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Pager.java	(revision 18906)
@@ -0,0 +1,101 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.PrintStream;
+
+
+/**
+ *
+ * <p>Used for the Text/Console input to show pages of text as opposed to displaying
+* a long list of text that scrolls off the top of the page. </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: Pager.java,v 1.2 2006/12/21 00:09:19 teknopaul Exp $
+ */
+public class Pager {
+
+	private char[] text;
+	private int linesPerPage = 20;
+	private int charsPerLine = 80;
+	private int stringIndex = 0;
+
+	public Pager(String text) {
+		this.text = text.toCharArray();
+	}
+	public Pager(){
+	}
+
+	public String getText() {
+		return new String(text);
+	}
+
+	public void setText(String text) {
+		this.text = text.toCharArray();
+	}
+	/**
+	 * Print the rest of the text
+	 */
+	public void rest(PrintStream out){
+		while(next(out));
+}
+	/**
+	 * Print the next page
+	 * @param out PrintStream
+	 * @return boolean true if there is more text
+	 */
+	public boolean next(PrintStream out){
+		int lineChars = 0;
+		int lastSpace = -1;
+		// loop past charaters, increment with lines
+		char[] lineBuffer = new char[charsPerLine+1];
+		for (int lines = 0; lines < linesPerPage;) {
+			if(stringIndex >= text.length){
+				return false;
+			}
+			lineBuffer[lineChars] = text[stringIndex];
+			if(text[stringIndex] == ' '){
+				lastSpace = lineChars;
+			}
+			if(text[stringIndex] == '\n'){
+				String tmp = new String(lineBuffer, 0, lineChars + 1);
+				out.print(tmp);
+				lines++;
+				lineChars = 0;
+				lastSpace = -1;
+			}
+			else if(lineChars == charsPerLine){
+				// handle lines ending with the last full word
+				if(lastSpace != -1){
+					out.println(new String(lineBuffer, 0, lastSpace));
+					stringIndex = stringIndex - (charsPerLine - lastSpace);
+				}
+				else {
+					out.println(new String(lineBuffer, 0, lineChars));
+				}
+				lines++;
+				lineChars = 0;
+				lastSpace = -1;
+			}
+			else{
+				lineChars++;
+			}
+			stringIndex++;
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/PasswordTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/PasswordTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/PasswordTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,165 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.PasswordTextInput;
+
+
+public class PasswordTextInputRenderer extends ValidatedTextInputRenderer
+
+	implements TextOutputFieldRenderer {
+
+	public PasswordTextInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		PasswordTextInput iField = (PasswordTextInput) field;
+		StringBuffer displayText = new StringBuffer();
+		displayText.append(field.getDisplayText());
+		displayText.append("   [");
+		displayText.append(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+		displayText.append(":");
+		displayText.append(iField.getDefaultValue());
+		displayText.append("]");
+
+		String input = null;
+		if(OutputField.isTrue(iField.getTextMask())){
+			input = new PasswordField().getPassword(displayText.toString());
+			System.out.print("\r                                                      ");
+		}
+		else {
+			out.println(displayText.toString());
+			input = reader.readLine();
+		}
+
+		out.println();
+		out.println();
+		if(input == null || input.equals("")){
+            input = iField.getDefaultValue();
+        }
+		iField.setInputResult(input);
+	}
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException{
+		out.println(getErrorMessage());
+		renderOutput(field, reader, out);
+	}
+	public boolean isAbort(){
+		return false;
+	}
+
+	protected String getErrorMessage(){
+		return org.tp23.antinstaller.Installer.langPack.getString("notCorrectPasswordFormat");
+	}
+	
+	// shame this does not work
+	// does any one know a way to not echo passwords?
+//	private String readInput(InputStreamReader reader, PrintStream out) throws IOException{
+//		StringBuffer sb = new StringBuffer();
+//		char c = 0;
+//		while((c=(char)reader.read())!='\n'){
+//			if(c==8)sb.setLength(sb.length()-1);
+//			sb.append(c);
+//			out.print((char)8);
+//			out.flush();
+//		}
+//		return sb.toString();
+//	}
+	
+	/*
+	 * 
+	 * Taken from the SUN website
+	 * @author Paul Hinds
+	 * @version $Id: PasswordTextInputRenderer.java,v 1.4 2007/01/04 22:57:18 teknopaul Exp $
+	 */
+	class MaskingThread extends Thread {
+		private boolean stop = false;
+		private int index;
+		private String prompt;
+
+		public MaskingThread(String prompt) {
+			this.prompt = prompt;
+		}
+
+		public void run() {
+			while (!stop) {
+				try {
+					// attempt masking at this rate
+					this.sleep(1);
+				}
+				catch (InterruptedException iex) {
+					iex.printStackTrace();
+				}
+				if (!stop) {
+					System.out.print("\r" + prompt + " \r" + prompt);
+				}
+				System.out.flush();
+			}
+		}
+
+		public void stopMasking() {
+			this.stop = true;
+		}
+	}
+	
+	public class PasswordField {
+
+		/**
+		 *@param prompt The prompt to display to the user.
+		 *@return The password as entered by the user.
+		 */
+		String getPassword(String prompt) throws IOException {
+			// password holder
+			StringBuffer password = new StringBuffer();
+			MaskingThread maskingthread = new MaskingThread(prompt);
+			Thread thread = new Thread(maskingthread);
+			thread.start();
+			// block until enter is pressed
+			while (true) {
+				char c = (char) System.in.read();
+				// assume enter pressed, stop masking
+				maskingthread.stopMasking();
+				if (c == '\r') {
+					c = (char) System.in.read();
+					if (c == '\n') {
+						break;
+					}
+					else {
+						continue;
+					}
+				}
+				else if (c == '\n') {
+					break;
+				}
+				else {
+					// store the password
+					password.append(c);
+				}
+			}
+			return password.toString();
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ProgressPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ProgressPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ProgressPageRenderer.java	(revision 18906)
@@ -0,0 +1,68 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.renderer.AntOutputRenderer;
+
+
+public class ProgressPageRenderer extends AbstractTextPageRenderer implements AntOutputRenderer {
+
+	public ProgressPageRenderer() {
+	}
+
+	/**
+	 * getErr
+	 *
+	 * @return PrintStream
+	 */
+	public PrintStream getErr() {
+		return System.err;
+	}
+
+
+
+	/**
+	 * getOut
+	 *
+	 * @return PrintStream
+	 */
+	public PrintStream getOut() {
+		return System.out;
+	}
+
+
+
+	/**
+	 * renderPage
+	 *
+	 * @param page Page
+	 * @return boolean
+	 */
+	public boolean renderPage(Page page) throws InstallException {
+		try {
+			printHeader(page);
+		}
+		catch (IOException ex) {
+			throw new InstallException("Can not print header");// not very likely!!
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res.properties	(revision 18906)
@@ -0,0 +1,16 @@
+#org.tp23.antinstaller.renderer.text.Res
+#Wed Nov 10 00:25:59 CET 2004
+
+_required_=required
+_default_=default
+true=true
+affirmativeChars=T,Y
+licenseAccept=Do you accept the license? Y or N   [default\:Y]
+clickViewLicense=Press enter to view the license agreement
+clickViewText=Press enter to continue
+enterNumber=Enter a number
+fileDoesNotExist=The File does not exist
+license_next=enter 'N' for the next page, enter anything else to scroll to the the end
+large_select_next=enter 'N' for the next page, enter anything else to scroll to the the end
+nextChar=N
+availableOptions=view available options
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_de.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_de.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_de.properties	(revision 18906)
@@ -0,0 +1,17 @@
+#org.tp23.antinstaller.renderer.text.Res
+#Wed Nov 10 00:25:59 CET 2004
+
+_required_=erforderlich
+_default_=Voreinstellung
+true=wahr
+affirmativeChars=W,J
+licenseAccept=Akzeptieren Sie diese Lizenz? J oder N  [Vorgabe\:J]
+clickViewLicense=Drücken Sie die Eingabetaste, um die Lizenzvereinbarung anzusehen
+clickViewText=Press enter to continue
+enterNumber=Geben Sie eine Zahl ein
+fileDoesNotExist=Die Datei existiert nicht
+license_next=Geben Sie 'N' für die nächste Seite ein, oder eine andere
+Taste, um zum Ende zu springen
+large_select_next=Geben Sie 'N' für die nächste Seite ein, oder eine andere Taste, um zum Ende zu springen
+nextChar=N
+availableOptions=Verfügbare Optionen ansehen
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_es.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_es.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_es.properties	(revision 18906)
@@ -0,0 +1,15 @@
+#org.tp23.antinstaller.renderer.text.Res
+#Wed Nov 10 00:25:59 CET 2004
+_required_=Requerido
+_default_=Por defecto
+true=Verdad
+affirmativeChars=S,V
+licenseAccept=Aceptar la licencia? S o N   [Por defecto\:Y]
+clickViewLicense=Pulsar intro para ver licencia.
+clickViewText=Pulsar intro para continuar.
+enterNumber=Introduzca un nmero.
+fileDoesNotExist=El fichero no existe.
+license_next=Pulse 'S' para ver la siguiente página, pulse cualquier otra tecla para ir al final.
+large_select_next=Pulse 'S' para ver la siguiente pàgina, pulse cualquier otra tecla para ir al final.
+nextChar=S
+availableOptions=Ver opciones disponibles.
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_es_EU.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_es_EU.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/Res_es_EU.properties	(revision 18906)
@@ -0,0 +1,15 @@
+#org.tp23.antinstaller.renderer.text.Res
+#Wed Nov 10 00:25:59 CET 2004
+_required_=Beharrezkoa
+_default_=Lehenetsia
+true=Egia
+affirmativeChars=E,B
+licenseAccept=Baimena onartzen duzu? E,B edo N   [Lehenetsia\:Y]
+clickViewLicense=Sakatu hemen baimena ikusteko.
+clickViewText=Pulsar intro para continuar.
+enterNumber=Sartu zenbaki bat.
+fileDoesNotExist=Fitztegia ez da existitzen.
+license_next=Sakatu 'N' hurrengo horrialdea ikusteko, sakatu beste edozer gauza bukaerara joateko.
+large_select_next=Sakatu 'N' hurrengo horrialdea ikusteko, sakatu beste edozer gauza bukaerara joateko.
+nextChar=N
+availableOptions=ikusi aukerak
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SelectInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SelectInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SelectInputRenderer.java	(revision 18906)
@@ -0,0 +1,93 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.SelectInput;
+
+
+public class SelectInputRenderer
+	implements TextOutputFieldRenderer {
+
+	protected InstallerContext ctx;
+	public SelectInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		SelectInput iField = (SelectInput) field;
+		printText(iField,out);
+		
+		String input = reader.readLine();
+		out.println();
+		if(input == null || input.equals("")){
+			input = iField.getDefaultValue();
+		}
+		else {
+			try {
+				int idx = Integer.parseInt(input.trim());
+				input = iField.getOptions()[idx - 1].value;
+			} catch(Exception numFormatOrIndexOutOfBounds){
+				return;
+			}
+		}
+		iField.setInputResult(input);
+	}
+	public boolean isAbort(){
+		return false;
+	}
+	private void printText(SelectInput iField, PrintStream out) throws IOException{
+		out.println(iField.getDisplayText());
+		SelectInput.Option[] options = iField.getOptions();
+		out.print("  ");
+		out.println(org.tp23.antinstaller.Installer.langPack.getString("enterNumber"));
+		for (int i = 0; i < options.length; i++) {
+			out.print("  ");
+			out.print(i+1);
+			out.print(") ");
+			out.print(options[i].getText());
+			if(iField.getDefaultValue().equals(options[i].value)){
+				out.print(" [");
+				out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+				out.print("]");
+			}
+			out.println();
+		}
+	}
+
+
+
+	/**
+	 * renderError
+	 *
+	 * @param field InputField
+	 * @param in InputStream
+	 * @param out PrintStream
+	 */
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		ctx.getMessageRenderer().printMessage("Not a valid selection");
+		renderOutput(field, reader, out);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SimpleInputPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SimpleInputPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SimpleInputPageRenderer.java	(revision 18906)
@@ -0,0 +1,91 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.page.SimpleInputPage;
+import org.tp23.antinstaller.renderer.RendererFactory;
+
+public class SimpleInputPageRenderer
+	extends AbstractTextPageRenderer {
+	
+	public SimpleInputPageRenderer() {
+	}
+
+	public boolean renderPage(Page page) throws InstallException{
+		if (page instanceof SimpleInputPage) {
+			try {
+				return renderSimpleInputPage( (SimpleInputPage) page);
+			}
+			catch (ClassNotFoundException ex) {
+				// this would be a code error
+				throw new InstallException("Cant find acceptable TextField renderer in SimpleInputPageRenderer.renderPage:" + ex.getMessage(),
+										   ex);
+			}
+		}
+		else {
+			//this would be a code error
+			throw new InstallException("Wrong Renderer in SimpleInputPageRenderer.renderPage");
+		}
+	}
+
+	private boolean renderSimpleInputPage(SimpleInputPage page)
+            throws InstallException, ClassNotFoundException, ValidationException
+    {
+
+		try {
+			printHeader(page);
+			OutputField[] fields = page.getOutputField();
+            return renderFields( getContext(), fields, reader, out );
+		}
+		catch (IOException ex) {
+			// If you cant write to the console there is not much you can do
+			throw new InstallException("IOException",ex);
+		}
+	}
+
+    public static boolean renderFields( InstallerContext context, OutputField[] fields, BufferedReader reader, PrintStream out )
+            throws ClassNotFoundException, IOException, ValidationException, InstallException
+    {
+
+        for (int f = 0; f < fields.length; f++) {
+            String text = fields[f].getExplanatoryText();
+            if(text != null){
+                out.println(text);
+                out.println();
+            }
+
+            TextOutputFieldRenderer frenderer = RendererFactory.getTextRenderer(fields[f]);
+            frenderer.setContext( context );
+            frenderer.renderOutput(fields[f], reader, out);
+            if (frenderer.isAbort()) {
+                return false;
+            }
+            while(!fields[f].validate( context ) ){
+                frenderer.renderError(fields[f], reader, out);
+            };
+        }
+        return true;
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SplashPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SplashPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/SplashPageRenderer.java	(revision 18906)
@@ -0,0 +1,49 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.IOException;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.page.SplashPage;
+
+public class SplashPageRenderer extends AbstractTextPageRenderer {
+	public SplashPageRenderer() {
+	}
+	public boolean renderPage(Page page) throws InstallException {
+		if (page instanceof SplashPage) {
+			SplashPage sPage = (SplashPage) page;
+			return renderSplashPage(sPage);
+		}
+		else {
+			throw new InstallException("Wrong Renderer in SplashPageRenderer.renderPage");
+		}
+	}
+	private boolean renderSplashPage(SplashPage page) throws InstallException {
+		try {
+			printHeader(page);
+			out.println();
+			out.println(page.getAltText());
+
+			reader.read();
+			return true;
+		}
+		catch (IOException ex) {
+			throw new InstallException("IOException");
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TargetInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TargetInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TargetInputRenderer.java	(revision 18906)
@@ -0,0 +1,94 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.TargetInput;
+
+
+public class TargetInputRenderer
+	implements TextOutputFieldRenderer {
+
+	protected InstallerContext ctx;
+	public TargetInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		TargetInput iField = (TargetInput) field;
+		out.println("Install the following component?");
+		out.print(iField.getDisplayText());
+
+		out.print("   [");
+		out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+		out.print(":");
+		out.print(iField.getDefaultValue());
+		out.print("]");
+
+		if (InputField.isTrue(iField.getForce())) {
+			out.print("   [");
+			out.print(org.tp23.antinstaller.Installer.langPack.getString("_required_"));
+			out.println("]");
+			ctx.getCurrentPage().addTarget(iField.getIdx(), iField.getTarget());
+			iField.setInputResult("true");
+			out.println();
+			return;
+		}
+
+
+
+		out.println();
+		String input = reader.readLine();
+		out.println();
+		if (input == null || input.trim().equals("")){
+			input = iField.getDefaultValue();
+		}
+		if(InputField.isTrue(input)){
+			ctx.getCurrentPage().addTarget(iField.getIdx(), iField.getTarget());
+			iField.setInputResult("true");
+		}
+		else{
+			ctx.getCurrentPage().removeTarget(iField.getIdx());
+			iField.setInputResult("false");
+		}
+		
+	}
+
+	public boolean isAbort() {
+		return false;
+	}
+
+
+
+	/**
+	 * renderError
+	 *
+	 * @param field InputField
+	 * @param out PrintStream
+	 */
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) {
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TargetSelectInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TargetSelectInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TargetSelectInputRenderer.java	(revision 18906)
@@ -0,0 +1,77 @@
+/* 
+ * Copyright 2005 Paul Hinds, Mark Anderson
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.TargetSelectInput;
+
+/**
+ * 
+ * @author Paul Hinds, Mark Anderson
+ * @version $Id: TargetSelectInputRenderer.java,v 1.3 2007/01/09 22:41:40 teknopaul Exp $
+ */
+public class TargetSelectInputRenderer
+	extends SelectInputRenderer {
+
+	public TargetSelectInputRenderer() {
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		TargetSelectInput iField = (TargetSelectInput) field;
+		printText(iField,out);
+
+		String input = reader.readLine();
+		out.println();
+		if(input == null || input.equals(""))
+			input = iField.getDefaultValue();
+		else{
+			try{
+				int idx = Integer.parseInt(input.trim());
+				input = iField.getOptions()[idx - 1].value;
+			} catch(Exception numFormatOrIndexOutOfBounds) {
+				return;
+			}
+		}
+		ctx.getCurrentPage().removeTarget(iField.getIdx());
+		ctx.getCurrentPage().addTarget(iField.getIdx(), input);
+		iField.setInputResult(input);
+	}
+
+	private void printText(TargetSelectInput iField, PrintStream out) throws IOException{
+		out.println(iField.getDisplayText());
+		TargetSelectInput.Option[] options = iField.getOptions();
+		out.print("  ");
+		out.println(org.tp23.antinstaller.Installer.langPack.getString("enterNumber"));
+		for (int i = 0; i < options.length; i++) {
+			out.print("  ");
+			out.print(i+1);
+			out.print(") ");
+			out.print(options[i].getText());
+			if(iField.getDefaultValue().equals(options[i].value)){
+				out.print(" [");
+				out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+				out.print("]");
+			}
+			out.println();
+		}
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextMessageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextMessageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextMessageRenderer.java	(revision 18906)
@@ -0,0 +1,74 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+
+/**
+ *
+ * <p>Render user messages to the console </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: TextMessageRenderer.java,v 1.3 2007/01/09 22:41:40 teknopaul Exp $
+ */
+public class TextMessageRenderer
+	implements MessageRenderer {
+
+	private InstallerContext ctx = null;
+
+	public TextMessageRenderer() {
+	}
+
+	public void setInstallerContext(InstallerContext ctx){
+		this.ctx = ctx;
+	}
+	public void printMessage(String message){
+		System.out.println(message);
+	}
+
+	public boolean prompt(String message){
+		try {
+			System.out.println(message);
+			// FIXME need to read directly from InputStreamReader and stop at first \n or \r
+			// test the following
+//			InputStreamReader isr = new InputStreamReader(System.in);			
+//			int intChar = -1;
+//			StringBuffer sb = new StringBuffer();
+//			while((intChar = isr.read()) != -1 && intChar != '\n' && intChar != '\r'){
+//				sb.append((char)intChar);
+//			}
+//			String line = sb.toString();
+
+			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
+			String line = reader.readLine();
+			if (line != null && !line.equals("") && line.trim().length() > 0) {
+				return Character.toUpperCase(line.trim().charAt(0)) == 'Y' ||
+					Character.toUpperCase(line.trim().charAt(0)) == 'T' ;
+			}
+			return false;
+		}
+		catch (IOException ex) {
+			throw new RuntimeException("IOException", ex);
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextOutputFieldRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextOutputFieldRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextOutputFieldRenderer.java	(revision 18906)
@@ -0,0 +1,53 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+
+
+
+/**
+ *
+ * <p>Renders text OutputFields, TextOutputFieldRenderer should provide a no args constructor. </p>
+ * <p>The package name for TextOutputFieldRenderer is critical</p>
+ * BufferedInputStream is used for input to prevent new Buffered reader swallowing more input from the
+ * input stream than is strictly required
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: TextOutputFieldRenderer.java,v 1.4 2006/12/21 00:03:01 teknopaul Exp $
+ */
+public interface TextOutputFieldRenderer {
+	public void setContext(InstallerContext ctx);
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws InstallException, IOException;
+	/**
+	 * Called when validation fails
+	 * @param field InputField
+	 * @param in InputStream
+	 * @param out PrintStream
+	 * @throws IOException
+	 */
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException;
+	/** fields have abort for text since each field has its own input line*/
+	public boolean isAbort();
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextPageRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextPageRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/TextPageRenderer.java	(revision 18906)
@@ -0,0 +1,100 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.page.TextPage;
+
+
+public class TextPageRenderer
+	extends AbstractTextPageRenderer {
+
+	private static final String nextChar = org.tp23.antinstaller.Installer.langPack.getString("nextChar");
+
+	public TextPageRenderer() {
+	}
+
+	public boolean renderPage(Page page) throws InstallException {
+		if (page instanceof TextPage) {
+			TextPage lPage = (TextPage) page;
+			return renderTextPage(lPage);
+		}
+		else {
+			throw new InstallException("Wrong Renderer in TextPageRenderer.renderPage");
+		}
+	}
+
+	private boolean renderTextPage(TextPage page) throws InstallException {
+		try {
+			BufferedReader commandReader = reader;//new BufferedReader(new InputStreamReader(in));
+
+			String resource = page.getTextResource();
+			InputStream textin = this.getClass().getResourceAsStream(resource);
+			BufferedReader reader = new BufferedReader(new InputStreamReader(textin));
+			printHeader(page);
+			String lineread = null;
+			StringBuffer sb = new StringBuffer();
+
+			while ( (lineread = reader.readLine()) != null) {
+				sb.append(lineread);
+				sb.append('\n');
+			}
+            // as per FindBugs
+            reader.close();
+
+			// parse property references
+			String parsedText = getContext().getInstaller().getResultContainer().getDefaultValue(sb.toString());
+
+			String command = null;
+			Pager pager = new Pager(parsedText);
+			do {
+				if (!pager.next(out)) {
+					break;
+				}
+				out.println();
+				out.println(getNextInstructions());
+				command = commandReader.readLine();
+			}
+			while (command.toUpperCase().startsWith(nextChar));
+			pager.rest(out);
+
+			for (int i = 0; i < PAGE_DECO_WIDTH; i++) {
+				out.print('~');
+			}
+			
+			out.println();
+			out.println(org.tp23.antinstaller.Installer.langPack.getString("clickViewText"));
+			commandReader.readLine();
+			
+			return true;
+		}
+		catch (IOException ex) {
+			throw new InstallException("Not able to read text file", ex);
+		}
+	}
+
+	private String getNextInstructions() {
+		return org.tp23.antinstaller.Installer.langPack.getString("license_next");
+	}
+}
+
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/UnvalidatedTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/UnvalidatedTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/UnvalidatedTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,72 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.UnvalidatedTextInput;
+
+
+public class UnvalidatedTextInputRenderer
+	implements TextOutputFieldRenderer {
+
+	protected InstallerContext ctx;
+	public UnvalidatedTextInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		UnvalidatedTextInput iField = (UnvalidatedTextInput) field;
+		out.print(field.getDisplayText());
+
+		out.print("   [");
+		out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+		out.print(":");
+		out.print(iField.getDefaultValue());
+		out.print("]");
+
+
+		//BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+		out.println();
+		String input = reader.readLine();
+		out.println();
+		if(input==null || input.equals(""))input=iField.getDefaultValue();
+		iField.setInputResult(input);
+	}
+	public boolean isAbort(){
+		return false;
+	}
+
+
+
+	/**
+	 * renderError
+	 *
+	 * @param field InputField
+	 * @param in InputStream
+	 * @param out PrintStream
+	 */
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) {
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ValidatedTextInputRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ValidatedTextInputRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/ValidatedTextInputRenderer.java	(revision 18906)
@@ -0,0 +1,64 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.renderer.text;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.ValidatedTextInput;
+
+
+public class ValidatedTextInputRenderer
+	implements TextOutputFieldRenderer {
+
+	protected InstallerContext ctx;
+	public ValidatedTextInputRenderer() {
+	}
+
+	public void setContext(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	public void renderOutput(OutputField field, BufferedReader reader, PrintStream out) throws IOException {
+		ValidatedTextInput iField = (ValidatedTextInput) field;
+		out.print(field.getDisplayText());
+
+		out.print("   [");
+		out.print(org.tp23.antinstaller.Installer.langPack.getString("_default_"));
+		out.print(":");
+		out.print(iField.getDefaultValue());
+		out.println("]");
+
+
+		//BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+		String input = reader.readLine();
+		out.println();
+		if(input==null || input.equals(""))input=iField.getDefaultValue();
+		iField.setInputResult(input);
+	}
+	public void renderError(OutputField field, BufferedReader reader, PrintStream out) throws IOException{
+		//ValidatedTextInput iField = (ValidatedTextInput) field;
+		out.println("The input is not of the correct format");
+		renderOutput(field, reader, out);
+	}
+	public boolean isAbort(){
+		return false;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/package.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/package.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/renderer/text/package.html	(revision 18906)
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--
+  Copyright (c) 2004 tp23
+  All Rights Reserved.
+--></head>
+
+<body bgcolor="white">Renderers for the command line interface.</body>
+</html>
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AntRunner.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AntRunner.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AntRunner.java	(revision 18906)
@@ -0,0 +1,54 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.antmod.RuntimeLauncher;
+import org.tp23.antinstaller.page.Page;
+
+/**
+ * Abstract Runner superclass that handles the runPost(page) to execute
+ * ant tasks mid display.
+ * @author teknopaul
+ */
+public abstract class AntRunner implements Runner{
+
+	private RuntimeLauncher launcher = null;
+	private InstallerContext ctx;
+	
+	public AntRunner(InstallerContext ctx) {
+		this.ctx = ctx;
+	}
+
+	protected void runPost(Page page){
+		String postTarget = page.getPostDisplayTarget();
+		if(postTarget != null){
+			if(launcher == null){
+				prepareLauncher();
+			}
+			launcher.updateProps();
+			launcher.run(postTarget);
+		}
+	}
+	/**
+	 * This should never get run if there are no postTargets
+	 *
+	 */
+	private void prepareLauncher(){
+		launcher = new RuntimeLauncher(ctx);
+		launcher.parseProject();
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AutoSwingRunner.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AutoSwingRunner.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AutoSwingRunner.java	(revision 18906)
@@ -0,0 +1,53 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.util.List;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.renderer.swing.SwingPageRenderer;
+/**
+ * Swing runner that starts with the last page bypassing all the other pages.
+ * This will be used during auto builds where the properties are already known.
+ * @author teknopaul
+ *
+ */
+public class AutoSwingRunner extends SwingRunner {
+
+	public AutoSwingRunner(InstallerContext ctx){
+		super(ctx);
+	}
+	protected void showFirstPage() throws Exception {
+		Page[] pages = installer.getPages();
+		// run all postDisplayTargets as if the pages were shown
+		for (int i = 0; i < pages.length; i++) {
+			Page page = pages[i];
+			if(page.getPostDisplayTarget() != null){
+				if( ifHelper.ifProperty(page) && 
+					ifHelper.ifTarget(page, ctx.getInstaller().getPages()) ){ // page would have been shown
+					runPost(page);
+				}
+			}
+		}
+		
+		// shows the LAST page directly which should be the Progress page
+		ctx.setCurrentPage(pages[pages.length - 1]);
+		List pageRenderers = getPageRenderers();
+		renderNext((SwingPageRenderer)pageRenderers.get(pageRenderers.size() - 1));
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AutoTextRunner.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AutoTextRunner.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/AutoTextRunner.java	(revision 18906)
@@ -0,0 +1,45 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.io.IOException;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.page.Page;
+
+public class AutoTextRunner extends TextRunner {
+	
+	public AutoTextRunner(InstallerContext ctx) throws IOException{
+		super(ctx);
+	}
+
+	public boolean runInstaller() throws InstallException {
+		Page[] pages = installer.getPages();
+		// run all postDisplayTargets as if the pages were shown
+		for (int i = 0; i < pages.length; i++) {
+			Page page = pages[i];
+			if(page.getPostDisplayTarget() != null) {
+				if( ifHelper.ifProperty(page) && 
+				    ifHelper.ifTarget(page, ctx.getInstaller().getPages()) ) { // page would have been shown
+					runPost(page);
+				}
+			}
+		}
+
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ConfigurationException.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ConfigurationException.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ConfigurationException.java	(revision 18906)
@@ -0,0 +1,38 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import org.tp23.antinstaller.InstallException;
+
+
+/**
+ * <p>A Runtime exception that implies the config file is wrong.</p>
+ */
+public class ConfigurationException
+	extends InstallException {
+	public ConfigurationException() {
+		super();
+	}
+
+	public ConfigurationException(String message) {
+		super(message);
+	}
+
+	public ConfigurationException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ConfigurationLoader.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ConfigurationLoader.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ConfigurationLoader.java	(revision 18906)
@@ -0,0 +1,379 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.Installer;
+import org.tp23.antinstaller.PropertiesFileRenderer;
+import org.tp23.antinstaller.input.ConditionalField;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.ResultContainer;
+import org.tp23.antinstaller.input.SelectInput;
+import org.tp23.antinstaller.input.TargetInput;
+import org.tp23.antinstaller.input.TargetSelectInput;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.page.ProgressPage;
+import org.tp23.antinstaller.page.SimpleInputPage;
+import org.tp23.antinstaller.renderer.swing.plaf.LookAndFeelFactory;
+import org.tp23.antinstaller.runtime.exe.LoadConfigFilter;
+import org.tp23.antinstaller.runtime.exe.PropertyLoaderFilter;
+import org.tp23.antinstaller.runtime.logic.ExpressionBuilder;
+
+
+/**
+ *
+ * <p>Loads the configuration file into memory as an Installer object. </p>
+ * <p>This class also contains the main() method to check the config files for common errors </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @todo this should be an interface not a class
+ * @author Paul Hinds
+ * @version $Id: ConfigurationLoader.java,v 1.15 2007/01/28 08:44:43 teknopaul Exp $
+ */
+public class ConfigurationLoader extends LoadConfigFilter{
+	
+
+	/**
+	 * Command line config checker
+	 * @param args String[]
+	 * @throws InstallException 
+	 */
+	public static void main(String[] args) {
+        ConfigurationLoader configurationLoader = new ConfigurationLoader();
+		String configFile = INSTALLER_CONFIG_FILE;
+		if(args.length > 1 && args[1].endsWith(".xml")){
+			configFile = args[1];
+		}
+		int ret = 1;
+		try {
+
+			System.out.println( "reading..." );
+			configurationLoader.readConfig(new File(args[0]), configFile);
+			
+			System.out.println( "validating..." );
+			ret = configurationLoader.validate();
+            
+			if(ret > 0){
+				System.out.println("VALIDATION FAILED");
+			}
+		}
+		catch (ConfigurationException ex) {
+			ex.printStackTrace();
+			System.exit(ret);
+		}
+		catch (IOException ex) {
+			ex.printStackTrace();
+			System.exit(ret);
+		} catch (InstallException ex) {
+			// probably ifProperty syntax wrong
+			ex.printStackTrace();
+			System.exit(ret);
+		}
+	}
+
+	// add logging to configuration loader
+	/*
+	Installer installer;    
+	public ConfigurationLoader() {}
+
+	public ConfigurationLoader( Installer ins ) {
+		installer = ins;
+	}
+	private void log( String message ) {
+		if ( installer != null ) {
+			installer.log( message );
+		}
+	}
+	*/
+
+
+    /**
+     * This method is not valid until super.readConfig() has been run
+     * @return
+     */
+    public Installer getInstaller(){
+        return installer;
+    }
+	
+	public int validate() throws IOException, ConfigurationException, InstallException{
+		System.out.println( "get pages" );
+		Page[] pages = installer.getPages();
+		boolean foundErrors = false;
+		Set pageNames = new HashSet();
+		Set targets = new HashSet();
+		Set propertyNames = new HashSet();
+		Set pagePropertyNames = null;
+		
+		System.out.println( "validate attributes" );
+		if( validateInstallerAttributes() ){
+			System.out.println( "(validate attributes returned true)" );
+			foundErrors = true;
+		}
+		
+		for (int p = 0; p < pages.length; p++) {
+           System.out.println("Checking page: " + pages[p].getName() );
+			if(pageNames.contains(pages[p].getName())){
+				System.out.println("Error: page name '"
+                                    + pages[p].getName()
+                                    + "' repeated - auto loading of configuration will fail");
+				foundErrors = true;
+			}
+			pageNames.add(pages[p].getName());
+			
+			//TODO check page requirements
+			//test ifProperty syntax
+			// TODO passes validation even if nothing will evaluate
+			if (pages[p] instanceof SimpleInputPage) {
+				SimpleInputPage sPage = (SimpleInputPage)pages[p];
+				if(sPage.getIfProperty() != null){
+	                try {
+	                	ResultContainer mock = new ResultContainer();
+	                	ExpressionBuilder.parseLogicalExpressions( mock,
+	                			sPage.getIfProperty() );
+	                }
+	                catch( ConfigurationException configExc ){
+	                	System.out.println("Error: loading ifProperty," + sPage.getIfProperty() + " ,page: " + pages[p].getName() );
+	                	foundErrors = true;   
+	                }
+				}
+            }
+
+			
+			pagePropertyNames = new HashSet();
+			
+			OutputField[] fields = pages[p].getOutputField();
+			for (int f = 0; f < fields.length; f++) {
+				if(!fields[f].validateObject()){
+					foundErrors = true;
+					System.out.println("Error in page:" + pages[p].getName());
+				}
+				if(fields[f] instanceof TargetInput){
+					TargetInput tgtInput = (TargetInput)fields[f];
+					targets.add(tgtInput.getTarget());
+				}
+                if(fields[f] instanceof InputField && !(fields[f] instanceof ConditionalField) ){
+					InputField genericInput = (InputField)fields[f];
+					if(genericInput.getProperty().endsWith(PropertiesFileRenderer.TARGETS_SUFFIX)){
+						System.out.println("Error: invalid property name:" + genericInput.getProperty());
+						System.out.println("InputField names must not end with -targets");
+					}
+					String propertyName = genericInput.getProperty();
+					//System.out.println("Checking page.property: " + pages[p].getName() + "," + propertyName );
+					if(propertyNames.contains(propertyName)){
+						//foundErrors = true;
+						System.out.println("Repeated property name:"  + propertyName);
+						System.out.println("Loading defaults from file will probably not work:"  + propertyName);
+					}
+					else{
+						propertyNames.add(propertyName);
+					}
+					// repeated properties on the same page are an error always
+					if(pagePropertyNames.contains(propertyName)){
+						foundErrors = true;
+						System.out.println("Repeated property name: page=" + 
+								pages[p].getName() + ", property=" + propertyName);
+					}
+					else{
+						pagePropertyNames.add(propertyName);
+					}
+					
+				}
+			}
+			
+		}
+		System.out.println("Finished checking config inputs");
+		// check page structure
+		if(!(pages[pages.length-1] instanceof ProgressPage)){
+			foundErrors = true;
+			System.out.println("Last Page should be a progress page");
+		}
+		else{
+			if (pages[pages.length-1].getPostDisplayTarget() != null){
+				foundErrors = true;
+				System.out.println("Progress pages do not support postDisplayTarget");
+			}
+		}
+		// check for targets
+		int numOfPageTargets = 0;
+		for (int p = 0; p < pages.length; p++) {
+            numOfPageTargets += pages[p].getAllTargets().size();
+		}
+		if(numOfPageTargets == 0){
+			System.out.println("Warning: No Page Targets (not a problem if there are target input types)");
+		}
+		
+		Iterator iter = targets.iterator();
+		while (iter.hasNext()) {
+			String tgt = (String) iter.next();
+			if(tgt.endsWith(PropertiesFileRenderer.TARGETS_SUFFIX)){
+				System.out.println("Error: invalid target name:" + tgt);
+				System.out.println("Target names must not end with -targets");
+				foundErrors = true;
+			}
+		}
+
+		//@todo check targets exist in build.xml remember OSSpecific could be tricky to validate
+		
+		int numOfTargetInputs = 0;
+		// check ifTargets
+		ArrayList targetsSoFar = new ArrayList();
+		for (int p = 0; p < pages.length; p++) {
+			if(pages[p] instanceof SimpleInputPage){
+				SimpleInputPage simple = (SimpleInputPage)pages[p];
+				String ifTarget = simple.getIfTarget();
+				if(ifTarget != null && !targetsSoFar.contains(ifTarget)){
+					System.out.println("ifTarget=" + ifTarget);
+					System.out.println("ifTarget will never test true, no prior target in page:"+pages[p].getName());
+					// disabled due to bug 1412658 could be reinstated with proper test and OSSpecific handling 
+					//foundErrors = true;
+				}
+			}
+			// add after to ensure testing previous pages
+			targetsSoFar.addAll(pages[p].getAllTargets());
+			OutputField[] fields = pages[p].getOutputField();
+			for (int f = 0; f < fields.length; f++) {
+				if(fields[f] instanceof TargetInput){
+					if(numOfTargetInputs == 0){
+						System.out.println("Found target input type");
+					}
+                    numOfTargetInputs++;
+					TargetInput ti = (TargetInput)fields[f];
+					targetsSoFar.add(ti.getTarget());
+				}
+				if(fields[f] instanceof TargetSelectInput){
+					if(numOfTargetInputs == 0){
+						System.out.println("Found target input type");
+					}
+                    numOfTargetInputs++;
+					TargetSelectInput ti = (TargetSelectInput)fields[f];
+					SelectInput.Option[] options = ti.getOptions();
+					for (int i = 0; i < options.length; i++) {
+						SelectInput.Option option = options[i];
+						targetsSoFar.add(option.value);
+					}
+				}
+			}
+		}
+		if(numOfPageTargets == 0 && numOfTargetInputs == 0){
+			System.out.println("Warning: No targets found, installer may do nothing.");
+		}
+//		if(targetsSoFar.contains("default")){
+//			System.out.println("Target:target can not be \"default\"");
+//			foundErrors = true;
+//		}
+
+
+		System.out.println("Finished checking config");
+		if(!foundErrors){
+			return 0;
+		}
+		return 1;
+	}
+
+	private boolean validateInstallerAttributes(){
+        
+        System.out.println("Checking installer: " + installer.getName() );
+		boolean foundErrors = false;
+		
+		String[] validBooleanValues = {"true", "false"};
+		foundErrors |= validateValue("antialiased", installer.getAntialiased(), true, validBooleanValues);
+
+		// done in DTD
+		//foundErrors |= validateValue("verbose", installer.isVerbose(), true, validBooleanValues);
+		//foundErrors |= validateValue("debug", installer.isDebug(), true, validBooleanValues);
+		
+		String[] validLAFValues = {LookAndFeelFactory.DEFAULT_LAF,
+				LookAndFeelFactory.GREYMETAL_LAF,
+				LookAndFeelFactory.NATIVE_LAF,
+				LookAndFeelFactory.JGOODIES_LAF,
+				LookAndFeelFactory.NULL_LAF };
+		if( validateValue("lookAndFeel", installer.getLookAndFeel(), true, validLAFValues) ){
+			System.out.println("Warning: non standard LookAndFeel ensure the correct classes are on the classpath at runtime:" + installer.getLookAndFeel());
+		}
+		
+		if (installer.getName() == null){
+			System.out.println("Error: installer element attribute does not exist: name");
+			foundErrors = true;
+		}
+		
+		try {
+			String wide = installer.getWide();
+			if(wide != null){
+				installer.parseWideValue(wide);
+			}
+		} catch (Exception e) {
+			System.out.println("Error: installer element attribute incorrect format (e.g. 600:275): wide");
+			foundErrors = true;
+		}
+		
+		String[] validLoadDefaultValues = {PropertyLoaderFilter.FALSE,
+                PropertyLoaderFilter.LOAD,
+                PropertyLoaderFilter.PROMPT, 
+                PropertyLoaderFilter.PROMPT_AUTO};
+        
+        boolean loadDefaultsNull = true;
+        if( installer.supportsAutoBuild() ){
+            loadDefaultsNull = false;
+        }
+		foundErrors |= validateValue("loadDefaults", installer.getLoadDefaults(), loadDefaultsNull, validLoadDefaultValues);
+
+        VersionHelper vHelper = new VersionHelper();
+        if( installer.supportsAutoBuild() ){
+            if( ! vHelper.isValid(installer.getVersion()) ){
+                System.out.println("Error: invalid version attribute, required for -auto builds:" + installer.getVersion());
+                foundErrors = true;
+            }
+        }
+        if(installer.getVersion() != null){
+            if( ! vHelper.isValid(installer.getVersion()) ){
+                System.out.println("Error: invalid version attribute format examples 1.2.0 , 0.2beta:" + installer.getVersion());
+                foundErrors = true;
+            }
+        }
+        
+		return foundErrors;
+	}
+	/**
+	 * @return foundErrors  (true if there was an error)
+	 */
+	private boolean validateValue(String att, String value, boolean allowsNull, String[] validValues){
+		if(value == null){
+			if(!allowsNull){
+				System.out.println("Error: installer element attribute does not exist: " + att);
+				return true;
+			}
+			return false;
+		}
+		else {
+			for (int i = 0; i < validValues.length; i++) {
+				if(validValues[i].equals(value)){
+					return false;
+				}
+			}
+			System.out.println("Error: installer element attribute not valid value: " + att);
+			return true;
+		}
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ExecInstall.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ExecInstall.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/ExecInstall.java	(revision 18906)
@@ -0,0 +1,265 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.io.File;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.renderer.MessageRenderer;
+import org.tp23.antinstaller.runtime.exe.ExecuteFilter;
+import org.tp23.antinstaller.runtime.exe.ExecuteRunnerFilter;
+import org.tp23.antinstaller.runtime.exe.FilterChain;
+import org.tp23.antinstaller.runtime.exe.FilterFactory;
+import org.tp23.antinstaller.runtime.exe.FinalizerFilter;
+import org.tp23.antinstaller.selfextract.SelfExtractor;
+
+
+
+/**
+ * This is the Applications entry point, it has a main method to run the
+ * installer. The main method is only for scripted installs.
+ * 
+ * It is here that the command line options are parsed and it
+ * is determined which type of install (swing or text) will be run.
+ * <p>Reads the config, determines the runner, runs it and outputs the
+ * properties file,  The Ant targets are then called by the AntRunner.
+ * This class also builds the internal Objects from the XML config file.</p>
+ * <p>This class can also be called by external tools to launch the installer
+ * currently two options are provided to lauch from Jars. </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: ExecInstall.java,v 1.9 2007/01/19 00:24:36 teknopaul Exp $
+ */
+public class ExecInstall {
+
+	public static final String CONFIG_RESOURCE = "/org/tp23/antinstaller/runtime/exe/script.fconfig";
+	
+	private final InstallerContext ctx = new InstallerContext();
+	private FilterChain chain;
+	/**
+	 * @param chain chain of filters to be executed
+	 */
+	public ExecInstall(FilterChain chain){
+		this.chain = chain;
+	}
+
+
+
+	/**
+	 * Execute the installer, this reads the config fetches a runner and runs the install.
+	 * Once the install pages have finished an AntRunner is used to run Ant
+	 */
+	public void exec() {
+	
+		ExecuteFilter[] filters = null;
+		try {
+			chain.init(ctx);
+			filters = chain.getFilters();
+		}
+		catch (Exception e) {
+			// This is a developer error or the package has not been built correctly
+			// It should never happen in a tested build
+			e.printStackTrace();
+			System.exit(1); // called manually since in Win it was not shutting down properly
+		}
+loop:	for (int i = 0; i < filters.length; i++) {
+			try{
+				ctx.log("Filter: " + filters[i].getClass().getName());
+				filters[i].exec(ctx);
+			}
+			catch (ExecuteRunnerFilter.AbortException abort){
+				MessageRenderer vLogger = ctx.getMessageRenderer();
+				vLogger.printMessage(abort.getMessage());
+				ctx.log("Aborted");
+				FinalizerFilter ff = (FinalizerFilter)filters[filters.length - 1];
+				ff.exec(ctx);
+				System.exit(0);
+			}
+			catch (Exception ex) {
+
+				// write errors to the log
+				ctx.log("Installation error: " + ex.getMessage() + ": " + ex.getClass().toString());
+				boolean verbose = true; // be verbose if we cant load the config
+				if(ctx.getInstaller() != null) {
+					verbose =  ctx.getInstaller().isVerbose();
+				}
+				ctx.log(verbose, ex);
+
+				// write detailed errors to stdout for the GUI screens and text
+				if (ctx.getRunner() instanceof TextRunner) {
+					if(verbose){
+                        ex.printStackTrace();
+                    }
+				}
+				else {
+					if(verbose){
+                        ex.printStackTrace(System.err);
+                    }
+				}
+				
+				// report the error to the user
+				MessageRenderer vLogger = ctx.getMessageRenderer();
+				if(vLogger != null){
+					vLogger.printMessage(org.tp23.antinstaller.Installer.langPack.getString("installationFailed") + "\n" + ex.getMessage());
+					//Fixed BUG:1295944 vLogger.printMessage("Install failed\n" + ex.getMessage());
+				} else {
+					System.err.println(org.tp23.antinstaller.Installer.langPack.getString("installationFailed") + ex.getClass().getName());
+					System.err.println(ex.getMessage());
+				}
+
+				if(ctx.getRunner() != null){
+					ctx.getRunner().fatalError();
+					break loop;
+				}
+				else {  // the screens did not even start e.g. XML config error
+					System.exit(1);
+				}
+			}
+		}
+
+	}
+
+
+
+
+
+	/**
+	 * <p>Runs the installer from a script.</p>
+	 * 
+	 * This install can be run from a set of files for example from a CD.
+	 * @see org.tp23.antinstaller.selfextract.NonExtractor
+	 * @see org.tp23.antinstaller.selfextract.SelfExtractor
+	 * 
+	 * @param args String[]  args are "default" or "swing" or "text" followed by the root directory of the install
+	 */
+	public static void main(String[] args) {
+		try {
+			FilterChain chain = FilterFactory.factory(CONFIG_RESOURCE);		
+			ExecInstall installExec = new ExecInstall(chain);
+			if(installExec.parseArgs(args, true)){
+				installExec.exec();
+			}
+		}
+		catch (InstallException e) {
+            // Installer developer error
+			System.out.println("Cant load filter chain:/org/tp23/antinstaller/runtime/exe/script.fconfig");
+			e.printStackTrace();
+		}
+	}
+	
+	/**
+	 * This method has been designed for backward compatibility with
+	 * existing scripts.  The root dir is passed on the command line for scripted
+	 * installs but is determined automatically for installs from self-extracting Jars
+	 * @param args
+	 * @param requiresRootDir set to true if the args must include the root directory
+	 */
+	public boolean parseArgs(String[] args, boolean requiresRootDir){
+		String uiOverride = null;
+		String installType = null;
+		String installRoot = null;
+		
+		int i = 0;
+		if(args.length > i && !args[i].startsWith("-")) {
+			uiOverride = args[i];
+			i++;
+			ctx.setUIOverride(uiOverride);
+		}
+		
+		if(requiresRootDir){
+			if(args.length > i && !args[i].startsWith("-")) {
+				installRoot = args[i];
+				i++;
+				ctx.setFileRoot(new File(installRoot));
+			}
+			else{
+				printUsage();
+				return false;
+			}
+		}
+		// additional params should all have a -something prefix
+		for (; i < args.length; i++) {
+			// RFE 1569628
+			if("-type".equals(args[i]) && args.length > i + 1){
+				installType = args[i + 1];
+				i++;
+				String configFileName = "antinstall-config-" + installType + ".xml";
+				String buildFileName = "build-" + installType + ".xml";
+				ctx.setInstallerConfigFile(configFileName);
+				ctx.setAntBuildFile(buildFileName);
+			}
+		}
+		
+		return true;
+	}
+
+	private static void printUsage(){
+		System.out.println("Usage java -cp $CLASSPATH org.tp23.antinstaller.ExecInstall [text|swing|default] [install root] (-type [buildtype])");
+	}
+
+
+	/**
+	 * Sets the UI override from the command line
+	 * @param installRoot
+	 */
+//	public void setUIOverride(String override) {
+//		ctx.setUIOverride(override);
+//	}
+	/**
+	 * This is generated by the Main class which knows where it has
+	 * extracted or where it has run from
+	 * @param installRoot
+	 */
+	public void setInstallRoot(File installRoot) {
+		ctx.setFileRoot(installRoot);
+	}
+
+	/**
+	 * This is AntInstalls temporary space which will generally be deleted
+	 * except in debug mode when it is left to view the build process.
+	 * installRoot and tempRoot can be the same if the directory
+	 * is a new empty directory
+	 * @param tempDir directory to be used for temporary storage
+	 */
+	public void setTempRoot(File tempDir) {
+		addShutdownHook(tempDir);
+	}
+	/**
+	 * This shutdown hook is to facilitate debugging the app can be left open
+	 * in the GUI view and the resources will not be deleted.  Upon exit
+	 * temporary files will be removed.  This is required because the 
+	 * deleteOnExit() method fails if the directory is filled with files.
+	 * @param tempDir
+	 */
+	private void addShutdownHook(final File tempDir){
+		Runnable hook = new Runnable(){
+			public void run(){
+				if(ctx.getInstaller() != null &&
+				   ctx.getInstaller().isDebug()) return;
+				if(tempDir != null && tempDir.exists() && tempDir.isDirectory()){
+					SelfExtractor.deleteRecursive(tempDir);
+				}
+			}
+		};
+		Thread cleanUp = new Thread(hook);
+        cleanUp.setDaemon(true);
+        Runtime.getRuntime().addShutdownHook(cleanUp);
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/IfPropertyHelper.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/IfPropertyHelper.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/IfPropertyHelper.java	(revision 18906)
@@ -0,0 +1,89 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.page.SimpleInputPage;
+import org.tp23.antinstaller.runtime.logic.Expression;
+import org.tp23.antinstaller.runtime.logic.ExpressionBuilder;
+
+
+/**
+ * <p>Encapsulates code fo the ifProperty feature</p>
+ * N.B.  It is the installer generator's responsibility to ensure that properties passed
+ * to the less than or greater than test are valid Numbers.
+ * The internal Java format used is a Double so avalid regex would be
+ * something like [0-9]+\.*[0-9]*  or [0-9]+ for an Integer.
+ * The rather strange -=  and += syntax is used because &gt; and &lt;
+ * must be escaped to &amp;gt; and &amp;lt; in XML attributes and the legibility
+ * of the configuration files would be impared.
+ * REF: 1145496
+ * @author Paul Hinds
+ * @version $Id: IfPropertyHelper.java,v 1.5 2007/01/19 00:24:36 teknopaul Exp $
+ */
+public class IfPropertyHelper {
+	
+	private InstallerContext ctx = null;
+	public IfPropertyHelper(InstallerContext ctx){
+		this.ctx = ctx;
+	}
+
+	/**
+	 * @return boolean true to SHOW the page
+	 */
+	public boolean ifProperty(Page next) throws InstallException {
+		// show page if ifProperty is specified and property is correct
+		if(next instanceof SimpleInputPage) {
+			SimpleInputPage conditionalPage = (SimpleInputPage) next;
+			String ifProperty = conditionalPage.getIfProperty();
+			if (ifProperty != null) {
+                Expression expression;
+                try {
+                    expression = ExpressionBuilder.parseLogicalExpressions( ctx.getInstaller().getResultContainer(),
+                                                                                   ifProperty );
+                }
+                catch( ConfigurationException configExc ) {
+                    throw new InstallException( "Error parsing ifProperty condition for page " + next.getName(),
+                                                configExc );    
+                }
+                return expression.evaluate();
+            }
+
+        }
+		return true; // show the page by default
+	}
+	
+	/**
+	 * @return boolean true to SHOW the page
+	 */
+	public boolean ifTarget(Page next, Page[] pages){
+		// skip iftarget specified and target is missing
+		if(next instanceof SimpleInputPage){
+			SimpleInputPage conditionalPage = (SimpleInputPage) next;
+			String ifTarget = conditionalPage.getIfTarget();
+			if (ifTarget != null) {
+				boolean show = false;
+				for (int p = 0; p < pages.length; p++) {
+					show |= pages[p].isTarget(ifTarget);
+				}
+				return show;
+			}
+		}
+		return true;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/Logger.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/Logger.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/Logger.java	(revision 18906)
@@ -0,0 +1,44 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.io.IOException;
+
+import org.tp23.antinstaller.Installer;
+
+public interface Logger {
+
+	public void log(String message);
+
+	public void log(Throwable exception);
+
+    /**
+     * Logs the stack trace only if the installer is in verbose mode
+     * @param installer
+     * @param exception
+     */
+    public void log(Installer installer, Throwable exception);
+
+	public void setFileName(String fileName) throws IOException;
+
+    /**
+     * Get the name of the file used for logging
+     * @return path to file or <code>null</code> if not initialised
+     */
+    public String getFileName();
+
+    public void close();
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/Runner.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/Runner.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/Runner.java	(revision 18906)
@@ -0,0 +1,56 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import org.tp23.antinstaller.InstallException;
+
+
+
+/**
+ *
+ * <p>A Runner runs the user interaction screens, not ant.
+ * The base interface for TextRunner and SwingRunner </p>
+ * <p>Instances of this interface should have a constructor that takes
+ * an InstallerContext as an argument</p>
+ * Due to historic bad naming convention there exists an AntRunner which has
+ * no connection to this interface. 
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: Runner.java,v 1.2 2006/03/24 18:27:28 teknopaul Exp $
+ */
+
+public interface Runner {
+
+	/**
+	 * Renders the installer screens.  This method should block until
+	 * the UI has finished
+	 * @throws InstallException
+	 * @return boolean false implies user aborted
+	 */
+	public boolean runInstaller() throws InstallException;
+
+	/**
+	 * Called after Ant has finished so the Runner can clean up or provide feedback
+	 */
+	public void antFinished();
+
+	/**
+	 * Called if the install failed for some reason and can not continue;
+	 *
+	 */
+	public void fatalError();
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/SimpleLogger.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/SimpleLogger.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/SimpleLogger.java	(revision 18906)
@@ -0,0 +1,120 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.tp23.antinstaller.Installer;
+
+/**
+ * A Logger class that does not report errors
+ * 
+ * @author Paul Hinds
+ * @version $Id: SimpleLogger.java,v 1.4 2007/01/19 00:24:36 teknopaul Exp $
+ */
+public class SimpleLogger implements Logger {
+
+    BufferedWriter fos;
+
+    private String fileName;
+
+    public SimpleLogger() {
+    }
+
+    /**
+     * This method initialises the logger
+     */
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+        try {
+            fos = new BufferedWriter(new FileWriter(fileName, false));
+            fos.write("Logger initialized");
+            fos.newLine();
+        } catch (IOException e) {
+            fos = null;
+        }
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void log(String message) {
+        if (fos == null) {
+            return;
+        }
+        try {
+            fos.write(message);
+            fos.newLine();
+            fos.flush();
+        } catch (Exception ex) {
+            throw new RuntimeException("Can not write to logs");
+        }
+    }
+
+    public void log(Installer installer, Throwable exception) {
+        if (installer != null && installer.isVerbose()) {
+            log(exception);
+        }
+    }
+
+    public void log(Throwable exception) {
+        if (fos == null) {
+            return;
+        }
+        try {
+            StringWriter writer = new StringWriter();
+            exception.printStackTrace(new PrintWriter(writer));
+            String s = writer.getBuffer().toString();
+            fos.write(s);
+            fos.newLine();
+        } catch (IOException ex) {
+            throw new RuntimeException("Can not write to logs");
+        }
+    }
+
+    public void close() {
+        try {
+            if (fos != null) {
+                fos.flush();
+                fos.close();
+                fos = null;
+            }
+        } catch (IOException e) {
+            System.err.println("Can't close logger");
+        }
+    }
+
+    /**
+     * Called by the garbage collector on an object when garbage collection
+     * determines that there are no more references to the object.
+     * 
+     * @throws Throwable
+     *             the <code>Exception</code> raised by this method
+     * @todo Implement this java.lang.Object method
+     */
+    protected void finalize() throws Throwable {
+        if (fos != null) {
+            fos.flush();
+            fos.close();
+        }
+    }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/SwingRunner.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/SwingRunner.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/SwingRunner.java	(revision 18906)
@@ -0,0 +1,423 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.awt.GraphicsConfiguration;
+import java.awt.Toolkit;
+import java.awt.Dimension;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.Installer;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ValidationException;
+import org.tp23.antinstaller.antmod.FeedbackListener;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.renderer.AntOutputRenderer;
+import org.tp23.antinstaller.renderer.RendererFactory;
+import org.tp23.antinstaller.renderer.swing.PageCompletionListener;
+import org.tp23.antinstaller.renderer.swing.SizeConstants;
+import org.tp23.antinstaller.renderer.swing.SwingInstallerContext;
+import org.tp23.antinstaller.renderer.swing.SwingMessageRenderer;
+import org.tp23.antinstaller.renderer.swing.SwingPageRenderer;
+
+import java.util.Enumeration;
+import java.awt.Font;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.UIManager;
+
+
+
+/**
+ * <p>Runs the installer in a JFrame window </p>
+ * <p>This class uses the Installer object tree as its data source and renderers
+ * from the org.tp23.antinstaller.renderer.swing package </p>
+ * Runners must also create a MessageRenderer and make it available in the
+ * InstallerContext
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ *
+ * @author Paul Hinds
+ * @version $Id: SwingRunner.java,v 1.11 2007/01/19 00:24:36 teknopaul Exp $
+ */
+public class SwingRunner extends AntRunner implements Runner, PageCompletionListener {
+
+	protected SwingInstallerContext swingCtx = null;
+	private JFrame frame = new JFrame();
+	private List pageRenderers;
+	private volatile boolean doAnt = false;
+	protected Thread initialThread;
+	protected IfPropertyHelper ifHelper;
+	// context local property refs
+	protected InstallerContext ctx;
+	protected Logger logger;
+	protected Installer installer;
+
+	public SwingRunner(InstallerContext ctx) {
+		super(ctx);
+		swingCtx = new SwingInstallerContext(ctx, frame);
+
+		SwingMessageRenderer smr = new SwingMessageRenderer();
+		smr.setOwner(frame);
+		ctx.setMessageRenderer(smr);
+
+		ctx.setBuildListener(new FeedbackListener(swingCtx));
+
+		ifHelper = new IfPropertyHelper(ctx);
+		logger = ctx.getLogger();
+		installer = ctx.getInstaller();
+		this.ctx = ctx;
+	}
+
+	/**
+	 * Renders the installer in a Swing GUI, this method blocks until
+	 * the UI has finished
+	 *
+	 * @return boolean false implies user aborted
+	 * @throws InstallException
+	 */
+	public boolean runInstaller() throws InstallException {
+		try {
+			frame.setTitle(installer.getName());
+			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+			frame.setSize(SizeConstants.PAGE_WIDTH, SizeConstants.PAGE_HEIGHT);
+			frame.getRootPane().setDoubleBuffered(true);
+			frame.setResizable( true );
+
+			Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+			frame.setLocation(screenSize.width/2 - frame.getWidth()/2, screenSize.height/2 - frame.getHeight()/2);
+
+			//setLocation(frame);
+			setIcon(frame, installer);
+
+			//set font
+			String new_default_font_str = null;
+			if ( System.getProperty("os.name").equals("Linux") ) {
+				new_default_font_str = "Bitstream Cyberbit";
+			} else if ( System.getProperty("os.name").startsWith("Windows") ) {
+				new_default_font_str = "Arial Unicode MS";
+			}
+
+			if ( new_default_font_str != null ) {
+
+				FontUIResource default_font = new FontUIResource(new_default_font_str, Font.PLAIN, 12);
+				Enumeration keys = UIManager.getDefaults().keys();
+				while (keys.hasMoreElements()) {
+					Object key = keys.nextElement();
+					Object value = UIManager.get(key);
+					if (value instanceof FontUIResource) {
+						UIManager.put(key, default_font);
+					}
+				}
+
+			}
+
+			preparePages(installer.getPages(), ctx);
+			showFirstPage();
+			// need to  block here until pages are complete
+			initialThread = Thread.currentThread();
+			try {
+				Thread.sleep(Long.MAX_VALUE);
+			}
+			catch (InterruptedException ex1) {
+
+			}
+			return doAnt;
+		}
+		catch (Exception ex) {
+			logger.log("Fatal exception: " + ex.getMessage());
+			if (ctx.getInstaller().isVerbose()) {
+				logger.log(ex);
+			}
+			ctx.getMessageRenderer().printMessage("Fatal exception: " + ex.getMessage());
+			throw new InstallException("", ex);
+		}
+	}
+
+	public void pageBack(Page page) {
+		if (page.isAbort()) {
+			abort();
+			return;
+		}
+		Page[] pages = installer.getPages();
+		for (int i = 0; i < pages.length; i++) {
+			if (pages[i] == page) {
+				// found current page
+				if (i > 0) {
+
+					//skip pages if the ifTarget or ifProperty attributes exist and fail
+					int nextIdx = i - 1;
+					try {
+						while (true) {
+							if (!ifHelper.ifTarget(pages[nextIdx], pages) ||
+									!ifHelper.ifProperty(pages[nextIdx])) {
+								//Continue looping
+								--nextIdx;
+							} else {
+								break;
+							}
+						}
+					}
+					catch (InstallException instExc) {
+						logger.log("InstallException rendering page:" + page.getName());
+						logger.log(installer, instExc);
+					}
+
+					//for(;ifTargetSkip(pages[nextIdx], pages);nextIdx--);
+
+					SwingPageRenderer renderer = (SwingPageRenderer) pageRenderers.get(nextIdx);
+					ctx.setCurrentPage(pages[nextIdx]);
+					try {
+						renderNext(renderer);
+					}
+					catch (InstallException ex) {
+						logger.log("InstallExcepiton rendering page:" + page.getName());
+						logger.log(installer, ex);
+					}
+					catch (ClassNotFoundException ex) {
+						logger.log("ClassNotFoundException rendering page:" + page.getName());
+						logger.log(installer, ex);
+					}
+					return;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Called when a page is complete and the next button is pressed.
+	 * This method is called by the event thread that looses exceptions so Throwable
+	 * is caught
+	 *
+	 * @param page Page
+	 */
+	public void pageComplete(Page page) {
+		try {
+			if (page.isAbort()) {
+				abort();
+				return;
+			}
+			runPost(page);
+			Page[] pages = installer.getPages();
+			SwingPageRenderer currentRenderer;
+			for (int i = 0; i < pages.length; i++) {
+				if (pages[i] == page) { // found current page
+					currentRenderer = (SwingPageRenderer) pageRenderers.get(i);
+					// check validation
+					boolean validationPassed = false;
+					try {
+						currentRenderer.updateInputFields();
+						validationPassed = currentRenderer.validateFields();
+					} catch (ValidationException ve) {
+						logger.log("ValidationException rendering page:" + page.getName());
+						logger.log(installer, ve);
+						return;
+					}
+					if (!validationPassed) {
+						return;
+					}
+
+
+					if (i < pages.length - 1) {
+
+						//more pages left
+
+						// skip the page if the ifTarget or ifProperty dictate it
+						int nextIdx = i + 1;
+						while (true) {
+							if (!ifHelper.ifTarget(pages[nextIdx], pages) ||
+									!ifHelper.ifProperty(pages[nextIdx])) {
+								//Continue looping
+								nextIdx++;
+							} else {
+								break;
+							}
+						}
+
+
+						SwingPageRenderer renderer = (SwingPageRenderer) pageRenderers.get(nextIdx);
+						ctx.setCurrentPage(pages[nextIdx]);
+						try {
+							renderNext(renderer);
+						}
+						catch (InstallException ex) {
+							logger.log("InstallException rendering page:" + page.getName());
+							logger.log(installer, ex);
+						}
+						catch (ClassNotFoundException ex) {
+							logger.log("ClassNotFoundException rendering page:" + page.getName());
+							logger.log(installer, ex);
+						}
+						return;
+					}
+					if (i == pages.length - 1) {
+						// all done
+						currentRenderer.getBackButton().setEnabled(false);
+						currentRenderer.getNextButton().setEnabled(false);
+						currentRenderer.getFinishButton().setEnabled(false);
+						doAnt = true;
+						initialThread.interrupt();
+						return;
+					}
+				}
+			}
+		}
+		catch (Throwable e) {
+			ctx.log("Throwable during page completion:" + e.getMessage());
+			if (ctx.getInstaller().isVerbose()) {
+				ctx.log(e);
+			}
+		}
+	}
+
+	protected void showFirstPage() throws Exception {
+		ctx.setCurrentPage(installer.getPages()[0]);
+		renderNext((SwingPageRenderer) pageRenderers.get(0));
+	}
+
+
+	private void preparePages(Page[] pages, InstallerContext ctx) throws Exception {
+		pageRenderers = new ArrayList();
+		for (int i = 0; i < pages.length; i++) {
+			SwingPageRenderer renderer = RendererFactory.getSwingPageRenderer(pages[i]);
+			if (i == 0) renderer.getBackButton().setEnabled(false);
+			renderer.setContext(swingCtx);
+			renderer.setPageCompletionListener(this);
+			renderer.setPage(pages[i]);
+			renderer.instanceInit();
+			pageRenderers.add(renderer);
+			if (renderer instanceof AntOutputRenderer) {
+				ctx.setAntOutputRenderer((AntOutputRenderer) renderer);
+			}
+		}
+	}
+
+	protected void renderNext(SwingPageRenderer renderer) throws ClassNotFoundException, InstallException {
+		renderer.reInit();
+		renderer.reInstanceInit();
+
+		renderer.updateDefaultValues();
+		frame.getContentPane().removeAll();
+		frame.getContentPane().add(renderer);
+		frame.getContentPane().repaint();
+		frame.show();
+		if (renderer.getNextButton().isEnabled()) {
+			renderer.getNextButton().requestFocus();
+		} else if (renderer.getFinishButton().isEnabled()) {
+			renderer.getFinishButton().requestFocus();
+		}
+	}
+
+	private void setLocation(JFrame frame) {
+		GraphicsConfiguration config = frame.getGraphicsConfiguration();
+		int x = (int) config.getBounds().getCenterX() - (SizeConstants.PAGE_WIDTH / 2);
+		int y = (int) config.getBounds().getCenterY() - (SizeConstants.PAGE_HEIGHT / 2);
+		frame.setLocation(x, y);
+		frame.setResizable(false);
+	}
+
+	private void setIcon(JFrame frame, Installer installer) {
+		String iconResource = installer.getWindowIcon();
+		try {
+			if (iconResource == null) {
+				return;
+			}
+			InputStream in = this.getClass().getResourceAsStream(iconResource);
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			byte[] buffer = new byte[256];
+			int read = 0; // The number of bytes read from the stream
+			for (read = in.read(buffer); read != -1; read = in.read(buffer)) {
+				baos.write(buffer, 0, read);
+			}
+			ImageIcon icon = new ImageIcon(baos.toByteArray());
+			//Image icon = Toolkit.getDefaultToolkit().createImage(baos.toByteArray());
+			frame.setIconImage(icon.getImage());
+		}
+		catch (Exception ex) {
+			// we can live with out an icon
+			logger.log("Can not load icon resource: " + iconResource);
+			logger.log(installer, ex);
+		}
+	}
+
+	public void antFinished() {
+		SwingPageRenderer renderer = (SwingPageRenderer) pageRenderers.get(pageRenderers.size() - 1);
+		renderer.getBackButton().setEnabled(false);
+		renderer.getNextButton().setEnabled(false);
+		renderer.getCancelButton().setEnabled(false);
+		renderer.getFinishButton().setText(org.tp23.antinstaller.Installer.langPack.getString("exit"));
+		renderer.getFinishButton().setEnabled(true);
+		renderer.getFinishButton().requestFocus();
+		renderer.getTitleLabel().setText(org.tp23.antinstaller.Installer.langPack.getString("complete"));
+		renderer.stopPage();
+		ctx.getAntOutputRenderer().getErr().flush();
+		ctx.getAntOutputRenderer().getOut().flush();
+		ctx.getMessageRenderer().printMessage(org.tp23.antinstaller.Installer.langPack.getString("finished"));
+	}
+
+	public void fatalError() {
+		List renderers = getPageRenderers();
+		if ((renderers != null) && (renderers.size() > 0)) {
+			SwingPageRenderer renderer = (SwingPageRenderer) renderers.get(renderers.size() - 1);
+			renderer.getBackButton().setEnabled(false);
+			renderer.getNextButton().setEnabled(false);
+			renderer.getCancelButton().setEnabled(false);
+			renderer.getFinishButton().setText(org.tp23.antinstaller.Installer.langPack.getString("exit"));
+			renderer.getFinishButton().setEnabled(true);
+			renderer.getFinishButton().requestFocus();
+			renderer.stopPage();
+			renderer.getTitleLabel().setText(org.tp23.antinstaller.Installer.langPack.getString("failed"));
+		}
+		// else - we're done here, or should we call abort()?
+	}
+
+	/**
+	 * Returns a string representation of the object.
+	 *
+	 * @return a string representation of the object.
+	 */
+	public String toString() {
+		return "SwingRunner";
+	}
+
+	private void abort() {
+		this.doAnt = false;
+		initialThread.interrupt();
+	}
+
+	/**
+	 * @return Returns the frame.
+	 */
+	public JFrame getFrame() {
+		return frame;
+	}
+
+	/**
+	 * This method is only valid after the PageRenderers have been generated
+	 *
+	 * @return Returns the pageRenderers.
+	 */
+	public List getPageRenderers() {
+		return pageRenderers;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/TextRunner.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/TextRunner.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/TextRunner.java	(revision 18906)
@@ -0,0 +1,141 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.Installer;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.page.SimpleInputPage;
+import org.tp23.antinstaller.renderer.AntOutputRenderer;
+import org.tp23.antinstaller.renderer.RendererFactory;
+import org.tp23.antinstaller.renderer.text.AbstractTextPageRenderer;
+import org.tp23.antinstaller.renderer.text.TextMessageRenderer;
+
+
+
+/**
+ *
+ * <p>Runs the installer from the text only command line (console) </p>
+ * <p>This class uses the Installer object tree as its data source and renderers
+ * from the org.tp23.antinstaller.renderer.text package </p>
+ * <p>Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: TextRunner.java,v 1.10 2007/01/19 00:24:36 teknopaul Exp $
+ */
+public class TextRunner extends AntRunner 
+	implements Runner {
+	
+	protected final InstallerContext ctx;
+	protected final Installer installer;
+	private final Logger logger;
+	protected final IfPropertyHelper ifHelper;
+
+	public TextRunner(InstallerContext ctx) throws IOException {
+		super(ctx);
+		this.ctx = ctx;
+		this.installer = ctx.getInstaller();
+		this.logger = ctx.getLogger();
+		ctx.setMessageRenderer(new TextMessageRenderer());
+		ctx.setAntOutputRenderer(new AntOutputRenderer(){
+			public PrintStream getErr() {
+				return System.err;
+			}
+			public PrintStream getOut() {
+				return System.out;
+			}
+
+		});
+		this.ifHelper = new IfPropertyHelper(ctx);
+	}
+
+	/**
+	 * Renders the installer on the command line, this method blocks until
+	 * the UI has finished
+	 * @throws InstallException
+	 * @return boolean false implies the install was aborted
+	 */
+	public boolean runInstaller() throws InstallException {
+		try {
+			return renderPages(installer.getPages());
+		}
+		catch (Exception ex) {
+			logger.log("FATAL exception during installation:"+ex.getMessage());
+            logger.log(installer, ex);
+			
+			ctx.getMessageRenderer().printMessage(org.tp23.antinstaller.Installer.langPack.getString("installationFailed") + ":" + ex.getMessage());
+			//Fixed BUG: ctx.getMessageRenderer().printMessage("Installation failed:"+ex.getMessage());
+			throw new InstallException("Installation failed", ex);
+		}
+	}
+
+
+	private boolean renderPages(Page[] pages) throws ClassNotFoundException, InstallException{
+		Page next = null;
+		for (int i = 0; i < pages.length; i++) {
+			next = pages[i];
+
+			if(next instanceof SimpleInputPage){
+				// skip iftarget specified and missing
+				if(!ifHelper.ifTarget(next, pages))continue;
+				// skip page if ifProperty is specified and property is missing
+				if(!ifHelper.ifProperty(next))continue;
+			}
+
+			AbstractTextPageRenderer renderer = RendererFactory.getTextPageRenderer(next);
+			renderer.setContext(ctx);
+			renderer.init( new BufferedReader(new InputStreamReader(System.in)), System.out);
+			ctx.setCurrentPage(next);
+			renderer.renderPage(next);
+			if (next.isAbort()){
+				return false;
+			}
+			runPost(next);
+		}
+		return true;
+	}
+    public InstallerContext getInstallerContext() {
+		return ctx;
+    }
+
+
+
+	/**
+	 * Called when Ant has finished its work
+	 */
+	public void antFinished() {
+		System.out.println(org.tp23.antinstaller.Installer.langPack.getString("finished"));
+		//System.exit(0);
+	}
+	/**
+	 * Called is Ant failed to install correctly
+	 */
+	public void fatalError(){
+		System.out.println(org.tp23.antinstaller.Installer.langPack.getString("failed"));
+		//System.exit(1);
+	}
+
+	public String toString() {
+		return "TextRunner";
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/VersionHelper.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/VersionHelper.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/VersionHelper.java	(revision 18906)
@@ -0,0 +1,234 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime;
+
+import java.util.StringTokenizer;
+
+/**
+ * Version helper accepts version numbers of the following format.
+ * [major][clause].[minor][clause].[minor][clause].... ad infinitum
+ * 
+ * If the Java flag is set to true an attempt is made to parse the string as if it were
+ * returned by System.getProperty("java.version");
+ * Since pre 1.3.1 the system is not parsable the default is to accept the string
+ * if there is a format error.
+ * 
+ * For the non java syntax getting the string wrong will result in failed tests
+ * @author teknopaul
+ *
+ */
+public class VersionHelper {
+    
+    public static final String CLAUSE_ALPHA = "alpha";
+    public static final String CLAUSE_BETA = "beta";
+    public static final String CLAUSE_GAMMA = "gamma";
+    public static final String CLAUSE_JAVA_BETA = "ea";
+
+    public boolean equalOrHigher(final String test, final String version) {
+        return equalOrHigher(test, version, false);
+    }
+
+    public boolean majorVersionCompatible(final String test, final String version) {
+        return getMajorVersion(test) == getMajorVersion(version);
+    }
+
+    /**
+     * 
+     * @param test java version string being tested
+     * @param version java version string being used as reference
+     * @param javaSyntax
+     * @return true if the value of <code>test</code> is greater than or equal to the value of <code>version</code>
+     */
+    public boolean equalOrHigher(final String test, final String version, final boolean javaSyntax) {
+        try {
+            StringTokenizer testSt = new StringTokenizer(test, ".");
+            StringTokenizer verSt = new StringTokenizer(version, ".");
+            
+            while (true) {
+                boolean testMore = testSt.hasMoreTokens(); 
+                boolean verMore = verSt.hasMoreTokens();
+                if( ! testMore || ! verMore ){
+                    break;
+                }
+                String testToken = testSt.nextToken();
+                String verToken = verSt.nextToken();
+                short testVer = getVersion(testToken);
+                short versionVer = getVersion(verToken);
+                if( testVer == versionVer ) {
+                    if ( equalClause(getClause( testToken ), getClause(verToken)) ) {
+                        continue;
+                    }
+                    else {
+                        return higherClause(getClause( testToken ), getClause( verToken ), javaSyntax);
+                    }
+                }
+                return testVer > versionVer ;
+            }
+            // equal up to one not having minor details
+            if( countDots(test) >= countDots(version) ){
+                return true;
+            }
+            return test.equals(version);
+        } catch (Exception e) {
+            // syntax exceptions
+            if(javaSyntax){
+                return true; // return true for Java since pre 1.3.1 or other JVMs could get any old rubbish
+            }
+            return false;
+        }
+    }
+    
+    public boolean isValid(final String version) {
+        try {
+            StringTokenizer verSt = new StringTokenizer(version, ".");
+            
+            boolean verMore = false;
+            int i = 0;
+            for (; verMore = verSt.hasMoreTokens(); i++) {
+                
+                String verToken = verSt.nextToken();
+                if("".equals(verToken)){
+                    return false;
+                }
+                // may throw NumberFormatExceptions
+                getVersion(verToken);
+                String clause = getClause(verToken);
+                if( ! "".equals(clause)){
+                    short clauseS = clauseToShort(clause);
+                    if( ! (clauseS == 1 || clauseS == 2 || clauseS == 3 )){
+                        return false;
+                    }
+                }         
+            }
+            if( ! verMore && i == 0) {
+                return false; // nothing there!
+            }
+            return true;
+
+        } 
+        catch (Exception e) {
+            // syntax exceptions
+            return false;
+        }
+    }
+    /**
+     * @return the number part of the clause
+     */
+    private short getVersion(final String section) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < section.length(); i++) {
+            char c = section.charAt(i);
+            if(Character.isDigit(c)) {
+                sb.append(c);
+            }
+            else{
+                return Short.parseShort( sb.toString() );
+            }
+        }
+        if(sb.length() > 0) {
+            return Short.parseShort( sb.toString() );
+        }
+        return 0;
+    }
+    
+    /**
+     * @return  the clause eg beta or ""
+     */
+    private String getClause(final String section) {
+        for (int i = 0; i < section.length(); i++) {
+            char c = section.charAt(i);
+            if(Character.isDigit(c)) {
+                continue;
+            }
+            else {
+                return section.substring(i);
+            }
+        }
+        return "";
+    }
+
+    private boolean higherClause(final String test, final String clause, final boolean javaSyntax) {
+        if(javaSyntax) {
+            return clauseJavaToShort(test) > clauseJavaToShort(clause);
+        }
+        else {
+            return clauseToShort(test) > clauseToShort(clause);
+        }
+            
+    }
+    private boolean equalClause(final String test, final String clause) {
+        return clauseToShort(test) == clauseToShort(clause);
+    }
+    
+    private short clauseToShort(String clause) {
+        if(clause.startsWith("-")){
+            clause = clause.substring(1); // knock off java style 1-beta dashes
+        }
+        if( CLAUSE_ALPHA.equals(clause) ) {
+            return 3;
+        }
+        else if( CLAUSE_BETA.equals(clause) ) {
+            return 2;
+        }
+        else if( CLAUSE_GAMMA.equals(clause) ) {
+            return 1;
+        }
+        if(clause.startsWith("_")) { // java build version support 1_03-ea-beta  (discarding the sub sub clause "-ea-beta" because I'm lazy)
+            int hasDash = clause.indexOf('-');
+            if(hasDash > -1) {
+                return Short.parseShort(clause.substring(1, hasDash));
+            }
+            else {
+                return Short.parseShort(clause.substring(1));
+            }
+        }
+        else return Short.MAX_VALUE; // no clause assumes higher
+    }
+    
+    private short clauseJavaToShort(String clause) {
+        if(clause.startsWith("-")){
+            clause = clause.substring(1); // knock off java style 1-beta dashes
+        }
+        else if( CLAUSE_JAVA_BETA.equals(clause) ) {  // -ea early access are assumed to be less good
+            return -2;
+        }
+        if(clause.startsWith("_")) { // java build version support 1_03-ea-beta  (discarding the sub sub clause "-ea-beta" because I'm lazy)
+            int hasDash = clause.indexOf('-');
+            if(hasDash > -1) {
+                return Short.parseShort(clause.substring(1, hasDash));
+            }
+            else {
+                return Short.parseShort(clause.substring(1));
+            }
+        }
+        else return 0; // no clause assumes lower in Java speak
+    }
+
+    private short countDots(final String fullver){
+        short count = 0;
+        for (int i = 0; i < fullver.length(); i++) {
+            if(fullver.charAt(i) == '.') {
+                count++;
+            }
+        }
+        return count;
+    }
+    
+    private short getMajorVersion(String test){
+        return getVersion(test);
+    }
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/AntLauncherFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/AntLauncherFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/AntLauncherFilter.java	(revision 18906)
@@ -0,0 +1,106 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.util.List;
+import java.util.Map;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.ResourceBundleHelper;
+import org.tp23.antinstaller.antmod.Launcher;
+import org.tp23.antinstaller.Installer;
+
+/**
+ *
+ * <p>Runs the Ant script using the Apache Ant launcher.</p>
+ * <p>This runner uses a modified version of the Apache launcher to provide us
+ * with feed back as to the state of the install </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @todo get better feed back and progress for the targets that have run successfully
+ * @todo this should be an interface not a class
+ * @author Paul Hinds
+ * @version $Id: AntLauncherFilter.java,v 1.6 2007/01/12 14:47:44 anothermwilson Exp $
+ */
+public class AntLauncherFilter implements ExecuteFilter {
+
+    private ResourceBundleHelper resHelper = new ResourceBundleHelper( "resources.LanguagePack" );
+
+	public AntLauncherFilter() {
+	}
+
+	public void exec(InstallerContext ctx) throws InstallException {
+		if(ctx.getInstaller().isVerbose())ctx.log("Starting Ant Launcher");
+
+		try {
+
+			//TODO this should be refactored to installer
+			List argsList = ctx.getInstaller().getTargets(ctx);
+			
+			String[] argsArr = new String[argsList.size() + 4];
+			argsList.toArray(argsArr);
+
+			if (ctx.getInstaller().isVerbose()) {
+				ctx.log("Running targets:" + printArray(argsArr));
+			}
+			System.out.println("Targets:"+printArray(argsArr));
+
+			argsArr[argsArr.length-2] = "-lib";
+			argsArr[argsArr.length-1] = "antlib";
+
+			argsArr[argsArr.length-4] = "-buildfile";
+			argsArr[argsArr.length - 3] = ctx.getFileRoot().getAbsolutePath() +
+					System.getProperty("file.separator") +
+					ctx.getAntBuildFile();
+
+			//Launcher uses stdout and stderr by default
+			System.setOut(ctx.getAntOutputRenderer().getOut());
+			System.setErr(ctx.getAntOutputRenderer().getErr());
+			
+			Map properties = ctx.getInstaller().getResultContainer().getAllProperties();
+			Launcher launcher = new Launcher(properties);
+			int ok = launcher.run(argsArr, ctx);
+			if(ok!=0) {
+                throw new InstallException( resHelper.getMessage( "ant.failure" ) );
+                //the default ctx.setInstallSucceded(false);
+			}
+			else {
+				ctx.setInstallSucceded(true);
+			}
+			ctx.log("Ant finished");
+            ctx.getRunner().antFinished();
+        }
+		catch (Throwable ex) {
+			throw new InstallException("Error running the install, " + ex.getMessage(), ex);
+		}
+	}
+	/**
+	 * Used for debug to print the targets to system.out
+	 * @param args Object[]
+	 * @return String
+	 */
+	private String printArray(Object[] args){
+		StringBuffer sb = new StringBuffer();
+		for (int i = 0; i < args.length-4; i++) {
+			if (i > 0) {
+				sb.append(',');
+			}
+			sb.append(args[i]);
+		}
+		return sb.toString();
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/AntProjectFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/AntProjectFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/AntProjectFilter.java	(revision 18906)
@@ -0,0 +1,289 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Diagnostics;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.ProjectHelper;
+import org.apache.tools.ant.input.DefaultInputHandler;
+import org.apache.tools.ant.launch.Locator;
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.antmod.ProjectHelper3;
+import org.tp23.antinstaller.selfextract.NonExtractor;
+import org.tp23.antinstaller.selfextract.SelfExtractor;
+/**
+ *
+ * <p>This AntRunner runs Ant builds directly from a Jar without having to extract
+ * the build.xml to temporary space.</p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: AntProjectFilter.java,v 1.10 2007/01/28 08:44:39 teknopaul Exp $
+ */
+public class AntProjectFilter implements ExecuteFilter{
+    
+    //TODO certain jars are added from Ant default directories that are probably not needed
+
+	private static String antVersion = null;
+	
+	/** The Ant Home property - from default Launcher  */
+	public static final String ANTHOME_PROPERTY = "ant.home";
+
+	/** The location of a per-user library directory - from default Launcher */
+	public static final String USER_LIBDIR = ".ant/lib";
+
+	public AntProjectFilter() {
+	}
+
+	/**
+	 * run Ant
+	 *
+	 * @param ctx InstallerContext
+	 * @throws InstallException
+	 * @todo Implement this org.tp23.antinstaller.runtime.AntRunner method
+	 */
+	public void exec(InstallerContext ctx) throws InstallException {
+		if(ctx.getInstaller().isVerbose()) {
+            ctx.log("Starting Ant Project");
+        }
+
+		try {
+			
+			Project project = new Project();
+			appendClassPath();
+			setAntHome(ctx);
+			project.setCoreLoader(this.getClass().getClassLoader());
+			
+			DefaultLogger antLogger = new DefaultLogger();
+			antLogger.setOutputPrintStream(ctx.getAntOutputRenderer().getOut());
+			antLogger.setErrorPrintStream(ctx.getAntOutputRenderer().getErr());
+			antLogger.setMessageOutputLevel(Project.MSG_INFO);
+			BuildListener bl = ctx.getBuildListener();
+			if(bl != null){
+				project.addBuildListener(bl);
+			}
+			project.addBuildListener(antLogger);
+
+            /*
+             * Log useful ant task output to the log file to help debugging
+             * and for customer support
+             */
+            final String logFileName = ctx.getLogger().getFileName();
+            if( logFileName != null && logFileName.length() > 0 )
+            {
+                PrintStream stream = new PrintStream( new FileOutputStream(logFileName, true), true);
+                DefaultLogger antFileLogger = new DefaultLogger();
+                antFileLogger.setOutputPrintStream( stream );
+                antFileLogger.setErrorPrintStream( stream );
+                int logLevel = (ctx.getInstaller().isVerbose())
+                                    ? Project.MSG_VERBOSE
+                                    : Project.MSG_INFO;
+                antFileLogger.setMessageOutputLevel( logLevel );
+
+                project.addBuildListener( antFileLogger );
+            }
+
+            // irrelevant really but might help someone on a command line
+			project.setInputHandler(new DefaultInputHandler());
+			project.fireBuildStarted();
+			
+			project.init();
+			project.setUserProperty("ant.version", getAntVersion());
+
+
+			// add properties
+			// N.B. properties are not loaded from the file it exists for debugging installers
+			String arg;
+			String value;
+			Map properties = ctx.getInstaller().getResultContainer().getAllProperties();
+			Iterator iter = properties.keySet().iterator();
+			while (iter.hasNext()) {
+				arg = (String) iter.next();
+				value = (String) properties.get(arg);
+				project.setUserProperty(arg, value);
+			}
+			
+			// From here we immitate Main
+			try {
+			    Diagnostics.validateVersion();
+			} catch (Throwable exc) {
+				// minimal messages for the benefit of the command line install
+				System.err.println("Version error:" + exc.getClass() + "," + exc.getMessage());
+			    return;
+			}
+			 
+			ProjectHelper helper = new ProjectHelper3();
+			project.addReference("ant.projectHelper", helper);
+			
+			File buildXml = new File(ctx.getFileRoot(), ctx.getAntBuildFile());
+			if(buildXml.exists()){
+				helper.parse(project, buildXml);
+				project.setUserProperty("ant.file",buildXml.getAbsolutePath());
+			} else {
+				URL buildIS = this.getClass().getResource("/" + ctx.getAntBuildFile());
+				helper.parse(project, buildIS);
+				project.setUserProperty("ant.file", buildIS.toExternalForm());
+			}
+			
+			File enclosingJar = SelfExtractor.getEnclosingJar(this);
+			project.setUserProperty(NonExtractor.ANTINSTALLER_JAR_PROPERTY , enclosingJar.getAbsolutePath());
+			System.out.println(NonExtractor.ANTINSTALLER_JAR_PROPERTY + enclosingJar.getAbsolutePath());
+
+			//what is this !?! project.setKeepGoingMode(keepGoingMode);
+
+			project.setBaseDir(ctx.getFileRoot());
+
+			project.executeTargets(ctx.getInstaller().getTargets(ctx));
+			project.fireBuildFinished(null);
+			ctx.setInstallSucceded(true);
+			ctx.log("Ant finished");
+		}
+		catch (Throwable e) {
+			throw new InstallException("Error running the install, " + e.getMessage(), e);
+		}
+        finally {
+			ctx.getRunner().antFinished();
+		}
+	}
+
+
+	public static synchronized String getAntVersion() throws BuildException {
+		 if (antVersion == null) {
+			 try {
+				 Properties props = new Properties();
+				 InputStream in =
+					 AntProjectFilter.class.getResourceAsStream("/org/apache/tools/ant/version.txt");
+				 props.load(in);
+				 in.close();
+
+				 StringBuffer msg = new StringBuffer();
+				 msg.append("Apache Ant version ");
+				 msg.append(props.getProperty("VERSION"));
+				 msg.append(" compiled on ");
+				 msg.append(props.getProperty("DATE"));
+				 antVersion = msg.toString();
+			 } catch (IOException ioe) {
+				 throw new BuildException("Could not load the version information:"
+										  + ioe.getMessage());
+			 } catch (NullPointerException npe) {
+				 throw new BuildException("Could not load the version information.");
+			 }
+		 }
+		 return antVersion;
+	 }
+	
+	/**
+	 * Append extra Ant jars to the classpath the original classpath 
+	 * is not removed incase the installer is launched from a script
+	 *
+	 */
+	private static void appendClassPath(){
+		try {
+			// 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);
+			}
+			URL[] jars = getLibPaths();
+			for (int i = 0; i < jars.length; ++i) {
+				baseClassPath.append(File.pathSeparatorChar);
+				baseClassPath.append(Locator.fromURI(jars[i].toString()));
+			}
+
+			System.setProperty("java.class.path", baseClassPath.toString());
+
+			URLClassLoader loader = new URLClassLoader(jars);
+			Thread.currentThread().setContextClassLoader(loader);
+		}
+		catch (MalformedURLException e) {
+			// swallow exception, normally all resources are already loaded
+			System.err.println("Invalid Jar path");
+		}
+	}
+	
+	
+	/**
+	 * Ant home is not a requirement but can exist prior to loading
+	 * the default Ant mechanism of using the current Jars parent
+	 * is consipicuously absent, do not rely on ANT_HOME out side of a 
+	 * controlled environment (e.g. a normal install)
+	 */
+	private static void setAntHome(InstallerContext ctx){
+		String antHomeProperty = System.getProperty(ANTHOME_PROPERTY);
+		if(antHomeProperty==null){
+			System.setProperty(ANTHOME_PROPERTY, ctx.getFileRoot().getAbsolutePath());
+		}
+	}
+	
+	/**
+	 * To maintain compatability with previous verisons currently the only
+	 * Ant command line argument supported is the -lib parameter with the value
+	 * "antlib"
+     * @TODO this should probably be removed
+	 * @throws MalformedURLException
+	 */
+	private static URL[] getLibPaths() throws MalformedURLException{
+		
+		// add all Jars from the ./antlib directory at the time of the build
+		// this is NOT based on ANT_HOME
+		URL[] libJars = Locator.getLocationURLs(new File("antlib"));
+
+		// add all the Jars from ~/.ant/lib
+		// this is probably irrelevant for a normal install
+		URL[] userJars = Locator.getLocationURLs(new File(USER_LIBDIR));
+
+		// Now try and find JAVA_HOME
+		File toolsJar = Locator.getToolsJar();
+
+		int jarsLength = libJars.length + userJars.length + (toolsJar!=null?1:0);
+		URL[] allJars = new URL[jarsLength];
+		int i = 0;
+		if(toolsJar != null){
+			allJars[i++] = toolsJar.toURL();
+		}
+		if(libJars.length != 0){
+			System.arraycopy(libJars, 0, allJars, i, libJars.length);
+			i += libJars.length;
+		}
+		if(userJars.length != 0){
+			System.arraycopy(userJars, 0, allJars, i, userJars.length);
+			//i+=userJars.length;
+			//assert(allJars.length=i-1);
+		}
+		return libJars;
+	}
+	
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/CreateLoggerFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/CreateLoggerFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/CreateLoggerFilter.java	(revision 18906)
@@ -0,0 +1,68 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.File;
+
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.runtime.SimpleLogger;
+
+
+/**
+ * Creates a suitable logger for the install.  The logging does not
+ * throw exceptions since it is mainly for debug and we dont want to 
+ * stop an install just because logging is not working
+ * @author Paul Hinds
+ * @version $Id: CreateLoggerFilter.java,v 1.3 2007/01/09 22:41:40 teknopaul Exp $
+ */
+public class CreateLoggerFilter implements ExecuteFilter {
+
+	public static final String LOG_FILE_NAME = "ant.install.log";
+	
+	/**
+	 */
+	public void exec(InstallerContext ctx){
+		SimpleLogger logger = new SimpleLogger();
+		ctx.setLogger( logger );
+		try {
+			String defaultName = "./ant.install.log";
+			// @since 0.7.1 RFE-1154368 for installs from CD where ./ is not writable
+			File defaultFile = new File(defaultName);
+			try {
+				if( !defaultFile.exists() ){
+                    defaultFile.createNewFile();
+                }
+			}
+			catch(Exception e) {
+				;// ignore canWrite() will return false
+			}
+			if(defaultFile.canWrite()) {
+				logger.setFileName(defaultName);
+			}
+			else {
+				String tempDir = ctx.getFileRoot().getAbsolutePath();
+				logger.setFileName(tempDir+System.getProperty("file.separator") + LOG_FILE_NAME);
+			}
+			ctx.log("Ant basedir:" + ctx.getFileRoot().getCanonicalPath());
+		}
+		catch (Throwable ex1) {
+			ex1.printStackTrace();
+			logger.close();
+			// swallow exceptions
+		}
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/CreateUIFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/CreateUIFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/CreateUIFilter.java	(revision 18906)
@@ -0,0 +1,132 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.IOException;
+import java.util.StringTokenizer;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.renderer.swing.plaf.LookAndFeelFactory;
+import org.tp23.antinstaller.runtime.AutoSwingRunner;
+import org.tp23.antinstaller.runtime.AutoTextRunner;
+import org.tp23.antinstaller.runtime.Runner;
+import org.tp23.antinstaller.runtime.SwingRunner;
+import org.tp23.antinstaller.runtime.TextRunner;
+
+
+/**
+ * Creates the Runner instance for the execution UI and sets up an appropriate
+ * message renderer.
+ * @author Paul Hinds
+ * @version $Id: CreateUIFilter.java,v 1.7 2007/01/28 17:49:15 teknopaul Exp $
+ */
+public class CreateUIFilter implements ExecuteFilter {
+
+	/**
+	 * @see org.tp23.antinstaller.runtime.exe.ExecuteFilter#exec(org.tp23.antinstaller.InstallerContext)
+	 */
+	public void exec(InstallerContext ctx) throws InstallException {
+		try {
+			if(ctx.getInstaller().isVerbose()){
+				ctx.log("Creating UI classes");
+			}
+			ctx.setRunner(getRunner(ctx));
+			ctx.log("Created UI classes");
+		}
+		catch (IOException e) {
+			throw new InstallException("Unable to create the user interface", e);
+		}
+		catch (InstallException e) {
+			throw new InstallException(e.getMessage(), e);
+		}
+	}
+	/**
+	 * Determines which Runner to use text or swing or "auto" UIs which skip past the properties sreens.
+	 * @param override String if this paramter is not null it will be used. If
+	 * swing and there is no graphics environment the install will fail, if it is left
+	 * as null a check is made to see if there is a Graphics Environment and swing is used
+	 * if there are no errors, if there are errors the system falls back to the text console
+	 *
+	 * @throws IOException
+	 * @return Runner
+	 */
+	private Runner getRunner(InstallerContext ctx) throws IOException, InstallException {
+
+		if(ctx.getUIOverride() != null){
+			if (ctx.getUIOverride().equalsIgnoreCase("swing")){
+				if(isUi("swing", ctx.getInstaller().getUi())){
+					new LookAndFeelFactory(ctx).setLAF();
+					return new SwingRunner(ctx);
+				}else{
+					throw new InstallException("Not a permited UI override, swing is not allowed");
+				}
+			}
+
+			if (ctx.getUIOverride().equalsIgnoreCase("text")){
+				if(isUi("text", ctx.getInstaller().getUi())){
+					return new TextRunner(ctx);
+				}else{
+					throw new InstallException("Not a permited UI override, text is not allowed");
+				}
+			}
+			
+			if (ctx.getUIOverride().equalsIgnoreCase("swing-auto")){
+				if(isUi("swing-auto", ctx.getInstaller().getUi())){
+					new LookAndFeelFactory(ctx).setLAF();
+					return new AutoSwingRunner(ctx);
+				}else{
+					throw new InstallException("Not a permited UI override, swing-auto is not allowed");
+				}
+			}
+			
+			if (ctx.getUIOverride().equalsIgnoreCase("text-auto")){
+				if(isUi("text-auto", ctx.getInstaller().getUi())){
+					return new AutoTextRunner(ctx);
+				}else{
+					throw new InstallException("Not a permited UI override, text-auto is not allowed");
+				}
+			}
+
+		}
+		//else do stuff to work out if there is a graphics context
+		try{
+			java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
+            /*
+             * Above test is not enough to be sure that we can use the graphics env
+             * so do remaining setup within try/catch block
+             */
+            new LookAndFeelFactory(ctx).setLAF();
+            return new SwingRunner(ctx);
+		} catch (Throwable e){
+			System.out.println("No graphics environment available, reverting to text");
+			System.out.println();
+			return new TextRunner(ctx);
+		}
+	}
+	
+	
+	private boolean isUi(String ui, String commaSeparatedUiList){
+		StringTokenizer st = new StringTokenizer(commaSeparatedUiList, ",");
+		while(st.hasMoreTokens()){
+			if(st.nextToken().equals(ui)){
+				return true;
+			}
+		}
+		return false;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/ExecuteFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/ExecuteFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/ExecuteFilter.java	(revision 18906)
@@ -0,0 +1,31 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+
+
+/**
+ * The Execute engine is being replaced with a filter pattern to enable
+ * further extension of the system,  Initiallly a hardcoded filter chain
+ * will be used subsequently to be replaced by a pluggable mechanism.
+ * @author Paul Hinds
+ * @version $Id: ExecuteFilter.java,v 1.1.1.1 2005/10/18 18:20:57 teknopaul Exp $
+ */
+public interface ExecuteFilter {
+	public void exec(InstallerContext ctx) throws InstallException;
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/ExecuteRunnerFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/ExecuteRunnerFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/ExecuteRunnerFilter.java	(revision 18906)
@@ -0,0 +1,49 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.util.ResourceBundle;
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.Installer;
+
+/**
+ * Executes the Screens part of the build
+ * @author Paul Hinds
+ * @version $Id: ExecuteRunnerFilter.java,v 1.3 2006/12/21 01:48:51 teknopaul Exp $
+ */
+public class ExecuteRunnerFilter implements ExecuteFilter {
+
+	/**
+	 * @see org.tp23.antinstaller.runtime.exe.ExecuteFilter#exec(org.tp23.antinstaller.InstallerContext)
+	 */
+	public void exec(InstallerContext ctx) throws InstallException {
+		if(ctx.getInstaller().isVerbose()){
+			ctx.log("Starting UI Screens");
+		}
+		boolean ok = ctx.getRunner().runInstaller();
+		if(!ok){
+			throw new AbortException(Installer.langPack.getString("install-cancelled"));
+		}
+		ctx.log("Install screens rendered");
+	}
+
+	public static class AbortException extends InstallException{
+		public AbortException(String message){
+			super(message);
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FilterChain.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FilterChain.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FilterChain.java	(revision 18906)
@@ -0,0 +1,32 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import org.tp23.antinstaller.InstallerContext;
+
+
+/**
+ * A filter chain is a series of operations to be run by the ExecInstall class.
+ * This defines the sequence of events in the installer and provides for pluggable
+ * extra sequences for example post installtion messages or running the application.
+ * All FilterChains should end in a FinalizerFilter.
+ * @author Paul Hinds
+ * @version $Id: FilterChain.java,v 1.1.1.1 2005/10/18 18:20:57 teknopaul Exp $
+ */
+public interface FilterChain {
+	public void init(InstallerContext ctx);
+	public ExecuteFilter[] getFilters();
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FilterFactory.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FilterFactory.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FilterFactory.java	(revision 18906)
@@ -0,0 +1,86 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+
+
+/**
+ * Loads FilterChains from resource files on the classpath with lists of class
+ * names listed in order.  In the files lines starting with # and blank
+ * lines are ignored
+ * @author Paul Hinds
+ * @version $Id: FilterFactory.java,v 1.4 2007/01/04 22:57:18 teknopaul Exp $
+ */
+public class FilterFactory {
+	
+	public static final String FILTER_RESOURCE = "/antinstall-config.fconfig";
+
+	private FilterFactory() {
+	}
+
+	public static FilterChain factory(String configResource) throws InstallException{
+		try {
+			InputStream is = FilterFactory.class.getResourceAsStream(configResource);
+			BufferedReader br = new BufferedReader(new InputStreamReader(is));
+			String filterClass = null;
+			final List filterChain = new ArrayList();
+			while((filterClass = br.readLine())!=null){
+				if(filterClass.startsWith("#"))continue;
+				filterClass = filterClass.trim();
+				if(filterClass.equals("")){
+                    continue;
+                }
+				filterChain.add( Class.forName(filterClass).newInstance() );
+			}
+            br.close();
+			return new DynamicFilterChain(configResource, filterChain);
+		}
+		catch (IOException e) {
+			e.printStackTrace();
+		}
+		catch (Exception e) {
+			e.printStackTrace();
+		}
+		throw new InstallException("Can not create FilterChain");
+	}
+		
+	static class DynamicFilterChain implements FilterChain{
+		
+		private ExecuteFilter[] filters;
+		private String configResource;
+		
+		private DynamicFilterChain(String configResource, List filterChain){
+			this.configResource = configResource;
+			filters = new ExecuteFilter[filterChain.size()];
+			filterChain.toArray(filters);
+		}
+		public void init(InstallerContext ctx){
+			ctx.setConfigResource(configResource);
+		}
+		public ExecuteFilter[] getFilters(){
+			return filters;
+		}
+	};
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FinalizerFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FinalizerFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/FinalizerFilter.java	(revision 18906)
@@ -0,0 +1,47 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import org.tp23.antinstaller.InstallerContext;
+
+
+/**
+ * This filter is called at the end of the install. This is not the 
+ * last Java operation since a shutDownHook is present to delete temporary
+ * files and in the GUI version the screen should not dissappear.
+ * All filter chains must end in a FinalizerFilter or subclass
+ * and the exec method must not throw an Exception.
+ * 
+ * @author Paul Hinds
+ * @version $Id: FinalizerFilter.java,v 1.3 2007/01/04 22:57:17 teknopaul Exp $
+ */
+public class FinalizerFilter implements ExecuteFilter {
+    
+    // TODO as per FindBugs the System.exit(0) in SwingPageRenderer prevents this running
+	/**
+	 * @see org.tp23.antinstaller.runtime.exe.ExecuteFilter#exec(org.tp23.antinstaller.InstallerContext)
+	 */
+	public void exec(InstallerContext ctx){
+		try {
+			ctx.log("Finalizing");
+			ctx.getLogger().close();
+		}
+		catch (Throwable e) {
+			e.printStackTrace();
+		}
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/InputStreamLoadConfigFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/InputStreamLoadConfigFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/InputStreamLoadConfigFilter.java	(revision 18906)
@@ -0,0 +1,51 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+
+
+/**
+ * @author Paul Hinds
+ * @version $Id: InputStreamLoadConfigFilter.java,v 1.4 2007/01/28 08:44:39 teknopaul Exp $
+ */
+public class InputStreamLoadConfigFilter extends LoadConfigFilter {
+
+	public void exec(InstallerContext ctx) throws InstallException {
+		this.ctx = ctx;
+
+		try {
+			InputStream config = this.getClass().getResourceAsStream("/" + ctx.getInstallerConfigFile());
+			if(config == null){ // passed in incorrectly on the command line or bad installer
+				throw new IOException();
+			}
+			readConfig(ctx.getFileRoot(), config);
+			ctx.setInstaller(installer);
+			ctx.log("Config loaded");
+		}
+		catch (IOException e) {
+			throw new InstallException("Not able to load and read the AntInstaller config",e);
+		}
+		catch (ConfigurationException e) {
+			throw new InstallException("Not able to load and read the AntInstaller config",e);
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/LoadConfigFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/LoadConfigFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/LoadConfigFilter.java	(revision 18906)
@@ -0,0 +1,501 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.Installer;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.AppRootInput;
+import org.tp23.antinstaller.input.CheckboxInput;
+import org.tp23.antinstaller.input.CommentOutput;
+import org.tp23.antinstaller.input.ConditionalField;
+import org.tp23.antinstaller.input.ConfirmPasswordTextInput;
+import org.tp23.antinstaller.input.DateInput;
+import org.tp23.antinstaller.input.DirectoryInput;
+import org.tp23.antinstaller.input.ExtValidatedTextInput;
+import org.tp23.antinstaller.input.FileInput;
+import org.tp23.antinstaller.input.HiddenPropertyInput;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.LargeSelectInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.PasswordTextInput;
+import org.tp23.antinstaller.input.SelectInput;
+import org.tp23.antinstaller.input.TargetInput;
+import org.tp23.antinstaller.input.TargetSelectInput;
+import org.tp23.antinstaller.input.UnvalidatedTextInput;
+import org.tp23.antinstaller.input.ValidatedTextInput;
+import org.tp23.antinstaller.page.LicensePage;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.page.ProgressPage;
+import org.tp23.antinstaller.page.SimpleInputPage;
+import org.tp23.antinstaller.page.SplashPage;
+import org.tp23.antinstaller.page.TextPage;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+
+
+/**
+ * Loads the Ant Install configuration and sets the Installer object back
+ * into the context.  A similar technique to the apache digester is used to
+ * populate object attributes in this class.
+ * N.B. The only types that can be set for object attributes are Strings, booleans
+ * or ints.
+ * @author Paul Hinds
+ * @version $Id: LoadConfigFilter.java,v 1.9 2007/01/28 08:44:39 teknopaul Exp $
+ */
+public class LoadConfigFilter implements ExecuteFilter {
+
+	//TODO move to InstallerContext
+	public static final String INSTALLER_CONFIG_FILE = "antinstall-config.xml";
+	
+	protected Installer installer = new Installer();
+	protected InstallerContext ctx;
+
+	/**
+	 * @see org.tp23.antinstaller.runtime.exe.ExecuteFilter#exec(org.tp23.antinstaller.InstallerContext)
+	 */
+	public void exec(InstallerContext ctx) throws InstallException {
+		this.ctx = ctx;
+		
+		try {
+            installer = readConfig(ctx.getFileRoot(), ctx.getInstallerConfigFile());
+			ctx.setInstaller(installer);
+			ctx.log("Config loaded");
+		}
+		catch (IOException e) {
+			throw new InstallException("Not able to load and read the AntInstaller config", e);
+		}
+		catch (ConfigurationException e) {
+			throw new InstallException("Not able to load and read the AntInstaller config", e);
+		}
+	}
+
+	/**
+	 * Currently read the config using any available XML parser
+	 * This method reads the config from the file system
+     * @param fileRoot The directory where the config file is stored
+     * @param the name of the configuration file (usually antinstall-config.xml)
+	 * @return Installer
+	 */
+	public Installer readConfig(File fileRoot, String fileName) throws IOException, ConfigurationException {
+
+        installer.getResultContainer().setInstallRoot(fileRoot);
+
+		File config = new File(fileRoot, fileName);
+		if(!config.exists()){ // passed in incorrectly on the command line or bad installer
+			throw new IOException();
+		}
+		InputSource xmlInp = new InputSource(new FileInputStream(config));
+		readConfig(xmlInp);
+		
+		return installer;
+	}
+	/**
+	 * This overloaded method reads from the provided input stream to facilitate
+	 * reading configs directly from the Jar, the file root is still needed 
+	 * for Ant's basedir. Used by InputStreamLoadConfigFilter
+	 * @return Installer
+	 */
+	protected Installer readConfig(File fileRoot, InputStream configSource) throws IOException, ConfigurationException {
+
+        installer.getResultContainer().setInstallRoot(fileRoot);
+
+		InputSource xmlInp = new InputSource(configSource);
+		readConfig(xmlInp);
+		
+		return installer;
+	}
+	/**
+	 * Currently read the config using any available XML parser
+	 * @todo read the installer with only xerces
+	 * @return Installer
+	 */
+	protected Installer readConfig(InputSource xmlInp) throws IOException, ConfigurationException {
+
+		Document doc = null;
+		int line=0;
+		try {
+			line=1;
+			DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
+			line=2;
+			DocumentBuilder parser = docBuilderFactory.newDocumentBuilder();
+			line=3;
+			// RFE [ 1475361 ] Using a custom entity resolver
+			String entityResolverClass = System.getProperty("antinstaller.EntityResolverClass");
+
+			line=4;
+			EntityResolver er = null;
+
+			line=5;
+			if(entityResolverClass != null){
+				line=6;
+				try{
+					line=7;
+					er = (EntityResolver)Class.forName(entityResolverClass).newInstance();
+				}
+				catch(Exception e){
+					// Property error use default this is a very specific requirement
+					line=8;
+					er = new CustomEntityResolver();
+				}
+				line=9;
+			}
+			else{
+				line=10;
+				er = new CustomEntityResolver();
+			}
+			line=11;
+			parser.setEntityResolver(er);
+
+			line=12;
+			doc = parser.parse(xmlInp);
+			line=13;
+			Element root = doc.getDocumentElement();
+			line=14;
+			root.normalize();
+			line=15;
+			setProperties(installer, root.getAttributes());
+			line=16;
+			NodeList allPages = root.getElementsByTagName("page");
+			//TODO make this pluggable
+			line=17;
+			getPages(installer, allPages);
+		}
+		catch (Exception e) {
+			e.printStackTrace();
+			System.out.println( e.getMessage() );
+			throw new IOException("DomFactory error: caused by:" + e.getClass() + ":" + e.getMessage() + ". Line: " + line);
+		}
+		return installer;
+	}
+
+
+	/**
+	 * Used when reading the config
+	 * @param allPages NodeList
+	 * @throws ConfigurationException
+	 */
+	private void getPages(Installer installerConfig, NodeList allPages) throws ConfigurationException {
+		ArrayList pages = new ArrayList();
+		for (int i = 0; i < allPages.getLength(); i++) {
+			Element pageElem = (Element) allPages.item(i);
+			Page page = getPageType(pageElem.getAttribute("type"));
+			setProperties(page, pageElem.getAttributes());
+			pages.add(page);
+			getOutputFields(page, pageElem);
+		}
+		Page[] pageArr = new Page[pages.size()];
+		pages.toArray(pageArr);
+		installerConfig.setPages(pageArr);
+	}
+	/**
+	 * Used when reading the config
+	 * @param page Page
+	 * @param pageElem Element
+	 * @throws ConfigurationException
+	 */
+    private void getOutputFields(Page page, Element pageElem) throws ConfigurationException {
+        page.setOutputField( getInnerOutputFields( pageElem ));
+    }
+
+    private OutputField[] getInnerOutputFields( Element elem) throws ConfigurationException {
+         NodeList allFields = elem.getChildNodes();
+         ArrayList fields = new ArrayList();
+         for (int i = 0; i < allFields.getLength(); i++) {
+             if(! (allFields.item(i) instanceof Element))continue;
+             Element fieldElem = (Element)allFields.item(i);
+             OutputField field = getOutputFieldType(fieldElem.getNodeName(), fieldElem);
+             if(field != null){
+                 setProperties(field, fieldElem.getAttributes());
+                 fields.add(field);
+                 field.setResultContainer(installer.getResultContainer());
+             }
+         }
+         OutputField[] fieldArr = new OutputField[fields.size()];
+
+         return (OutputField[])fields.toArray(fieldArr);
+     }
+
+    /**
+	 * Used when reading the config
+	 * @param type String
+	 * @throws ConfigurationException
+	 * @return Page
+	 */
+	private Page getPageType(String type) throws ConfigurationException {
+		if (type.equalsIgnoreCase("license")) {
+			return new LicensePage();
+		}
+		else if (type.equalsIgnoreCase("input")) {
+			return new SimpleInputPage();
+		}
+		else if (type.equalsIgnoreCase("progress")) {
+			return new ProgressPage();
+		}
+		else if (type.equalsIgnoreCase("splash")) {
+			return new SplashPage();
+		}
+		else if (type.equalsIgnoreCase("text")) {
+			return new TextPage();
+		}
+		throw new ConfigurationException("Unknown Page type:" + type);
+	}
+	/**
+	 * Used when reading the config
+	 * @param type String
+	 * @param field Element
+	 * @throws ConfigurationException
+	 * @return InputField
+	 */
+	private OutputField getOutputFieldType(String type, Element field) throws ConfigurationException {
+
+		if (type.equalsIgnoreCase("text")) {
+			return new UnvalidatedTextInput();
+		}
+		else if (type.equalsIgnoreCase("directory")) {
+			return new DirectoryInput();
+		}
+		else if (type.equalsIgnoreCase("target")) {
+			return new TargetInput();
+		}
+		else if (type.equalsIgnoreCase("file")) {
+			return new FileInput();
+		}
+		else if (type.equalsIgnoreCase("comment")) {
+			return new CommentOutput();
+		}
+		else if (type.equalsIgnoreCase("checkbox")) {
+			return new CheckboxInput();
+		}
+		else if (type.equalsIgnoreCase("validated")) {
+			return new ValidatedTextInput();
+		}
+		else if (type.equalsIgnoreCase("ext-validated")) {
+			return new ExtValidatedTextInput();
+		}
+		else if (type.equalsIgnoreCase("password")) {
+			return new PasswordTextInput();
+		}
+		else if (type.equalsIgnoreCase("password-confirm")) {
+			return new ConfirmPasswordTextInput();
+		}
+        else if (type.equalsIgnoreCase("hidden")) {
+             return new HiddenPropertyInput();
+         }
+        else if (type.equalsIgnoreCase("date")) {
+			return new DateInput();
+		}
+		else if (type.equalsIgnoreCase("app-root")) {
+			return new AppRootInput();
+		}
+        else if (type.equalsIgnoreCase("conditional")) {
+            ConditionalField conditionalField = new ConditionalField();
+            OutputField[] outFields = getInnerOutputFields( field );
+            InputField[] inFields = new InputField[ outFields.length ];
+            for( int i = 0; i < outFields.length; i++ ) {
+                inFields[i] = (InputField) outFields[i];
+            }
+            conditionalField.setFields( inFields );
+            return conditionalField;
+        }
+        else if (type.equalsIgnoreCase("select")) {
+			SelectInput sInput = new SelectInput();
+			NodeList allOptions = field.getElementsByTagName("option");
+			ArrayList options = new ArrayList();
+			for (int i = 0; i < allOptions.getLength(); i++) {
+				Element optionElem = (Element) allOptions.item(i);
+				SelectInput.Option option = sInput.getNewOption();
+				option.setText(optionElem.getAttribute("text"));
+				option.value = optionElem.getAttribute("value");
+				options.add(option);
+			}
+			SelectInput.Option[] optionArr = new SelectInput.Option[options.size()];
+			options.toArray(optionArr);
+			sInput.setOptions(optionArr);
+
+			String s = field.getAttribute("useAsLocale");
+			if ( s != null || !s.equals("") ) {
+				sInput.setUseAsLocale(true);
+			}
+
+			return sInput;
+		}
+		else if (type.equalsIgnoreCase("target-select")) {
+			TargetSelectInput sInput = new TargetSelectInput();
+			NodeList allOptions = field.getElementsByTagName("option");
+			ArrayList options = new ArrayList();
+			for (int i = 0; i < allOptions.getLength(); i++) {
+				Element optionElem = (Element) allOptions.item(i);
+				SelectInput.Option option = sInput.getNewOption();
+				option.setText(optionElem.getAttribute("text"));
+				option.value = optionElem.getAttribute("value");
+				options.add(option);
+			}
+			SelectInput.Option[] optionArr = new SelectInput.Option[options.size()];
+			options.toArray(optionArr);
+			sInput.setOptions(optionArr);
+
+			return sInput;
+		}
+		else if (type.equalsIgnoreCase("large-select")) {
+			LargeSelectInput sInput = new LargeSelectInput();
+			NodeList allOptions = field.getElementsByTagName("option");
+			ArrayList options = new ArrayList();
+			for (int i = 0; i < allOptions.getLength(); i++) {
+				Element optionElem = (Element) allOptions.item(i);
+				LargeSelectInput.Option option = sInput.getNewOption();
+				option.setText(optionElem.getAttribute("text"));
+				option.value = optionElem.getAttribute("value");
+				options.add(option);
+			}
+			LargeSelectInput.Option[] optionArr = new LargeSelectInput.Option[options.size()];
+			options.toArray(optionArr);
+			sInput.setOptions(optionArr);
+
+			return sInput;
+		}
+		System.out.println("Unrecognised Input Element:"+type);
+		return null;
+		//throw new ConfigurationException("Unknown Input Field type:" + type);
+	}
+
+
+
+    /**
+	 * Calls bean setter methods based on attribures found. Could use BeanUtils here
+	 * but we want to stay clear of external dependencies.
+	 * @param bean Object
+	 * @param map NamedNodeMap
+	 */
+	private void setProperties(Object bean, NamedNodeMap map) {
+		int numAtts = map.getLength();
+		for (int a = 0; a < numAtts; a++) {
+			Node attribute = map.item(a);
+			String name = attribute.getNodeName();
+			String value = attribute.getNodeValue();
+			String methodName = "set" + Character.toUpperCase(name.charAt(0)) + name.substring(1);
+			Method[] allMethods = bean.getClass().getMethods();
+			for (int m = 0; m < allMethods.length; m++) {
+				if (allMethods[m].getName().equals(methodName)) {
+					try {
+						Class[] parameters = allMethods[m].getParameterTypes();
+						Object[] paramValues;
+						if (parameters[0].equals(Boolean.class)) {
+							paramValues = new Boolean[1];
+							if ( OutputField.isTrue(value) ) {
+								paramValues[0] = Boolean.TRUE;
+							}
+							else {
+								paramValues[0] = Boolean.FALSE;
+							}
+						}
+						else
+						if (parameters[0].equals(Integer.class)) {
+							paramValues = new Integer[1];
+							paramValues[0] = new Integer(value);
+						}
+						else {
+							paramValues = new String[1];
+							paramValues[0] = value;
+						}
+						allMethods[m].invoke(bean, paramValues);
+						continue;
+					}
+					catch (IndexOutOfBoundsException ex) {
+					    // not the setter we are looking for
+                        // this is the wrong overloaded method
+						continue; 
+					}
+					// Ignore reflection errors and continue
+					catch (IllegalArgumentException e) {
+					}
+					catch (IllegalAccessException e) {					
+					}
+					catch (InvocationTargetException e) {						
+					}
+				}
+			}
+		}
+	}
+
+	private static class CustomEntityResolver implements EntityResolver{
+		public InputSource resolveEntity(String publicId, String systemId) {
+			
+			if (publicId.equals("-//tp23 //DTD Ant Installer Config//EN") &&
+				systemId.equals("http://antinstaller.sf.net/dtd/antinstall-config-0.2.dtd")) {
+				InputSource localSrc = new InputSource(this.getClass().getResourceAsStream(
+					"/org/tp23/antinstaller/antinstall-config-0.2.dtd"));
+				return localSrc;
+			}
+			if (publicId.equals("-//tp23 //DTD Ant Installer Config//EN") &&
+				systemId.equals("http://antinstaller.sf.net/dtd/antinstall-config-0.3.dtd")) {
+				InputSource localSrc = new InputSource(this.getClass().getResourceAsStream(
+					"/org/tp23/antinstaller/antinstall-config-0.3.dtd"));
+				return localSrc;
+			}
+			if (publicId.equals("-//tp23 //DTD Ant Installer Config//EN") &&
+				systemId.equals("http://antinstaller.sf.net/dtd/antinstall-config-0.4.dtd")) {
+				InputSource localSrc = new InputSource(this.getClass().getResourceAsStream(
+					"/org/tp23/antinstaller/antinstall-config-0.4.dtd"));
+				return localSrc;
+			}
+			if (publicId.equals("-//tp23 //DTD Ant Installer Config//EN") &&
+				systemId.equals("http://antinstaller.sf.net/dtd/antinstall-config-0.5.dtd")) {
+				InputSource localSrc = new InputSource(this.getClass().getResourceAsStream(
+					"/org/tp23/antinstaller/antinstall-config-0.5.dtd"));
+				return localSrc;
+			}
+			if (publicId.equals("-//tp23 //DTD Ant Installer Config//EN") &&
+				systemId.equals("http://antinstaller.sf.net/dtd/antinstall-config-0.6.dtd")) {
+				InputSource localSrc = new InputSource(this.getClass().getResourceAsStream(
+					"/org/tp23/antinstaller/antinstall-config-0.6.dtd"));
+				return localSrc;
+			}
+			if (publicId.equals("-//tp23 //DTD Ant Installer Config//EN") &&
+				systemId.equals("http://antinstaller.sf.net/dtd/antinstall-config-0.7.dtd")) {
+				InputSource localSrc = new InputSource(this.getClass().getResourceAsStream(
+					"/org/tp23/antinstaller/antinstall-config-0.7.dtd"));
+				return localSrc;
+			}
+			if (publicId.equals("-//tp23 //DTD Ant Installer Config//EN") &&
+				systemId.equals("http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd")) {
+				InputSource localSrc = new InputSource(this.getClass().getResourceAsStream(
+					"/org/tp23/antinstaller/antinstall-config-0.8.dtd"));
+				return localSrc;
+			}
+			else {
+				return null;
+			}
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/PropertyLoaderFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/PropertyLoaderFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/PropertyLoaderFilter.java	(revision 18906)
@@ -0,0 +1,416 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limiations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.util.StringTokenizer;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.Installer;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.PropertiesFileRenderer;
+import org.tp23.antinstaller.input.ConditionalField;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.PasswordTextInput;
+import org.tp23.antinstaller.input.TargetInput;
+import org.tp23.antinstaller.input.TargetSelectInput;
+import org.tp23.antinstaller.page.Page;
+import org.tp23.antinstaller.runtime.VersionHelper;
+import org.tp23.antinstaller.runtime.exe.ExecuteRunnerFilter.AbortException;
+
+/**
+ * Loads properties from a file of default properties if found.
+ * the Installer element should define an attribute
+ * loadDefaults with one of the following values.
+ * <li>false - do not look for defaults</li>
+ * <li>prompt - look for properties and ask if they should be used if found</li>
+ * <li>load - look for defaults if found load them</li>
+ * <li>prompt-auto - wierd case where installer permits zero user interaction running only from antinstaller-config.xml defaults</li>
+ * 
+ * N.B. this is not a generic property loader but one specifically for properties files
+ * generated by a previous run of an identical installer or one that according to the version
+ * number is compatible, see PropertyTask for loading other property sets
+ * FIXME i18n for AbortExceptoins
+ * @author teknopaul
+ *
+ */
+public class PropertyLoaderFilter implements ExecuteFilter {
+	
+	public static final String LOAD = "true";
+	public static final String PROMPT = "prompt";
+	public static final String PROMPT_AUTO = "prompt-auto";
+	public static final String FALSE = "false";
+    public static final String DEFAULT_PROPERTIES_FILE_PROPERTY = "antinstaller.properties";
+
+    private final String fileNameProperty;
+
+    private int definedPropertiesCount;
+
+    /**
+     * Default constructor required for an ExecuteFilter implementation.
+     * The default property name given by @see{DEFAULT_PROPERTIES_FILE_PROPERTY}
+     * is used with this constructor
+     */
+    public PropertyLoaderFilter() {
+        this( DEFAULT_PROPERTIES_FILE_PROPERTY );
+    }
+
+    /**
+     * Constructor that allows the name of the property containg the properties file
+     * to be specified
+     *
+     * @param fileNameProperty property containing the name of file
+     */
+    public PropertyLoaderFilter( final String fileNameProperty ) {
+        this.fileNameProperty = fileNameProperty;
+    }
+
+    /**
+     * Execute the filter action - in this case pre-setting InputField values
+     * with values loaded from a properties file (if present)
+     *
+     * @see org.tp23.antinstaller.runtime.exe.ExecuteFilter
+     * @param ctx context data
+     * @throws InstallException if an error occurred loading pre-defined properties
+     */
+    public void exec(InstallerContext ctx) throws InstallException {
+
+		Installer installer = ctx.getInstaller();
+		String loadDefaults = installer.getLoadDefaults();
+		if(installer.isVerbose()) {
+			ctx.log("loadDefaults attribute:" + loadDefaults);
+		}
+		boolean load = false;
+		if(loadDefaults == null || FALSE.equals(loadDefaults)) {
+			if(installer.isVerbose()) {
+				ctx.log("Not loading defaults");
+			}
+			return;
+		}
+		
+        ctx.log( "Checking for predefined properties");
+        Properties predefinedProps = loadPredefinedProperties( ctx, fileNameProperty );
+
+        definedPropertiesCount = predefinedProps.size();
+
+        boolean foundProps = false;
+        if( definedPropertiesCount == 0 ) {
+            ctx.log( "No predefined properties");
+        }
+        else{
+        	foundProps = true;
+        }
+
+		if( foundProps && PROMPT.equals(loadDefaults) ) {
+			load = ctx.getMessageRenderer().prompt(org.tp23.antinstaller.Installer.langPack.getString("promptLoadDefaults"));
+		}
+		else if( foundProps && PROMPT_AUTO.equals(loadDefaults)) {
+			load = ctx.getMessageRenderer().prompt(org.tp23.antinstaller.Installer.langPack.getString("promptLoadDefaults"));
+		}
+		else if( foundProps && LOAD.equals(loadDefaults) ) {
+			load = true;
+		}
+		
+		if( (!foundProps || !load) && 
+				ctx.isAutoBuild() && 
+				PROMPT.equals(loadDefaults) ) {
+			ctx.log( "Cant run -auto install without properties");
+			throw new AbortException("Install Aborted: cant load ant.install.properties");
+		}
+
+		if(load) {
+			if(installer.isVerbose()) {
+				ctx.log("Loading defaults");
+			}
+            
+            // version control
+            String propertiesVersion = predefinedProps.getProperty(PropertiesFileRenderer.INSTALLER_VERSION_PROPERTY);
+            String configVersion = ctx.getInstaller().getVersion();
+            if(propertiesVersion != null) {
+                VersionHelper helper = new VersionHelper();
+                if( ( ! propertiesVersion.equals(configVersion)) && 
+                        helper.equalOrHigher(configVersion , propertiesVersion) ) {
+                    
+                    // let major versions pass but prompt for differences
+                    if( (! ctx.isAutoBuild()) && helper.majorVersionCompatible(configVersion , propertiesVersion) ){
+                        if( ! ctx.getMessageRenderer().prompt(org.tp23.antinstaller.Installer.langPack.getString("propertiesVersionMismatch")) ){
+                            throw new AbortException("Install Aborted: existing configuration is not compatible, config version: " + configVersion);
+                        }
+                    }
+                    else {
+                        throw new AbortException("Install Aborted: existing configuration is not compatible, config version: " + configVersion);
+                    }
+                }
+                
+            }
+            else {
+                throw new AbortException("Install Aborted: local ant.install.properties missing config version, must be equal or lower than: " + configVersion);
+            }
+            // end version control
+
+            Page[] allPages = installer.getPages();
+            handleDefaults( ctx, allPages, predefinedProps );
+
+		}
+	}
+
+    /*
+     * Use the supplied properties to pre-populate the page fields
+     */
+	private void handleDefaults( InstallerContext ctx, Page[] allPages, Properties props ) throws InstallException {
+		for( int i = 0; i < allPages.length; i++ ) {
+            OutputField[] fields = allPages[i].getOutputField();
+            setInputValues( ctx, allPages[i], fields, props );
+        }
+    }
+
+    private void setInputValues( InstallerContext ctx, Page page, OutputField[] outputFields, Properties props )
+            throws InstallException {
+        //Should never happen, but guard against it
+        if( outputFields == null ) {
+            return;
+        }
+
+        // find relevant targets
+        String targets = props.getProperty(page.getName() + PropertiesFileRenderer.TARGETS_SUFFIX);
+        List targetsList = splitTargets(targets);
+
+        for (int j = 0; j < outputFields.length; j++) {
+            OutputField field = outputFields[j];
+
+            if( field instanceof ConditionalField )  {
+                ConditionalField condField = (ConditionalField) field;
+                setInputValues( ctx, page, condField.getFields(), props );
+            }
+            else if( field instanceof InputField ) {
+                InputField input = (InputField)field;
+                String propName = input.getProperty();
+                if( props.containsKey( propName ) ) {
+                    String value = props.getProperty(propName);
+
+                    if( ctx.getInstaller().isDebug() ) {
+                           ctx.log( "Setting " + propName + "=" + value );
+                    }
+
+                    input.setDefaultValue(value); // does not evaluate references
+                    input.setInputResult(value);
+                    input.setEditted( true );
+
+                    if(field instanceof PasswordTextInput) {
+                        if(value == null ){
+                            ctx.getMessageRenderer().printMessage(org.tp23.antinstaller.Installer.langPack.getString("promptMissingDefaultPassword"));
+
+                        }
+                    }
+
+                    // TARGET TYPES
+                    if(field instanceof TargetInput) {
+                        // Target and SelectTarget
+                        TargetInput tgtInput = (TargetInput)field;
+                        page.removeTarget(tgtInput.getIdx());
+                        // if target was selected
+                        if( ! InputField.isFalse(value)) {
+                            page.addTarget(tgtInput.getIdx(), tgtInput.getTarget()); // returns the OS specific suffix if relevant
+                            // DEBUG
+                            if( ! targetsList.contains(tgtInput.getTarget()) ){ 
+                                // could be caused by someone trying to copy a file across platforms (not a good idea)
+                                ctx.log("Defaults error: targets list for page " + page.getName()
+                                        + " should contain a TargetInput that was true");
+                            }
+                        }
+                        else {
+                            if(InputField.isTrue( tgtInput.getForce()) ) {
+                                String msg = "Defaults error: forced target for page " + page.getName()
+                                + " has been removed";
+                                ctx.log(msg);
+                                throw new InstallException(msg);
+                            }
+                        }
+                    }
+                    if(field instanceof TargetSelectInput) {
+                        TargetSelectInput tgtInput = (TargetSelectInput)field;
+                        page.removeTarget(tgtInput.getIdx());
+                        // one target must be selected (what if the page was not shown??)
+                        page.addTarget(tgtInput.getIdx(), value);
+                    }
+                }
+            }
+            //TODO: Should properties that are present in properties file but which do not appear
+            //      as an InputField be set in the ResultContainer so that they can be used by later
+            //      "if" conditions? - no other properties should be loaded separately from additional
+            //      resource files if there is a requirement for that using an postDisplayTarget - PH
+        }
+
+        //Page targets should be handled by the config loader process and indexed correctly
+        List pageTargets = page.getTargets(ctx);
+        Iterator iter = targetsList.iterator();
+        while (iter.hasNext()) {
+            String targetPerProps = (String) iter.next();
+            if( ! pageTargets.contains(targetPerProps)) {
+                ctx.log("Defaults warning: targets list for page " + page.getName()
+                        + " should contain " + targetPerProps);
+            }
+        }
+
+    }
+
+    /**
+     * Check if external properties have been loaded
+     *
+     * @return <code>true</code> if an external properties file was configured and contained
+     *       at least one property
+     */
+    protected boolean isPropertiesLoaded() {
+        return (definedPropertiesCount > 0);
+    }
+
+    /*
+     * Primarily for unit testing
+     */
+    int getPropertiesFoundCount() {
+        return definedPropertiesCount;
+    }
+
+    /**
+     * Load properties from a properties file if present.
+     * The name of the properties file is checked for in the following order.
+     * <p>
+     * If the parameter fileNamePropertyName is not null:
+     * <ul>
+     * <li>the environment is checked for an environmentvariable with that name</li>
+     * <li>java system properties are checked for a property with that name</li>
+     * </ul>
+     * If the file name has not been found, or if <code>fileNamePropertyName == null</code>
+     * then the default file name is used - @see{org.tp23.antinstaller.PropertiesFileRenderer#PROPERTIES_FILE_NAME}
+     *
+     * @param context installer context
+     * @param fileNamePropertyName name of environment variable or java system property containing the
+     *                             name of the properties file to be loaded or <code>null</code>
+     * @return properties
+     * @throws InstallException if the properties file is missing or an error occurs loading it
+     */
+    private Properties loadPredefinedProperties( final InstallerContext context,
+                                                 final String           fileNamePropertyName )
+            throws InstallException {
+
+        Properties contextProps = InstallerContext.getEnvironment();
+        String propertiesFileName = null;
+        boolean failSilently = true;
+
+        if( fileNamePropertyName != null ) {
+            propertiesFileName = contextProps.getProperty( InstallerContext.ENV_PREFIX + fileNamePropertyName );
+
+            if( propertiesFileName == null ) {
+                propertiesFileName =
+                        contextProps.getProperty( InstallerContext.JAVA_PREFIX + fileNamePropertyName );
+            }
+
+            if( propertiesFileName != null ) {
+                //Properties have been passed explicitly to installer so must load them
+                failSilently = false;
+            }
+        }
+
+        if( propertiesFileName == null ) {
+            propertiesFileName = PropertiesFileRenderer.PROPERTIES_FILE_NAME;
+        }
+
+        Properties definedProperties = new Properties( );
+
+        if( propertiesFileName != null ) {
+            File definedPropertiesFile = new File( propertiesFileName );
+            context.log( "Loading pre-defined properties from file "
+                           + definedPropertiesFile.getAbsolutePath());
+
+            //TODO: Support loading properties file from via classloader as a resource
+            try {
+                FileInputStream istream = new FileInputStream( definedPropertiesFile );
+                definedProperties.load( istream );
+                istream.close();
+            }
+            catch( FileNotFoundException fnfExc ) {
+                if( !failSilently ) {
+                    throw new InstallException( "Defined properties file "
+                                                + definedPropertiesFile.getAbsolutePath()
+                                                + " doesn't exist" );
+                }
+            }
+            catch( IOException ioExc ) {
+                if( !failSilently ) {
+                    throw new InstallException( "Unable to read contents of defined properties file "
+                                                 + definedPropertiesFile.getAbsolutePath(),
+                                                ioExc );
+                }
+            }
+
+            if( context.getInstaller().isDebug() ) {
+                logPropertiesLoaded( context, definedProperties, definedPropertiesFile );
+            }
+
+        }
+
+        return definedProperties;
+    }
+
+
+    // Debug - log properties loaded
+    private void logPropertiesLoaded( final InstallerContext context,
+                                      final Properties properties,
+                                      final File propertiesFile ) {
+        Iterator iterator = properties.keySet().iterator();
+        context.log( "Predefined properties ("
+                        + definedPropertiesCount
+                        + ") loaded from "
+                        + propertiesFile.getAbsolutePath()
+                        + "..." );
+        while( iterator.hasNext() ) {
+            String key = (String) iterator.next();
+            context.log( key + "=" + properties.getProperty( key ) );
+        }
+    }
+
+	/*
+	 * Could do a String.split(",") but want to avoid 1.4 specific stuff generally
+	 * @param commaSeparated
+	 * @return
+	 */
+	private List splitTargets(String commaSeparated) {
+		if(commaSeparated == null) {
+			return Collections.EMPTY_LIST;
+		}
+		StringTokenizer st = new StringTokenizer(commaSeparated, ",");
+		List targets = new ArrayList();
+		while (st.hasMoreElements()) {
+			String element = st.nextToken();
+			if(element != null){
+				element = element.trim();
+				if(element.length() > 0){
+					targets.add(element.trim());
+				}
+			}
+		}
+		return targets;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/PropertyPrinterFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/PropertyPrinterFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/PropertyPrinterFilter.java	(revision 18906)
@@ -0,0 +1,83 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.tp23.antinstaller.DefaultPropertiesFileRenderer;
+import org.tp23.antinstaller.ExplicitPropertiesFileRenderer;
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.PropertiesFileRenderer;
+import org.tp23.antinstaller.input.ResultContainer;
+
+
+/**
+ * @author Paul Hinds
+ * @version $Id: PropertyPrinterFilter.java,v 1.5 2006/12/28 00:57:53 teknopaul Exp $
+ */
+public class PropertyPrinterFilter implements ExecuteFilter {
+
+	/**
+	 * @see org.tp23.antinstaller.runtime.exe.ExecuteFilter#exec(org.tp23.antinstaller.InstallerContext)
+	 */
+	public void exec(InstallerContext ctx) throws InstallException {
+		ResultContainer results = ctx.getInstaller().getResultContainer();
+		results.setProperty(PropertiesFileRenderer.FILE_ROOT_PROPERTY,
+							ctx.getFileRoot().getAbsolutePath());
+
+        printProperties(ctx);
+		
+		if(ctx.getInstaller().isVerbose()){
+			ctx.log("Properties printed:" + ctx.getFileRoot().getAbsolutePath() 
+                    + File.separatorChar + PropertiesFileRenderer.PROPERTIES_FILE_NAME);
+		}
+	}
+	/**
+	 *
+	 * @param installer Installer
+	 * @throws IOException
+	 */
+	private void printProperties(InstallerContext ctx) {
+		PropertiesFileRenderer propRenderer;
+		if(ctx.getInstaller().isVerbose()){
+			propRenderer = new ExplicitPropertiesFileRenderer();
+		}
+		else{
+			propRenderer = new DefaultPropertiesFileRenderer();
+		}
+		// render properties for reuse in auto builds
+		File currentDir = new File(".");
+        ctx.log("auto build supported: " + ctx.getInstaller().supportsAutoBuild());
+        boolean alreadyWritten = false;
+		if(currentDir.canWrite() && ctx.getInstaller().supportsAutoBuild()){
+            if(ctx.getInstaller().isVerbose()){
+                try {
+                    ctx.log("Rendering properties in the current directory: " + currentDir.getCanonicalPath());
+                } catch (IOException e) {
+                    // oh well never mind
+                }
+            }
+			propRenderer.renderProperties(ctx, currentDir);
+            alreadyWritten = true;
+		}
+		if( ! currentDir.equals(ctx.getFileRoot()) || !alreadyWritten){
+			propRenderer.renderProperties(ctx, ctx.getFileRoot());
+		}
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/nonextractor.fconfig
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/nonextractor.fconfig	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/nonextractor.fconfig	(revision 18906)
@@ -0,0 +1,11 @@
+#
+# Default config for the NonExtractor
+#
+org.tp23.antinstaller.runtime.exe.CreateLoggerFilter
+org.tp23.antinstaller.runtime.exe.InputStreamLoadConfigFilter
+org.tp23.antinstaller.runtime.exe.CreateUIFilter
+org.tp23.antinstaller.runtime.exe.PropertyLoaderFilter
+org.tp23.antinstaller.runtime.exe.ExecuteRunnerFilter
+org.tp23.antinstaller.runtime.exe.PropertyPrinterFilter
+org.tp23.antinstaller.runtime.exe.AntProjectFilter
+org.tp23.antinstaller.runtime.exe.FinalizerFilter
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/script.fconfig
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/script.fconfig	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/script.fconfig	(revision 18906)
@@ -0,0 +1,11 @@
+#
+# Default config for the Install started with a script
+#
+org.tp23.antinstaller.runtime.exe.CreateLoggerFilter
+org.tp23.antinstaller.runtime.exe.LoadConfigFilter
+org.tp23.antinstaller.runtime.exe.CreateUIFilter
+org.tp23.antinstaller.runtime.exe.PropertyLoaderFilter
+org.tp23.antinstaller.runtime.exe.ExecuteRunnerFilter
+org.tp23.antinstaller.runtime.exe.PropertyPrinterFilter
+org.tp23.antinstaller.runtime.exe.AntLauncherFilter
+org.tp23.antinstaller.runtime.exe.FinalizerFilter
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/selfextractor.fconfig
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/selfextractor.fconfig	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/exe/selfextractor.fconfig	(revision 18906)
@@ -0,0 +1,11 @@
+#
+# Default config for the SelfExtractor
+#
+org.tp23.antinstaller.runtime.exe.CreateLoggerFilter
+org.tp23.antinstaller.runtime.exe.LoadConfigFilter
+org.tp23.antinstaller.runtime.exe.CreateUIFilter
+org.tp23.antinstaller.runtime.exe.PropertyLoaderFilter
+org.tp23.antinstaller.runtime.exe.ExecuteRunnerFilter
+org.tp23.antinstaller.runtime.exe.PropertyPrinterFilter
+org.tp23.antinstaller.runtime.exe.AntLauncherFilter
+org.tp23.antinstaller.runtime.exe.FinalizerFilter
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/CompoundExpression.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/CompoundExpression.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/CompoundExpression.java	(revision 18906)
@@ -0,0 +1,38 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: CompoundExpression.java,v 1.1 2006/09/08 19:16:22
+ *          anothermwilson Exp $
+ * @since 0.7.4 patch 2
+ */
+public class CompoundExpression implements Expression {
+
+	private Expression expression1;
+	private LogicalTest test;
+	private Expression expression2;
+
+	public CompoundExpression(Expression expr1, final LogicalTest logicalTest, Expression expr2) {
+		this.expression1 = expr1;
+		this.expression2 = expr2;
+		this.test = logicalTest;
+	}
+
+	public boolean evaluate() {
+		return test.getTestResult(expression1, expression2);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/EndsWithTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/EndsWithTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/EndsWithTest.java	(revision 18906)
@@ -0,0 +1,33 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: EndsWithTest.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+public class EndsWithTest extends ValuesTest {
+	
+	private static final String[] TEST_TOKENS = { "$=" };
+
+	public String[] getTestTokens() {
+		return TEST_TOKENS;
+	}
+
+	protected boolean getTestResult(final String value, final String expectedValue) {
+		return (value != null) && value.endsWith(expectedValue);
+
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/EqualsTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/EqualsTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/EqualsTest.java	(revision 18906)
@@ -0,0 +1,42 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: EqualsTest.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+public class EqualsTest extends ValuesTest {
+
+	private static final String[] TEST_TOKENS = { "==", "=" };
+
+	public String[] getTestTokens() {
+		return TEST_TOKENS;
+	}
+
+	protected boolean getTestResult(final String propValue, final String expectedValue) {
+		// Where the expected value is null, empty string must also match
+		if (expectedValue == null) {
+			return (propValue == null) || propValue.equals("");
+		}
+
+		if ((propValue != null) && propValue.equals(expectedValue)) {
+			return true;
+		}
+
+		return false;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/Expression.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/Expression.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/Expression.java	(revision 18906)
@@ -0,0 +1,25 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: Expression.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+
+public interface Expression {
+	public boolean evaluate();
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/ExpressionBuilder.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/ExpressionBuilder.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/ExpressionBuilder.java	(revision 18906)
@@ -0,0 +1,211 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.logic;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.tp23.antinstaller.input.ResultContainer;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+
+/**
+ * @author mwilson
+ * @version $Id: ExpressionBuilder.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+public class ExpressionBuilder {
+	private static final int GROUPING_START_OPERATOR = '(';
+
+	private static final int GROUPING_END_OPERATOR = ')';
+
+	private static final ValuesTest[] testValueConditions = { 
+		new EndsWithTest(), 
+		new EqualsTest(), 
+		new GreaterThanOrEqualsTest(),
+		new LessThanOrEqualsTest(), 
+		new NotEqualsTest(), 
+		new StartsWithTest() 
+	};
+
+	private static final LogicalTest[] testLogicalConditions = { 
+		new LogicalAndTest(), 
+		new LogicalOrTest() 
+	};
+
+	private static final SingleExpressionTest SINGLE_EXPRESSION_TEST = new SingleExpressionTest();
+
+	private static Map tokenMap = new HashMap();
+
+	private static String[] valueTokens;
+
+	private static String[] logicalTokens;
+
+	static {
+		for (int i = 0; i < testValueConditions.length; i++) {
+			String[] tmpTokens = testValueConditions[i].getTestTokens();
+			for (int j = 0; j < tmpTokens.length; j++) {
+				tokenMap.put(tmpTokens[j], testValueConditions[i]);
+			}
+		}
+
+		valueTokens = new String[tokenMap.size()];
+		int index = 0;
+		for (int i = 0; i < testValueConditions.length; i++) {
+			String[] tmpTokens = testValueConditions[i].getTestTokens();
+			for (int j = 0; j < tmpTokens.length; j++) {
+				valueTokens[index++] = tmpTokens[j];
+			}
+		}
+
+		Comparator lengthComparator = new StringLengthComparator();
+
+		//Have to sort so that longest test operator is checked for first
+		Arrays.sort(valueTokens, lengthComparator);
+
+		index = 0;
+		final int mapInitialSize = tokenMap.size();
+
+		for (int i = 0; i < testLogicalConditions.length; i++) {
+			String[] tmpTokens = testLogicalConditions[i].getTestTokens();
+			for (int j = 0; j < tmpTokens.length; j++) {
+				tokenMap.put(tmpTokens[j], testLogicalConditions[i]);
+			}
+		}
+
+		logicalTokens = new String[tokenMap.size() - mapInitialSize];
+		for (int i = 0; i < testLogicalConditions.length; i++) {
+			String[] tmpTokens = testLogicalConditions[i].getTestTokens();
+			for (int j = 0; j < tmpTokens.length; j++) {
+				logicalTokens[index++] = tmpTokens[j];
+			}
+		}
+
+		Arrays.sort(logicalTokens, lengthComparator);
+
+	}
+
+	public static Expression parseLogicalExpressions(ResultContainer container, String exprStr) throws ConfigurationException {
+		int startIndex = skipWhiteSpace(exprStr, 0);
+		int index = exprStr.indexOf(GROUPING_START_OPERATOR, startIndex);
+
+		if (index == -1) {
+			return getSimpleExpression(container, exprStr.substring(startIndex));
+		}
+
+		if (index != 0) {
+			throw new ConfigurationException("Illegal ifProperty value: If present, grouping operator " + GROUPING_START_OPERATOR
+					+ " must be at start of property string");
+		}
+
+		++startIndex; //Skip over grouping operator
+
+		int endIndex = exprStr.indexOf(GROUPING_END_OPERATOR, startIndex);
+
+		if (endIndex == -1) {
+			throw new ConfigurationException("Missing closing grouping bracket " + GROUPING_END_OPERATOR + " in expression " + exprStr);
+		}
+
+		//Check that this isn't an attempt tu use nested logical tests - not supported
+		int tstIndex = exprStr.indexOf(GROUPING_START_OPERATOR, startIndex);
+		if ((tstIndex != -1) && (tstIndex < endIndex)) {
+			throw new ConfigurationException("Nesting of logical operations is not supported: " + exprStr);
+		}
+
+		try {
+			Expression expr1 = parseLogicalExpressions(container, exprStr.substring(startIndex, endIndex));
+
+			LogicalTest test = null;
+
+			startIndex = endIndex + 1;
+
+			//Look for logical operator token
+			String logicalToken = getLogicalToken(exprStr, startIndex);
+
+			for (int i = 0; i < logicalTokens.length; i++) {
+
+				if (logicalTokens[i].compareTo(logicalToken) == 0) {
+					test = (LogicalTest) tokenMap.get(logicalTokens[i]);
+					index = exprStr.indexOf(logicalTokens[i], startIndex);
+					startIndex = index + logicalTokens[i].length();
+					break;
+				}
+			}
+
+			if (test == null) {
+				return new CompoundExpression(expr1, SINGLE_EXPRESSION_TEST, null);
+			} else {
+				startIndex = skipWhiteSpace(exprStr, startIndex);
+				String expr2Str = exprStr.substring(startIndex, exprStr.length());
+				return new CompoundExpression(expr1, test, parseLogicalExpressions(container, expr2Str));
+
+			}
+		} catch (Exception e) {
+			throw new ConfigurationException("Invalid ifProperty expression");
+		}
+	}
+
+	private static Expression getSimpleExpression(ResultContainer resultContainer, String exprStr) throws ConfigurationException {
+		try {
+			int index = -1;
+			int i;
+
+			for (i = 0; i < valueTokens.length; i++) {
+				index = exprStr.indexOf(valueTokens[i]);
+
+				if (index != -1) {
+					break;
+				}
+			}
+
+			return new SimpleExpression(resultContainer, exprStr.substring(0, index), (ValuesTest) tokenMap.get(valueTokens[i]), exprStr
+					.substring(index + valueTokens[i].length()));
+		} catch (Exception e) { // can be StringIndexOutOfBoundsException - PH
+			throw new ConfigurationException("Invalid ifProperty expression");
+		}
+	}
+
+	private static int skipWhiteSpace(final String str, final int startIndex) {
+		final int strLen = str.length();
+		int index = startIndex;
+
+		while (index < strLen) {
+			if ((str.charAt(index) != ' ') && (str.charAt(index) != '\t')) {
+				break;
+			}
+
+			++index;
+		}
+
+		return index;
+	}
+
+	private static String getLogicalToken(final String str, final int startIndex) {
+		final int strLen = str.length();
+		int tokenStart = skipWhiteSpace(str, startIndex);
+		int endIndex = tokenStart;
+
+		while (endIndex < strLen) {
+			int chr = str.charAt(endIndex);
+			if ((chr == ' ') || (chr == '\t') || (chr == GROUPING_START_OPERATOR)) {
+				break;
+			}
+
+			++endIndex;
+		}
+
+		return str.substring(tokenStart, endIndex);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/GreaterThanOrEqualsTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/GreaterThanOrEqualsTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/GreaterThanOrEqualsTest.java	(revision 18906)
@@ -0,0 +1,33 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: GreaterThanOrEqualsTest.java,v 1.1 2006/09/08 19:16:27
+ *          anothermwilson Exp $
+ * @since 0.7.4 patch 2
+ */
+public class GreaterThanOrEqualsTest extends ValuesTest {
+	
+	private static final String[] TEST_TOKENS = { "+=" };
+
+	public String[] getTestTokens() {
+		return TEST_TOKENS;
+	}
+
+	protected boolean getTestResult(final String value1, final String value2) {
+		return Double.parseDouble(value1) >= Double.parseDouble(value2);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LessThanOrEqualsTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LessThanOrEqualsTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LessThanOrEqualsTest.java	(revision 18906)
@@ -0,0 +1,33 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: LessThanOrEqualsTest.java,v 1.1 2006/09/08 19:16:27
+ *          anothermwilson Exp $
+ * @since 0.7.4 patch 2
+ */
+public class LessThanOrEqualsTest extends ValuesTest {
+	
+	private static final String[] TEST_TOKENS = { "-=" };
+
+	public String[] getTestTokens() {
+		return TEST_TOKENS;
+	}
+
+	protected boolean getTestResult(final String value1, final String value2) {
+		return Double.parseDouble(value1) <= Double.parseDouble(value2);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LiteralValue.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LiteralValue.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LiteralValue.java	(revision 18906)
@@ -0,0 +1,38 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: LiteralValue.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+public class LiteralValue implements Value {
+	
+	public static final String NULL = "null";
+	private final String value;
+
+	public LiteralValue(final String value) {
+		if ((value != null) && (value.equals(NULL))) {
+			this.value = null;
+		} else {
+			this.value = value;
+		}
+	}
+
+	public String getValue() {
+		return value;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalAndTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalAndTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalAndTest.java	(revision 18906)
@@ -0,0 +1,41 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: LogicalAndTest.java,v 1.1 2006/09/08 19:16:28 anothermwilson
+ *          Exp $
+ * @since 0.7.4 patch 2
+ */
+public class LogicalAndTest implements LogicalTest {
+
+	private static final String[] TEST_TOKENS = { "&&", "AND" };
+
+	public String[] getTestTokens() {
+		return TEST_TOKENS;
+	}
+
+	public boolean getTestResult(Expression expression1, Expression expression2) {
+
+		boolean result = false;
+
+		if (expression1 != null && expression2 != null) {
+			result = expression1.evaluate() && expression2.evaluate();
+		}
+
+		return result;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalOrTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalOrTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalOrTest.java	(revision 18906)
@@ -0,0 +1,43 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: LogicalOrTest.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+public class LogicalOrTest implements LogicalTest {
+	
+	private static final String[] TEST_TOKENS = { "||", "OR" };
+
+	public String[] getTestTokens() {
+		return TEST_TOKENS;
+	}
+
+	public boolean getTestResult(Expression expression1, Expression expression2) {
+		boolean isTrue = false;
+
+		if (expression1 != null) {
+			isTrue = expression1.evaluate();
+		}
+		if (!isTrue && (expression2 != null)) {
+			isTrue = expression2.evaluate();
+		}
+
+		return isTrue;
+
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/LogicalTest.java	(revision 18906)
@@ -0,0 +1,27 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: LogicalTest.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+
+public interface LogicalTest extends TestOperator {
+	
+	public boolean getTestResult(Expression expression1, Expression expression2);
+	
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/NotEqualsTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/NotEqualsTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/NotEqualsTest.java	(revision 18906)
@@ -0,0 +1,38 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: NotEqualsTest.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+public class NotEqualsTest extends ValuesTest {
+	
+	private static final String[] TEST_TOKENS = { "!=" };
+
+	public String[] getTestTokens() {
+		return TEST_TOKENS;
+	}
+
+	protected boolean getTestResult(final String propValue, final String expectedValue) {
+		if (expectedValue == null) {
+			return propValue != null && !propValue.equals("");
+		}
+
+		return (propValue == null) || !propValue.equals(expectedValue);
+
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/SimpleExpression.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/SimpleExpression.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/SimpleExpression.java	(revision 18906)
@@ -0,0 +1,68 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+import org.tp23.antinstaller.input.ResultContainer;
+import org.tp23.antinstaller.runtime.ConfigurationException;
+
+/**
+ * @author mwilson
+ * @version $Id: SimpleExpression.java,v 1.1 2006/09/08 19:16:30 anothermwilson
+ *          Exp $
+ * @since 0.7.4 patch 2
+ */
+public class SimpleExpression implements Expression {
+
+	private final Value value1;
+	private final ValuesTest testCondition;
+	private final Value value2;
+	private final String literalValue1;
+	private final String literalValue2;
+
+	public SimpleExpression(
+				final ResultContainer resultContainer, 
+				final String value1, 
+				final ValuesTest test, 
+				final String value2)
+			throws ConfigurationException {
+		
+		this.literalValue1 = value1;
+		this.value1 = getValue(resultContainer, value1);
+		this.testCondition = test;
+		this.literalValue2 = value2;
+		this.value2 = getValue(resultContainer, value2);
+		
+	}
+
+	public boolean evaluate() {
+		return testCondition.getTestResult(value1, value2);
+	}
+
+	private Value getValue(ResultContainer container, String valueStr) throws ConfigurationException {
+		if ( (valueStr.length() > 0) && (valueStr.charAt(0) == '$') ) {
+			if ( valueStr.startsWith("${") && valueStr.endsWith("}") ) {
+				return new VariableValue(container, valueStr);
+			} else {
+				throw new ConfigurationException("Badly formed variable: '" + valueStr + "'");
+			}
+		} else {
+			return new LiteralValue(valueStr);
+		}
+	}
+
+	public String toString() {
+		return "[" + literalValue1 + "==" + literalValue2 + "]";
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/SingleExpressionTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/SingleExpressionTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/SingleExpressionTest.java	(revision 18906)
@@ -0,0 +1,34 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: SingleExpressionTest.java,v 1.1 2006/09/08 19:16:30
+ *          anothermwilson Exp $
+ * @since 0.7.4 patch 2
+ */
+public class SingleExpressionTest implements LogicalTest {
+	
+	private static final String[] EMPTY_TOKEN_LIST = new String[0];
+
+	public boolean getTestResult(Expression expression1, Expression expression2) {
+		return expression1.evaluate();
+	}
+
+	public String[] getTestTokens() {
+		return EMPTY_TOKEN_LIST;
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/StartsWithTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/StartsWithTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/StartsWithTest.java	(revision 18906)
@@ -0,0 +1,35 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: StartsWithTest.java,v 1.1 2006/09/08 19:16:30 anothermwilson
+ *          Exp $
+ * @since 0.7.4 patch 2
+ */
+public class StartsWithTest extends ValuesTest {
+	
+	private static final String[] TEST_TOKENS = { "^=" };
+
+	public String[] getTestTokens() {
+		return TEST_TOKENS;
+	}
+
+	protected boolean getTestResult(final String value1, final String value2) {
+		return (value1 != null) && value1.startsWith(value2);
+
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/StringLengthComparator.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/StringLengthComparator.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/StringLengthComparator.java	(revision 18906)
@@ -0,0 +1,46 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+import java.util.Comparator;
+
+import org.apache.tools.ant.taskdefs.Length;
+
+/**
+ * Compare strings based on their length. Used by ExpressionBuilder to ensure
+ * that longest match is attempted first.
+ * 
+ * @author mwilson
+ * @version $Id: StringLengthComparator.java,v 1.1 2006/09/08 19:16:31
+ *          anothermwilson Exp $
+ * @since 0.7.4 patch 2
+ */
+
+public class StringLengthComparator implements Comparator {
+
+	/**
+	 * Sort by descending String length
+	 * 
+	 * @param o1 first string
+	 * @param o2 second string
+	 * @return difference between the length of o2 and o1
+	 */
+	public int compare(Object o1, Object o2) {
+		String str1 = (String) o1;
+		String str2 = (String) o2;
+		return (str2.length() - str1.length());
+	}
+    
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/TestOperator.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/TestOperator.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/TestOperator.java	(revision 18906)
@@ -0,0 +1,27 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: TestOperator.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+
+public interface TestOperator {
+	
+	public String[] getTestTokens();
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/Value.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/Value.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/Value.java	(revision 18906)
@@ -0,0 +1,26 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: Value.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+
+public interface Value {
+
+	public String getValue();
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/ValuesTest.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/ValuesTest.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/ValuesTest.java	(revision 18906)
@@ -0,0 +1,30 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+/**
+ * @author mwilson
+ * @version $Id: ValuesTest.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+
+public abstract class ValuesTest implements TestOperator {
+
+	public boolean getTestResult(final Value value1, final Value value2) {
+		return getTestResult(value1.getValue(), value2.getValue());
+	}
+
+	abstract protected boolean getTestResult(final String value1Str, final String value2Str);
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/VariableValue.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/VariableValue.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/runtime/logic/VariableValue.java	(revision 18906)
@@ -0,0 +1,42 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.tp23.antinstaller.runtime.logic;
+
+import org.tp23.antinstaller.input.ResultContainer;
+
+/**
+ * @author mwilson
+ * @version $Id: VariableValue.java,v 1.2 2006/12/21 00:03:18 teknopaul Exp $
+ * @since 0.7.4 patch 2
+ */
+public class VariableValue implements Value {
+
+	private final ResultContainer valueHolder;
+	private final String propertyName;
+
+	public VariableValue(final ResultContainer container, final String propertyName) {
+		valueHolder = container;
+		this.propertyName = propertyName;
+	}
+
+	public String getValue() {
+		/*
+		 * Use somewhat misleadingly named method getDefaultValue() It doesn't
+		 * return the default value, it returns the current value of a property
+		 * referenced by the use of ${propertyname} syntax
+		 */
+		return valueHolder.getDefaultValue(propertyName);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/NonExtractor.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/NonExtractor.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/NonExtractor.java	(revision 18906)
@@ -0,0 +1,66 @@
+ /* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.selfextract;
+
+import java.io.File;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.runtime.ExecInstall;
+import org.tp23.antinstaller.runtime.exe.FilterChain;
+import org.tp23.antinstaller.runtime.exe.FilterFactory;
+
+/**
+ * This class is a replacement for the SelfExtractor that provides a similar
+ * function to the SelfExtractor but avoids the need to extract all the
+ * files prior to running the build.  When using this extractor the project
+ * is run from the Jar but It is the Ant builds responsibility to access
+ * resources from within the Jar the Jar itself can be referenced using 
+ * the Ant property "antinstaller.jar".  The build file is automatically read
+ * from the Jar.
+ * @author Paul Hinds
+ * @version $Id: NonExtractor.java,v 1.4 2006/12/15 21:16:39 teknopaul Exp $
+ */
+public class NonExtractor extends SelfExtractor{
+	
+	/** used by AntProjectFilter */
+	public static final String ANTINSTALLER_JAR_PROPERTY = "antinstaller.jar";
+	public static final String CONFIG_RESOURCE = "/org/tp23/antinstaller/runtime/exe/nonextractor.fconfig";
+	
+	/**
+	 * Run method to use from the command line. This is fired via an entry in the 
+	 * MANIFEST.MF in the Jar
+	 *@param  args  The command line arguments
+	 */
+	public static void main(String[] args) {
+		try {
+			SelfExtractor extractor = null;
+			extractor = new NonExtractor();
+			FilterChain chain = FilterFactory.factory(CONFIG_RESOURCE);
+			ExecInstall installExec = new ExecInstall(chain);
+			installExec.parseArgs(args, false);
+
+			// create temporary space for the build to be removed on exit
+			File temp = extractor.makeTempDir();
+			installExec.setTempRoot(temp);
+			installExec.setInstallRoot(temp);
+			installExec.exec();
+		}
+		catch (InstallException e) {
+			System.out.println("Can't load filter chain: " + CONFIG_RESOURCE);
+			e.printStackTrace();
+		}
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/ProgressIndicator.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/ProgressIndicator.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/ProgressIndicator.java	(revision 18906)
@@ -0,0 +1,162 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.selfextract;
+
+import java.awt.BorderLayout;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.GraphicsConfiguration;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.ResourceBundle;
+
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.UIManager;
+import javax.swing.border.BevelBorder;
+import javax.swing.border.Border;
+
+
+
+/**
+ *
+ * <p>Frame to indicate progress of the extraction of a SelfExctracting archive </p>
+ * <p> </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: tp23</p>
+ * @author Paul Hinds
+ * @version $Id: ProgressIndicator.java,v 1.3 2007/01/28 08:44:40 teknopaul Exp $
+ */
+public class ProgressIndicator
+	extends JFrame {
+
+	public static final String IMAGE_RESOURCE = "/resources/extract-image.png";
+
+	private JPanel jPanel1 = new JPanel();
+	private JProgressBar jProgressBar1 = new JProgressBar();
+	private JLabel textLabel = new JLabel();
+	private Border border1;
+	private int max = 0;
+	private static int PAGE_WIDTH = 160;
+	private static int PAGE_HEIGHT = 110; // 35 is text + bar
+	private String title = org.tp23.antinstaller.Installer.langPack.getString("extracting");
+	private JLabel imagePanel = new JLabel();
+	GridBagLayout gridBagLayout1 = new GridBagLayout();
+	private boolean useIcon = true;
+
+
+
+	public ProgressIndicator(int max) {
+		this.max = max;
+		jbInit();
+	}
+
+	public ProgressIndicator(int max, String title) {
+		this.max = max;
+		this.title = title;
+		jbInit();
+	}
+
+	private void setLocation() {
+		GraphicsConfiguration config = getGraphicsConfiguration();
+		int x = (int) config.getBounds().getCenterX() - (PAGE_WIDTH / 2);
+		int y = (int) config.getBounds().getCenterY() - (PAGE_HEIGHT / 2);
+		setLocation(x, y);
+	}
+
+
+	private void jbInit() {
+		border1 = BorderFactory.createCompoundBorder(
+			BorderFactory.createBevelBorder(BevelBorder.RAISED),
+			BorderFactory.createEmptyBorder(4, 4, 4, 4));
+		jPanel1.setLayout(gridBagLayout1);
+		int row = 0;
+		this.getContentPane().add(jPanel1, BorderLayout.CENTER);
+		if (useIcon) {
+			PAGE_HEIGHT = 110;
+			setImage();
+			jPanel1.add(imagePanel, new GridBagConstraints(0, row++, 1, 1, 0.1, 0.9
+				, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
+			this.setSize(new Dimension(PAGE_WIDTH, PAGE_HEIGHT));
+		}
+		else {
+			PAGE_HEIGHT = 40;
+			this.setSize(new Dimension(PAGE_WIDTH, 35));
+		}
+		jPanel1.setBorder(border1);
+		jPanel1.setMaximumSize(new Dimension(PAGE_WIDTH, PAGE_HEIGHT));
+		jPanel1.setMinimumSize(new Dimension(PAGE_WIDTH, PAGE_HEIGHT));
+		jPanel1.setPreferredSize(new Dimension(PAGE_WIDTH, PAGE_HEIGHT));
+		textLabel.setText(title);
+		this.setTitle(title);
+		jPanel1.add(textLabel, new GridBagConstraints(0, row++, 1, 1, 0.1, 0.1
+			, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
+		jPanel1.add(jProgressBar1, new GridBagConstraints(0, row++, 1, 1, 0.1, 0.1
+			, GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
+		jProgressBar1.setMinimum(0);
+		jProgressBar1.setMaximum(max);
+		this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+		this.setSize(new Dimension(PAGE_WIDTH, PAGE_HEIGHT));
+		this.setResizable(false);
+		this.setUndecorated(true);
+		setLocation();
+	}
+
+	public void tick() {
+		jProgressBar1.setValue(jProgressBar1.getValue() + 1);
+	}
+
+	private void setImage() {
+		try {
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			InputStream in = this.getClass().getResourceAsStream(IMAGE_RESOURCE);
+			byte[] buffer = new byte[2048];
+			int read = -1;
+			while ( (read = in.read(buffer)) != -1) {
+				baos.write(buffer, 0, read);
+			}
+			ImageIcon icon = new ImageIcon(baos.toByteArray());
+			imagePanel.setHorizontalAlignment(JLabel.CENTER);
+			imagePanel.setIcon(icon);
+		}
+		catch (Exception ex) {
+		}
+	}
+
+    /**
+     * TODO move to JUnit
+     * @param args
+     */
+	public static void main(String[] args) {
+		try {
+			ProgressIndicator indicator = null;
+			indicator = new ProgressIndicator(200);
+			indicator.show();
+			UIManager.setLookAndFeel("org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel");
+		}
+		catch (Exception ex) {
+			// not concerned about Look and Feel
+		}
+
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/ResourceExtractor.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/ResourceExtractor.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/ResourceExtractor.java	(revision 18906)
@@ -0,0 +1,74 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.selfextract;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+/**
+ * Copies resources from the Classpath to the filesystem replacing regex with replacement
+ * and correcting line endings
+ * @author teknopaul
+ *
+ */
+public class ResourceExtractor {
+	
+	/**
+	 * @param resource Must start with / e.g. /org/tp23/myFile.txt
+	 * @param dest
+	 * @throws IOException 
+	 */
+	public void copyResource(String resource, File dest, String regex, String replace) throws IOException{
+		InputStream is = this.getClass().getResourceAsStream(resource);
+		if(is == null){
+			throw new IOException("Can not find resource: " + resource);
+		}
+		InputStreamReader isr = new InputStreamReader(is);
+		BufferedReader br = new BufferedReader(isr);
+		FileOutputStream bos = new FileOutputStream(dest);
+		String line = null;
+		while((line = br.readLine()) != null){
+			bos.write(line.replaceAll(regex, replace).getBytes());
+			bos.write(System.getProperty("line.separator").getBytes());
+		}
+        bos.flush();
+        bos.close();
+        br.close();
+	}
+	/**
+	 * @param resource Must start with / e.g. /org/tp23/myFile.txt
+	 * @param dest
+	 * @throws IOException 
+	 */
+	public void copyResourceBinary(String resource, File dest) throws IOException{
+		InputStream is = this.getClass().getResourceAsStream(resource);
+		if(is == null){
+			throw new IOException("Can not find resource: " + resource);
+		}
+		FileOutputStream bos = new FileOutputStream(dest);
+		byte[] buffer = new byte[1024];
+		for(int read = 0; (read = is.read(buffer)) > 0; ){
+			bos.write(buffer, 0, read);
+		}
+        bos.flush();
+        bos.close();
+        is.close();
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/SelfExtractor.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/SelfExtractor.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/SelfExtractor.java	(revision 18906)
@@ -0,0 +1,468 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.selfextract;
+
+import java.awt.HeadlessException;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.JarInputStream;
+
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.renderer.swing.plaf.LookAndFeelFactory;
+import org.tp23.antinstaller.runtime.ExecInstall;
+import org.tp23.antinstaller.runtime.exe.FilterChain;
+import org.tp23.antinstaller.runtime.exe.FilterFactory;
+
+/**
+ *
+ * <p>Finds a file reference to the Jar that loads this class and then extracts that Jar
+ * to a temporary directory </p>
+ * <p> </p>
+ * @author Paul Hinds
+ * @version $Id: SelfExtractor.java,v 1.10 2007/01/28 08:44:40 teknopaul Exp $
+ */
+public class SelfExtractor {
+
+	public static final String CONFIG_RESOURCE = "/org/tp23/antinstaller/runtime/exe/selfextractor.fconfig";
+	
+	private File extractDir;
+	private File archiveFile;
+	private boolean overwrite = true;
+
+	private static int DEFAULT_BUFFER_SIZE = 1024;
+	private int BUFFER_SIZE = DEFAULT_BUFFER_SIZE;
+	private static boolean graphicsEnv = false;
+	private static String lookAndFeel = null;
+
+	/**
+     * returns the Jar that the reference object was loaded from.  If it was not
+     * loaded from a jar this methods behaviour is undefined
+     * @TODO define what happens
+     * @param reference
+     * @return A java.io.File reference to the Jar
+	 */
+	public static File getEnclosingJar(Object reference) {
+		String thisClass = "/" + reference.getClass().getName().replace('.','/') + ".class";
+		URL jarUrl = reference.getClass().getResource(thisClass);
+		String stringForm = jarUrl.toString();
+		//String fileForm = jarUrl.getFile();
+
+		File file = null;
+		int endIdx = stringForm.indexOf("!/");
+		if(endIdx != -1){
+			String unescaped = null;
+			String fileNamePart = stringForm.substring("jar:file:".length(), endIdx);
+			file = new File(fileNamePart);
+			if ( ! file.exists()) {
+				// try to unescape encase the URL Handler has escaped the " " to %20
+				unescaped = unescape(fileNamePart);
+				file = new File(unescaped);
+			}
+			return file;
+		}
+		throw new RuntimeException("Failed expanding Jar.");
+	}
+
+    /**
+	 * Constructor for the SelfExtractor object.  Directly after constructing
+	 * an instance the init() method should be called unless subclassing
+	 */
+	public SelfExtractor() {
+	}
+
+    /**
+	 * This has been moved from the default constructor to facilitate subclassing
+	 * @return true if the lookAndFeel worked
+	 */
+	public void init(){
+		System.out.println("Loading self extractor...");
+		archiveFile = getEnclosingJar(this);
+		makeTempDir();
+		try {
+			JarFile thisJar = new JarFile(archiveFile);
+			lookAndFeel = thisJar.getManifest().getMainAttributes().getValue("Look-And-Feel");
+			lookAndFeel = LookAndFeelFactory.getLafFromToken(lookAndFeel);
+			if(lookAndFeel != null) {
+                UIManager.setLookAndFeel(lookAndFeel);
+            }
+		}
+		catch (Throwable ex) {
+			// not concerned about Look and Feel
+		}
+	}
+	
+    /**
+     * Creates a new empty temporary directory for the file extraction
+     * @return
+     */
+	protected File makeTempDir(){
+		// String tempDir = System.getProperty("java.io.tmpdir");
+		File curDir = new File("t.tmp").getParentFile();
+		extractDir = new File(curDir, "antinstall");
+		for ( int i=0; extractDir.exists(); i++) {
+			extractDir = new File(curDir, "antinstall" + i);
+		}
+		extractDir.mkdirs();
+		extractDir.deleteOnExit();
+		return extractDir;
+	}
+
+    /**
+	 *  Constructor for the SelfExtractor object that sets the buffersize in use.
+	 *  The write buffer is the same size as the write buffer size because the read buffer reads
+	 *  decompressed bytes
+	 *  @param newBufferSize the size of the read buffer
+	 */
+	public SelfExtractor(int newBufferSize) {
+		BUFFER_SIZE = newBufferSize;
+		archiveFile = getEnclosingJar(this);
+	}
+
+    /**
+	 *  Sets the Directory into which the file will be extracted
+	 *
+	 *@param  newExtractDir  The new extract directory
+	 */
+	public void setExtractDir(File newExtractDir) {
+		extractDir = newExtractDir;
+	}
+
+    /**
+	 *  changes the archive to be extracted
+	 *@param  newArchiveFile  The new archiveFile value
+	 */
+	public void setArchiveFile(File newArchiveFile) {
+		archiveFile = newArchiveFile;
+	}
+
+    /**
+	 *  Gets the Directory into which the files will be extracted that
+	 *  is currently set in the ZipExtractor object
+	 *@return    The extract directory value
+	 */
+	public File getExtractDir() {
+		return extractDir;
+	}
+
+    /**
+	 *  Gets the set in the ZipExtractor
+	 *@return    The archiveFile value
+	 */
+	public boolean isOverwrite() {
+		return overwrite;
+	}
+
+    /**
+	 *  Gets the Directory into which the files will be extracted that
+	 *  is currently set in the ZipExtractor object
+	 *@return    The extract directory value
+	 */
+	public void setOverwrite(boolean overwrite) {
+		this.overwrite = overwrite;
+	}
+
+    /**
+	 *  Gets the set in the ZipExtractor
+	 *@return    The archiveFile value
+	 */
+	public File getArchiveFile() {
+		return archiveFile;
+	}
+
+    /**
+	 *  Opens up the zip and gets a list of the files in it.  If the zip file
+	 *  or the temp file have not been set NullPointerExceptions will get thrown
+	 *@param  vebose  if true Prints out a list of the zips
+	 *      contents on to the command line
+	 *@return  an ArrayList of String objects that will
+	 *         be as per the path in the zip
+	 *@exception  FileNotFoundException  Description of Exception
+	 *@exception  IOException            Description of Exception
+	 */
+	public ArrayList getList(boolean vebose) throws FileNotFoundException, IOException {
+		JarInputStream zis = new JarInputStream(new FileInputStream(archiveFile));
+		JarEntry entry = null;
+		ArrayList result = new ArrayList();
+		while ( (entry = zis.getNextJarEntry()) != null) {
+			if (vebose) {
+				System.out.println(entry.getName());
+			}
+			result.add(entry.getName());
+		}
+		return result;
+	}
+
+    /**
+     * @return the number of files in the jar
+     * @throws FileNotFoundException
+     * @throws IOException
+     */
+	public int getFileCount() throws FileNotFoundException, IOException {
+		JarInputStream zis = new JarInputStream(new FileInputStream(archiveFile));
+		int count = 0;
+		while (  zis.getNextJarEntry() != null) {
+			count++;
+		}
+		return count;
+	}
+
+    /**
+	 *  Opens up the zip and extracts the files to the temp dir.
+	 *
+	 *@param  vebose  if true Prints out a list of the zips contents on to System.out
+	 *@return an ArrayList of java.io.File objects that
+	 *      will be as per the path in the zip with the root being the temp dir
+	 *@exception  FileNotFoundException
+	 *@exception  IOException
+	 */
+	public ArrayList extract(boolean vebose, boolean isX) throws FileNotFoundException, IOException {
+		int fileCount = getFileCount();
+		ProgressIndicator indicator = null;
+        if(isX){
+            try {
+                    indicator = new ProgressIndicator(fileCount);
+                    indicator.show();
+            }
+            catch ( Exception exc ) {
+                /*
+                 * Chances are, there are problems with the graphics environment
+                 * so trying falling back to text mode
+                 */
+                graphicsEnv = false;
+                isX = false;
+            }
+
+        }
+		JarInputStream zis = new JarInputStream(new FileInputStream(archiveFile));
+		JarEntry entry = null;
+		ArrayList result = new ArrayList();
+		while ( (entry = zis.getNextJarEntry()) != null) {
+			if (vebose) {
+				System.out.println("Extracting:" + entry.getName());
+			}
+			result.add(extract(zis, entry));
+			if (isX) {
+				indicator.tick();
+			}
+		}
+		if (isX) {
+			indicator.hide();
+		}
+		zis.close();
+		return result;
+	}
+
+
+
+    /**
+	 *  Extract a single file from the stream. N.B. the stream must be in the correct
+	 *  position for this to work
+	 *@param  zis                        ZipInputStream open and ready
+	 *@param  entry                      A valid entry read from the stream
+	 *@return                            The inflated file generated in the temp dir
+	 *@exception  FileNotFoundException
+	 *@exception  IOException
+	 */
+	private File extract(JarInputStream zis, JarEntry entry) throws FileNotFoundException, IOException {
+		createPath(entry.getName());
+		File fileToUse = new File(extractDir, entry.getName());
+		if (fileToUse.exists()) {
+			if (!overwrite) {
+                return fileToUse;
+            }
+		}
+		else {
+			fileToUse.createNewFile();
+		}
+		if (fileToUse.isDirectory()) {
+            return fileToUse;
+        }
+
+		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(fileToUse), BUFFER_SIZE);
+		byte[] bytes = new byte[BUFFER_SIZE];
+		int len = 0;
+		while ( (len = zis.read(bytes)) >= 0) {
+			bos.write(bytes, 0, len);
+		}
+		bos.close();
+		zis.closeEntry();
+		return fileToUse;
+	}
+
+    /**
+	 *  This adds all the necessary directories in the root of the zip path to the
+	 *  temp dir.
+	 *@param  entryName        The string name in the Zip file (virtual path)
+	 *@exception  IOException  if the directories can not be made
+	 */
+	private void createPath(String entryName) throws IOException {
+		int slashIdx = entryName.lastIndexOf('/');
+		if (slashIdx >= 0) {
+			// there is path info
+			String firstPath = entryName.substring(0, slashIdx);
+			File dir = new File(extractDir, firstPath);
+			if (!dir.exists()) {
+				dir.mkdirs();
+			}
+		}
+	}
+
+    /**
+	 * Run method to use from the command line. This is fired via an entry in the 
+	 * MANIFEST.MF in the Jar
+	 *@param  args  The command line arguments
+	 */
+	public static void main(String[] args) {
+		testX();
+		// FIXME move after parseArgs() and set graphicsEnv if text selected
+		// will need to test SelfExtractor and comment parseArgs() to ensure
+		// no side effects in the future.
+		SelfExtractor extractor = null;
+		try {
+			boolean verbose = false;
+			extractor = new SelfExtractor();
+			extractor.init();
+			extractor.extract(verbose, graphicsEnv);
+		}
+		catch (Exception e) {
+			e.printStackTrace();
+			String tempDir = "unknown";
+			if(extractor != null){
+				tempDir = extractor.getExtractDir().getAbsolutePath();
+			}
+			String warning = "Could not extract Jar file to directory:" + tempDir;
+			printXorTextWarning(warning);
+		}
+		
+		try {
+			FilterChain chain = FilterFactory.factory(CONFIG_RESOURCE);		
+			ExecInstall installExec = new ExecInstall(chain);
+			installExec.parseArgs(args, false);
+			installExec.setInstallRoot(extractor.getExtractDir());
+			// removes files on exit
+			installExec.setTempRoot(extractor.getExtractDir());
+
+            installExec.exec();
+		}
+		catch (InstallException e1) {
+			System.out.println("Cant load filter chain:/org/tp23/antinstaller/runtime/exe/selfextractor.fconfig");
+			e1.printStackTrace();
+		}
+	}
+
+	/**
+	 * This tests for the existence of a  graphics environment and sets an
+	 * internal flag so the test does not have to be repeated, it may be expensive.
+	 * Prior to running this method the isGraphicsEnv() method will be invalid.
+	 */
+	protected static void testX(){
+		try {
+			java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
+            try {
+                boolean headless = java.awt.GraphicsEnvironment.isHeadless();
+                if(headless) {
+                    graphicsEnv = false;
+                    return;
+                }
+            } catch (Throwable e) {
+                // JDK 1.3 does not have the isHeadless() method but may still work in other situations
+            }
+			graphicsEnv = true;
+		}
+		catch (Throwable e) {
+            // thus graphicsEnv stays false;
+		}
+	}
+    
+	/**
+	 * @see #testX()
+	 * @return true if an X or windows environment is available
+	 */
+	protected boolean isGraphicsEnv(){
+		return graphicsEnv;
+	}
+
+	protected static void printXorTextWarning(String warning){
+		if(graphicsEnv){
+            try {
+                JOptionPane.showMessageDialog(null, warning);
+            }
+            catch( HeadlessException headlessExc ) {
+                graphicsEnv = false;
+                System.out.println(warning);
+            }
+        }
+		else {
+			System.out.println(warning);
+		}
+	}
+
+	public static int deleteRecursive(File directory) {
+		int count = 0;
+		File[] files = directory.listFiles(new FileFilter() {
+			public boolean accept(File file) {
+				return!file.isDirectory();
+			}
+		});
+		for (int i = 0; i < files.length; i++) {
+			files[i].delete();
+			count++;
+		}
+		File[] dirs = directory.listFiles(new FileFilter() {
+			public boolean accept(File file) {
+				return file.isDirectory();
+			}
+		});
+		for (int i = 0; i < dirs.length; i++) {
+			count += deleteRecursive(dirs[i]);
+		}
+		directory.delete();
+		return count;
+	}
+
+    /**
+	 * UN-URL encode string
+     * TODO should this not support UNICODE escapes
+	 */
+	private static String unescape(final String s) {
+
+		URLDecoder ud = new URLDecoder();
+
+		String decoded = null;
+
+		try {
+			decoded = ud.decode( s, "UTF-8" );
+		} catch ( java.io.UnsupportedEncodingException uee ) {
+			System.err.println( "unsupported encoding" );
+			return s;
+		}
+		return decoded;
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/package.html
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/package.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/antinstaller/selfextract/package.html	(revision 18906)
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--
+  Copyleft (c) 2004 tp23
+  All Rights Reserved.
+--></head>
+
+<body bgcolor="white">Classes to extract the jar from which this package is loaded.
+
+The self extracting method is to obtain a temporary directory from java.io.File
+and extract the files there.  The baseDir for Ant is then set to this directory and it is
+treated as if it were the current directory (although it is not and ./ references
+will not work.</body>
+</html>
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/GBCF.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/GBCF.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/GBCF.java	(revision 18906)
@@ -0,0 +1,117 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.gui;
+
+import java.awt.GridBagConstraints;
+import java.awt.Insets;
+/**
+ * GBCF  Grib Bag Constraints Factory.  This class exists mostly
+ * for tidying up code that used the exsivly verbose GridBagConstraints
+ * object, hence the shortened class name.
+ * By default a two column equal with table is assumed, to support other
+ * column layouts use the constructor that take an array of column wieghts
+ * Factory class for generating constraints for a equal width column table.
+ * the table is similar to the following table rendered in HTML
+ * <table border="2">
+ *   <tr>
+ *     <td>data</td><td>data</td>
+ *   </tr>
+ *   <tr>
+ *     <td colspan="2">data</td>
+ *   </tr>
+ *   <tr>
+ *     <td>data</td><td>data</td>
+ *   </tr>
+ *   <tr>
+ *     <td>data</td><td>data</td>
+ *   </tr>
+ * <table>
+ * @author not attributable
+ * @version 1.0
+ */
+public class GBCF {
+
+	protected Insets insets = new Insets(1,4,1,4);
+	protected Insets noinsets = new Insets(0,0,0,0);
+	protected double[] columnWeights= new double[]{0.5,0.5};
+
+	public GBCF(){
+
+    }
+	/**
+	 * to support more than two columns or vary the column wieghtings
+	 * @param columnWeights double[]
+	 */
+	public GBCF(double[] columnWeights){
+		this.columnWeights=columnWeights;
+	}
+	/**
+	 *
+	 * @param row int the 0 indexed row
+	 * @param col int the 0 indexed column
+	 * @param span boolean does cell span both columns
+	 * @return GridBagConstraints
+	 */
+	public GridBagConstraints getCell(int row,int col){
+		return new GridBagConstraints(col,              //gridx
+									  row,              //gridy
+									  1,                //gridwidth
+									  1,                //gridheight
+									  columnWeights[col],//weightx
+									  0.0,              //weithty
+									  GridBagConstraints.WEST, // anchor
+									  GridBagConstraints.NONE, //fill
+									  insets,  // insets
+									  1, //ipadx
+									  1  //ipady
+									  );
+   }
+   /**
+	*
+	* @param row int the 0 indexed row
+	* @param first boolean is this the first column or the second
+	* @param span boolean does cell span both columns
+	* @return GridBagConstraints
+	*/
+   public GridBagConstraints getSpan(int row){
+	   return new GridBagConstraints(0,               //gridx
+									 row,             //gridy
+									 2,               //gridwidth
+									 1,               //gridheight
+									 columnWeights[0],//weightx
+									 0.0,             //weithty
+									 GridBagConstraints.WEST, // anchor
+									 GridBagConstraints.NONE, //fill
+									 insets,  // insets
+									 1, //ipadx
+									 1  //ipady
+									 );
+  }
+  public GridBagConstraints getVertGlue(int row){
+	  return new GridBagConstraints(0,               //gridx
+									row,             //gridy
+									2,               //gridwidth
+									1,               //gridheight
+									columnWeights[0],//weightx
+									1.0,             //weithty
+									GridBagConstraints.NORTHWEST, // anchor
+									GridBagConstraints.NONE, //fill
+									noinsets,  // insets
+									0, //ipadx
+									0  //ipady
+									);
+  }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/DefaultingDirectoryChooser.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/DefaultingDirectoryChooser.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/DefaultingDirectoryChooser.java	(revision 18906)
@@ -0,0 +1,180 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.gui.widget;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+import javax.swing.filechooser.FileSystemView;
+/**
+ * A file chooser that makes a beter default if the default directory is not available.
+* Basically the default looks for the suggested directory and if it does not find it moves back
+* up the directories.  If still nothing is found (for example it may get to My Computer
+* which you can not add file to) the home directory is selected, as in the default file chooser.
+*
+* To use this class call new DefaultingDirectoryChooser(boolean) and immediately call
+* setDefaultDirectory(File) to determine the default. If you don't it behaves like the default JFileChooser
+* Also if you call setCurrentDirectory(File) it will behave like JFileChooser
+*
+* This chooser has two modes CREATE_MODE and EXISTING_MODE.   <br/><br/>
+*
+* In existing mode it is assumed the chooser is being used to identify an existing directory
+* the default directory should exist if not the directory shown will be the next existing parent.<br/><br/>
+*
+* In create mode it is
+* assumed that the last directory in the default directory is to be created and may not
+* exist yet. Therefor the default directory displayed is the parent (with suitable defaulting)
+* and the text box will contain the name of the last directory.
+* e.g. if default is C:\Program Files\MyApp  C:\Program Files will be displayed and
+* MyApp will be shown in the text box (even if it does not exist yet)  If C:\Program Files does not exist
+* C:\ will be shown as with existing mode.
+* Choosing select can lead to the creation of the file.  It will not be automatically
+* created that is the responsibility of the client code.<br/>
+*
+* This class uses FileSystemView and will only display folders that return true to fsv.isFileSystem()
+*
+* This class also uses a bit of a hack by in CREATE_MODE it sets the selectables to files and directories
+* although only shows the directories this way a non-existing Directory can be chosen.  This is the only way I can
+* get it to work on my Java version but I would not be supprised if it did not work on
+* other versions of the Java API.  It also means that setFileSelectionMode() should
+* never be called by clients as it will break this hack.
+ * @author Paul Hinds
+ * @version 1.0
+ */
+public class DefaultingDirectoryChooser extends JFileChooser{
+
+    public static final boolean CREATE_MODE = true;
+    public static final boolean EXISTING_MODE = false;
+
+    /**
+     * Determines that the default includes a directory name that is requried
+     * e.g. C:\Program Files\MyApp where even if Program Files does not exist
+     * MyApp should be part of the default even if it does not exist.
+     */
+    private boolean createMode = false;
+    private File selectedFile = null;
+    private String desiredName = null;
+    
+    public DefaultingDirectoryChooser(boolean createMode) {
+        this.createMode=createMode;
+        if(createMode){
+            setFileSelectionMode(FILES_AND_DIRECTORIES);
+            removeChoosableFileFilter(getAcceptAllFileFilter());
+            addChoosableFileFilter(new FileFilter(){
+                public boolean accept(File f) {
+                    if(f.exists() && f.isDirectory())return true;
+                    if(!f.exists() && getFileSystemView().getParentDirectory(f).isDirectory())return true;
+                    return false;
+                }
+                public String getDescription() {
+                    return "Folders";
+                }
+            });
+            
+            addPropertyChangeListener(JFileChooser.DIRECTORY_CHANGED_PROPERTY, new PropertyChangeListener(){
+				public void propertyChange(PropertyChangeEvent evt) {
+					File directory = (File)evt.getNewValue();
+					DefaultingDirectoryChooser.this.setCurrentDirectory(new File(directory, "newfolder"));
+					setSelectedFile(new File(directory, desiredName));
+				}            	
+            });
+        }
+        else {
+            setFileSelectionMode(DIRECTORIES_ONLY);
+        }
+    }
+
+
+    /**
+     * Sets the default directory.
+     * @param dir the current directory to point to
+     * @todo Implement this javax.swing.JFileChooser method
+     */
+    public void setDefaultDirectory(File dir) {
+        if(dir==null)return;// called by the default consructor
+        if(createMode){
+        	if(desiredName == null)desiredName = dir.getName();
+            File selected = determineCreateDir(dir);
+            super.setCurrentDirectory(selected.getParentFile());
+            setSelectedFile(selected);
+        }else{
+            super.setCurrentDirectory(determineExistingDir(dir));
+        }
+    }
+
+
+
+    private File determineExistingDir(File defaultDir){
+        if(defaultDir.exists())return defaultDir;
+        FileSystemView fsv = this.getFileSystemView();
+        File validParent = getFSVParent(fsv,defaultDir);
+        if(validParent!=null) {
+            return validParent;
+        }
+        else {
+            return fsv.getHomeDirectory();
+        }
+    }
+    /**
+     * Select a base path for the default even if it does not exist.  The order of preference is as follows
+     * if the directory exists use it
+     * if the parent does not exist try finding the next parent
+     * if the next parent is a root directory e.g. / or C:\ use the users home directory
+     * @param defaultDir File
+     * @return File
+     */
+    private File determineCreateDir(File defaultDir){
+        if(defaultDir.exists())return defaultDir;
+        FileSystemView fsv = this.getFileSystemView();
+        String dirName = defaultDir.getName();
+        File validParent = getFSVParent(fsv,defaultDir);
+        if(validParent!=null){
+            return new File(validParent, dirName);
+        }
+        else {
+            return new File(fsv.getHomeDirectory(), dirName);
+        }
+    }
+    /**
+     * Step back up trying to find a parent if none if found return null.
+     * null can be found if the path starts e:\ and e: does not exist
+     * @param fsv FileSystemView
+     * @param dir File
+     * @return File
+     */
+    private File getFSVParent(FileSystemView fsv,File dir){
+        File parent = dir.getParentFile();
+        if(fsv.isRoot(parent) && !parent.exists()){
+            return null;
+        }
+        if(!parent.exists() || !fsv.isFileSystem(parent)){
+            parent = getFSVParent(fsv,parent);
+        }
+        return parent;
+    }
+
+    public static void main(String[] args) {
+        DefaultingDirectoryChooser chooser = new DefaultingDirectoryChooser(CREATE_MODE);
+        chooser.setDefaultDirectory(new File("/usr/local/dibble/MyApp"));
+
+        chooser.showDialog(null,"Select");
+        System.out.println("Selected:"+chooser.getSelectedFile().getAbsolutePath());
+        System.exit(0);
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/FollowingJTextArea.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/FollowingJTextArea.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/FollowingJTextArea.java	(revision 18906)
@@ -0,0 +1,125 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.gui.widget;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+import javax.swing.JTextArea;
+
+public class FollowingJTextArea extends JTextArea{
+
+    private boolean follow = true;
+
+    public FollowingJTextArea() {
+        jInit();
+    }
+
+
+    private void jInit(){
+        final JPopupMenu popUp = getPopupMenu();
+        this.add(popUp);
+        this.addMouseListener(new MouseAdapter(){
+            public void mouseClicked(MouseEvent e) {
+                if (e.getButton() == e.BUTTON3) {
+                    popUp.show(FollowingJTextArea.this,e.getX(),e.getY());
+                }
+            }
+        });
+    }
+
+    public boolean isFollow() {
+        return follow;
+    }
+    public void setFollow(boolean follow) {
+        this.follow = follow;
+    }
+
+    private void scrollToEnd(){
+        setCaretPosition(getDocument().getLength());
+    }
+    private void toggleFollow(){
+        setFollow(!isFollow());
+    }
+
+    /**
+     * Appends the given text to the end of the document.
+     *
+     * @param str the text to insert
+     * @todo Implement this javax.swing.JTextArea method
+     */
+    public void append(String str) {
+        super.append(str);
+        if(follow)scrollToEnd();
+    }
+    private JPopupMenu getPopupMenu() {
+        JPopupMenu contextMenu = new JPopupMenu("Options");
+        JMenuItem saveMenu = new JMenuItem("Save Text");
+        saveMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                SelectFileAction action = new SelectFileAction("Save Output", null, null);
+                try {
+                    action.actionPerformed(new ActionEvent(this, 0, "Save Output"));
+                    if (action.selectedFile != null) {
+                        FileWriter fos = new FileWriter(action.selectedFile);
+                        fos.write(getText());
+                        fos.close();
+                    }
+
+                }
+                catch (FileNotFoundException ex) {
+                    System.err.println("FileNotFoundException");
+                }
+                catch (IOException ex) {
+                    System.err.println("IOException");
+                }
+            }
+        });
+        contextMenu.add(saveMenu);
+
+        JMenuItem toggleFollowMenu = new JMenuItem("Toggle Follow");
+        toggleFollowMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                toggleFollow();
+            }
+        });
+        contextMenu.add(toggleFollowMenu);
+
+        JMenuItem jumpToEndMenu = new JMenuItem("Jump To End");
+        jumpToEndMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setCaretPosition(getDocument().getLength());
+            }
+        });
+        contextMenu.add(toggleFollowMenu);
+
+        JMenuItem clearTextMenu = new JMenuItem("Clear Text");
+        clearTextMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setText("");
+            }
+        });
+        contextMenu.add(clearTextMenu);
+        return contextMenu;
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/JTextAreaPrintStream.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/JTextAreaPrintStream.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/JTextAreaPrintStream.java	(revision 18906)
@@ -0,0 +1,244 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.gui.widget;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import javax.swing.JTextArea;
+
+/**
+ * <p>This subclass of PrintStream is designed to be compatible with System.out and System.err but it provides
+* its own functionality and does not borrow from PrintStream. All methods are overridden.  The calls to each method
+* behave as expected with the exception of flush() which appears to insert a new line for each call. flush() sends
+* the current line to the JTextArea with a call to JTextArea.append(String) which adds a
+* line in the buffer.</p>
+ * @author Paul Hinds
+ * @version 1.0
+ */
+public class JTextAreaPrintStream extends PrintStream{
+
+    private JTextArea textArea;
+    private StringBuffer line;
+
+    public JTextAreaPrintStream(JTextArea textArea) {
+        super(new ByteArrayOutputStream(0));// wasted all methods are overridden
+        this.textArea = textArea;
+        line = new StringBuffer();
+    }
+
+    /**
+     * The stream can not be closed
+     */
+    public void close(){
+    }
+
+    public synchronized void flush(){
+        if(line.length()>0){
+			textArea.append(line.toString());
+            line = new StringBuffer();
+        }
+    }
+
+    public synchronized void write(byte[] b){
+        line.append(new String(b));
+    }
+
+    public synchronized void write(byte[] b, int off, int len){
+        line.append(new String(b,off,len));
+    }
+
+
+    public synchronized void write(int c){
+        line.append(c);
+    }
+
+    public synchronized boolean checkError() {
+        return false;
+    }
+
+    public synchronized void print(Object obj) {
+        line.append(obj);
+    }
+
+
+    public synchronized void print(String s) {
+        line.append(s);
+    }
+
+
+    public synchronized void print(boolean b) {
+        line.append(b);
+    }
+
+
+    public synchronized void print(char c) {
+        line.append(c);
+    }
+
+
+    public synchronized void print(char[] s) {
+        line.append(s);
+    }
+
+
+    public synchronized void print(double d) {
+        line.append(d);
+    }
+
+
+    public synchronized void print(float f) {
+        line.append(f);
+    }
+
+
+    public synchronized void print(int i) {
+        line.append(i);
+    }
+
+
+    public synchronized void print(long l) {
+        line.append(l);
+    }
+
+
+    public synchronized void println() {
+    	line.append('\n');
+        flush();
+    }
+
+
+    public synchronized void println(Object x) {
+        if(line.length()>0){
+            textArea.append(line.append(String.valueOf(x)).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(String.valueOf(x));
+            textArea.append("\n");
+        }
+    }
+
+
+    public synchronized void println(String x) {
+        if(line.length()>0){
+            textArea.append(line.append(x).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(x);
+            textArea.append("\n");
+        }
+    }
+
+    public synchronized void println(boolean x) {
+        if(line.length()>0){
+            textArea.append(line.append(String.valueOf(x)).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(String.valueOf(x));
+            textArea.append("\n");
+        }
+    }
+
+
+    public synchronized void println(char x) {
+        if(line.length()>0){
+            textArea.append(line.append(String.valueOf(x)).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(String.valueOf(x));
+            textArea.append("\n");
+        }
+    }
+
+
+    public synchronized void println(char[] x) {
+        if(line.length()>0){
+            textArea.append(line.append(String.valueOf(x)).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(String.valueOf(x));
+            textArea.append("\n");
+        }
+    }
+
+
+    public synchronized void println(double x) {
+        if(line.length()>0){
+            textArea.append(line.append(String.valueOf(x)).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(String.valueOf(x));
+            textArea.append("\n");
+        }
+    }
+
+
+    public synchronized void println(float x) {
+        if(line.length()>0){
+            textArea.append(line.append(String.valueOf(x)).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(String.valueOf(x));
+            textArea.append("\n");
+        }
+    }
+
+
+    public synchronized void println(int x) {
+        if(line.length()>0){
+            textArea.append(line.append(String.valueOf(x)).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(String.valueOf(x));
+            textArea.append("\n");
+        }
+    }
+
+
+    public synchronized void println(long x) {
+        if(line.length()>0){
+            textArea.append(line.append(String.valueOf(x)).toString());
+            textArea.append("\n");
+            line = new StringBuffer();
+        }
+        else {
+            textArea.append(String.valueOf(x));
+            textArea.append("\n");
+        }
+    }
+
+
+    protected void setError() {
+    }
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/SelectFileAction.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/SelectFileAction.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/SelectFileAction.java	(revision 18906)
@@ -0,0 +1,60 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.gui.widget;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+
+import javax.swing.AbstractAction;
+import javax.swing.ImageIcon;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+
+public class SelectFileAction extends AbstractAction {
+    protected JComponent component = null;
+    protected File selectedFile = null;
+    protected String buttonText = null;
+
+    public SelectFileAction(String text, ImageIcon icon, JComponent component) {
+        super(text, icon);
+        this.component = component;
+    }
+    public SelectFileAction(String text, ImageIcon icon, JComponent component,String buttonText) {
+        super(text, icon);
+        this.component = component;
+    }
+    public void actionPerformed(ActionEvent e) {
+        JFileChooser chooser = new JFileChooser();
+        if(buttonText!=null)chooser.setApproveButtonText(buttonText);
+        if(selectedFile!=null && selectedFile.isFile()){
+        	if(selectedFile.exists())chooser.setSelectedFile(selectedFile);
+        	else chooser.setCurrentDirectory(selectedFile.getParentFile());
+        }
+        else if(selectedFile!=null && selectedFile.isDirectory()){
+        	chooser.setCurrentDirectory(selectedFile);
+        }
+        else if(selectedFile!=null && !selectedFile.exists()){
+        	chooser.setCurrentDirectory(selectedFile.getParentFile());
+        }
+        
+        int returnVal = chooser.showDialog(component,e.getActionCommand());
+        if(returnVal == JFileChooser.APPROVE_OPTION) {
+            selectedFile = chooser.getSelectedFile();
+        } else {
+        	selectedFile = null;
+        }
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/SystemOutJTextArea.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/SystemOutJTextArea.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/org/tp23/gui/widget/SystemOutJTextArea.java	(revision 18906)
@@ -0,0 +1,75 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.gui.widget;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.PrintStream;
+
+import javax.swing.JButton;
+import javax.swing.JScrollPane;
+
+/**
+ *
+ * <p>Title: A JTextArea that can be set to show System.out or System.err</p>
+ * <p>Description: </p>
+ * <p>Copyright: Copyright (c) 2004</p>
+ * <p>Company: </p>
+ * @author Paul Hinds
+ * @version 1.0
+ */
+
+public class SystemOutJTextArea extends JScrollPane{
+
+    private JTextAreaPrintStream stream;
+    private FollowingJTextArea textArea = new FollowingJTextArea();
+
+    public SystemOutJTextArea() {
+        jInit();
+    }
+
+    private void jInit(){
+        this.getViewport().setView(textArea);
+        textArea.setEditable(false);
+        JButton jumpButton = new JButton("");
+        setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS);
+        setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
+        setCorner(this.LOWER_RIGHT_CORNER,jumpButton);
+        jumpButton.addActionListener(new ActionListener(){
+            public void actionPerformed(ActionEvent e) {
+                textArea.setCaretPosition(textArea.getDocument().getLength());
+            }
+        });
+        jumpButton.setToolTipText("Click to jump to the end");
+
+
+    }
+
+    public synchronized PrintStream getOut(){
+        if(stream==null){
+            stream = new JTextAreaPrintStream(textArea);
+        }
+        return stream;
+    }
+    public void setAsSystemErr(){
+        System.setErr(getOut());
+    }
+    public void setAsSystemOut(){
+        System.setOut(getOut());
+    }
+
+
+}
Index: /branches/rk-oran/shared/ant-installer/src/resources/LICENSE-ant-install.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/resources/LICENSE-ant-install.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/resources/LICENSE-ant-install.txt	(revision 18906)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2005 Paul Hinds
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: /branches/rk-oran/shared/ant-installer/src/resources/icons/LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-installer/src/resources/icons/LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src/resources/icons/LICENSE	(revision 18906)
@@ -0,0 +1,13 @@
+This copyright and license notice covers the images in this directory.
+Note the license notice contains an add-on.
+
+KDE Crystal theme icons.
+Copyright (C) 2002 and following years KDE Artists
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation, version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details. You should have received a copy of the GNU Lesser General Public License along
+with this library; if not, write to the
Index: /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/runtime/exe/ReleaseNotesFilter.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/runtime/exe/ReleaseNotesFilter.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/runtime/exe/ReleaseNotesFilter.java	(revision 18906)
@@ -0,0 +1,102 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ResourceBundle;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.renderer.text.Pager;
+import org.tp23.antinstaller.runtime.Runner;
+import org.tp23.antinstaller.runtime.SwingRunner;
+import org.tp23.antinstaller.runtime.TextRunner;
+
+
+/**
+ * A filter that launches a window with release notes if a property has been selected
+ * during the install.  The notes are loaded from a resource on the classpath
+ * called /release-notes.txt
+ * @author Paul Hinds
+ * @version $Id: ReleaseNotesFilter.java,v 1.4 2007/01/04 22:57:18 teknopaul Exp $
+ */
+public class ReleaseNotesFilter implements ExecuteFilter {
+	
+	private static final ResourceBundle res = ResourceBundle.getBundle("org.tp23.antinstaller.renderer.text.Res");
+	private static final String nextChar = res.getString("nextChar");
+
+	/**
+	 * The AntInstaller property that must be "true" for the release notes to show
+	 */
+	public static final String RELEASE_NOTES_PROPERTY = "show.release.notes";
+
+	public ReleaseNotesFilter() {
+	}
+
+	public void exec(InstallerContext ctx) throws InstallException {
+		if(ctx.isInstallSucceded() ){
+			String showReleaseNotes = ctx.getInstaller().getResultContainer().getProperty(RELEASE_NOTES_PROPERTY);
+			if(OutputField.isTrue(showReleaseNotes)){
+				try {
+					InputStream is = ReleaseNotesFilter.class.getResourceAsStream("/release-notes.txt");
+					BufferedReader br = new BufferedReader(new InputStreamReader(is));
+					String line = null;
+					StringBuffer file = new StringBuffer();
+					while((line = br.readLine())!=null){
+						file.append(line).append('\n');
+					}
+                    br.close();
+					Runner runner = ctx.getRunner();
+					if(runner instanceof TextRunner){
+						renderText(file.toString());
+
+					}
+					else{ // if(runner instanceof SwingRunner){
+						//SwingRunner sRunner = (SwingRunner)runner;
+						ReleaseNotesFrame rFrame = new ReleaseNotesFrame("Readme");
+						rFrame.init(file.toString());
+					}
+				}
+				catch (IOException e) {
+					throw new InstallException("Could not render Release notes",e);
+				}
+			}
+		}
+	}
+	
+	private void renderText(String text) throws IOException{
+		BufferedReader commandReader = new BufferedReader(new InputStreamReader(System.in));
+		Pager pager = new Pager(text);
+		String command = null;
+		do {
+			if (!pager.next(System.out)) {
+				break;
+			}
+			System.out.println();
+			System.out.println(getNextInstructions());
+			command = commandReader.readLine();
+		}
+		while (command.toUpperCase().startsWith(nextChar));
+		pager.rest(System.out);
+		
+	}
+	private String getNextInstructions() {
+		return res.getString("large_select_next");
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/runtime/exe/ReleaseNotesFrame.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/runtime/exe/ReleaseNotesFrame.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/runtime/exe/ReleaseNotesFrame.java	(revision 18906)
@@ -0,0 +1,63 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.runtime.exe;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GraphicsConfiguration;
+import java.awt.HeadlessException;
+
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+
+
+/**
+ * ReleaseNotes frame for displaying plain text
+ * @author Paul Hinds
+ * @version $Id: ReleaseNotesFrame.java,v 1.3 2006/12/21 00:03:23 teknopaul Exp $
+ */
+public class ReleaseNotesFrame extends JFrame {
+
+	private BorderLayout borderLayout1 = new BorderLayout();
+	private JEditorPane contentsEditorPane = new JEditorPane();
+	private JScrollPane hPanelScrollPane = new JScrollPane();
+
+	public ReleaseNotesFrame(String title) throws HeadlessException {
+		super(title);
+	}
+
+	public void init(String text){
+		contentsEditorPane.setMinimumSize(new Dimension(200, 200));
+		contentsEditorPane.setPreferredSize(new Dimension(1000, Integer.MAX_VALUE));
+		contentsEditorPane.setEditable(false);
+		contentsEditorPane.setContentType("text/plain");
+		contentsEditorPane.setCaretPosition(0);
+		contentsEditorPane.setText(text);
+		this.getContentPane().setLayout(borderLayout1);
+		hPanelScrollPane.setMinimumSize(new Dimension(200, 200));
+		hPanelScrollPane.setPreferredSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+		this.getContentPane().add(hPanelScrollPane, BorderLayout.CENTER);
+		hPanelScrollPane.getViewport().add(contentsEditorPane);
+		hPanelScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+		this.setSize(new Dimension(500,500));
+		hPanelScrollPane.setWheelScrollingEnabled(true);
+		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+		this.show();
+		
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/Installer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/Installer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/Installer.java	(revision 18906)
@@ -0,0 +1,407 @@
+/*
+ * Copyright  2005 Paul Hinds
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.tp23.antinstaller.taskdefs;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Jar;
+import org.apache.tools.ant.taskdefs.Manifest;
+import org.apache.tools.ant.taskdefs.ManifestException;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.types.ZipFileSet;
+import org.apache.tools.zip.ZipOutputStream;
+import org.tp23.antinstaller.renderer.swing.plaf.LookAndFeelFactory;
+import org.tp23.antinstaller.runtime.ConfigurationLoader;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Creates a Installer archive.
+ * 
+ *
+ * @ant.task category="packaging"
+ */
+public class Installer extends Jar {
+
+    public static final String NON_EXTRACTOR = "NonExtractor";
+    public static final String SELF_EXTRACTOR = "SelfExtractor";
+    
+    /** The extract type to use NonExtractor or SelfExtractor */
+    private String extractType;
+
+    /** The AntInstall config file */
+    private File installConfig;
+
+    /** The Ant build.xml to be used*/
+    private File buildFile;
+
+    /** The location of ant-installer.jar and ant-installer-ext.jar and possibly jgoodies-edited-1_2_2.jar */
+    private File antInstallLib;
+
+    /** The location of xercesImpl.jar and xml-apis.jar 
+     * This is not requried Xerces is optional and will increase the download size */
+    private File xercesLib;
+
+    /** The location of ant.jar and ant-launcher.jar */
+    private File antLib;
+
+    /** The AntInstaller Look And Feel to be used */
+    private String laf;
+    
+    /** The icon set to use */
+    private String icons;
+
+    /** Stop the build if there is a known error in the config */
+    protected boolean failOnError = false;
+    
+    /** perform the validation */
+    protected boolean validateConfig = false;
+    
+    private boolean buildFileSet = false;
+    private boolean configFileSet = false;
+    /** Indicates that the build.xml and antinstall-config.xml have been added to the fileset already */
+    private boolean startCheckDuplicates = false; 
+
+    /** constructor */
+    public Installer() {
+        super();
+        archiveType = "jar";
+        emptyBehavior = "create";
+        setEncoding("UTF8");
+    }
+ 
+    protected void cleanUp() {
+        super.cleanUp();
+    }
+
+    public void reset() {
+        super.reset();
+        extractType = null;
+        installConfig = null;
+        buildFile = null;
+    }
+
+	/**
+	 * @param installConfig The installConfig to set.
+	 */
+	public void setInstallConfig(File installConfig) {
+		this.installConfig = installConfig;
+        if (!installConfig.exists()) {
+            throw new BuildException("AntInstall config: "
+                                     + installConfig
+                                     + " does not exist.");
+        }
+        // Create a ZipFileSet for this file, and pass it up.
+        ZipFileSet fs = new ZipFileSet();
+        fs.setFile(installConfig);
+        fs.setFullpath("antinstall-config.xml");
+        super.addFileset(fs);
+        if(this.buildFile != null) {
+            startCheckDuplicates = true;
+        }
+	}
+	/**
+	 * @param buildFile The buildFile to set.
+	 */
+	public void setBuildFile(File buildFile) {
+		this.buildFile = buildFile;
+        if (!buildFile.exists()) {
+            throw new BuildException("AntInstall build file: "
+                                     + buildFile
+                                     + " does not exist.");
+        }
+        // Create a ZipFileSet for this file, and pass it up.
+        ZipFileSet fs = new ZipFileSet();
+        fs.setFile(buildFile);
+        fs.setFullpath("build.xml");
+        super.addFileset(fs);
+        if(this.installConfig != null) {
+            startCheckDuplicates = true;
+        }
+	}
+	/**
+	 * @param icons The ocons pack to use for buttons.
+	 */
+	public void setIcons(String icons) {
+		this.icons = icons;
+
+        // Create a ZipFileSet for this file, and pass it up.
+		FileSet set = null;
+		File iconJar = new File(antInstallLib, "ai-icons-" + icons + ".jar");
+        if (!iconJar.exists()) {
+            throw new BuildException("Missing icons: "
+                                     + iconJar
+                                     + " does not exist.");
+        }
+		set = new ZipFileSet();
+		set.setFile(iconJar);
+		addZipGroupFileset(set);
+
+	}
+	/**
+	 * @param extractType The extractType to set.
+	 */
+	public void setExtractType(String extractType) {
+		this.extractType = extractType;
+	}
+	
+    public void setFailOnError(boolean fail) {
+        failOnError = fail;
+    }
+    
+    public void setValidateConfig(boolean validate) {
+    	validateConfig = validate;
+    }
+
+    /**
+     * The location of ant-installer.jar and possibly jgoodies-edited-1_2_2.jar
+     * @param antInstallLib The antInstallLib to set.
+     */
+    public void setAntInstallLib(File antInstallLib) {
+        this.antInstallLib = antInstallLib;
+        FileSet set = new FileSet();
+        set.setFile(new File(antInstallLib, "ant-installer.jar"));
+        addZipGroupFileset(set);
+    }
+    /**
+     * The location of ant.jar and ant-launcher.jar
+     * @param antLib The antLib to set.
+     */
+    public void setAntLib(File antLib) {
+        this.antLib = antLib;
+        FileSet set = new FileSet();
+        set.setFile(new File(antLib, "ant.jar"));
+        set.setFile(new File(antLib, "ant-launcher.jar"));
+        addZipGroupFileset(set);
+    }
+    /**
+     * @param xercesLib The xercesLib to set.
+     */
+    public void setXercesLib(File xercesLib) {
+        this.xercesLib = xercesLib;
+        FileSet set = new FileSet();
+        set.setFile(new File(xercesLib, "xercesImpl.jar"));
+        set.setFile(new File(xercesLib, "xml-apis.jar"));
+        addZipGroupFileset(set);
+    }
+
+    /**
+     * Overrides the ZIP execute() method which creates filesets
+     */
+    public void execute(){
+        log(".-------------------------------.");
+        log("|-(o--~AntInstaller.sf.net~--o)-|");
+        log("`-----------------by-Paul-Hinds-ÂŽ");
+        
+        if(validateConfig) {
+            validateConfig();
+        } else if(extractType.equals(SELF_EXTRACTOR)){
+            // this reads the config just 
+            // to extract the lookAndFeel attribute for the manifest at the moment
+            readConfig();
+        }
+        if( LookAndFeelFactory.isDefault(getLaf()) ){
+            FileSet set = new FileSet();
+            set.setFile(new File(antInstallLib, "jgoodies-edited-1_2_2.jar"));
+            addZipGroupFileset(set);
+        }
+
+        super.execute();
+    }
+
+    /**
+     * override of  parent; validates configuration
+     * before initializing the output stream.  The Manifest is set in the Jar superclass's
+     * method so Manifest modifications must be performed in this method
+     */
+    protected void initZipOutputStream(ZipOutputStream zOut)
+        throws IOException, BuildException {
+        // If no buildFile file is specified, it's an error.
+        if (buildFile == null && !isInUpdateMode()) {
+            throw new BuildException("buildFile attribute is required", getLocation());
+        }
+        // If no installConfig file is specified, it's an error.
+        if (installConfig == null && !isInUpdateMode()) {
+            throw new BuildException("installConfig attribute is required", getLocation());
+        }
+        try{ 
+        	addConfiguredManifest(this.getManifest());
+        }
+        catch(ManifestException me){
+        	throw new BuildException("Cant add AntInstaller Manifest", me, getLocation());
+        }        
+        super.initZipOutputStream(zOut);
+    }
+	
+    protected void zipFile(InputStream is, ZipOutputStream zOut, String vPath,
+            long lastModified, File fromArchive, int mode)
+            throws IOException {
+        
+        if(vPath.equalsIgnoreCase("antinstall-config.xml")) {
+            if(buildFileSet) {
+                log("Two antinstall-config.xml files in jar", Project.MSG_WARN);
+            }
+            buildFileSet = true;
+        }
+        if(vPath.equalsIgnoreCase("build.xml")) {
+            if(configFileSet) {
+                log("Two build.xml files in jar", Project.MSG_WARN);
+            }
+            configFileSet = true;
+        }
+
+        super.zipFile(is, zOut, vPath, lastModified, fromArchive, mode);
+    }
+
+    /**
+     * This method is only valid after readConfig() or validateConfig() have been run
+     * @return Returns the Look And Feel class.
+     */
+    private String getLaf() {
+        if(laf == null){
+            return LookAndFeelFactory.DEFAULT_LAF;
+        }
+        return laf;
+    }
+
+    private Manifest getManifest() throws ManifestException{
+    	if(extractType.equalsIgnoreCase(NON_EXTRACTOR)){
+    		return getNonExtractorManifest();
+    	}
+        else if(extractType.equalsIgnoreCase(SELF_EXTRACTOR)){
+            return getSelfExtractorManifest();
+        }
+        else {
+            throw new BuildException("Invalid extractType: " + extractType);
+        }
+    }
+    
+    private Manifest getNonExtractorManifest() throws ManifestException{
+    	return getCustomManifest("org.tp23.antinstaller.selfextract.NonExtractor");
+    }
+    private Manifest getSelfExtractorManifest() throws ManifestException{
+    	return getCustomManifest("org.tp23.antinstaller.selfextract.SelfExtractor");
+    }
+    private Manifest getCustomManifest(String mainClass) throws ManifestException{
+    	log("Creating MANIFEST.mf");
+    	Manifest newManifest = new Manifest();
+    	Manifest.Section mainSection = newManifest.getMainSection();
+    	Manifest.Attribute attmc = new Manifest.Attribute();
+    	attmc.setName("Main-Class");
+    	attmc.setValue(mainClass);
+    	mainSection.addAttributeAndCheck(attmc);
+    	Manifest.Attribute attlaf = new Manifest.Attribute();
+    	attlaf.setName("Look-And-Feel");
+    	attlaf.setValue(getLaf());
+    	mainSection.addAttributeAndCheck(attlaf);
+    	return newManifest;
+    	
+    }
+	
+	protected void validateConfig() {
+		
+		int ret = 1;
+		try {
+			log("reading config...");
+			ConfigurationLoader configurationLoader = new ConfigurationLoader();
+
+			log("parent file: " + installConfig.getParentFile() );
+			log("name of install config: " + installConfig.getName() );
+
+			configurationLoader.readConfig(installConfig.getParentFile(), installConfig.getName());
+			log("validating config...");
+			ret = configurationLoader.validate();
+			laf = configurationLoader.getInstaller().getLookAndFeel();
+			if(ret != 0){
+				err();
+			}
+		}
+		catch (Exception ex) {
+			log("validation failed");
+			ex.printStackTrace();
+			err();
+		}
+		
+		try{
+			log("parsing included build.xml...");
+			InputSource xmlInp = new InputSource(new FileInputStream(buildFile));
+			SAXParserFactory parserFactory = SAXParserFactory.newInstance();
+			SAXParser parser = parserFactory.newSAXParser();
+			parser.parse(xmlInp, new DefaultHandler(){
+				public void error(SAXParseException e) throws SAXException{
+					throw e;
+				}
+				public void fatalError(SAXParseException e) throws SAXException{
+					throw e;
+				}
+			} );
+			log("build.xml is well formed");
+		}
+		catch (Exception ex) {
+			ex.printStackTrace();
+			errNestedBuildXml();
+		}
+	}
+
+    protected void readConfig(){
+        
+        try {
+            log("reading config...");
+            ConfigurationLoader configurationLoader = new ConfigurationLoader();
+            configurationLoader.readConfig(installConfig.getParentFile(), installConfig.getName());
+            laf = configurationLoader.getInstaller().getLookAndFeel();
+        }
+        catch (Exception ex) {
+            ex.printStackTrace();
+            err();
+        }
+    }
+    
+    /**
+	 * error found on validation of the antinstall config
+	 */
+	private void err(){
+		String errorMsg = "Error in config file:" + installConfig.getAbsolutePath();
+        if (failOnError) {
+            throw new BuildException(errorMsg);
+        } else {
+            log(errorMsg, Project.MSG_ERR);
+        }
+	}
+	/**
+	 * error found in the build.xml used by ant installer (not the one
+	 * running this task)
+	 */
+	private void errNestedBuildXml(){
+		String errorMsg = "Error in included build file:" + buildFile.getAbsolutePath();
+        if (failOnError) {
+            throw new BuildException(errorMsg);
+        } else {
+            log(errorMsg, Project.MSG_ERR);
+        }
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/KdeIconTask.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/KdeIconTask.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/KdeIconTask.java	(revision 18906)
@@ -0,0 +1,146 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.taskdefs;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.tp23.antinstaller.selfextract.ResourceExtractor;
+/**
+ * 
+ * @author teknopaul
+ *
+ */
+public class KdeIconTask extends Task{
+
+	private String desktop;
+	private String icon;
+	private String installDir;
+	
+	public void execute() throws BuildException{
+		if(desktop == null || icon == null || installDir == null){
+            throw new BuildException("Missing attribute in KdeIconTask");
+        }
+		
+		ResourceExtractor re = new ResourceExtractor();
+
+		File appsDir = null;
+		try {
+			appsDir = getAppsDir();
+		} catch (Exception e) {
+			throw new BuildException("Can not determine KDE directory");
+		}
+		if( appsDir != null && appsDir.exists() ) {
+			try {
+				String desktopFileName = desktop.substring( desktop.lastIndexOf('/') + 1 );
+				log("creating: " + new File( appsDir, desktopFileName).getCanonicalPath());
+				re.copyResource(desktop, new File( appsDir, desktopFileName), "@installDir@", installDir);
+			} catch (Exception e) {
+				StringWriter sw = new StringWriter();
+				e.printStackTrace(new PrintWriter(sw));
+				throw new BuildException(sw.getBuffer().toString());
+			}
+		}
+		else{
+			log("apps dir does not exist");
+		}
+		File iconDir = null;
+		try {
+			iconDir = getIconDir();
+		} catch (Exception e) {
+			throw new BuildException("Can not determine KDE directory");
+		}
+		if(iconDir != null && iconDir.exists()){
+			try {				
+				String iconFileName = icon.substring( icon.lastIndexOf('/') + 1 );
+				log("creating: " + new File( iconDir, iconFileName).getCanonicalPath());
+				re.copyResourceBinary(icon, new File( iconDir, iconFileName ));
+			} catch (IOException e) {
+				throw new BuildException(e.getMessage());
+			}
+		}
+		else{
+			log("icon dir does not exist");
+		}
+		try {	
+			Process proc = Runtime.getRuntime().exec("kbuildsycoca");
+		} catch (Exception e) {
+			log("error running kbuildsycoca: " + e.getMessage());
+		}
+		
+	}
+	
+	private File getKdeDir(String pathdef, String extension) throws IOException, InterruptedException{
+		String[] args = {"kde-config", "--path", pathdef};
+		Process proc = Runtime.getRuntime().exec(args);
+		BufferedReader br = new BufferedReader( new InputStreamReader(proc.getInputStream()));
+		String appsDirs = br.readLine();
+		int idx = -1;
+        if(appsDirs != null) {
+            idx = appsDirs.indexOf(':');
+        }
+        br.close();
+	
+		if(idx > -1 && idx < appsDirs.length() - 1){
+			String privatedir = appsDirs.substring(0, idx - 1);
+			if(!privatedir.endsWith("/")){
+				privatedir = privatedir + "/"; 
+			}
+			return new File(privatedir + extension);
+		}
+		else{
+			if(!appsDirs.endsWith("/")){
+				appsDirs = appsDirs + "/"; 
+			}
+			return  new File(appsDirs + extension);
+		}
+	}
+	private File getAppsDir() throws IOException, InterruptedException{
+		return getKdeDir("xdgdata-apps", "");
+	}
+	private File getIconDir() throws IOException, InterruptedException{
+		return getKdeDir("icon", "hicolor/48x48/apps");
+	}
+	
+	
+	public String getDesktop() {
+		return desktop;
+	}
+	public void setDesktop(String desktop) {
+		this.desktop = desktop;
+	}
+	public String getIcon() {
+		return icon;
+	}
+	public void setIcon(String icon) {
+		this.icon = icon;
+	}
+
+	public String getInstallDir() {
+		return installDir;
+	}
+
+	public void setInstallDir(String installDir) {
+		this.installDir = installDir;
+	}
+	
+}
Index: /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/ValidateConfig.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/ValidateConfig.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/taskdefs/ValidateConfig.java	(revision 18906)
@@ -0,0 +1,26 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.taskdefs;
+
+public class ValidateConfig extends Installer {
+
+    public void execute(){
+        log(".-------------------------------.");
+        log("|-(o--~AntInstaller.sf.net~--o)-|");
+        log("`-----------------by-Paul-Hinds-ÂŽ");
+        validateConfig();
+    }
+}
Index: /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/util/CreateLanguagePack.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/util/CreateLanguagePack.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/util/CreateLanguagePack.java	(revision 18906)
@@ -0,0 +1,112 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import javax.swing.JDialog;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.filechooser.FileFilter;
+
+import org.tp23.antinstaller.InstallException;
+import org.tp23.antinstaller.Installer;
+import org.tp23.antinstaller.InstallerContext;
+import org.tp23.antinstaller.runtime.exe.LoadConfigFilter;
+
+public class CreateLanguagePack {
+
+	
+	public static void main(String[] args) {
+		try {
+			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+			System.out.println("Create LanguagePack for antinstall-config.xml in the current directory?");
+			br.readLine();
+			
+			System.out.println("Enter Locale to create e.g. es_EU");
+			String locale = br.readLine().trim();
+			
+			createLanguagePack(loadConfigFile(new File("."), "antinstall-config.xml" ), locale, new File("."));
+			
+			System.out.println("done.");
+		} catch (IOException e) {
+			e.printStackTrace();
+		} catch (InstallException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public static File guiMain(JFrame root) {
+		try {
+			JFileChooser chooser = new JFileChooser();
+			chooser.setDialogTitle("Select antinstall-config.xml file");
+			chooser.setApproveButtonText("Select file");
+			FileFilter ff = new FileFilter(){
+				public boolean accept(File file){
+					return file.getName().equals("antinstall-config.xml") || file.isDirectory();
+				}
+				public String getDescription() {
+					return "antinstall-config.xml files";
+				}
+			};
+			chooser.setFileFilter(ff);
+			chooser.showOpenDialog(root);
+			File chosen = chooser.getSelectedFile();
+			if(chosen != null){
+				chooser = new JFileChooser();
+				chooser.setDialogTitle("Select output directory");
+				chooser.setApproveButtonText("Internationalise file");
+				chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+				chooser.setCurrentDirectory(chosen.getParentFile());
+				chooser.showOpenDialog(root);
+				File dir = chooser.getSelectedFile();
+				if(dir != null){
+					createLanguagePack(loadConfigFile(chosen.getParentFile(), chosen.getName()), null, dir);
+					if(! dir.getName().equals("resources")){
+						JOptionPane.showMessageDialog(root, "When the resources files are added to the installer jar\n the parent directory must be /resources/");
+					}
+					return new File(dir, "LanguagePack.properties");
+				}
+			}
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		} catch (InstallException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+	
+	private static Installer loadConfigFile(File rootDir, String configName) throws InstallException{
+		InstallerContext ctx = new InstallerContext();
+		ctx.setFileRoot(rootDir);
+        ctx.setInstallerConfigFile(configName);
+		LoadConfigFilter configLoader = new LoadConfigFilter();
+		configLoader.exec(ctx);
+		Installer installer = ctx.getInstaller();
+		return installer;
+	}
+	
+	private static void createLanguagePack(Installer installer, String locale, File outputDir) throws IOException{
+		LangPackFileRenderer renderer = new LangPackFileRenderer();
+		renderer.renderProperties(installer, outputDir, locale);
+	}
+}
Index: /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/util/LangPackFileRenderer.java
===================================================================
--- /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/util/LangPackFileRenderer.java	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/src_ext/org/tp23/antinstaller/util/LangPackFileRenderer.java	(revision 18906)
@@ -0,0 +1,227 @@
+/* 
+ * Copyright 2005 Paul Hinds
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.tp23.antinstaller.util;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import org.tp23.antinstaller.Installer;
+import org.tp23.antinstaller.PropertiesFileRenderer;
+import org.tp23.antinstaller.input.CommentOutput;
+import org.tp23.antinstaller.input.InputField;
+import org.tp23.antinstaller.input.LargeSelectInput;
+import org.tp23.antinstaller.input.OutputField;
+import org.tp23.antinstaller.input.SecretPropertyField;
+import org.tp23.antinstaller.input.ConditionalField;
+import org.tp23.antinstaller.input.SelectInput;
+import org.tp23.antinstaller.input.TargetSelectInput;
+import org.tp23.antinstaller.input.SelectInput.Option;
+import org.tp23.antinstaller.page.Page;
+
+/**
+ * <p>Outputs the text from Pages as a Java Properties file. The file produced is compatible
+ * with java.util.Properties. </p>
+ * <p>It can be used as a stub for creating language packs,  the default text is included as a guide but can be deleted</p>
+ * @author Paul Hinds
+ */
+public class LangPackFileRenderer{
+
+	private static String newLine = System.getProperty("line.separator");
+	private static final char[] hexidecimals = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+
+	public LangPackFileRenderer() {
+	}
+
+	public void renderProperties(Installer installer, File baseDir, String locale) throws IOException {
+		Page[] pages = installer.getPages();
+
+		StringBuffer propertiesData = new StringBuffer();
+		propertiesData.append("### Ant Installer - language pack auto generated on ");
+		propertiesData.append(new Date().toString());
+		propertiesData.append(newLine);
+		propertiesData.append(newLine);
+
+		propertiesData.append("finishButtonText = " + installer.getFinishButtonText());
+		propertiesData.append(newLine);
+		propertiesData.append(newLine);
+
+		String property = null;
+        String value = null;
+
+        for (int i = 0; i < pages.length; i++) {
+			OutputField[] fields = pages[i].getOutputField();
+
+			propertiesData.append(newLine);
+			propertiesData.append("## Text from Page:" + pages[i].getName());
+			propertiesData.append(newLine);
+            property = "page." + pages[i].getName() + ".displayText";
+			value = convert(pages[i].getDisplayText(), false);
+			propertiesData.append(property + " = " + value);
+			propertiesData.append(newLine);
+
+            retrievePropertiesData( fields, propertiesData );
+
+		}
+        // create the stub
+        if(locale != null) {
+			File languagePackStub = new File(baseDir.getAbsolutePath(), "LanguagePack_" + locale + ".properties");
+			FileWriter fos = new FileWriter(languagePackStub);
+			BufferedWriter writer = new BufferedWriter(fos);
+			writer.write(propertiesData.toString());
+			writer.flush();
+			fos.close();
+        }
+        else {
+			// create the default
+			File languagePack = new File(baseDir.getAbsolutePath(), "LanguagePack.properties");
+			FileWriter fos = new FileWriter(languagePack);
+			BufferedWriter writer = new BufferedWriter(fos);
+			writer.write(propertiesData.toString());
+			writer.flush();
+			fos.close();
+        }
+	}
+	
+    private void retrievePropertiesData( OutputField[] fields, StringBuffer propertiesData ) {
+        String property = null;
+        String value = null;
+        String explProperty = null;
+        String explValue = null;
+
+        for (int f = 0; f < fields.length; f++) {
+        	
+        	// use getName() for comments
+        	if(fields[f] instanceof CommentOutput){
+	            property = fields[f].getName() + ".displayText";
+				value = convert(fields[f].getDisplayText(), false);
+				propertiesData.append(property + " = " + value);
+				propertiesData.append(newLine);
+
+				if (fields[f].getExplanatoryText() != null && fields[f].getExplanatoryText().trim().length() > 0) {
+					explProperty = fields[f].getName() + ".explanatoryText";
+					explValue = convert(fields[f].getExplanatoryText(), false);
+					propertiesData.append(explProperty + " = " + explValue);
+					propertiesData.append(newLine);
+				}
+        	}
+        	// use getProperty for input types
+        	else {
+        		InputField iField = (InputField)fields[f];
+	            property = iField.getProperty() + ".displayText";
+				value = convert(iField.getDisplayText(), false);
+				propertiesData.append(property + " = " + value);
+				propertiesData.append(newLine);
+				if (iField.getExplanatoryText() != null && iField.getExplanatoryText().trim().length() > 0) {
+					explProperty = iField.getProperty() + ".explanatoryText";
+					explValue = convert(iField.getExplanatoryText(), false);
+					propertiesData.append(explProperty + " = " + explValue);
+					propertiesData.append(newLine);
+ 				}
+				if(iField instanceof SelectInput) {
+					SelectInput selectInput = (SelectInput)iField;
+					for (int o = 0; o < selectInput.getOptions().length; o++) {
+						SelectInput.Option option =  selectInput.getOptions()[o];
+			            property = selectInput.getProperty() + "." + (o + 1) + ".displayText";
+						value = convert(option.getText(), false);
+						propertiesData.append(property + " = " + value);
+						propertiesData.append(newLine);
+					}
+				}
+				if(fields[f] instanceof LargeSelectInput) {
+					LargeSelectInput selectInput = (LargeSelectInput)iField;
+					for (int o = 0; o < selectInput.getOptions().length; o++) {
+						LargeSelectInput.Option option =  selectInput.getOptions()[o];
+			            property = selectInput.getProperty() + "." + (o + 1) + ".displayText";
+						value = convert(option.getText(), false);
+						propertiesData.append(property + " = " + value);
+						propertiesData.append(newLine);
+					}
+				}
+        	}			
+        }
+    }
+
+	private String convert(String input, boolean doSpaces) {
+		if (input == null) {
+			// this happens when a page is skipped in text mode
+			return "";
+		}
+		int num = input.length();
+		StringBuffer sb = new StringBuffer(num);
+
+		for (int i = 0; i < num; i++) {
+			char c = input.charAt(i);
+			switch (c) {
+				case ' ':
+					if (i == 0 || doSpaces) {
+						sb.append('\\');
+					}
+					sb.append(' ');
+					break;
+				case '\n':
+					sb.append("\\n");
+					break;
+				case '\r':
+					sb.append("\\r");
+					break;
+				case '\\':
+					sb.append("\\\\");
+					break;
+				case '\t':
+					sb.append("\\t");
+					break;
+				case '\f':
+					sb.append("\\f");
+					break;
+				case '=':
+					sb.append("\\=");
+					break;
+				case ':':
+					sb.append("\\:");
+					break;
+				case '#':
+					sb.append("\\#");
+					break;
+				case '!':
+					sb.append("\\!");
+					break;
+
+				default:
+					if ( (c < 0x0020) || (c > 0x007e) ) {
+						sb.append("\\u")
+							.append(hex( (c >> 12) & 0xF))
+							.append(hex( (c >> 8) & 0xF))
+							.append(hex( (c >> 4) & 0xF))
+							.append(hex(c & 0xF));
+					}
+					else {
+						sb.append(c);
+					}
+			}
+		}
+		return sb.toString();
+	}
+
+	private char hex(int val) {
+		return hexidecimals[ (val & 0xF)];
+	}
+
+}
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/README.txt
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/README.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/README.txt	(revision 18906)
@@ -0,0 +1,115 @@
+---+ Default Project Template Builder
+
+This template is a method of getting up and running with
+AntInstaller quickly.  The template will help you create
+an installer for a Java project.  
+
+
+---++ Output
+
+   * create-installer.xml - An ant build script to package the installer
+   * build.xml - An Ant script used by the installer
+   * antinstall-config.xml - The definition of the installer
+All of the above can be edited to suit your needs
+   * Optionally the script will run the create-installer.xml Ant script to make the Jar immediately
+
+
+---++ Usage
+
+Read this README first
+Change directory to the location of this README file
+Set the ANT_INSTALL_HOME variable to the directory where you have installed AntInstaller.
+Set JAVA_HOME
+> export ANT_INSTALL_HOME=/usr/local/AntInstaller-beta0.7.2
+Start the runtemplate.sh script
+> ./runtemplate.sh
+Follow the instructions
+
+---++ Project Structure
+
+AntInstaller launches and asks you for your project information
+Generally it is assumed that your projects follow this structure
+
+/projects_root/
+
+/projects_root/project-name/
+
+for example if you use eclipse and CVS this will be
+/workspace/cvs-module-name/
+
+By default the template selects the following subdirectories
+which can be modified.
+/projects_root/project-name/src/ - source code
+/projects_root/project-name/bin/ - scripts (these get chmod u+x) in the installer
+/projects_root/project-name/doc/ - documentation
+/projects_root/project-name/lib/ - Jars
+/projects_root/project-name/classes/ - err... classes?
+
+The template only lets you select one directory for each, dont worry
+AntInstaller itself is infinately configurable.
+
+
+First time you run the script you should let the template
+create a new empty directory for creating installers
+/usr/local/installers/
+From this directory subdirectories will be created for each project 
+/usr/local/installers/project-name/
+
+---++ Configuring the installer
+
+This template is NOT designed to create you the final installer you will
+deploy.  If you have a very simple standard project it may suffice, 
+but it is expected that you will want to modify the XML files created
+to customise the build.
+
+Following the documentation on the web you can modify the 
+antinstall-config.xml file to add extra pages and collect extra input 
+when the user installs your application.
+http://antinstaller.sourceforge.net
+
+The build.xml file can be modified to customise the install proces
+that is run by AntInstaller on the users machine.  
+You have the full power of Ant so you can easily 
+   * move files around
+   * replace text
+   * Zip Unzip
+   * run scripts
+   * call Java
+   * run sub ant build.xml files
+   * call SQL files via JDBC
+   * fix line ending s
+   * and anything in the CoreTypes in Ant.
+
+The create-installer.xml file is an Ant script that creates the installer
+by modifying this file you can add extra resources to the final Jar 
+such as images that you want in the installer or extra source directories.
+By adding Ant optional Jars to the installer you can then access any
+additional features of Ant during the install enabling you to
+   * Call SSH or Telnet commands
+   * SCP/ FTP files 
+   * Send emails
+   * and anything in the OptionaTypes in Ant
+
+
+
+---++ Contributions
+
+This tool itself (obviously) uses AntInstaller.
+You are free to modify the scripts to extend the features of the tool.
+If you do I would encourage you to submit the changes back so
+everyone can benefit from your enhancement.
+It is a good example of using AntInstaller to acheive tasks other
+than just installing apps.
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/ant.install.log
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/ant.install.log	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/ant.install.log	(revision 18906)
@@ -0,0 +1,13 @@
+Logger initialized
+Ant basedir:/research/oranfry/programs/ant-installer/templates/defaultproject
+Filter: org.tp23.antinstaller.runtime.exe.LoadConfigFilter
+Config loaded
+Filter: org.tp23.antinstaller.runtime.exe.CreateUIFilter
+Creating UI classes
+Setting look and feel:org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel
+Created UI classes
+Filter: org.tp23.antinstaller.runtime.exe.PropertyLoaderFilter
+loadDefaults attribute:null
+Not loading defaults
+Filter: org.tp23.antinstaller.runtime.exe.ExecuteRunnerFilter
+Starting UI Screens
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/ant.install.properties
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/ant.install.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/ant.install.properties	(revision 18906)
@@ -0,0 +1,65 @@
+### Ant Installer - properties auto generated on Tue\ Dec\ 18\ 15\:27\:39\ NZDT\ 2007
+
+basedir = /research/oranfry/programs/ant-installer/templates/defaultproject/.
+ant.install.config.version = 0.0
+
+
+## Properties from Page:intro
+# Targets selected for page
+intro-targets = Base,
+
+## Properties from Page:properties
+# .UnvalidatedTextInput
+PROJECT_NAME = Test Project
+# .DirectoryInput
+PROJECT_ROOT = /research/oranfry/sandbox/ant-installer/installers
+# .ValidatedTextInput
+PROJECT_SHORT_NAME = TestProject
+# .DirectoryInput
+RESOURCE_ROOT = /research/oranfry/sandbox/ant-installer/projects
+# .AppRootInput
+ANT_INSTALL_ROOT = /research/oranfry/programs/ant-installer
+# .FileInput
+PROJECT_LIC = /research/oranfry/programs/ant-installer/lib/LICENSE-ant-install.txt
+
+## Properties from Page:targets
+# .TargetInput
+SourceCode = true
+# .TargetInput
+Libraries = true
+# .TargetInput
+Scripts = true
+# .TargetInput
+Documentation = true
+# .TargetInput
+Classes = true
+# Targets selected for page
+targets-targets = SourceCode,Libraries,Scripts,Documentation,Classes,
+
+## Properties from Page:resources
+# .DirectoryInput
+PROJECT_SRC = /research/oranfry/sandbox/gsdl-trunk
+
+## Properties from Page:resources
+# .DirectoryInput
+PROJECT_LIB = /research/oranfry/sandbox/gsdl-trunk/lib
+
+## Properties from Page:resources
+# .DirectoryInput
+PROJECT_BIN = /research/oranfry/sandbox/gsdl-trunk/bin/script
+
+## Properties from Page:resources
+# .DirectoryInput
+PROJECT_DOC = /research/oranfry/sandbox/gsdl-trunk/images
+
+## Properties from Page:resources
+# .DirectoryInput
+PROJECT_CLASSES = /research/oranfry/sandbox/gsdl-trunk/etc
+
+## Properties from Page:createinstaller
+# .TargetInput
+CreateInstaller = true
+# Targets selected for page
+createinstaller-targets = CreateInstaller,
+
+## Properties from Page:progress
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/antinstall-config-template.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/antinstall-config-template.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/antinstall-config-template.xml	(revision 18906)
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="@PROJECT_NAME@ Installer"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/makewavesdawn.png"
+			minJavaVersion="1.4">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the @PROJECT_NAME@ installer">
+	</page>
+	<!--  type="license" shows a license page to click through -->
+	<page
+			type="license"
+			name="license"
+			displayText="License conditions"
+			resource="/resources/License.txt">
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Required install options">
+		<directory
+				property="installDir"
+				defaultValue="/usr/local/@PROJECT_SHORT_NAME@"
+				defaultValueWin="${env.ProgramFiles}\@PROJECT_SHORT_NAME@"
+				displayText="Select an installation directory"
+				create="true"/>
+	</page>
+	<page
+			type="input"
+			name="selector"
+			displayText="Components to install">
+		<comment
+				displayText="Choose the components you want to install"
+				bold="true"/>
+		<target
+			displayText="Core components"
+			target="default"
+			defaultValue="true"
+			force="true"/>
+		<!--SourceCode
+		<target
+			displayText="Source code"
+			target="tgsrc"
+			defaultValue="false"/>
+		SourceCode-->
+		<!--Documentation
+		<target
+			displayText="Documentation"
+			target="tgdoc"
+			defaultValue="true"/>
+		Documentation-->
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Installation progress"
+			showTargets="false"
+			target="cleanuptarget">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/antinstall-config.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,177 @@
+<?xml version="1.0"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+<installer
+			ui="swing,text"
+			verbose="true"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Installer Wizard"
+			windowIcon="/resources/gkmain_inv.png"
+			defaultImageResource="/resources/makewavesdawn.png"
+			minJavaVersion="1.4"
+			finishButtonText="Create Project">
+	<!--  each page element represents a page of the installer -->
+	<page
+			type="input"
+			name="intro"
+			displayText="Welcome to the Default Installer Wizard"
+			target="Base">
+			<comment
+			displayText="This tool creates a default installer project"/>
+	</page>
+	<!--  type="input" shows a list of editable options for the installer -->
+	<page
+			type="input"
+			name="properties"
+			displayText="Project Options">
+		<text
+			property="PROJECT_NAME"
+			displayText="Project name"
+			defaultValue="My Project"/>
+		<directory
+				property="PROJECT_ROOT"
+				defaultValue="${java.user.home}/installers"
+				defaultValueWin="${java.user.home}\installers"
+				explanatoryText="The build directory is used to create the installer and some temporary files, it should be empty"
+				displayText="Select your build directory"
+				checkExists="true"
+				create="true"/>
+		<validated
+			property="PROJECT_SHORT_NAME"
+			displayText="Short name (no spaces)"
+			explanatoryText="The short name is generally the module name in CVS or the name used in Eclipse"
+			defaultValue="MyProject"
+			regex="^[a-zA-Z][_a-zA-Z0-9]+$"/>
+		<directory
+				property="RESOURCE_ROOT"
+				defaultValue="${java.user.home}/projects"
+				defaultValueWin="C:\projects"
+				displayText="Select your projects root"
+				explanatoryText="The projects root is the root directory where you keep your projects, for 
+example this might be the eclipse workspace or CVS root"
+				checkExists="true"
+				create="true"/>
+		<app-root
+				property="ANT_INSTALL_ROOT"
+				defaultValue="${env.ANT_INSTALL_HOME}"
+				displayText="Confirm the AntInstall directory"
+				checkFile1="antlib/ant.jar"
+				checkFile2="lib/ant-installer.jar"
+				checkDir1="lib"
+				checkDir2="antlib"
+				/>
+		<file
+				property="PROJECT_LIC"
+				defaultValue="${env.ANT_INSTALL_HOME}/lib/LICENSE-ant-install.txt"
+				defaultValueWin="${env.ANT_INSTALL_HOME}\lib\LICENSE-ant-install.txt"
+				displayText="Choose a License File"
+				checkExists="true"/>
+	</page>
+	<page
+			type="input"
+			name="targets"
+			displayText="Select resources to include in the installer">
+		<target 
+			target="SourceCode"
+			displayText="Include Source Code"
+			defaultValue="true"/>
+		<target 
+			target="Libraries"
+			displayText="Include Libraries (Jars)"
+			defaultValue="true"/>
+		<target 
+			target="Scripts"
+			displayText="Include Scripts"
+			defaultValue="true"/>
+		<target 
+			target="Documentation"
+			displayText="Include Documents"
+			defaultValue="true"/>
+		<target 
+			target="Classes"
+			displayText="Include Classes"
+			defaultValue="true"/>
+	</page>
+	<page
+			type="input"
+			name="resources"
+			displayText="Source Code"
+			ifTarget="SourceCode">
+		<directory
+				property="PROJECT_SRC"
+				defaultValue="${RESOURCE_ROOT}/${PROJECT_SHORT_NAME}/src"
+				defaultValueWin="${RESOURCE_ROOT}\${PROJECT_SHORT_NAME}\src"
+				displayText="Select the source code"
+				checkExists="true"
+				create="false"/>
+	</page>
+	<page
+			type="input"
+			name="resources"
+			displayText="Libraries"
+			ifTarget="Libraries">
+		<directory
+				property="PROJECT_LIB"
+				defaultValue="${RESOURCE_ROOT}/${PROJECT_SHORT_NAME}/lib"
+				defaultValueWin="${RESOURCE_ROOT}\${PROJECT_SHORT_NAME}\lib"
+				displayText="Select the libraries"
+				checkExists="true"
+				create="false"/>
+	</page>
+	<page
+			type="input"
+			name="resources"
+			displayText="Scripts"
+			ifTarget="Scripts">
+		<directory
+				property="PROJECT_BIN"
+				defaultValue="${RESOURCE_ROOT}/${PROJECT_SHORT_NAME}/bin"
+				defaultValueWin="${RESOURCE_ROOT}\${PROJECT_SHORT_NAME}\bin"
+				displayText="Select the scripts"
+				checkExists="true"
+				create="false"/>
+	</page>
+	<page
+			type="input"
+			name="resources"
+			displayText="Documentation"
+			ifTarget="Documentation">
+		<directory
+				property="PROJECT_DOC"
+				defaultValue="${RESOURCE_ROOT}/${PROJECT_SHORT_NAME}/doc"
+				defaultValueWin="${RESOURCE_ROOT}\${PROJECT_SHORT_NAME}\doc"
+				displayText="Select the documentation"
+				checkExists="true"
+				create="false"/>
+	</page>
+	<page
+			type="input"
+			name="resources"
+			displayText="Classes"
+			ifTarget="Classes">
+		<directory
+				property="PROJECT_CLASSES"
+				defaultValue="${RESOURCE_ROOT}/${PROJECT_SHORT_NAME}/classes"
+				defaultValueWin="${RESOURCE_ROOT}\${PROJECT_SHORT_NAME}\classes"
+				displayText="Select the classes"
+				checkExists="true"
+				create="false"/>
+	</page>
+	<page
+			type="input"
+			name="createinstaller"
+			displayText="Create Installer">
+		<target
+				target="CreateInstaller"
+				defaultValue="true"
+				explanatoryText="You may wish to edit the project files this tool will create. If not, select 'Create the installer' to create a selfextracting jar file from the resources previously chosen"
+				displayText="Create the installer"/>
+	</page>
+	<page
+			type="progress"
+			name="progress"
+			displayText="Build progress"
+			showTargets="false">
+	</page>
+</installer>
+
+
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/build-self-extractor-template.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/build-self-extractor-template.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/build-self-extractor-template.sh	(revision 18906)
@@ -0,0 +1,25 @@
+#!/bin/sh
+dir=`expr  match "$0" '\(.*\)build-self-extractor.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      echo changing to $dir
+      cd "$dir" ;
+   fi
+fi
+
+
+
+if [ "$JAVA_HOME" = "" ] ; then
+	echo set JAVA_HOME;
+	exit 1;
+fi
+
+# Ant classpath
+ANT_INSTALLER_HOME=@ANT_INSTALL_ROOT@
+CLASSPATH=$ANT_INSTALLER_HOME/antlib/ant.jar
+CLASSPATH=$CLASSPATH:$ANT_INSTALLER_HOME/antlib/xml-apis.jar
+CLASSPATH=$CLASSPATH:$ANT_INSTALLER_HOME/antlib/xercesImpl.jar
+CLASSPATH=$CLASSPATH:$ANT_INSTALLER_HOME/antlib/ant-launcher.jar
+
+$JAVA_HOME/bin/java -cp $CLASSPATH org.apache.tools.ant.Main -buildfile ./create-installer.xml 
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/build-template.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/build-template.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/build-template.xml	(revision 18906)
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<!--
+This is the build.xml run by AntInstaller for the installer
+-->
+
+<project name="Installation"  default=""  basedir="${basedir}">
+
+	<!-- this is required to pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+
+
+	<target name="default" depends="">
+		<echo message="Createing Installation directory"/>
+		<mkdir dir="${installDir}"/>
+	
+		<!--Scripts
+		<echo message="Installing Scripts files"/>
+		<mkdir dir="${installDir}/bin"/>
+		<unzip src="${antinstaller.jar}" dest="${installDir}">
+			<patternset>
+				<include name="bin/*.sh"/>
+				<include name="bin/*.ksh"/>
+				<include name="bin/*.csh"/>
+				<include name="bin/*.cmd"/>
+				<include name="bin/*.bat"/>
+			</patternset>
+		</unzip>
+		<chmod file="${installDir}/bin/*.sh" perm="774"/>
+		<chmod file="${installDir}/bin/*.ksh" perm="774"/>
+		<chmod file="${installDir}/bin/*.csh" perm="774"/>
+		Scripts-->
+	
+		<!--Libraries
+		<echo message="Installing Libraries files"/>
+		<mkdir dir="${installDir}/lib"/>
+		<unzip src="${antinstaller.jar}" dest="${installDir}">
+			<patternset>
+				<include name="lib/*"/>
+			</patternset>
+		</unzip>
+		Libraries-->
+	
+		<!--Classes
+		<echo message="Installing Class files"/>
+		<mkdir dir="${installDir}/classes"/>
+		<unzip src="${antinstaller.jar}" dest="${installDir}">
+			<patternset>
+				<include name="classes/**/*"/>
+			</patternset>
+		</unzip>
+		Classes-->
+	</target>
+
+	<!--Documentation
+	<target name="tgdoc" depends="">
+		<echo message="Installing Documentation files"/>
+		<mkdir dir="${installDir}/doc"/>
+		<unzip src="${antinstaller.jar}" dest="${installDir}">
+			<patternset>
+				<include name="doc/**/*"/>
+			</patternset>
+		</unzip>
+	</target>
+	Documentation-->
+	
+	<!--SourceCode
+	<target name="tgsrc" depends="">
+		<echo message="Installing Source files"/>
+		<mkdir dir="${installDir}/src"/>
+		<unzip src="${antinstaller.jar}" dest="${installDir}">
+			<patternset>
+				<include name="src/**/*"/>
+			</patternset>
+		</unzip>
+	</target>
+	SourceCode-->
+
+	<target name="cleanuptarget" depends="">
+	</target>
+</project>
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/build.xml	(revision 18906)
@@ -0,0 +1,143 @@
+<?xml version="1.0"?>
+
+<!--  this file is creates a build directory -->
+<project name="Create Default Installer"  default=""  basedir="${basedir}">
+
+
+	<property file="${basedir}/ant.install.properties"/>
+	<!-- the above file sets the following -->
+	<property name="ANT_INSTALL_ROOT"   value=""/>
+	<property name="PROJECT_NAME"       value=""/>
+	<property name="PROJECT_SHORT_NAME" value=""/>
+	<property name="PROJECT_ROOT"       value=""/>
+	<property name="PROJECT_SRC"        value=""/>
+	<property name="PROJECT_LIB"        value=""/>
+	<property name="PROJECT_LIC"        value=""/>
+	<property name="PROJECT_BIN"        value=""/>
+	<property name="PROJECT_DOC"        value=""/>
+	<property name="PROJECT_CLASSES"    value=""/>
+		
+	<property name="THIS_PROJECT_ROOT"     value="${PROJECT_ROOT}/${PROJECT_SHORT_NAME}"/>
+
+	<target name="Base">
+		<mkdir dir="${THIS_PROJECT_ROOT}"/>
+		<copy
+			file="${ANT_INSTALL_ROOT}/templates/defaultproject/build-template.xml"
+			tofile="${THIS_PROJECT_ROOT}/build.xml">
+		</copy>
+		<copy
+			file="${ANT_INSTALL_ROOT}/templates/defaultproject/antinstall-config-template.xml"
+			tofile="${THIS_PROJECT_ROOT}/antinstall-config.xml">
+		</copy>
+		<replace file="${THIS_PROJECT_ROOT}/antinstall-config.xml">
+			<replacefilter token="@PROJECT_NAME@"       value="${PROJECT_NAME}"/>
+			<replacefilter token="@PROJECT_SHORT_NAME@" value="${PROJECT_SHORT_NAME}"/>
+		</replace>
+		<copy
+			file="${ANT_INSTALL_ROOT}/templates/defaultproject/create-installer-template.xml"
+			tofile="${THIS_PROJECT_ROOT}/create-installer.xml">
+		</copy>
+		<replace file="${THIS_PROJECT_ROOT}/create-installer.xml">
+			<replacefilter token="@ANT_INSTALL_ROOT@" value="${ANT_INSTALL_ROOT}"/>
+			<replacefilter token="@PROJECT_NAME@"     value="${PROJECT_NAME}"/>
+			<replacefilter token="@PROJECT_SHORT_NAME@"     value="${PROJECT_SHORT_NAME}"/>
+			<replacefilter token="@PROJECT_ROOT@"     value="${PROJECT_ROOT}"/>
+			<replacefilter token="@PROJECT_SRC@"      value="${PROJECT_SRC}"/>
+			<replacefilter token="@PROJECT_LIB@"      value="${PROJECT_LIB}"/>
+			<replacefilter token="@PROJECT_LIC@"      value="${PROJECT_LIC}"/>
+			<replacefilter token="@PROJECT_BIN@"      value="${PROJECT_BIN}"/>
+			<replacefilter token="@PROJECT_DOC@"      value="${PROJECT_DOC}"/>
+			<replacefilter token="@PROJECT_CLASSES@"  value="${PROJECT_CLASSES}"/>
+		</replace>
+	
+		<copy
+			file="${ANT_INSTALL_ROOT}/templates/defaultproject/build-self-extractor-template.sh"
+			tofile="${THIS_PROJECT_ROOT}/build-self-extractor.sh">
+		</copy>
+		<replace file="${THIS_PROJECT_ROOT}/build-self-extractor.sh">
+			<replacefilter token="@ANT_INSTALL_ROOT@"       value="${ANT_INSTALL_ROOT}"/>
+		</replace>
+		<chmod file="${THIS_PROJECT_ROOT}/build-self-extractor.sh" perm="774"/>
+	</target>
+
+	<target name="SourceCode">
+		<replace file="${THIS_PROJECT_ROOT}/create-installer.xml">
+			<replacefilter token="&lt;!--SourceCode" value=""/>
+			<replacefilter token="SourceCode--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/build.xml">
+			<replacefilter token="&lt;!--SourceCode" value=""/>
+			<replacefilter token="SourceCode--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/antinstall-config.xml">
+			<replacefilter token="&lt;!--SourceCode" value=""/>
+			<replacefilter token="SourceCode--&gt;"  value=""/>
+		</replace>
+	</target>
+
+	<target name="Libraries">
+		<replace file="${THIS_PROJECT_ROOT}/create-installer.xml">
+			<replacefilter token="&lt;!--Libraries" value=""/>
+			<replacefilter token="Libraries--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/build.xml">
+			<replacefilter token="&lt;!--Libraries" value=""/>
+			<replacefilter token="Libraries--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/antinstall-config.xml">
+			<replacefilter token="&lt;!--Libraries" value=""/>
+			<replacefilter token="Libraries--&gt;"  value=""/>
+		</replace>
+	</target>
+
+	<target name="Documentation">
+		<replace file="${THIS_PROJECT_ROOT}/create-installer.xml">
+			<replacefilter token="&lt;!--Documentation" value=""/>
+			<replacefilter token="Documentation--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/build.xml">
+			<replacefilter token="&lt;!--Documentation" value=""/>
+			<replacefilter token="Documentation--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/antinstall-config.xml">
+			<replacefilter token="&lt;!--Documentation" value=""/>
+			<replacefilter token="Documentation--&gt;"  value=""/>
+		</replace>
+	</target>
+
+	<target name="Classes">
+		<replace file="${THIS_PROJECT_ROOT}/create-installer.xml">
+			<replacefilter token="&lt;!--Classes" value=""/>
+			<replacefilter token="Classes--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/build.xml">
+			<replacefilter token="&lt;!--Classes" value=""/>
+			<replacefilter token="Classes--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/antinstall-config.xml">
+			<replacefilter token="&lt;!--Classes" value=""/>
+			<replacefilter token="Classes--&gt;"  value=""/>
+		</replace>
+	</target>
+
+	<target name="Scripts">
+		<replace file="${THIS_PROJECT_ROOT}/create-installer.xml">
+			<replacefilter token="&lt;!--Scripts" value=""/>
+			<replacefilter token="Scripts--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/build.xml">
+			<replacefilter token="&lt;!--Scripts" value=""/>
+			<replacefilter token="Scripts--&gt;"  value=""/>
+		</replace>
+		<replace file="${THIS_PROJECT_ROOT}/antinstall-config.xml">
+			<replacefilter token="&lt;!--Scripts" value=""/>
+			<replacefilter token="Scripts--&gt;"  value=""/>
+		</replace>
+	</target>
+
+	<target name="CreateInstaller">
+		<echo message="Creating the Selfextracting installer"/>
+		<ant antfile="${THIS_PROJECT_ROOT}/create-installer.xml"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/create-installer-template.xml
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/create-installer-template.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/create-installer-template.xml	(revision 18906)
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<!--
+this ant build file can be re-run with the following command if Ant is installer locally
+> ant -buildfile create-installer.xml
+or by running the script @PROJECT_ROOT@/@PROJECT_SHORT_NAME@/build-self-extractor.sh
+-->
+<!--  this file is creates an installer for the Project @PROJECT_NAME@ -->
+<project name="Create @PROJECT_NAME@ Installer"  default="MakeNonExtractor"  basedir=".">
+
+	<path id="taskdef.cp" path="@ANT_INSTALL_ROOT@/lib/ant-installer-ext.jar"/>
+	<taskdef 
+		name="installer" 
+		classname="org.tp23.antinstaller.taskdefs.Installer"
+		classpathref="taskdef.cp"/>
+
+
+		<property name="ANT_INSTALL_ROOT" value="@ANT_INSTALL_ROOT@"/>
+		<property name="PROJECT_NAME"     value="@PROJECT_NAME@"/>
+		<property name="PROJECT_SHORT_NAME"     value="@PROJECT_SHORT_NAME@"/>
+		<property name="PROJECT_ROOT"     value="@PROJECT_ROOT@"/>
+		<property name="PROJECT_SRC"      value="@PROJECT_SRC@"/>
+		<property name="PROJECT_LIB"      value="@PROJECT_LIB@"/>
+		<property name="PROJECT_LIC"      value="@PROJECT_LIC@"/>
+		<property name="PROJECT_BIN"      value="@PROJECT_BIN@"/>
+		<property name="PROJECT_DOC"      value="@PROJECT_DOC@"/>
+		<property name="PROJECT_CLASSES"  value="@PROJECT_CLASSES@"/>
+		
+		<property name="THIS_PROJECT_ROOT"     value="${PROJECT_ROOT}/${PROJECT_SHORT_NAME}"/>
+
+		<!-- This task only needs to run once it can be deleted once the self-extract files exist on the build host  -->
+	<target name="Base">
+			<echo message="Building NonExtractor runnable jar file"/>
+	</target>
+
+
+	<target name="MakeNonExtractor" depends="Base">
+		
+		<installer file="${THIS_PROJECT_ROOT}/${PROJECT_SHORT_NAME}-installer.jar" compress="true"
+				extractType="NonExtractor"
+				installConfig="${THIS_PROJECT_ROOT}/antinstall-config.xml"
+				buildFile="${THIS_PROJECT_ROOT}/build.xml"
+				antInstallLib="${ANT_INSTALL_ROOT}/lib"
+				antLib="${ANT_INSTALL_ROOT}/antlib"
+				validateConfig="true"
+				icons="bluecurve">
+			<zipfileset fullpath="resources/License.txt" file="${PROJECT_LIC}"/>
+			<zipfileset dir="cp" includes="resources/*"/>
+		<!--SourceCode
+			<zipfileset dir="${PROJECT_SRC}" prefix="src">
+				<include name="**/*"/>
+			</zipfileset>
+		SourceCode-->
+		<!--Libraries
+			<zipfileset dir="${PROJECT_LIB}" prefix="lib">
+				<include name="**/*.jar"/>
+			</zipfileset>
+		Libraries-->
+		<!--Documentation
+			<zipfileset dir="${PROJECT_DOC}" prefix="docs">
+				<include name="**/*"/>
+			</zipfileset>
+		Documentation-->
+		<!--Classes
+			<zipfileset dir="${PROJECT_CLASSES}" prefix="classes">
+				<include name="**/*"/>
+			</zipfileset>
+		Classes-->
+		<!--Scripts
+			<zipfileset dir="${PROJECT_BIN}" prefix="bin" >
+				<include name="**/*.sh"/>
+				<include name="**/*.ksh"/>
+				<include name="**/*.csh"/>
+				<include name="**/*.cmd"/>
+				<include name="**/*.bat"/>
+			</zipfileset>
+		Scripts-->
+		</installer>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/runtemplate.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/runtemplate.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/runtemplate.cmd	(revision 18906)
@@ -0,0 +1,56 @@
+@echo off
+
+if  "%JAVA_HOME%" == "" goto nojava
+if  "%ANT_INSTALL_HOME%" == "" goto trydot
+
+goto setclasspath
+
+:trydot
+if EXIST ..\..\lib\ant-installer.jar set ANT_INSTALL_HOME=..\..
+if NOT EXIST ..\..\lib\ant-installer.jar goto noai
+echo ANT_INSTALL_HOME = %ANT_INSTALL_HOME%
+
+:setclasspath
+REM Ant classpath
+set CLASSPATH=%ANT_INSTALL_HOME%\antlib\ant.jar;%ANT_INSTALL_HOME%\antlib\ant-launcher.jar
+
+REM Images classpath
+set CLASSPATH=%CLASSPATH%;.\cp
+set CLASSPATH=%CLASSPATH%;..\..\images\navicons\amaranth
+
+REM XML classpath
+set CLASSPATH=%CLASSPATH%;%ANT_INSTALL_HOME%\lib\xercesImpl.jar;%ANT_INSTALL_HOME%\lib\xml-apis.jar
+
+REM AntInstaller classpath
+set CLASSPATH=%CLASSPATH%;%ANT_INSTALL_HOME%\lib\ant-installer.jar
+set CLASSPATH=%CLASSPATH%;%ANT_INSTALL_HOME%\lib\jgoodies-edited-1_2_2.jar
+
+if "%1" == "text" goto settext
+if "%1" == "swing" goto setswing
+goto setswing
+
+:settext
+set COMMAND=%JAVA_HOME%\bin\java
+set INTERFACE=text
+goto install
+
+:setswing
+set COMMAND=%JAVA_HOME%\bin\javaw
+set INTERFACE=swing
+goto install
+
+:install
+start "Antinstaller" "%COMMAND%" -classpath "%CLASSPATH%"  org.tp23.antinstaller.runtime.ExecInstall %INTERFACE% .
+goto end
+
+:nojava
+echo set JAVA_HOME
+echo you must install java to install this application
+goto end
+
+:noai
+echo set ANT_INSTALL_HOME
+echo you must install AntInstaller to install this application
+goto end
+
+:end
Index: /branches/rk-oran/shared/ant-installer/templates/defaultproject/runtemplate.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/templates/defaultproject/runtemplate.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/templates/defaultproject/runtemplate.sh	(revision 18906)
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+dir=`expr  match "$0" '\(.*\)runtemplate.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      echo changing to $dir
+      cd "$dir" ;
+   fi
+fi
+
+if [ "$ANT_INSTALL_HOME" == "" ] ; then 
+  export ANT_INSTALL_HOME=../..
+fi
+
+if [ ! -f $ANT_INSTALL_HOME/lib/ant-installer.jar ] ; then 
+  echo "set ANT_INSTALL_HOME"
+  exit 1;
+fi
+
+if [ "$JAVA_HOME" = "" ] ; then
+	echo set JAVA_HOME;
+	exit 1;
+fi
+
+
+CLASSPATH=$ANT_INSTALL_HOME/lib/xercesImpl.jar:$ANT_INSTALL_HOME/lib/xml-apis.jar:$ANT_INSTALL_HOME/lib/ant-installer.jar:$ANT_INSTALL_HOME/lib/ai-icons-eclipse.jar
+CLASSPATH=$CLASSPATH:$ANT_INSTALL_HOME/antlib/ant.jar:$ANT_INSTALL_HOME/antlib/ant-launcher.jar
+CLASSPATH=$CLASSPATH:$ANT_INSTALL_HOME/lib/jgoodies-edited-1_2_2.jar
+CLASSPATH=$CLASSPATH:./cp
+CLASSPATH=$CLASSPATH:../../images/navicons/amaranth
+
+COMMAND=$JAVA_HOME/bin/java
+INTERFACE=swing
+if [ "$1" = "text" ] ; then
+	INTERFACE=text;
+fi
+
+$COMMAND -classpath $CLASSPATH  org.tp23.antinstaller.runtime.ExecInstall $INTERFACE .
Index: /branches/rk-oran/shared/ant-installer/windows-icons/installIcons-docs.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/windows-icons/installIcons-docs.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/windows-icons/installIcons-docs.cmd	(revision 18906)
@@ -0,0 +1,3 @@
+@echo off
+REM this batch file exists so that the parameters of this line are NOT quoted
+rundll32 setupapi,InstallHinfSection DefaultInstall 128 @installDir@\windows-icons\installIcons-docs.inf
Index: /branches/rk-oran/shared/ant-installer/windows-icons/installIcons-docs.inf
===================================================================
--- /branches/rk-oran/shared/ant-installer/windows-icons/installIcons-docs.inf	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/windows-icons/installIcons-docs.inf	(revision 18906)
@@ -0,0 +1,11 @@
+[version]
+signature="$chicago$"
+
+[DefaultInstall]
+UpdateInis=Addlink
+
+[AddLink]
+setup.ini, progman.groups,, "group0=AntInstaller"
+setup.ini, group0,, ""AntInstaller""
+setup.ini, group0,, """AntInstaller Docs"",""cmd /c """"@installDir@\web\index.html"""""", ""@installDir@\AntInstaller.ico"",0,"
+setup.ini, group0,, """AntInstaller Wizard"",""cmd /c """"@installDir@\wizard.cmd"""""", ""@installDir@\AntInstaller.ico"",0,"
Index: /branches/rk-oran/shared/ant-installer/wizard.cmd
===================================================================
--- /branches/rk-oran/shared/ant-installer/wizard.cmd	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/wizard.cmd	(revision 18906)
@@ -0,0 +1,19 @@
+@echo off
+
+if  "%JAVA_HOME%" == "" goto nojava
+
+set DIR=%~dp0
+cd %DIR%
+
+cd .\templates\defaultproject
+call runtemplate.cmd %1
+cd ..\..
+goto end
+
+:nojava
+echo set JAVA_HOME
+echo you must install java use the wizard
+pause
+goto end
+
+:end
Index: /branches/rk-oran/shared/ant-installer/wizard.sh
===================================================================
--- /branches/rk-oran/shared/ant-installer/wizard.sh	(revision 18906)
+++ /branches/rk-oran/shared/ant-installer/wizard.sh	(revision 18906)
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+dir=`expr  match "$0" '\(.*\)wizard.sh'`
+#  if it we did not call ./  change to the directory we called
+if [ "$dir" != "./" ] ; then
+   if [ "$dir" != "" ] ;  then
+      echo changing to $dir
+      cd "$dir" ;
+   fi
+fi
+./templates/defaultproject/runtemplate.sh $1
Index: /branches/rk-oran/shared/ant-scripts/init.xml
===================================================================
--- /branches/rk-oran/shared/ant-scripts/init.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-scripts/init.xml	(revision 18906)
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="rk-init">
+
+	<!-- load in static properties from build.properties -->
+	<property file="${rk.name}-build.properties" />
+
+	<!-- CONSTANTS (overridable in build.properties) -->
+
+	<!-- svn root -->
+	<property name="svn.root" value="http://svn.greenstone.org" />
+
+	<!-- default revision and branch path -->
+	<property name="branch.path" value="trunk" />
+	<property name="branch.revision" value="HEAD" />
+	
+	<!-- the minimum version of java which the installer should be run with (this gets used in search4j) -->
+	<property name="java.min.version" value="1.4.0_00"/>
+
+	<!-- create a localised basedir property -->
+	<path id="basedir.path"><pathelement location="${basedir}"/></path>
+	<property name="basedir.local" refid="basedir.path"/>
+
+	<!-- current date and time -->
+	<tstamp>
+		<format property="current.month" pattern="MMM"/>
+		<format property="current.year" pattern="yyyy"/>
+	</tstamp>
+
+	<!-- BUNDLED JAVA INFO -->
+	<!-- the bundled javas are kept in shared/linux/wrapper and shared/windows/wrapper in the repository -->
+	<!-- change this info when the bundled version changes -->
+	<!-- linux -->
+	<property name="linux-java.installer" value="jre_bin"/>
+	<property name="bundled.version.linux-java" value="1.6.0_05"/> <!-- set this to the version number of java in the above archive -->
+	<property name="linux-java.extracted" value="jre"/> <!-- set this to the name of the top level directory in the above archive -->
+	<property name="component.bytesize.linux-java" value="101245987"/> <!-- set this to the size of the extract archive -->
+
+	<!-- windows -->
+	<property name="windows-java.installer" value="jre.exe"/>
+	<property name="bundled.version.windows-java" value="1.6.0_07"/> <!-- set this to the version number of java in the above archive -->
+	<property name="windows-java.extracted" value="jre"/> <!-- set this to the name of the top level directory in the above archive -->
+	<property name="component.bytesize.windows-java" value="75000000"/> <!-- set this to the size of the extract archive -->
+
+	<!-- version numbers of other bundled things -->
+	<property name="bundled.version.imagemagick" value="6.4.3"/>
+	<property name="bundled.version.ghostscript" value="8.63"/>
+	<property name="bundled.version.tomcat" value="5.5.25"/>
+	<property name="bundled.version.ant" value="1.6.5"/>
+	
+	<!-- CLASSPATH -->
+	<path id="project.classpath">
+
+		<!-- our classes -->
+		<fileset dir="${rk.home}">
+			<include name="ant-scripts/tasks/antelope/AntelopeTasks_3.4.2.jar"/>
+			<include name="ant-scripts/tasks/orangevolt/roxes-win32forjava-1.1.1.jar"/>
+			<include name="ant-scripts/tasks/orangevolt/orangevolt-ant-tasks-1.3.8.jar"/>
+			<include name="ant-scripts/tasks/svnant/lib/ganymed.jar"/>
+			<include name="ant-scripts/tasks/svnant/lib/svnClientAdapter.jar"/>
+			<include name="ant-scripts/tasks/svnant/lib/svnant.jar"/>
+			<include name="ant-scripts/tasks/svnant/lib/svnjavahl.jar"/>
+			<include name="ant-scripts/tasks/svnant/lib/svnkit.jar"/>
+			<include name="ant-scripts/tasks/greenstone/anttasks.jar"/>
+			<include name="ant-scripts/tasks/7z-ant/7z.jar"/>
+			<include name="lib/crypt.jar"/>
+			<include name="lib/serializer.jar"/>
+			<include name="lib/xalan.jar"/>
+			<include name="lib/xercesImpl.jar"/>
+			<include name="lib/xml-apis.jar"/>
+			<include name="packages/ant-installer/lib/ant-installer-ext.jar"/>
+			<include name="packages/ant-installer/lib/ant-installer.jar"/>
+		</fileset>
+
+	</path>
+
+	<!-- SELF DEFINED TASKS AND TYPES -->
+	<taskdef name="if" classname="ise.antelope.tasks.IfTask" classpathref="project.classpath"/>
+	<taskdef name="try" classname="ise.antelope.tasks.TryTask" classpathref="project.classpath"/>
+	<taskdef name="math" classname="ise.antelope.tasks.MathTask" classpathref="project.classpath"/>
+	<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="project.classpath"/>
+	<taskdef name="sevenzip" classname="org.apache.tools.ant.SevenZip" classpathref="project.classpath"/>
+	<taskdef name="installer" classname="org.tp23.antinstaller.taskdefs.Installer" classpathref="project.classpath"/>
+	<typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/>
+	<typedef name="dcff" classname="org.greenstone.anttasks.DeleteChunkFromFile" classpathref="project.classpath"/>
+	<typedef name="rsplit" classname="org.greenstone.anttasks.SplitResource" classpathref="project.classpath"/>
+	<typedef name="get-property-value" classname="org.greenstone.anttasks.GetPropertyValue" classpathref="project.classpath"/>
+	
+	<!-- DATES IN DIFFERENT LANGUAGES -->
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="ar.Dates.${current.month}" outputProperty="month.ar"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="ca.Dates.${current.month}" outputProperty="month.ca"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="el.Dates.${current.month}" outputProperty="month.el"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="es.Dates.${current.month}" outputProperty="month.es"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="fr.Dates.${current.month}" outputProperty="month.fr"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="lv.Dates.${current.month}" outputProperty="month.lv"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="mr.Dates.${current.month}" outputProperty="month.mr"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="ro.Dates.${current.month}" outputProperty="month.ro"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="ru.Dates.${current.month}" outputProperty="month.ru"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="vi.Dates.${current.month}" outputProperty="month.vi"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="zh.Dates.${current.month}" outputProperty="month.zh"/>
+	<get-property-value propertiesFile="${rk.home}/lib/dates.properties" propertyName="default.Dates.${current.month}" outputProperty="month.default"/>
+	<!--
+	<echo level="info">Current Date</echo>
+	<echo level="info">ar: ${month.ar} ${current.year}</echo>
+	<echo level="info">ca: ${month.el} ${current.year}</echo>
+	<echo level="info">el: ${month.el} ${current.year}</echo>
+	<echo level="info">es: ${month.es} ${current.year}</echo>
+	<echo level="info">fr: ${month.fr} ${current.year}</echo>
+	<echo level="info">lv: ${month.lv} ${current.year}</echo>
+	<echo level="info">mr: ${month.mr} ${current.year}</echo>
+	<echo level="info">ro: ${month.ro} ${current.year}</echo>
+	<echo level="info">ru: ${month.ru} ${current.year}</echo>
+	<echo level="info">vi: ${month.vi} ${current.year}</echo>
+	<echo level="info">zh: ${month.zh} ${current.year}</echo>
+	<echo level="info">default: (${month.default} ${current.year})</echo>
+	-->
+
+	<!-- CHECKS PRE-CONDITIONS  -->
+	<target name="init">
+
+		<!-- version number -->
+		<if>
+			<bool>
+				<not><isset property="version"/></not>
+			</bool>
+			<fail>Version number not set.
+Check that the file '${rk.name}-build.properties' exists and defines property 'version'.</fail>
+		</if>
+		<property name="app.version" value="${version}"/>
+
+		<!-- execute target code or just show the tree -->
+		<if>
+			<bool>
+				<not><isset property="execute"/></not>
+			</bool>
+			<property name="execute" value="true"/>
+			<else>
+				<if>
+					<bool>
+						<and>
+							<not><equals arg1="${execute}" arg2="true"/></not>
+							<not><equals arg1="${execute}" arg2="false"/></not>
+						</and>
+					</bool>
+					<echo level="error">You have not specified a valid value for execute.</echo>
+					<echo level="error">Valid values are 'true' and 'false'.</echo>
+					<fail>You have not specified a valid value for execute.</fail>
+				</if>
+			</else>
+		</if>
+
+		<!-- show important properties -->
+		<echo level="info">Version (version): ${version}</echo>
+		<echo level="info">Branch Path (branch.path): ${branch.path}</echo>
+		<echo level="info">Current Month (current.month): ${current.month}</echo>
+		<echo level="info">Current Year (current.year): ${current.year}</echo>
+
+	</target>
+
+	<target name="strip-svn-dirs">
+		<delete includeemptydirs="true">
+			<fileset dir="${dir}" defaultexcludes="false">
+				<include name="**/.svn/**" />
+				<include name="**/.svn/" />
+				<include name=".svn/**" />
+				<include name=".svn/" />
+			</fileset>
+		</delete>
+	</target>
+
+	<target name="compile-binary-installer">
+
+		<copy file="${basedir}/installer/antinstall-config.xml" tofile="${basedir}/installer/antinstall-config-binary.xml"/>
+		<dcff file="${basedir}/installer/antinstall-config-binary.xml" startTag=".*&lt;!-- start source release --&gt;.*" endTag=".*&lt;!-- end source release --&gt;.*" />
+		<installer file="${basedir}/installer/Greenstone-${version}-${os.suffix}.jar"
+			compress="true"
+			extractType="NonExtractor"
+			installConfig="${basedir}/installer/antinstall-config-binary.xml"
+			buildFile="${basedir}/installer/build.xml"
+			antInstallLib="${rk.home}/packages/ant-installer/lib"
+			antLib="${rk.home}/packages/ant/lib"
+			validateConfig="true"
+			icons="bluecurve">
+
+			<zipfileset dir="${basedir}/installer/classes" includes="**/*" />
+			<zipfileset dir="${basedir}/components" includes="*.lzma" excludes="source-release.lzma" />
+
+		</installer>
+		
+	</target>
+
+	<target name="compile-minimal-installer">
+	
+		<copy file="${basedir}/installer/antinstall-config.xml" tofile="${basedir}/installer/antinstall-config-minimal.xml"/>
+		<dcff file="${basedir}/installer/antinstall-config-minimal.xml" startTag=".*&lt;!-- start source release --&gt;.*" endTag=".*&lt;!-- end source release --&gt;.*" />
+		<dcff file="${basedir}/installer/antinstall-config-minimal.xml" startTag=".*&lt;!-- start bundled components --&gt;.*" endTag=".*&lt;!-- end bundled components --&gt;.*" />
+		<installer file="${basedir}/installer/Greenstone-${version}-${os.suffix}-minimal.jar"
+			compress="true"
+			extractType="NonExtractor"
+			installConfig="${basedir}/installer/antinstall-config-minimal.xml"
+			buildFile="${basedir}/installer/build.xml"
+			antInstallLib="${rk.home}/packages/ant-installer/lib"
+			antLib="${rk.home}/packages/ant/lib"
+			validateConfig="true"
+			icons="bluecurve">
+			
+			<zipfileset dir="${basedir}/installer/classes" includes="**/*" />
+			<zipfileset dir="${basedir}/components" includes="core.lzma" />
+		</installer>
+		
+	</target>
+
+	<target name="compile-source-installer">
+
+		<copy file="${basedir}/installer/antinstall-config.xml" tofile="${basedir}/installer/antinstall-config-source.xml"/>
+		<dcff file="${basedir}/installer/antinstall-config-source.xml" startTag=".*&lt;!-- start binary release --&gt;.*" endTag=".*&lt;!-- end binary release --&gt;.*" />
+		<installer file="${basedir}/installer/Greenstone-${version}-${os.suffix}-source.jar"
+			compress="true"
+			extractType="NonExtractor"
+			installConfig="${basedir}/installer/antinstall-config-source.xml"
+			buildFile="${basedir}/installer/build.xml"
+			antInstallLib="${rk.home}/packages/ant-installer/lib"
+			antLib="${rk.home}/packages/ant/lib"
+			validateConfig="true"
+			icons="bluecurve">
+			
+			<zipfileset dir="${basedir}/installer/classes" includes="**/*" />
+			<zipfileset dir="${basedir}/components" includes="source-release.lzma" />
+		</installer>
+
+	</target>
+
+	<!-- fork the web distribution to preserve a source release -->
+	<target name="copy-web-to-source">
+		<copy todir="distributions/source"><fileset dir="distributions/web"/></copy>
+	</target>
+
+	<target name="copy-main-installer-files">
+
+		<mkdir dir="${basedir}/installer/classes"/>
+
+		<!-- the installer descriptors -->
+		<copy todir="${basedir}/installer" file="${rk.home}/installer/antinstall-config.xml" overwrite="true" />
+		<copy todir="${basedir}/installer" file="${rk.home}/installer/build.xml" overwrite="true" />
+
+		<!-- the language bundle -->
+		<native2ascii
+			implementation="sun"
+			encoding="UTF-8"
+			src="${rk.home}/language-strings"
+			dest="${basedir}/installer/classes/resources"/>
+
+		<!-- os- and major version-specific files -->
+		<copy todir="${basedir}/installer/classes" overwrite="true">
+			<fileset dir="${rk.home}/linux/installer-classes" erroronmissingdir="false"/>
+			<fileset dir="${rk.home}/windows/installer-classes"  erroronmissingdir="false"/>
+			<fileset dir="${rk.home}/greenstone3/installer-classes" erroronmissingdir="false"/>
+			<fileset dir="${rk.home}/greenstone2/installer-classes" erroronmissingdir="false"/>
+		</copy>
+
+	</target>
+
+	<target name="make-installer-files-concrete">
+
+		<!-- calculate the size of components -->
+		<echo>Calculating the size of some components</echo>
+
+		<!-- core -->
+		<length property="component.bytesize.core-without-jre" mode="all"><fileset file="${basedir}/components/core.comp"/></length>
+		<if><bool><equals arg1="${java.os}" arg2="windows"/></bool>
+			<math result="component.bytesize.core" operand1="${component.bytesize.core-without-jre}" operation="+" operand2="${component.bytesize.windows-java}" datatype="int"/>
+		<else><if><bool><equals arg1="${java.os}" arg2="linux"/></bool>
+			<math result="component.bytesize.core" operand1="${component.bytesize.core-without-jre}" operation="+" operand2="${component.bytesize.linux-java}" datatype="int"/>
+		<else>
+			<property name="component.bytesize.core" value="${component.bytesize.core-without-jre}"/>
+		</else></if></else></if>
+		<math result="component.megabytesize.core" operand1="${component.bytesize.core}" operation="/" operand2="1048576" datatype="int"/>
+		<property name="component.size.core" value="${component.megabytesize.core} MB"/>
+
+		<!-- sourcecode core -->
+		<length property="component.bytesize.sourcecode-core" mode="all"><fileset file="${basedir}/components/sourcecode-core.comp"/></length>
+		<math result="component.megabytesize.sourcecode-core" operand1="${component.bytesize.sourcecode-core}" operation="/" operand2="1048576" datatype="int"/>
+		<property name="component.size.sourcecode-core" value="${component.megabytesize.sourcecode-core} MB"/>
+
+		<!-- sourcecode -->
+		<length property="component.bytesize.sourcecode" mode="all"><fileset file="${basedir}/components/sourcecode.comp"/></length>
+		<math result="component.megabytesize.sourcecode" operand1="${component.bytesize.sourcecode}" operation="/" operand2="1048576" datatype="int"/>
+		<property name="component.size.sourcecode" value="${component.megabytesize.sourcecode} MB"/>
+
+		<!-- imagemagick -->
+		<length property="component.bytesize.imagemagick" mode="all"><fileset file="${basedir}/components/imagemagick.comp"/></length>
+		<math result="component.megabytesize.imagemagick" operand1="${component.bytesize.imagemagick}" operation="/" operand2="1048576" datatype="int"/>
+		<property name="component.size.imagemagick" value="${component.megabytesize.imagemagick} MB"/>
+
+		<!-- ghostscript -->
+		<length property="component.bytesize.ghostscript" mode="all"><fileset file="${basedir}/components/ghostscript.comp"/></length>
+		<math result="component.megabytesize.ghostscript" operand1="${component.bytesize.ghostscript}" operation="/" operand2="1048576" datatype="int"/>
+		<property name="component.size.ghostscript" value="${component.megabytesize.ghostscript} MB"/>
+
+		<!-- tomcat -->
+		<length property="component.bytesize.tomcat" mode="all"><fileset file="${basedir}/components/tomcat.comp"/></length>
+		<math result="component.megabytesize.tomcat" operand1="${component.bytesize.tomcat}" operation="/" operand2="1048576" datatype="int"/>
+		<property name="component.size.tomcat" value="${component.megabytesize.tomcat} MB"/>
+
+		<!-- ant -->
+		<length property="component.bytesize.ant" mode="all"><fileset file="${basedir}/components/ant.comp"/></length>
+		<math result="component.megabytesize.ant" operand1="${component.bytesize.ant}" operation="/" operand2="1048576" datatype="int"/>
+		<property name="component.size.ant" value="${component.megabytesize.ant} MB"/>
+		
+		<!-- put the concrete values of things in the config -->
+		<rsr>
+			<fileset dir="${basedir}/installer" includes="*.xml"/>
+			<job pattern="@version@" replacement="${version}"/>
+			<job pattern="@component.size.core@" replacement="${component.size.core}"/>
+			<job pattern="@component.size.sourcecode-core@" replacement="${component.size.sourcecode-core}"/>
+			<job pattern="@component.size.sourcecode@" replacement="${component.size.sourcecode}"/>
+			<job pattern="@component.size.tomcat@" replacement="${component.size.tomcat}"/>
+			<job pattern="@component.size.ant@" replacement="${component.size.ant}"/>
+			<job pattern="@component.size.imagemagick@" replacement="${component.size.imagemagick}"/>
+			<job pattern="@component.size.ghostscript@" replacement="${component.size.ghostscript}"/>
+			<job pattern="@java.min.version@" replacement="${java.min.version}"/>
+			<job pattern="@windows-java.extracted@" replacement="${windows-java.extracted}"/>
+			<job pattern="@linux-java.extracted@" replacement="${linux-java.extracted}"/>
+		</rsr>
+
+		<!-- put the concrete values of things in the text -->
+		<rsr>
+			<fileset dir="${basedir}/installer/classes/resources" includes="*.properties"/>
+			<job pattern="@version@" replacement="${version}"/>
+			<job pattern="@version.major@" replacement="${version.major}"/>
+			<job pattern="@java.min.version@" replacement="${java.min.version}"/>
+			<job pattern="@bundled.version.imagemagick@" replacement="${bundled.version.imagemagick}"/>
+			<job pattern="@bundled.version.ghostscript@" replacement="${bundled.version.ghostscript}"/>
+			<job pattern="@bundled.version.tomcat@" replacement="${bundled.version.tomcat}"/>
+			<job pattern="@bundled.version.ant@" replacement="${bundled.version.ant}"/>
+			<job pattern="@bundled.version.windows-java@" replacement="${bundled.version.windows-java}"/>
+			<job pattern="@bundled.version.linux-java@" replacement="${bundled.version.linux-java}"/>
+		</rsr>
+
+	</target>
+
+	<!-- shared target to compile the uninstaller -->
+	<target name="compile-uninstaller">
+		<echo>Compiling Uninstaller</echo>
+
+		<!-- create working build directory -->
+		<mkdir dir="${basedir}/compiled/uninstaller/build/resources" />
+
+		<!-- copile to build -->
+		<javac
+			srcdir="${rk.home}/uninstaller"
+			destdir="${basedir}/compiled/uninstaller/build" />
+
+		<!-- copy language bundle into place -->
+		<native2ascii
+			implementation="sun"
+			src="${rk.home}/language-strings"
+			dest="${basedir}/compiled/uninstaller/build/resources"/>
+
+		<!-- jar it all up -->
+		<jar
+			destfile="${basedir}/compiled/uninstaller/uninst.jar"
+			manifest="${rk.home}/uninstaller/manifest.mf"
+			basedir="${basedir}/compiled/uninstaller/build" />
+
+	</target>
+
+	<!-- copy the uninstaller from the compiled directory to web distribution -->
+	<target name="insert-uninstaller">
+		<copy file="compiled/uninstaller/uninst.jar" todir="distributions/web" />
+		<copy file="${rk.home}/uninstaller/Uninstall.${script-format}" todir="distributions/web" />
+	</target>
+
+	<!-- create the zipped up binary release from the web distribution -->
+	<target name="compress-zipped-binary-release">
+		<mkdir dir="products"/>
+		<if>
+			<bool><equals arg1="zip" arg2="${format}"/></bool>
+			<zip destfile="products/Greenstone-${version}-${os.suffix}-binary.zip" basedir="distributions" includes="Greenstone-${version}-${os.suffix}-binary/**/*" compress="true"/>
+			<else>
+				<exec dir="distributions" executable="tar">
+					<arg line="-czf ../products/Greenstone-${version}-${os.suffix}-binary.tar.gz Greenstone-${version}-${os.suffix}-binary"/>
+				</exec>
+			</else>
+		</if>
+	</target>
+
+	<!-- unzip windows perl into bin/windows of the given gsdl or gs2build -->
+	<target name="insert-windows-perl">
+		<mkdir dir="${gsdl.basedir}/bin/windows"/>
+		<delete dir="${gsdl.basedir}/bin/windows/perl"/>
+		<unzip src="${rk.home}/windows/perl.zip" dest="${gsdl.basedir}/bin/windows"/>
+	</target>
+
+
+</project>
Index: /branches/rk-oran/shared/ant-scripts/operations-on-gli.xml
===================================================================
--- /branches/rk-oran/shared/ant-scripts/operations-on-gli.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-scripts/operations-on-gli.xml	(revision 18906)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="operations-on-gli">
+
+	<target name="gli-set-version-numbers">
+
+			<!-- DICTIOANRY FILES (AboutDialog.Date) -->
+			<echo level="info">Changing AboutDialog.Date in all dictionaries</echo>
+
+			<rsr file="${glibasedir}/classes/dictionary_ar.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.ar} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_ca.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.ca} de ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_el.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.el} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_es.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.es} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_fr.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.fr} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_lv.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.lv} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_mr.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.mr} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_ro.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.ro} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_ru.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.ru} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_vi.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.vi} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary_zh.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.zh} ${current.year})" />
+			<rsr file="${glibasedir}/classes/dictionary.properties" pattern="AboutDialog.Date:.*" replacement="AboutDialog.Date:(${month.default} ${current.year})" />
+
+			<!-- GLI GATHERER -->
+			<echo level="info">Changing version number in gli Gatherer</echo>
+			<rsr file="${glibasedir}/src/org/greenstone/gatherer/Gatherer.java" pattern="^(.*)String\s*PROGRAM_VERSION\s*=\s*&quot;(.*)&quot;" replacement="$1String PROGRAM_VERSION = &quot;${version}&quot;"/>
+
+			<!-- CONFIG XML FILES -->
+			<echo level="info">Changing configuration version in classes/xml/config.xml</echo>
+			<rsr file="${glibasedir}/classes/xml/config.xml" pattern="^(\s*&lt;Configuration.* version=&quot;)[^&quot;]*(&quot;.*&gt;)" replacement="$1${version}$2"/>
+
+			<echo level="info">Changing configuration version in gli/classes/xml/configRemote.xml</echo>
+			<rsr file="${glibasedir}/classes/xml/configRemote.xml" pattern="^(\s*&lt;Configuration.* version=&quot;)[^&quot;]*(&quot;.*&gt;)" replacement="$1${version}$2"/>
+
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/ant-tasks/antelope/ChangeLog.txt
===================================================================
--- /branches/rk-oran/shared/ant-tasks/antelope/ChangeLog.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/antelope/ChangeLog.txt	(revision 18906)
@@ -0,0 +1,348 @@
+Antelope Change Log
+Version: @buildnum@
+
+3.4.0:
+o updated for Ant 1.7.
+o finally, <import> is fully supported
+o targets are now sorted in edit mode.
+
+3.2.10:
+o fixed Trace so it works more or less correctly.
+o removed use of the Constant Interface Anti-pattern.
+o rearranged packaging of tasks to better organize typdefs.
+
+3.2.9:
+Oct 2005
+o added Hostname, Split, Repeat, FileUtil, and StringUtil tasks.
+o some general cleanup.
+
+3.2.6:
+11 Jun 2005
+o added Grep, Suite, and TestCase Ant tasks.
+o updated antlib.xml and antelope.taskdefs with missing typedefs
+
+3.2.2:
+10 Apr 2005
+o various minor updates.
+o fixed build files, in particular the build-src.xml file so that all the source, images, docs, etc, is actually included.
+
+3.2.0:
+Looks like I missed a few updates to this file...
+23 Dec 2004
+o added ability to call the "implicit" target explicitly.  The implicit target is the anonymous target that Ant uses to hold top-level tasks like <property> and <import>. Previously, the only way to run the implicit target was to run an explicit target, so Antelope was unable to rerun the implicit target for build files that did not have an explicit target. The button labeled "_implicit_" will run the implicit target.  Note that in multi-target mode, the "_implicit_" button does not show, the implicit target will (as usual) be ran before other targets are executed.
+o Updated the launcher so the run.xml file to start Antelope is no longer required. Just "java -jar Antelope.jar" will start Antelope.
+o Fixed several other minor bugs, but exactly what they were escapes me at the moment.
+
+3.1.10:
+29 Aug 2004
+o Fixed error in StopWatchTask that incorrectly showed total time for
+elapsed time. (Thanks to Wolf Schlegel for pointing this out.)
+o I've used 'enum' as a variable name for an Enumeration for years, but now
+Sun has decided that is a key word, so I've replaced all 'enum' with 'en'.
+(Thanks to Dennis Hofs for pointing this out.)
+o Fixed issue #21, silently ignore property files not found when the build
+file is loaded.
+o Fixed issue #22, caret position is restored properly when build file is
+saved.
+o Fixed issue #24, clicking on "Trace" button automatically selects the
+"Output" tab.
+
+
+3.1.9:
+29 July 2004
+o fix for issue #20, imported targets now have buttons.
+
+3.1.8:
+23 May 2004
+o Completed issue #12, added 'tail' to output window in app.
+o Completed issue #9, fixed NPE on trace target with non-existant target in antcall.
+
+3.1.7:
+19 May 2004
+o Completed issue #13, added line number display to app.
+o Completed issue #14, added option to not sort the target buttons alphabetically.
+o Completed issue #15, added support for native look and feel to app.
+o Completed issue #16, added support for wheel mouse in edit window.
+o Completed issue #9, backward compatibility with Ant 1.5.x.
+
+3.1.6:
+5 May 2004
+o Fixed a bug in the run.xml file, it was looking for a non-existant 'lib' directory in the classpath.
+o Fixed a bug that caused the Antelope plugin to delete Ant when the plugin was deleted from jEdit.
+
+
+3.1.5:
+o Fixed a number of bugs that broke backwards compatibility with Ant 1.5.x. Antelope should now work well with Ant 1.5.0 and later. Note that Ant 1.4.x and earlier are no longer supported.
+
+3.1.4:
+o Added ability to assign a jEdit shortcut to rerun the last ran target.
+o Fixed bug in auto-refresh in multiple target mode.
+
+3.1.3:
+12 Apr 2004
+o Fixed the threading for running the default target from a jEdit shortcut.
+
+3.1.2:
+9 Apr 2004
+o Fixed a bug introduced in 3.1.0 that caused a NPE on an fresh install of Antelope as a jEdit plugin. I had added some icons to the button panel, but forgot that the default settings wouldn't be read unless there was a previously opened build file, which isn't the case on a new install.
+o The default target is now shown with a green color text.
+o Running the default target can be added as a short cut in jEdit. There's something a bit weird about how this works, no output is displayed until the target is complete, so it looks like nothing is happening, then all of a sudden the entire output is shown. Coincidentally, this specific feature was requested in e-mail yesterday.
+o Added some new icons to the Edit tree. Private targets have gray target icons, the default target is green, public targets are black target icons. Imported (via the <import> task) are the same colors, except bulls eye on the targets is red.
+
+3.1.0:
+30 Mar 2004
+o added reload button to control panel.
+o added "About" tab to propery dialog.
+o changed text to icons on all buttons in conrol panel.
+o updated build file to make building the docs while disconnected easier.
+
+3.0.7:
+o Changed the preferences again. The custom preferences are now used on all platforms and all jvm versions, but the custom preferences no longer are the system default preferences. This means if you ran version 3.0.6 (and 3.0.6 only), you will loose any stored settings, but all settings from any previous version of Antelope are available and will be use. I never felt comfortable about doing that anyway. The point of implementing the custom preferences was to get around an annoying bug in the Unix/Linux implementation of java.util.prefs. If you are still running with a jvm that has that bug (see bugs 4868444 and 4751177 at java.sun.com) and want to get rid of all the annoying messages, add this to your command line when starting Antelope:
+
+-Djava.util.prefs.PreferencesFactory=ise.library.UserPreferences
+
+This will install Antelope's custom preferences handler as the default system preferences handler.
+
+o Added popup in "Edit" mode to property and loadproperties tasks to allow opening of a file designated by the "file" or "srcfile" attributes, respectively, in the editor.
+
+o Added auto-reload if property files changed. Property files are those files loaded either by the <property> task with a "file" attribute or by the <loadproperties> task. If the property files have changed since the build file was loaded, the build file will be reloaded, which in turn causes the property files to be reloaded. Note that this reload does not depend on the auto-reload option being checked, it happens regardless.
+
+3.0.6:
+24 Mar 2004:
+o More updates to the dependency tree code and the entity includes.
+o Changed the preferences handling (see the entry dated 22 Jan 2004 below) so that the custom preferences factory is only activated on non-Windows platforms with jvm's earlier than version 1.5. This means that your settings may disappear -- they are not gone, just not readable. If you need to continue to use the custom preferences, start Antelope with this setting on the command line:
+-Djava.util.prefs.PreferencesFactory=ise.library.UserPreferencesFactory
+Hopefully this won't change again.
+
+3.0.5:
+22 Mar 2004:
+o Updates to the dependency tree code.
+o Fixed a bug with included xml (using xml entity includes). The targets of included xml would show up as buttons in "Run" mode, but not in the tree in "Edit" mode. The targets are now in the Edit tree, and the dependency tree works with these targets also.
+o Added some nice icons to the edit tree to make it easier to pick out imported targets and projects.
+
+3.0.4:
+21 Mar 2004:
+o Fixed a bunch of compiler warnings about deprecated methods. Several deprecated methods were not fixed as they would break Ant 1.5 compatibility.
+o Adjusted the "Please wait loading Ant" code as it would occasionally hang in jEdit. It still hangs occassionally, it appears to be due to a classloader issue with other plugins loading an xml parser ahead of Ant's parser. Jane might be the culprit.
+o Right click on a target in "Edit" mode will show a popup of the dependency tree for that target. Clicking a target in the dependency tree moves the cursor to that target.
+
+3.0.3:
+15 Mar 2004:
+o showing 'private' targets in italics in all modes modes. Targets are considered 'private' if:
+   1. the target name starts with -
+   2. the target does not have a description
+   3. there is a . anywhere in the target name
+
+3.0.2:
+23 Feb 2004
+o changed default for showing targets to "Show all targets".
+o fixed bug in setting for auto-reload of build file. Now auto-reload is the default, which it should have been all along but wasn't.
+
+21 Feb 2004
+o added popup to properties dialog so that right clicking (option clicking) on any of the tables shows the cell value in a scrollable text area. This makes it easier to read and copy long values.
+
+
+3.0.1:
+15 Feb 2004
+o Inadvertently dropped the Main-Class attribute from the manifest, so the -jar option didn't work.
+
+
+26 Jan 2004:
+o Put Antelope back on jEdit's "Plugins" menu. It had inadvertently been removed in the last release.
+
+o Now it is much easier to set up Ant with Antelope and jEdit. This isn't an issue with Antelope as an application as Ant is used to start the application. As a plugin, Antelope looks for Ant like this:
+1. check if jEdit loaded ant.jar. This would happen if ant.jar is in the $user.home/.jedit/jars directory.
+2. look for ant.jar in the classpath. If found, assume any other jars needed for Ant are already in the classpath.
+3. check Antelope's preferences for ANT_HOME
+4. check for a System property named ANT_HOME
+5. check for an environment variable named ANT_HOME
+6. ask the user, then store their choice in Antelope's preferences
+The preferred method is to set an environment variable for ANT_HOME, this is also recommended by the Ant manual when installing Ant.
+
+22 Jan 2004:
+o Replaced the default Java Preferences with a custom preferences eliminates the annoying error messages produced on several versions of Linux due to several bugs ( at least bugs 4868444 and 4751177, there may be others) in Sun's implementation of preferences on that platform. You might want to take notice of a couptle of things: First, the new custom preferences are used on all platforms, not just Linux. Second, previously stored preferences are not converted to the new system. If you absolutely must use the old preferences, start Antelope with this setting on the command line:
+
+-Djava.util.prefs.PreferencesFactory=java.util.prefs.FileSystemPreferences
+
+o Set default for auto reload of build file to 'on', that is, do automatically reload the build file. Of course, this is a saved setting, so you can set Antelope to not load your build file. Note that for the new Ant 1.6 <import> task, this setting applies to all imported build files as well.
+
+o Fixed several thread issues with the auto reload with regards to how it interacts with the performance listener and the button panel.
+
+o Adjusted the performance listener to work correctly when running in multiple target mode. Previously, only statistics for the last target were displayed, now it accumulates statistics for all targets.
+
+o Added Antelope version number to the Properties/Description tab. This will make it easier for users of the jEdit plugin to verify which version of Antelope they are using.
+
+o Updates for Ant 1.6. Antelope now works well with all Ant versions 1.5 and later. No regression testing has been done with Ant versions older than 1.5. For Ant 1.6, the new <include> task is support as are top level tasks (that is, tasks that are not in a target).
+
+o Fixed the progress bar, bug 877996. This was broke in version 2.75, which was the first release to support Ant 1.6. Changes in the Ant API made the progress not work quite right. Now it works correctly with Ant 1.5.x and Ant 1.6. Also, the progress bar now shows the name of the targe that is running instead of the percentage. This seems more useful, especially as the progress bar itself gives a good visual indication of the progress.
+
+o Made a number of small fixes and code refactorings that result in cleaner code and somewhat faster execution. (Note: the sometimes slow start up of Antelope is actually due to Ant, initially loading a project can take as long as 10 seconds on an older machine.)
+
+23 Oct 2003:
+o Fixed all open bugs:
+740496	correct taskdef
+786439	Trouble with the xml logger of Ant and the break task
+818781	dtd relative folder
+820814	antelope shows tasks with empty descriptions.
+827162	NullPointer Exception
+827914	ant.version property not set on Windows
+o Added option to automatically reload build file prior to running a target.
+
+27 Sep 2003:
+o Updated tasks to work with Ant 1.6.
+o Update plugin code to work with jEdit 4.2.
+o Removed dependency on CommonControls.jar for plugin.
+o Refactored build files.
+
+15 May 2003:
+o Added run.bat and run.sh scripts to make starting stand-alone app easier.
+o Fixed bug #734867, "Limit Ant Task doesn't fail correctly".
+o Added <bool> support to Assert task.
+o Added code to Stopwatch task so that the elapsed or total time is stored in a property of the same name as the stopwatch.
+o Added IsGreaterThan and IsLessThan conditions to If task. Assert task now can use these same conditions. See testcases/limittest.xml for an example.
+o Went to the new Matrix movie!
+o Antelope can now parse files that use external entities. Nice!
+
+12 Mar 2003, release version 2.42:
+o Added ability to run multiple targets. This is so handy, I don't know why I didn't implement it sooner.
+o Updated build.xml, installPlugin.xml, and run.xml to work much better. Now all distribution files will "run right out of the box", and use the Antelope tasks, too!
+
+10 Mar 2003
+o Added find and replace to stand-alone.
+o Modified Try task to be able to store exception message and/or stack trace in a property.
+
+9 Mar 2003
+o A few files were inadvertently left out of the 2.38 build and the start up run.xml file has been cleaned up a bit. The main build file has also been cleaned up, so external dependencies are not required to do a basic build.
+o Removed the "right click for options" tooltip as right clicking does nothing.
+
+6 Mar 2003, released version 2.38:
+I'm behind on this, so the details aren't as good as they should be.
+o Fixed a bug in the editor where switching between build files would cause the old build file to be appended to the new one.
+o Fixed warning messages about invalid build/xml files.
+o You can now browse any xml file (well, many xml files) via the "Edit" tree. There is no support for xml files with dtds, which typically build files do not have.
+o updated "Edit" mode to show a tree of the build file so navigating the file is easier.
+o added "back" and "next" buttons in "Edit" mode. These work like the back and next buttons in a web browser.
+o Added some new tasks. The "call" task is particularly useful.
+o Source distribution now includes the unit tests for the extra Ant tasks.
+o Updated run.xml so that tools.jar is automatically included in the claspath if it can be found.
+o Added some public API for running as a jEdit plugin so that other plugins can easily interact with Antelope for running targets.
+
+21 Dec 2002
+o the editor is really nice now. The syntax highlighting is configurable, as is the font and many editor options. Documentation is lagging a bit on this, but hopefully the configuration is obvious enough.
+o added undo, redo, cut, copy, and paste to the editor.
+o updated the Math task to use any of the methods in java.lang.Math.
+o removed the ssh and scp tasks to their own distribution package.
+o changed the 'Options' popup to be a regular dialog with an 'Apply' button.
+o refactored the property and settings persistence, this works much better now with all properties being saved and restored correctly.
+o added a StopWatch task for timing of build events.
+o added "startswith" and "endswith" boolean conditions to the "If" task.
+
+6 Dec 2002
+o replaced Antelope editor with an older, MIT licensed version of the jEdit text editor. This makes syntax highlighting configurable and fast.
+o replaced "Format" menu with "Options" menu to support configuration of syntax highlighting and editor options.
+
+24 Nov 2002
+o This is the last 1.xx version. There are a few known bugs that are being pushed to version 2.x for resolution. Version 2 will provide a better editor, a GUI to create build files, and other items related to creating and editing build files.
+o Added input handler so the Ant 'input' task can be used from within Antelope.
+o Added progress bar to show percent complete for running target. This is useful for long running targets. The percent is calculated from the total number of tasks that a target will run and makes no assumptions about how long a particular task will take. It could be that there are only two tasks, but the first one takes 2 seconds and the second takes 10 minutes, the progress will show at 50% until the second one is done.
+o Added ability to gather performance statistics for running target. This should be useful for optimization of build files.
+o Build file syntax highlighting is very slow in app mode, added menu item under Format menu to turn the syntax colorization on or off. Default is off, which makes for much faster performance. Colorization is a bit flaky when changed from on to off or vice versa.
+
+8 Nov 2002
+o Added If, Try, and Variable task.
+o Now works in multiple views in jEdit.
+o rewrote docs in docbook format.
+o improved AntLogger.
+o rearranged packages for tasks to be in a separate package.
+o tasks available in separate jar file
+o added option for display of targets starting with a dash
+
+
+12 Oct 2002
+o Added Assert task.
+o Fixed several bugs in AntLogger.
+o Improved tracing ability.
+o Optimized Antelope editor to make colorizing faster, but this is still really slow on all but the smallest build files.
+o Added Ant coding standards.
+o Updated documentation.
+
+
+23 Sep 2002
+o Adjusted AntProject.java to be able to work correctly when using Antelope as a plugin. The jEdit classloader was preventing certain property files in ant.jar from being accessible to AntProject.java.
+
+o Moved the config and docs directories inside the src directory. The build file copies them to the proper config and docs directories for distribution. This lets the build file adjust the build number automatically within the config and doc files, which keeps everything at the same displayed build number, and keeps all the source files in the src directory.
+
+22 Sep 2002
+o added "User" tab to properties. This tab allows the user to add properties. These properties are treated as if they were passed to Ant on the command line. These properties are persistent for the build file, so each time the build file is opened, the user properties will be restored.
+
+o added "New" menu item to stand-alone app. A very basic build file is created, the user needs to fill in the details.
+
+14 Sep 2002
+o added 'recent files' menus to both stand-alone and plugin. This will track the last 10 opened build files.
+o updated tracing to trace 'ant' tasks.
+o removed references to the classes to link to the ProjectViewer plugin. The
+source for these classes is still included, but they are not compiled by the default 'compile' target in the supplied build file.
+
+8 Sep 2002
+o Fixed the storage of the settings so they actually work correctly. Option settings are stored per build file, plus font settings for the stand-alone and the last build file open are stored and used on application startup.
+o Changed the "Edit" button to be a "mode" like the trace action. Now when the Edit button is clicked, the panel background turns green to indicate 'edit mode', the build file is loaded for editing (either in the "Edit" tab in the stand-alone app or in a jEdit buffer as a plugin), and clicking on a target button will scroll the build file to the target definition.
+o Fixed the Trace button to select the "Output" tab when clicked in stand-alone.
+
+6 Sep 2002
+O Fixed the abstraction mentioned below so that AntelopePanel and AntelopeOptions really don't depend on compiling AntelopePluginPanel.
+
+5 Sep 2002
+o Major rearrangement of package layout.
+o Abstracted the interaction between AntelopePluginPanel and AntelopePanel so that AntelopePanel no longer depends on compiling AntelopePluginPanel (which depends on ProjectViewer), so the stand-alone application can be compiled without any dependency on jEdit or jEdit plugins.
+o Added KappaLayout.jar to the distribution zip. This was supposed to be there all along, but has been missing until now.
+o Adjusted the build file to include a few new targets for compiling the stand-alone, the plugin, and building the distribution zip file.
+
+3 Sep 2002
+o Updated tracing to include the actual values of properties and references.
+o Added font dialog to stand-alone.
+o Made 'Properties' dialog non-modal.
+o Fixed a bug where if the build file contained an error, all the buttons would disappear. Now at least the non-target buttons will stay visible and a dialog with the build file error will explain the problem.
+o Updated the build file to make the zip target better -- the readme, antelope.jar and kappalayout.jar are at the top level, the directory structure for the development files are in directories.
+
+2 Sep 2002
+Made a number of modifications to the stand-alone application:
+o Added ability to save output to a file.
+o Made output area editable.
+o Added ability to edit the build file.
+o Added ability to save modifications to the build file.
+o Added color coding to the build file editor.
+o Added help and about menu items.
+o Added help viewer.
+o Added icons to the menu items.
+
+1 Sep 2002
+o Added 'Trace' button to show exactly what targets and tasks will be executed when a particular target runs. This is useful for tracking down the execution flow in convoluted build files.
+
+29 Aug 2002
+o included a file inadvertently left out of the last distribution. This file lets Antelope run without ProjectViewer when run as a jEdit plugin.
+
+o Did some optimization in AntelopePanel. It can take as long as 8 - 10 seconds to change build files, it turns out this is in Ant's Project class, so there's not much I can do about it (at least, not without joining the Ant project...)
+
+18 Aug 2002
+o Added code to integrate Antelope with ProjectViewer plugin in jEdit. This integration requires the bleeding edge ProjectViewer from CVS. Right click on your build file in ProjectViewer and set it as your build file, and Antelope will be notified and adjust itself accordingly. Antelope will run without ProjectViewer, but won't necessarily compile without it.
+
+17 Aug 2002
+o Fixed a problem with option settings not being restored. They were being saved, but the controls were not being set with the stored values on start up. Settings are stored per build file, so each time a build file is opened, the settings for the particular file are set.
+
+o Major modifications to AntLogger. This is now very useful outside of Antelope and has several settings that can be adjusted either via Ant command line options or build file properties. See the documentation for details.
+
+o Added an "Edit" button when running as a jEdit plugin. This will open the current build file in jEdit for editing.
+
+
+14 Aug 2002
+o Fixed a problem with capturing output from javac when running as a plugin. jEdit diddles with the System print streams, which meant I had to also to be able to catch the output. This caused significant changes to AntLogger, which now only writes to java.util.logging.Logger, there is no more print stream output. Output to a console window is via a java.util.logging.ConsoleHandler.
+
+o Added color coding of output when running as a plugin.
+
+o Fixed a potention null pointer exception when trying to view the properties. (Why does Java hava a null pointer exception, but not pointers?)
+
+o Removed the option panel from jEdit's global plugin properties. There was a problem with trying to maintain two different panels (one on the global menu, one for the options button), so I opted for using the Options button only. This makes the code easier to maintain for stand-alone use.
+
+o Cleaned up some dead methods and old comments.
+
+o Converted all files to contain the same license. Antelope is licensed under an Apache license.
Index: /branches/rk-oran/shared/ant-tasks/antelope/install_tasks.txt
===================================================================
--- /branches/rk-oran/shared/ant-tasks/antelope/install_tasks.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/antelope/install_tasks.txt	(revision 18906)
@@ -0,0 +1,15 @@
+Antelope Tasks Installation:
+
+Make sure Ant is installed correctly. Locate the directory where Ant is 
+installed. Locate a directory named "lib" in that directory.
+
+Unzip the distribution file. It will create a directory named 
+AntelopeTasks_3.4.2.
+
+Change to the AntelopeTasks_3.4.2 directory. In this directory will be a 
+jar file named AntelopeTasks_3.4.2.jar.
+
+Copy the jar file to Ant's "lib" directory. 
+
+
+
Index: /branches/rk-oran/shared/ant-tasks/antelope/license.txt
===================================================================
--- /branches/rk-oran/shared/ant-tasks/antelope/license.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/antelope/license.txt	(revision 18906)
@@ -0,0 +1,52 @@
+license.txt
+
+This license pertains to all files in the Antelope distribution except the images, 
+which are from Sun's Java Look and Feel Design Guidelines and are licensed according 
+to those guidelines.
+
+
+Based on the Apache Software License, Version 1.1
+
+Copyright (c) 2002 Dale Anson.  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 Dale Anson,
+       danson@users.sourceforge.net."
+   Alternately, this acknowlegement may appear in the software itself,
+   if and wherever such third-party acknowlegements normally appear.
+
+4. The name "Antelope" must not be used to endorse or promote products derived
+   from this software without prior written permission. For written
+   permission, please contact danson@users.sourceforge.net.
+
+5. Products derived from this software may not be called "Antelope"
+   nor may "Antelope" appear in their names without prior written
+   permission of Dale Anson.
+
+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 DALE ANSON OR ANY PROJECT
+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.
+
+
Index: /branches/rk-oran/shared/ant-tasks/svnant/GANYMED-LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/GANYMED-LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/GANYMED-LICENSE	(revision 18906)
@@ -0,0 +1,57 @@
+Copyright (c) 2005 - 2006 Swiss Federal Institute of Technology (ETH Zurich),
+  Department of Computer Science (http://www.inf.ethz.ch),
+  Christian Plattner. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+a.) Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+b.) 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.
+c.) Neither the name of ETH Zurich nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS 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 COPYRIGHT OWNER OR 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.
+
+
+The Java implementations of the AES, Blowfish and 3DES ciphers have been
+taken (and slightly modified) from the cryptography package released by
+"The Legion Of The Bouncy Castle".
+
+Their license states the following:
+
+Copyright (c) 2000 - 2004 The Legion Of The Bouncy Castle
+(http://www.bouncycastle.org)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. 
+
Index: /branches/rk-oran/shared/ant-tasks/svnant/SVNKit-LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/SVNKit-LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/SVNKit-LICENSE	(revision 18906)
@@ -0,0 +1,47 @@
+The TMate License
+
+This license applies to all portions of TMate SVNKit library, which 
+are not externally-maintained libraries (e.g. Ganymed SSH library).
+
+All the source code and compiled classes in package org.trigris.subversion.javahl
+except SvnClient class are covered by the license in JAVAHL-LICENSE file
+
+Copyright (c) 2004-2006 TMate Software. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, 
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+      this list of conditions and the following disclaimer.
+      
+    * 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.
+      
+    * Redistributions in any form must be accompanied by information on how to 
+      obtain complete source code for the software that uses SVNKit and any 
+      accompanying software that uses the software that uses SVNKit. The source 
+      code must either be included in the distribution or be available for no 
+      more than the cost of distribution plus a nominal fee, and must be freely 
+      redistributable under reasonable conditions. For an executable file, complete 
+      source code means the source code for all modules it contains. It does not 
+      include source code for modules or files that typically accompany the major 
+      components of the operating system on which the executable file runs.
+      
+    * Redistribution in any form without redistributing source code for software 
+      that uses SVNKit is possible only when such redistribution is explictly permitted 
+      by TMate Software. Please, contact TMate Software at support@svnkit.com to 
+      get such permission.
+
+THIS SOFTWARE IS PROVIDED BY TMATE SOFTWARE ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE 
+DISCLAIMED. 
+
+IN NO EVENT SHALL TMATE SOFTWARE 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.
Index: /branches/rk-oran/shared/ant-tasks/svnant/build.properties
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/build.properties	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/build.properties	(revision 18906)
@@ -0,0 +1,17 @@
+# -----------------------------------------------------------------------------
+# build.properties
+# This file is referenced by the sample build.xml file.
+# -----------------------------------------------------------------------------
+
+svnant.version=1.2.0-RC1
+
+# -----------------------------------------------------------------------------
+# all jar needed
+# -----------------------------------------------------------------------------
+lib.dir=lib
+
+svnant.latest.url=http://subclipse.tigris.org/svn/subclipse/trunk/svnant/
+svnant.this.url=http://subclipse.tigris.org/svn/subclipse/tags/svnant/${svnant.version}/
+
+svnant.repository.user=guest
+svnant.repository.passwd=""
Index: /branches/rk-oran/shared/ant-tasks/svnant/build.xml
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/build.xml	(revision 18906)
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!-- Sample build file used to retrieve svnant's sources -->
+<project name="svn-test" basedir="." default="checkoutThis">
+  
+  <!--  all properties are in build.properties --> 
+  <property file="build.properties" /> 
+
+  <!-- path to the svnant libraries. Usually they will be located in ANT_HOME/lib -->
+  <path id="svnant.classpath">
+    <fileset dir="${lib.dir}">
+      <include name="**/*.jar"/>
+    </fileset>
+  </path>  
+  
+  <!-- load the svn task -->
+  <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.classpath" />
+  
+  <target name="clean">
+    <delete dir="src_latest"/>
+    <delete dir="src_${svnant.version}"/>  
+  </target>
+
+  <target name="checkoutLatest">
+    <svn username="${svnant.repository.user}" password="${svnant.repository.passwd}">
+      <checkout url="${svnant.latest.url}" revision="HEAD" destPath="src_latest" />
+    </svn>
+  </target>
+
+  <target name="checkoutThis">
+    <svn username="${svnant.repository.user}" password="${svnant.repository.passwd}">
+      <checkout url="${svnant.this.url}" revision="HEAD" destPath="src_${svnant.version}" />
+    </svn>
+  </target>
+
+</project>
Index: /branches/rk-oran/shared/ant-tasks/svnant/changelog.txt
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/changelog.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/changelog.txt	(revision 18906)
@@ -0,0 +1,23 @@
+* 1.2-rc1
+- Built against svnClientAdapter r3957, Subversion 1.5, SVNKit 1.20 beta4
+
+* 1.1-rc3
+- Built against svnClientAdapter r2847, Subversion 1.4.2 and SVNKit 1.1.0
+- renamed references to JavaSVN (former name of SVNKit)
+- renamed the svn task attribute "javasvn" to "svnkit"
+
+* 1.1-rc2
+- Built against svnClientAdapter r2834 and Subversion 1.4.0,
+  incorporating numerous bug fixes and improvements from both.
+- Added support for javasvn adapter
+- Added the "url" option to <propget> command
+- Added the "lastChangedDateProperty" to <status> command
+- Added the "dateFormatter" attribute to <svn> task
+- Added the "failonerror" attribute to <svn> task and svn selectors
+- Added the <wcVersion> command
+- Added the <log> command
+- Added svn related selectors 
+- Added SvnFileSet type
+- Added the force option to <add> command
+  
+* 1.0.0
Index: /branches/rk-oran/shared/ant-tasks/svnant/doc/conditions.html
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/doc/conditions.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/doc/conditions.html	(revision 18906)
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns:ant="http://www.fiset.ca/ant-docs/v1" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"/>
+<title>Svn Conditions</title>
+<META HTTP-EQUIV="Content-Language" CONTENT="en-us"/>
+<style type="text/css">	
+				
+				body {
+					font: 80% Verdana, Arial, Helvetica, sans-serif;
+					margin: 5px; padding: 0;
+				/*	background: rgb(95%,95%,80%);  */
+					color: black;
+				}
+				h1 {
+					font-size: 200%; letter-spacing: 3px;
+					margin-bottom: 1em; 
+					padding: 0.66em 0 0.33em 1em;
+					background: rgb(85%,85%,70%);
+				}
+				h2 {
+					background: rgb(90%,90%,80%);
+				}
+				h3 {
+					background-color: rgb(95%,95%,85%);
+				}
+				.sample {
+					font-family: Courier, "Courier New", monospace;
+					background-color: #f3f1f4;
+				 }
+				div.sample {
+					margin-left: 10px;
+					margin-right: 10px;
+					padding-top: 3px;
+					padding-bottom: 3px;
+					padding-left: 3px;
+					padding-right: 3px;
+					border:1px dashed black;
+					width: 80%;
+				 }
+				 table.params {
+					width: 80%;
+					border: 1px solid gray;
+					margin-bottom:1em;
+				 }
+				 th.params, td.params {
+					padding: 0 0.5em;
+					border-left: 1px solid #DDD;
+					border-bottom: 1px solid #DDD;
+					font: 70%
+				}
+				th.params {
+					
+				}
+				table.toc {
+					width: 80%;
+					border: 1px solid gray;
+					margin-bottom:1em;
+				}
+				td.toc {
+					padding: 0 0.5em;
+					border: none
+					font: 70%
+				}
+				table.type {
+					width: 80%;
+					border: none;
+					margin-bottom:1em;
+				}
+				th.type, td.type {
+					text-align: left;
+					padding: 0 0.5em;
+					border: none
+					font: 70%
+				}
+				th.type {
+					font-weight: bold;
+				}
+				
+			</style>
+</head>
+<body lang="en-US" dir="LTR">
+<h1>Svn Conditions</h1>
+<h2>Table of Content</h2>
+<table class="toc">
+<tbody class="toc">
+<tr class="toc">
+<td class="toc">
+<a href="#svnExists">svnExists</a>
+</td>
+<td class="toc">Ant condition that returns true if an element exists in the repository</td>
+</tr>
+</tbody>
+</table>
+<h2>Introduction</h2>
+<ant:introduction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		<p>
+			This document describes the conditions offered in svnant. To use those conditions,
+			you must first obtain a copy of svnant.jar, add it to the classpath of your ant project
+			and define the types. Fortunately, there is a resource file, within the distributed JAR file,
+			and all those steps can be accomplished with the following code:
+			<div class="sample">
+<pre class="sample">
+				
+&lt;path id="svnant.classpath"&gt;
+  &lt;pathelement location="${svnant.dir}/lib/svnant.jar" /&gt;
+  &lt;pathelement location="${svnant.dir}/lib/svnClientAdapter.jar" /&gt;
+&lt;/path&gt;  
+
+&lt;typedef resource="svntypes.xml" classpathref="project.classpath"/&gt;
+				
+			</pre>
+</div>
+		</p>
+		<p>
+			If you are upgrading from an earlier version of svnant, and the following line was used
+			in your <i>build.xml</i> file, then replace it with the ones above.
+			<div class="sample">
+<pre class="sample">
+				
+&lt;taskdef resource="svntask.properties" classpathref="svnant.classpath"/&gt;
+				
+			</pre>
+</div>
+		</p>
+		<h3>
+<a name="bindings">Bindings</a>
+</h3>
+		<p>
+			All conditions offer two parameters: <b>javahl</b> and <b>svnkit</b>. Those parameters
+			are booleans, which means their values can be set to either <b>true</b> or <b>false</b>. 
+			If not specified, those parameters are assumed to be set (true). These two parameters are used
+			to select which client is used to access Subversion.
+		</p>
+		<p>
+			There are three clients used by svnant to access Subversion:
+			<ul>
+				<li>JavaHL;</li>
+				<li>SVNKit; and,</li>
+				<li>Command Line Interface.</li>
+			</ul>
+			To better understand the difference between those three clients, please refer to
+			documentation on <b>svnClientAdapter.jar</b>.
+		</p>
+		<p>
+			The property <b>javahl</b> is considered only if the javahl libraries are available. Similarly,
+			the property <b>svnkit</b> is considered only if SVNKit is present. Finally, <b>javahl</b>
+			takes precedence over <b>svnkit</b>.
+		</p>
+		<p>
+			To better illustrate the previous paragraph, use the following steps:
+			<ol>
+				<li>If <b>javahl</b> is <i>true</i> and JavaHL bindings are available, then JavaHL is used.</li>
+				<li>If <b>svnkit</b> is <i>true</i> and SVNKit is present, then SVNKit is used.</li>
+				<li>If the two previous tests failed, for any reason, then the Command Line Interface is used.</li>
+			</ol>
+		</p>
+	</ant:introduction>
+<h1>
+<a name="">svnExists</a>
+</h1>
+<p>Ant condition that returns true if an element exists in the repository</p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.conditions.Exists</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">target</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				File name or URL to the element to be queried during the condition.
+			</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Yes
+			</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This is a custom condition, as defined in the Ant documentation. A custom
+				condition must be employed in conjunction with a &lt;Condition&gt; task
+				to set a property.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This custom condition is used to determine if an element exists in the repository. The condition returns
+				true if the element is known to te repository. It uses a process similar to "svn info"
+				to determine the existence of an element. If "svn info" can return information
+				about a file or a directory, then the svnExists condition should return true for
+				such file or directory.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: determine if there exist a "build.xml" file for a project
+				<div class="sample">
+<pre class="sample">
+
+&lt;condition 
+	property="fileExists" 
+	value="true"
+	else="false"
+	&gt;
+	&lt;svnExists javahl="${javahl}" svnkit="${svnkit}" target="http://svn.mycompany.com/project/trunk/build.xml"/&gt;
+&lt;/condition&gt;
+&lt;echo&gt;fileExists: ${fileExists}&lt;/echo&gt;
+					
+				</pre>
+</div>
+			</p>
+		</body>
+</html>
Index: /branches/rk-oran/shared/ant-tasks/svnant/doc/selectors.html
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/doc/selectors.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/doc/selectors.html	(revision 18906)
@@ -0,0 +1,1124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns:ant="http://www.fiset.ca/ant-docs/v1" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"/>
+<title>Svn Selectors</title>
+<META HTTP-EQUIV="Content-Language" CONTENT="en-us"/>
+<style type="text/css">	
+				
+				body {
+					font: 80% Verdana, Arial, Helvetica, sans-serif;
+					margin: 5px; padding: 0;
+				/*	background: rgb(95%,95%,80%);  */
+					color: black;
+				}
+				h1 {
+					font-size: 200%; letter-spacing: 3px;
+					margin-bottom: 1em; 
+					padding: 0.66em 0 0.33em 1em;
+					background: rgb(85%,85%,70%);
+				}
+				h2 {
+					background: rgb(90%,90%,80%);
+				}
+				h3 {
+					background-color: rgb(95%,95%,85%);
+				}
+				.sample {
+					font-family: Courier, "Courier New", monospace;
+					background-color: #f3f1f4;
+				 }
+				div.sample {
+					margin-left: 10px;
+					margin-right: 10px;
+					padding-top: 3px;
+					padding-bottom: 3px;
+					padding-left: 3px;
+					padding-right: 3px;
+					border:1px dashed black;
+					width: 80%;
+				 }
+				 table.params {
+					width: 80%;
+					border: 1px solid gray;
+					margin-bottom:1em;
+				 }
+				 th.params, td.params {
+					padding: 0 0.5em;
+					border-left: 1px solid #DDD;
+					border-bottom: 1px solid #DDD;
+					font: 70%
+				}
+				th.params {
+					
+				}
+				table.toc {
+					width: 80%;
+					border: 1px solid gray;
+					margin-bottom:1em;
+				}
+				td.toc {
+					padding: 0 0.5em;
+					border: none
+					font: 70%
+				}
+				table.type {
+					width: 80%;
+					border: none;
+					margin-bottom:1em;
+				}
+				th.type, td.type {
+					text-align: left;
+					padding: 0 0.5em;
+					border: none
+					font: 70%
+				}
+				th.type {
+					font-weight: bold;
+				}
+				
+			</style>
+</head>
+<body lang="en-US" dir="LTR">
+<h1>Svn Selectors</h1>
+<h2>Table of Content</h2>
+<table class="toc">
+<tbody class="toc">
+<tr class="toc">
+<td class="toc">
+<a href="#svnAdded">svnAdded</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'added' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnModified">svnModified</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'modified' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnUnversioned">svnUnversioned</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'unversioned' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnConflicted">svnConflicted</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'conflicted' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnIgnored">svnIgnored</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'ignored' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnLocked">svnLocked</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'locked' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnNormal">svnNormal</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'normal' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnReplaced">svnReplaced</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'replaced' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnMissing">svnMissing</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'missing' subversion status. </td>
+</tr>
+<tr class="toc">
+<td class="toc">
+<a href="#svnDeleted">svnDeleted</a>
+</td>
+<td class="toc">File selector that performs discrimination based on the 'deleted' subversion status. </td>
+</tr>
+</tbody>
+</table>
+<h2>Introduction</h2>
+<ant:introduction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		<p>
+			This document describes the file selectors offered in svnAnt. To use those selectors,
+			you must first obtain a copy of svnant.jar, add it to the classpath of your ant project
+			and define the types. Fortunately, there is a resource file, within the distributed JAR file,
+			and all those steps can be accomplished with the following code:
+			<div class="sample">
+<pre class="sample">
+				
+&lt;path id="svnant.classpath"&gt;
+  &lt;pathelement location="${svnant.dir}/lib/svnant.jar" /&gt;
+  &lt;pathelement location="${svnant.dir}/lib/svnClientAdapter.jar" /&gt;
+&lt;/path&gt;  
+
+&lt;typedef resource="svntypes.xml" classpathref="project.classpath"/&gt;
+				
+			</pre>
+</div>
+		</p>
+		<p>
+			If you are upgrading from an earlier version of svnAnt, and the following line was used
+			in your <i>build.xml</i> file, then replace it with the ones above.
+			<div class="sample">
+<pre class="sample">
+				
+&lt;taskdef resource="svntask.properties" classpathref="svnant.classpath"/&gt;
+				
+			</pre>
+</div>
+		</p>
+		<h3>
+<a name="bindings">Bindings</a>
+</h3>
+		<p>
+			All file selectors offer two parameters: <b>javahl</b> and <b>svnkit</b>. Those parameters
+			are booleans, which means their values can be set to either <b>true</b> or <b>false</b>. 
+			If not specified, those parameters are assumed to be set (true). These two parameters are used
+			to select which client is used to access Subversion.
+		</p>
+		<p>
+			There are three clients used by svnAnt to access Subversion:
+			<ul>
+				<li>JavaHL;</li>
+				<li>SVNKit; and,</li>
+				<li>Command Line Interface.</li>
+			</ul>
+			To better understand the difference between those three clients, please refer to
+			documentation on <b>svnClientAdapter.jar</b>.
+		</p>
+		<p>
+			The property <b>javahl</b> is considered only if the javahl libraries are available. Similarly,
+			the property <b>svnkit</b> is considered only if SVNKit is present. Finally, <b>javahl</b>
+			takes precedence over <b>svnkit</b>.
+		</p>
+		<p>
+			To better illustrate the previous paragraph, use the following steps:
+			<ol>
+				<li>If <b>javahl</b> is <i>true</i> and JavaHL bindings are available, then JavaHL is used.</li>
+				<li>If <b>svnkit</b> is <i>true</i> and SVNKit is present, then SVNKit is used.</li>
+				<li>If the two previous tests failed, for any reason, then the Command Line Interface is used.</li>
+			</ol>
+		</p>
+	</ant:introduction>
+<h1>
+<a name="">svnAdded</a>
+</h1>
+<p>File selector that performs discrimination based on the 'added' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Added</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'added'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				An 'added' file or directory is one that has been added to the repository, but not yet
+				commited. In general, <b>svn status</b> displays those items with the letter <i>A</i>
+				preceeding the name.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to copy a number of files with the status 'added' from their location in
+				<b>workingcopy</b> to a new directory called <b>test</b>, the following ant task can
+				be used:
+				<div class="sample">
+<pre class="sample">
+
+&lt;copy todir="test"&gt;
+	&lt;fileset dir="workingcopy"&gt;
+		&lt;svnAdded/&gt;
+	&lt;/fileset&gt;
+&lt;/copy&gt;
+					
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnModified</a>
+</h1>
+<p>File selector that performs discrimination based on the 'modified' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Modified</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'modified'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				A 'modified' file or directory is one that has been changed since the last update and where 
+				the changes have not yet been commited to the repository. In general, <b>svn status</b>
+				display those items with the letter <i>M</i> preceeding the name. It is important to note
+				that other items can also be considered modified, such as conflicted ones.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to copy a number of files with the status 'modified' from their location in
+				<b>workingcopy</b> to a new directory called <b>test</b>, the following ant task can
+				be used:
+				<div class="sample">
+<pre class="sample">
+
+&lt;copy todir="test"&gt;
+	&lt;fileset dir="workingcopy"&gt;
+		&lt;svnModified/&gt;
+	&lt;/fileset&gt;
+&lt;/copy&gt;
+					
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnUnversioned</a>
+</h1>
+<p>File selector that performs discrimination based on the 'unversioned' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Unversioned</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'unversioned'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				An 'unversioned' file or directory is one that is present in a working copy but is not yet
+				known to the repository. In general, <b>svn status</b>
+				display those items with a question mark (<i>?</i>) preceeding the name. Note that 'ignored'
+				items are not considered 'unversioned'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Eexample: to copy a number of files with the status 'unversioned' from their location in
+				<b>workingcopy</b> to a new directory called <b>test</b>, the following ant task can
+				be used:
+				<div class="sample">
+<pre class="sample">
+
+&lt;copy todir="test"&gt;
+	&lt;fileset dir="workingcopy"&gt;
+		&lt;svnUnversioned/&gt;
+	&lt;/fileset&gt;
+&lt;/copy&gt;
+		
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnConflicted</a>
+</h1>
+<p>File selector that performs discrimination based on the 'conflicted' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Conflicted</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'conflicted'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				When updating a subversion item (file or directory), it is possible to have two sets of 
+				changes merged into the	working item. This happens when the item was modified locally as 
+				well as remotely during the period since the last update. If the two sets of changes conflict
+				(same lines of a file changes, same directory entries modified), then the item is marked
+				as 'conflicted'. In general, <b>svn status</b> displays 'conflicted' items with the letter
+				<i>C</i> preceeding the name. Note that 'conflicted' items are also considered 'modified'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to copy a number of files with the status 'conflicted' from their location in
+				<b>workingcopy</b> to a new directory called <b>test</b>, the following ant task can
+				be used:
+				<div class="sample">
+<pre class="sample">
+
+&lt;copy todir="test"&gt;
+	&lt;fileset dir="workingcopy"&gt;
+		&lt;svnConflicted/&gt;
+	&lt;/fileset&gt;
+&lt;/copy&gt;
+		
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnIgnored</a>
+</h1>
+<p>File selector that performs discrimination based on the 'ignored' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Ignored</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'ignored'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				An 'ignored' file or directory is one which name match the patterns found in the parent
+				directory's <b>svn:ignore</b> property. In general, <b>svn status --no-ignore</b>
+				display those items with the letter <i>I</i> preceeding the name.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to copy a number of files with the status 'ignored' from their location in
+				<b>workingcopy</b> to a new directory called <b>test</b>, the following ant task can
+				be used:
+				<div class="sample">
+<pre class="sample">
+
+&lt;copy todir="test"&gt;
+	&lt;fileset dir="workingcopy"&gt;
+		&lt;svnIgnored/&gt;
+	&lt;/fileset&gt;
+&lt;/copy&gt;
+		
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnLocked</a>
+</h1>
+<p>File selector that performs discrimination based on the 'locked' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Locked</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'locked'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				A 'locked' file or directory is one where the repository has been informed of the
+				intent of a user to prevent others from modifying the file. For a working copy to
+				be aware of this fact, it must have been 'updated' since the lock status was changed.
+				In general, <b>svn status</b> displays those items with one of the letters <i>K</i>,
+				<i>O</i> or <i>B</i> in the sixth column. The 'lock' status is independent of most other
+				conditions such as 'modified', 'conflicted', etc.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to copy a number of files with the status 'locked' from their location in
+				<b>workingcopy</b> to a new directory called <b>test</b>, the following ant task can
+				be used:
+				<div class="sample">
+<pre class="sample">
+
+&lt;copy todir="test"&gt;
+	&lt;fileset dir="workingcopy"&gt;
+		&lt;svnLocked/&gt;
+	&lt;/fileset&gt;
+&lt;/copy&gt;
+		
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnNormal</a>
+</h1>
+<p>File selector that performs discrimination based on the 'normal' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Normal</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'normal'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				A 'normal' file or directory is one that has not undergone any changes since the last
+				update. In general, this is the great majority of the files in a working copy. <b>svn status</b>
+				returns no special character for those items (a space in the first column).
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to copy a number of files with the status 'normal' from their location in
+				<b>workingcopy</b> to a new directory called <b>test</b>, the following ant task can
+				be used:
+				<div class="sample">
+<pre class="sample">
+
+&lt;copy todir="test"&gt;
+	&lt;fileset dir="workingcopy"&gt;
+		&lt;svnNormal/&gt;
+	&lt;/fileset&gt;
+&lt;/copy&gt;
+		
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnReplaced</a>
+</h1>
+<p>File selector that performs discrimination based on the 'replaced' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Replaced</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'replaced'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				A 'replaced' file or directory is one that has been deleted, then created anew and finally 
+				added back to the repository. Also, those changes must not have been comitted.
+				In general, <b>svn status</b> displays those items with the letter <i>R</i> preceeding 
+				the name.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to copy a number of files with the status 'replaced' from their location in
+				<b>workingcopy</b> to a new directory called <b>test</b>, the following ant task can
+				be used:
+				<div class="sample">
+<pre class="sample">
+
+&lt;copy todir="test"&gt;
+	&lt;fileset dir="workingcopy"&gt;
+		&lt;svnReplaced/&gt;
+	&lt;/fileset&gt;
+&lt;/copy&gt;
+		
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnMissing</a>
+</h1>
+<p>File selector that performs discrimination based on the 'missing' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Missing</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'missing'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				A 'missing' file or directory is one that is managed by Subversion and
+				has been deleted without using the remove command. In general, <b>svn status</b> 
+				displays those items with the exclamation point (<i>!</i>) preceeding the name.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				It is important to note that a regular FileSet (the one supplied by ANT) can not
+				detect a missing item, since it does not exist on the file system. To detect
+				Subversion missing items, use the FileSet provided by svn-ant (svnFileSet).
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to delete missing files from the repository associated with a <b>workingcopy</b>:
+				<div class="sample">
+<pre class="sample">
+
+&lt;svn&gt;
+	&lt;delete&gt;
+		&lt;svnFileSet dir="workingcopy"&gt;
+			&lt;svnMissing/&gt;
+		&lt;/svnFileSet&gt;
+	&lt;/delete&gt;
+&lt;/svn&gt;
+		
+				</pre>
+</div>
+			</p>
+		<h1>
+<a name="">svnDeleted</a>
+</h1>
+<p>File selector that performs discrimination based on the 'deleted' subversion status. </p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.selectors.Deleted</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">failonerror</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		Controls whether an error stops the build or is merely reported to the screen.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No (defaults to "true")
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>No nested types defined for this type.<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This file selector is used to discriminate files within a <b>fileset</b> based on a Subversion
+				status. In particular, this selector keeps files that are recognized as 'deleted'.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				A 'deleted' file or directory is one that has been erased using Subversion's 'remove'
+				command. In general, <b>svn status</b> displays those items with the letter <i>D</i>
+				preceeding the name.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				It is important to note that a regular FileSet (the one supplied by ANT) can not
+				detect a deleted item, since it does not exist on the file system. To detect
+				Subversion deleted items, use the FileSet provided by svn-ant (svnFileSet).
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Example: to revert deleted files from a <b>workingcopy</b>:
+				<div class="sample">
+<pre class="sample">
+
+&lt;svn&gt;
+	&lt;revert&gt;
+		&lt;svnFileSet dir="workingcopy"&gt;
+			&lt;svnDeleted/&gt;
+		&lt;/svnFileSet&gt;
+	&lt;/revert&gt;
+&lt;/svn&gt;
+		
+				</pre>
+</div>
+			</p>
+		</body>
+</html>
Index: /branches/rk-oran/shared/ant-tasks/svnant/doc/svn.html
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/doc/svn.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/doc/svn.html	(revision 18906)
@@ -0,0 +1,1462 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+
+<head>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+	<TITLE>Svn Task</TITLE>
+	<META HTTP-EQUIV="Content-Language" CONTENT="en-us">
+  <link rel="stylesheet" type="text/css" href="http://tortoisesvn.tigris.org/branding/css/print.css" media="print" />
+<style type="text/css"> /* <![CDATA[ */
+ @import "http://subclipse.tigris.org/branding/css/tigris.css";
+ @import "http://subclipse.tigris.org/branding/css/inst.css";
+ /* ]]> */
+ </style>
+<!--
+<style type="text/css">	
+body {
+	font: 80% Verdana, Arial, Helvetica, sans-serif;
+	margin: 12px; padding: 12px;
+/*	background: rgb(95%,95%,80%);  */
+	color: black;
+}
+h1 {
+	font-size: 200%; text-transform: lowercase; letter-spacing: 3px;
+	margin-bottom: 1em; 
+	padding: 0.66em 0 0.33em 1em;
+	background: rgb(85%,85%,70%);
+}
+h2 {
+	background: rgb(85%,85%,70%);
+}
+h3 {
+	border:1px solid rgb(85%,85%,70%);
+	color: rgb(55%,55%,40%);
+	padding: 0.66em 0 0.33em 1em;
+	background-color: #f3f1f4;
+}
+.sample {
+	font-family: Courier, "Courier New", monospace;
+	background-color: #f3f1f4;
+	margin-left: 10px;
+	margin-right: 10px;
+	padding-top: 3px;
+	padding-bottom: 3px;
+	padding-left: 3px;
+	padding-right: 3px;
+	border:1px dashed black;
+	width: 50%;
+ }
+ table {
+	width: 80%;
+	border: 1px solid gray;
+	margin-bottom:1em;
+ }
+ th, td {
+	padding: 0 0.5em;
+	border-left: 1px solid #DDD;
+	border-bottom: 1px solid #DDD;
+	font: 70%
+}
+th {
+	
+}
+-->
+</style>
+</head>
+
+<body lang="en-US" dir="LTR">
+
+<div class="h1" id="svn" title="svn">
+<H1>&lt;Svn&gt;</H1>
+By <A HREF="mailto:users@subclipse.tigris.org">C&eacute;dric Chabanois et al.</A>
+
+
+<div class="h2" id="Description" title="Description">
+<H2>Description</H2>
+<p>This task provides an interface to <A HREF="http://subversion.tigris.org/">Subversion</A> 
+revision control system that is a compelling replacement for CVS in the open source community.
+<br>
+With the help of the underlying svnClientAdapter, &lt;svn&gt; task uses JavaHL (a 
+native JNI interface to the subversion api) if it
+can find the corresponding library (e.g. svnjavahl.dll on windows).
+Otherwise it uses svn command line interface.</p>
+</div>
+
+<div class="h2" id="Setup" title="Setup">
+<h2>Setup</h2>
+<p>As with most Ant extensions, SvnAnt's task and type names must be
+<a href="http://ant.apache.org/manual/CoreTasks/typedef.html">mapped
+to their implementing classes</a> before being used in an Ant build
+file.  An example of how to use the <em>antlib</em> bundled in
+SvnAnt's JAR file to perform that registration follows:</p>
+
+<div class="sample">
+<span style="font-face: Courier New; font-size: 12">
+<span style="color: #000080">&lt;typedef</span>
+<span style="color: #000080">resource=</span><span style="color: #008000">&quot;org/tigris/subversion/svnant/svnantlib.xml&quot;</span>
+<span style="color: #000080">classpath=</span><span style="color: #008000">&quot;svnant.jar&quot;</span>
+<span style="color: #000080">/&gt;</span>
+</span>
+</div>  <!-- sample -->
+</div>
+
+<div class="h2" id="Parameters" title="Parameters">
+<H2>Parameters</H2>
+<table border="1" width="80%">	<tr>
+		<th>Attribute</th>
+		<th>Description</th>
+		<th>Required</th>
+	</tr>
+	<tr>
+		<td>username</td>
+		<td>username that will be used for all nested svn commands.</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>password</td>
+		<td>password that will be used for all nested svn commands.</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>javahl</td>
+		<td>Set to &ldquo;false&rdquo; to use command line client interface instead of JNI JavaHL binding.</td>
+		<td>No (Defaults to true)</td>
+	</tr>
+	<tr>
+		<td>svnkit</td>
+		<td>Set to &ldquo;false&rdquo; to use command line client interface instead of SVNKit binding.</td>
+		<td>No (Defaults to false)</td>
+	</tr>
+	<tr>
+		<td>dateFormatter</td>
+		<td>formatter definition used to format/parse dates (e.g. when revision is specified as date).</td>
+		<td>No (Defaults to "MM/DD/YYYY HH:MM AM_PM")</td>
+	</tr>
+	<tr>
+		<td>dateTimeZone</td>
+		<td>time zone used to format/parse dates (e.g. when revision is specified as date).</td>
+		<td>No (Defaults to local)</td>
+	</tr>
+	<tr>
+		<td>failonerror</td>
+		<td>Controls whether an error stops the build or is merely reported to the screen.</td>
+		<td>No (Defaults to "true")</td>
+	</tr>
+</table>
+</div>
+
+<div class="h2" id="Commands" title="Commands">
+<H2>Svn commands specified as nested elements</H2>
+<table border="1" width="90%">
+	<tr>
+		<td><a href="#add">add </a></td>
+		<td><a href="#createRepository">createRepository</a></td>
+		<td><a href="#import">import</a></td>
+		<td><a href="#move">move</a></td>
+		<td><a href="#revert">revert</a></td>
+	</tr>
+	<tr>
+		<td><a href="#cat">cat</a></td>
+		<td><a href="#delete">delete</a></td>
+		<td><a href="#info">info</a></td>
+		<td><a href="#mkdir">mkdir</a></td>
+		<td><a href="#status">status</a></td>
+	</tr>
+	<tr>
+		<td><a href="#checkout">checkout</a></td>
+		<td><a href="#diff">diff</a></td>
+		<td><a href="#keywordsset">keywordsset</a></td>
+		<td><a href="#propdel">propdel</a></td>
+		<td><a href="#switch">switch</a></td>
+	</tr>
+	<tr>
+		<td><a href="#commit">commit</a></td>
+		<td><a href="#export">export</a></td>
+		<td><a href="#keywordsadd">keywordsadd</a></td>
+		<td><a href="#propget">propget</a></td>
+		<td><a href="#update">update</a></td>
+	</tr>
+	<tr>
+		<td><a href="#copy">copy</a></td>
+		<td><a href="#ignore">ignore</a></td>
+		<td><a href="#keywordsremove">keywordsremove</a></td>
+		<td><a href="#propset">propset</a></td>
+		<td><a href="#wcVersion">wcVersion</a></td>
+	</tr>
+	</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="add" title="add">
+<H3><a name="add">add</a></H3>
+<p>You can add files and directories to svn repository with nested <CODE>&lt;add&gt;</CODE> elements.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>file to add to the repository</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>dir</td>
+		<td>directory to add to the repository</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;false&quot; to operate on a single directory only
+			(applies only when <CODE>dir</CODE> attribute is set). Default is
+			&quot;true&quot;
+		</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>force</td>
+		<td>Set to &quot;true&quot; to check the contents of a directory that
+			is already under source control for new directories/files
+			(applies only when <CODE>dir</CODE> attribute is set). Default is
+			&quot;false&quot;
+		</td>
+		<td>No</td>
+	</tr>
+</table>
+<p>Parameters specified as nested elements :
+<ul>
+<li>fileset <br>
+	Filesets are used to select sets of files to add to the repository. <br>
+	<B>Note	that directories needed to add selected files will be added to the
+	repository even if they are not selected by the fileset.</B>
+</li>
+</ul>
+</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="cat" title="cat">
+<H3><a name="cat">cat</a></H3>
+<p>Get the content of a file on repository.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>destFile</td>
+		<td>Name of the destination file</td>
+		<td>No <BR>(default is the name of the file on the url placed in the ant project's basedir)</td>
+	</tr>
+	<tr>
+		<td>url</td>
+		<td>Url of the file in repository</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>revision</td>
+		<td>revision to get.<BR>Possible values are :<BR>- a date with the
+			format as specified in dateFormatter attribute<BR>- a revision number<BR>-
+			HEAD, BASE, COMMITED or PREV<BR>Default is &quot;HEAD&quot;
+		</td>
+		<td>No</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="checkout" title="checkout">
+<H3><a name="checkout">checkout</a></H3>
+<p>Check out a working copy from a repository.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>url</td>
+		<td>url to checkout from</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;false&quot; to operate on single directory only.
+			Default is &quot;true&quot;
+		</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>destPath</td>
+		<td>destination directory</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>revision</td>
+		<td>revision to checkout.<BR>Possible values are :<BR>- a date with
+			the format as specified in dateFormatter attribute<BR>- a revision
+			number<BR>- HEAD, BASE, COMMITED or PREV<BR>Default is &quot;HEAD&quot;
+		</td>
+		<td>No</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="commit" title="commit">
+<H3><a name="commit">commit</a></H3>
+<p>Send changes from your working copy to the repository.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>file to commit</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;false&quot; to operate on single directory only.
+			Default is &quot;true&quot;<BR>Apply only when dir attribute is
+			set.
+		</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>dir</td>
+		<td>directory to commit</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>message</td>
+		<td>commit message</td>
+		<td>Yes</td>
+	</tr>
+</table>
+<p>Parameters specified as nested elements :
+<ul>
+	<li>fileset<BR>
+	Filesets are used to select sets of files to commit. 
+	</li>
+</ul>
+</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="copy" title="copy">
+<H3><a name="copy">copy</a></H3>
+<p>Duplicate something in working copy or repository, remembering
+history.<BR>
+source and destination can each be either a working copy (WC) path or URL:
+<ul>
+	<li>WC-&gt;WC: copy and schedule for addition (with history)</li>
+	<li>WC-&gt;URL: immediately commit a copy of WC to URL</li>
+	<li>URL-&gt;WC: check out URL into WC, schedule for addition</li>
+	<li>URL-&gt;URL: complete server-side copy;&nbsp; used to branch &amp; tag</li>
+</ul>
+</p>
+<br/>
+
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>srcPath</td>
+		<td>source path</td>
+		<TD ROWSPAN=2>One of the two</td>
+	</tr>
+	<tr>
+		<td>srcUrl</td>
+		<td>source url</td>
+	</tr>
+	<tr>
+		<td>testPath</td>
+		<td>destination path</td>
+		<TD ROWSPAN=2>One of the two</td>
+	</tr>
+	<tr>
+		<td>destUrl</td>
+		<td>destination url</td>
+	</tr>
+	<tr>
+		<td>message</td>
+		<td>commit message</td>
+		<td>when destUrl is set</td>
+	</tr>
+	<tr>
+		<td>revision</td>
+		<td>revision to copy from (when srcUrl is set)<BR>Possible values
+			are :<BR>- a date with the format as specified in dateFormatter attribute
+			<BR>- a revision number<BR>- HEAD, BASE, COMMITED or
+			PREV<BR>Default is &quot;HEAD&quot;
+		</td>
+		<td>no</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="createRepository" title="createRepository">
+<H3><a name="createRepository">createRepository</a></H3>
+<p>Create a new, empty repository at path.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>Path where to create the new repository</td>
+		<td>Yes</td>
+	</tr>
+</table>
+<div class="sample">
+<p>Example: <br>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;svn</FONT>
+<FONT COLOR="#000080">javahl=</FONT><FONT COLOR="#008000">&quot;false&quot;</FONT><FONT COLOR="#000080">&gt;<BR>&lt;createRepository</FONT>
+<FONT COLOR="#000080">path=</FONT><FONT COLOR="#008000">&quot;repository&quot;</FONT><FONT COLOR="#000080">/&gt;<BR>&lt;/svn&gt;</FONT></FONT></FONT>
+</p>
+</div>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="delete" title="delete">
+<H3><a name="delete">delete</a></H3>
+<p>If run on a working copy target, the item is scheduled for
+deletion upon the next commit.&nbsp; Files, and directories that have
+not been committed, are immediately removed from the working copy.&nbsp;
+<BR>The command will not remove targets that are, or contain,
+unversioned or modified items; use the force attribute to override
+this behaviour.
+<BR>If run on an url, the item is deleted from the repository via an immediate commit.
+</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>file to delete</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>url</td>
+		<td>url to delete</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>dir</td>
+		<td>directory to delete</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>message</td>
+		<td>commit message</td>
+		<td>when url attribute is set</td>
+	</tr>
+	<tr>
+		<td>force</td>
+		<td>default is &quot;false&quot;</td>
+		<td>No</td>
+	</tr>
+</table>
+<p>Parameters specified as nested elements :
+<ul>
+	<li>fileset<BR>
+	Filesets are used to select sets of files to delete.. 
+	</li>
+</ul>
+</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="diff" title="diff">
+<H3><a name="diff">diff</a></H3>
+<p>Display the differences between two paths (oldPath and newPath) or
+two urls (oldUrl and newUrl).
+</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>oldPath</td>
+		<td>If oldUrl is not set, defaults to the path '.'</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>oldUrl</td>
+		<td>&nbsp;</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>oldTargetRevision</td>
+		<td>defaults to BASE or, if oldUrl is set, to HEAD</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>newPath</td>
+		<td>defaults to oldPath if oldUrl is not set</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>newUrl</td>
+		<td>&nbsp;</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>newTargetRevision</td>
+		<td>defaults to the current working version or, if newUrl is set, to HEAD</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>outFile</td>
+		<td>Default is 'patch'</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;false&quot; to operate on single directory only.
+			Default is &quot;true&quot;
+		</td>
+		<td>No</td>
+	</tr>
+</table>
+<div class="sample">
+<p>Example : diff between BASE and current working version <br>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;svn</FONT>
+<FONT COLOR="#000080">javahl=</FONT><FONT COLOR="#008000">&quot;${javahl}&quot;</FONT><FONT COLOR="#000080">&gt;</FONT></FONT></FONT>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;diff</FONT>
+<FONT COLOR="#000080">oldPath=</FONT><FONT COLOR="#008000">&quot;workingcopy/diffTest/file.txt&quot;</FONT>
+<FONT COLOR="#000080">outFile=</FONT><FONT COLOR="#008000">&quot;workingcopy/diffTest/patch.txt&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT>
+<FONT COLOR="#000080"><FONT FACE="Courier New"><FONT SIZE=2>&lt;/svn&gt;</FONT></FONT></FONT>
+</p>
+</div>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="export" title="export">
+<H3><a name="export">export</a></H3>
+<p>
+<ol>
+	<li>
+	Exports a clean directory tree from the repository specified by <CODE>srcurl</CODE>, 
+	at revision <CODE>revision</CODE> if it is given, otherwise at HEAD, into <CODE>destPath</CODE>.
+	</li>
+	<li>Exports a clean directory tree from the working copy specified by
+	<CODE>srcPath</CODE> into <CODE>destPath</CODE>.&nbsp; all local changes will be preserved, 
+	but files not under revision control will not be copied.
+	</li>
+</ol>
+</p>
+<br/>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>srcUrl</td>
+		<td>source url to export from</td>
+		<td>One of the two</td>
+	</tr>
+	<tr>
+		<td>srcPath</td>
+		<td>source path to export from</td>
+	</tr>
+	<tr>
+		<td>destPath</td>
+		<td>destination path</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>revision</td>
+		<td>revision of the source url to export from. Defaults is
+			&quot;HEAD&quot;<BR>Possible values are :<BR>- a date with the
+			format as specified in dateFormatter attribute<BR>- a revision number<BR>-
+			HEAD, BASE, COMMITED or PREV
+		</td>
+		<td>No (defaults to HEAD)</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="ignore" title="ignore">
+<H3><a name="ignore">ignore</a></H3>
+<p>Add a given file or a pattern to the ignored files list (modifies
+svn:ignore property)</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>file to ignore</td>
+		<td>One of the two</td>
+	</tr>
+	<tr>
+		<td>dir</td>
+		<td>directory on which we will update svn:ignore property</td>
+	</tr>
+	<tr>
+		<td>pattern</td>
+		<td>pattern to add to svn:ignore on the directory<BR>Only when dir
+			is set
+		</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;true&quot; to add the pattern recursively to
+			directories. Default is &quot;false&quot;<BR>Only when dir is set
+		</td>
+		<td>No</td>
+	</tr>
+</table>
+<div class="sample">
+<p>Example :<BR>
+<FONT SIZE=2><FONT FACE="Courier New"><FONT COLOR="#000080">&lt;ignore</FONT>
+<FONT COLOR="#000080">dir=</FONT><FONT COLOR="#008000">&quot;workingcopy/ignoreTest/dir1&quot;</FONT>
+<FONT COLOR="#000080">pattern=</FONT><FONT COLOR="#008000">&quot;*.ignore&quot;</FONT>
+<FONT COLOR="#000080">recurse=</FONT><FONT COLOR="#008000">&quot;true&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT>
+</p>
+</div>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="import" title="import">
+<H3><a name="import">import</a></H3>
+<p>Commit an unversioned file or tree into the repository.<BR>
+Recursively commit a copy of <CODE>path</CODE> to <CODE>url</CODE>.<BR>
+If <CODE>newEntry </CODE>is not set, copy top-level contents of <CODE>path</CODE>into<CODE>url</CODE>directly.&nbsp;
+Otherwise, create <CODE>newEntry </CODE>underneath <CODE>url </CODE>and begin copy there.
+</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>source path to export from</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>url</td>
+		<td>source url to import to</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>newEntry</td>
+		<td>&nbsp;</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>message</td>
+		<td>commit message</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;false&quot; to operate on single directory only.
+			Default is &quot;true&quot;
+		</td>
+		<td>False</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="info" title="info">
+<h3><a name="info">info</a></h3>
+<p>Gets the information from the repository for a file, directory or url and sets
+the values to ant properties.</p>
+
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>target</td>
+		<td>Directory or file to gather the information about.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>propPrefix</td>
+		<td>Prefix to use for the properties.  Default is &quot;svn.info.&quot;.</td>
+		<td>False</td>
+	</tr>
+	<tr>
+		<td>verbose</td>
+		<td>Turns on verbosity for this task.  Default is &quot;false&quot;.</td>
+		<td>False</td>
+	</tr>
+</table>
+
+<p>&nbsp;</p>
+<p>The task sets the following properties (prefix applied accordingly): <br>
+</p>
+
+<table border="1" width="80%">	<tr>
+		<td>Property</td>
+		<td>Description</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>name</td>
+		<td>For files only</td>
+	</tr>
+	<tr>
+		<td>url</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>repouuid</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>rev</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>nodekind</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>schedule</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>author</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>lastRev</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>lastDate</td>
+		<td>Always</td>
+	</tr>
+	<tr>
+		<td>lastTextUpdate</td>
+		<td>For files only</td>
+	</tr>
+	<tr>
+		<td>lastPropUpdate</td>
+		<td>For files only</td>
+	</tr>
+	<tr>
+		<td>checksum</td>
+		<td>For files only</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="keywordsset" title="keywordsset">
+<H3><a name="keywordsset">keywordsset</a></H3>
+<p>Keywordsset controls which keywords will be substituted on the
+given files. Valid keywords are:
+<ul>
+	<li>URL, HeadURL : The URL for the head version of the object.</li>
+	<li>Author, LastChangedBy : The last person to modify the file.</li>
+	<li>Date, LastChangedDate : The date/time the object was last modified.</li>
+	<li>Rev, LastChangedRevision : The last revision the object	changed.</li>
+	<li>Id : A compressed summary of the previous</li>
+</ul>
+</p>
+<br/>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>File for which keywords will be substituted</td>
+		<td>Either file, dir or filesets</td>
+	</tr>
+	<tr>
+		<td>dir</td>
+		<td>All files in this directory will have their keywords substituted (recursively)</td>
+		<td>Either file, dir or filesets</td>
+	</tr>
+	<tr>
+		<td>keywords</td>
+		<td>The keywords to substitute on the given files</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>HeadURL/URL<BR>Author, LastChangedBy<BR>Date,
+			LastChangedDate<BR>Rev, LastChangedRevision<BR>Id
+		</td>
+		<td>Set to &ldquo;true&ldquo; the keyword to substitute it on the
+			given file.
+		</td>
+		<td>No</td>
+	</tr>
+</table>
+<p>Parameters specified as nested elements :
+<ul>
+	<li>fileset<BR>
+	Filesets are used to select sets of files on which to apply keywords substitution.
+	</li>
+</ul>
+</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="keywordsadd" title="keywordsadd">
+<H3><a name="keywordsadd">keywordsadd</a></H3>
+<p>Keywordsadd add some keywords to be substituted on the given
+files. Present keywords are not modified.<BR>
+The attributes are the same than for keywordsset command.</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="keywordsremove" title="keywordsremove">
+<H3><a name="keywordsremove">keywordsremove</a></H3>
+<p>Keywordsadd remove some keywords to be substituted on the given
+files. Other present keywords are not modified.<BR>
+The attributes are the same than for keywordsset command.</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="mkdir" title="mkdir">
+<H3><a name="mkdir">mkdir</a></H3>
+<p>Create a new directory under revision control.<BR>
+If target is a working copy path the directory is scheduled for addition in the
+working copy.&nbsp; If target is an url the directory is created in
+the repository via an immediate commit.&nbsp; <BR>
+In both cases all the intermediate directories must already exist.
+</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>path to create</td>
+		<td>One of the two</td>
+	</tr>
+	<tr>
+		<td>url</td>
+		<td>url to create</td>
+	</tr>
+	<tr>
+		<td>message</td>
+		<td>commit message</td>
+		<td>Yes</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="move" title="move">
+<H3><a name="move">move</a></H3>
+<p>Move/rename something in working copy or repository.<BR><BR>&nbsp;
+cource and destination can both be working copy (WC) paths or
+URLs:<BR>&nbsp;&nbsp;&nbsp; WC&nbsp; -&gt; WC:&nbsp;&nbsp; move and
+schedule for addition (with history)<BR>&nbsp;&nbsp;&nbsp; URL -&gt;
+URL:&nbsp; complete server-side rename.
+</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>srcPath</td>
+		<td>source path</td>
+		<td ROWSPAN=2>One of the two</td>
+	</tr>
+	<tr>
+		<td>srcUrl</td>
+		<td>source url</td>
+	</tr>
+	<tr>
+		<td>destPath</td>
+		<td>destination path</td>
+		<td ROWSPAN=2>One of the two</td>
+	</tr>
+	<tr>
+		<td>destUrl</td>
+		<td>destination url</td>
+	</tr>
+	<tr>
+		<td>message</td>
+		<td>commit message</td>
+		<td>Yes</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="propdel" title="propdel">
+<H3><a name="propdel">propdel</a></H3>
+<p>Remove a property from files or dirs.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>path of the file or directory on which to delete the property</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>name</td>
+		<td>name of the property to delete</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>if set, property will be removed recursively</td>
+		<td>No</td>
+	</tr>
+</table>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="propget" title="propget">
+<H3><a name="propget">propget</a></H3>
+<p>Get a property from a file or a directory.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>path of the file or directory on which to get the property</td>
+		<td ROWSPAN=2>One of the two</td>
+	</tr>
+	<tr>
+		<td>url</td>
+		<td>url of the file or directory in repository on which to get the property</td>
+	</tr>
+	<tr>
+		<td>name</td>
+		<td>name of the property to get</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>property</td>
+		<td>the name of the property to set with the value of the svn property</td>
+		<td ROWSPAN=2>One of the two</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>file that will contain the value of the property</td>
+	</tr>
+</table>
+<div class="sample">
+<p>
+Example :<br>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;propget</FONT>
+<FONT COLOR="#000080">path=</FONT><FONT COLOR="#008000">&quot;workingcopy/propTest/file.png&quot;</FONT>
+<FONT COLOR="#000080">name=</FONT><FONT COLOR="#008000">&quot;svn:mime-type&quot;</FONT>
+<FONT COLOR="#000080">property=</FONT><FONT COLOR="#008000">&quot;propTest.mimeType&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT>
+</p>
+</div>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="propset" title="propset">
+<H3><a name="propset">propset</a></H3>
+<p>Set a property on files or dirs.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>path of the file or directory on which to set the property</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>name</td>
+		<td>name of the property to set</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>value</td>
+		<td>the value of the property</td>
+		<td ROWSPAN=2>One of the two</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>the file that will be used as a value</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>if set, property will be set recursively</td>
+		<td>No</td>
+	</tr>
+</table>
+<p>
+<I>Note:</I>svn recognizes the following special versioned properties but 
+will store any arbitrary properties set:
+<ul>
+	<li>svn:ignore : A newline separated list of file patterns to ignore. </li>
+	<li>svn:keywords : Keywords to be expanded.&nbsp; Valid keywords are:
+		<ul>
+			<li>URL, HeadURL : The URL for the head version of the object.</li>
+			<li>Author, LastChangedBy : The last person to modify the file.</li>
+			<li>Date, LastChangedDate : The date/time the object was last modified.</li>
+			<li>Rev, LastChangedRevision : The last revision the object changed.</li>
+			<li>Id : A compressed summary of the previous 4 keywords. </li>
+		</ul>
+	</li>
+	<li>svn:executable : If present, make the file executable. This property cannot be set on a directory.&nbsp;
+	A non-recursive attempt will fail, and a recursive attempt will set
+	the property only on the file children of the directory 
+	</li>
+	<li>svn:eol-style : One of 'native', 'LF', 'CR', 'CRLF'. </li>
+	<li>svn:mime-type :  The mimetype of the file.&nbsp; Used to determine whether to merge the file, and
+	how to serve it from Apache. <BR>
+	A mimetype beginning with 'text/' (or an absent mimetype) is treated as text.&nbsp; Anything else is
+	treated as binary. 
+	</li>
+	<li>svn:externals : A newline separated list of module
+	specifiers, each of which consists of a relative directory path,
+	optional revision flags, and an URL.&nbsp; For example<BR>
+ 	foo             http://example.com/repos/zig <br>
+ 	foo/bar -r 1234 http://example.com/repos/zag
+	</li>
+</ul>
+</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="revert" title="revert">
+<H3><a name="revert">revert</a></H3>
+<p>Restore pristine working copy file (undo most local edits).</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>file to revert</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>dir</td>
+		<td>directory to revert</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;false&quot; to operate on a single directory only
+			(applies only when <CODE>dir</CODE> attribute is set). Default is
+			&quot;false&quot;</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>revision</td>
+		<td>revision. Defaults is &quot;HEAD&quot;<BR>Possible values are
+			:<BR>- a date with the format as specified in dateFormatter attribute<BR>-
+			a revision number<BR>- HEAD, BASE, COMMITED or PREV</td>
+		<td>No</td>
+	</tr>
+</table>
+<p>Parameters specified as nested elements :
+<ul>
+	<li>fileset<BR>
+	Filesets are used to select sets of files to revert. 
+	</li>
+</ul>
+</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="status" title="status">
+<H3><a name="status">status</a></H3>
+<p>Get the status of working copy files and directories.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>path of the file or directory</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>textStatusProperty</td>
+		<td>Name of the property to set to the status of the item</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>propStatusProperty</td>
+		<td>Name of the property to set to the status of the item
+			properties</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>revisionProperty</td>
+		<td>Name of the property to set to the revision of the item (or &ldquo;&rdquo;
+			if unversioned)</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>lastChangedRevisionProperty</td>
+		<td>Name of the property to set to the last changed revision of the
+			item (or &ldquo;&rdquo; if unversioned)</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>lastChangedDateProperty</td>
+		<td>Name of the property to set to the last changed date of the
+			item (or &ldquo;&rdquo; if unversioned). 
+			The date is formatted according to task's "dateFormatter"</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>lastCommitAuthorProperty</td>
+		<td>Name of the property to set to the last commit author (or &ldquo;&rdquo;
+			if unversioned)</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>urlProperty</td>
+		<td>Name of the property to set to the url of the item</td>
+		<td>No</td>
+	</tr>
+</table>
+<p>
+The value of TextStatusProperty can be :
+<ul>
+	<li>non-svn</li>
+	<li>normal : no modifications</li>
+	<li>added</li>
+	<li>missing : item is missing (removed by non-svn command)</li>
+	<li>incomplete</li>
+	<li>deleted</li>
+	<li>replaced</li>
+	<li>modified</li>
+	<li>merged</li>
+	<li>conflicted</li>
+	<li>obstructed</li>
+	<li>ignored</li>
+	<li>external</li>
+	<li>unversioned</li>
+</ul>
+The value of propStatusProperty can be :
+<ul>
+	<li>normal : no	modifications</li>
+	<li>conflicted</li>
+	<li>modified</li>
+</ul>
+</p>
+<p></p>
+<div class="sample">
+<p>
+Example : <br>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;status</FONT>
+<FONT COLOR="#000080">path=</FONT><FONT COLOR="#008000">&quot;workingcopy/statusTest/added.txt&quot;</FONT>
+</FONT></FONT>
+<FONT COLOR="#000080"><FONT FACE="Courier New"><FONT SIZE=2>textStatusProperty=<FONT COLOR="#008000">&quot;testStatus.textStatus&quot;</FONT></FONT></FONT></FONT>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">propStatusProperty=</FONT><FONT COLOR="#008000">&quot;testStatus.propStatus&quot;</FONT></FONT></FONT>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">lastChangedRevisionProperty=</FONT><FONT COLOR="#008000">&quot;testStatus.lastCommitRevision&quot;</FONT></FONT></FONT>
+<FONT COLOR="#000080"><FONT FACE="Courier New"><FONT SIZE=2>revisionProperty=<FONT COLOR="#008000">&quot;testStatus.revision&quot;</FONT></FONT></FONT></FONT>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">lastCommitAuthorProperty=</FONT><FONT COLOR="#008000">&quot;testStatus.lastCommitAuthor&quot;</FONT></FONT></FONT>
+</p>
+</div>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="switch" title="switch">
+<H3><a name="switch">switch</a></H3>
+<p>Update the working copy to mirror a new URL within the repository.
+This behaviour is similar to 'svn update', and is the way to move a
+working copy to a branch or tag within the same repository.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>The working copy to switch to the given url</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>url</td>
+		<td>The url to switch to</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;false&quot; to operate on a single directory only.
+			Default is &quot;true&quot;</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>revision</td>
+		<td>revision. Defaults is &quot;HEAD&quot;<BR>Possible values are
+			:<BR>- a date with the format as specified in dateFormatter attribute<BR>-
+			a revision number<BR>- HEAD, BASE, COMMITED or PREV</td>
+		<td>No</td>
+	</tr>
+</table>
+<div class="sample" style="width: 602px; height: 43px">
+<p>
+Example:
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;svn&gt;</FONT></FONT></FONT>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;switch</FONT>
+<FONT COLOR="#000080">path=</FONT><FONT COLOR="#008000">&quot;workingcopy/switchTest&quot;</FONT>
+<FONT COLOR="#000080">url=</FONT><FONT COLOR="#008000">&quot;${urlRepos}/switchTestBranch&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT>
+<FONT COLOR="#000080"><FONT FACE="Courier New"><FONT SIZE=2>&lt;/svn&gt;</FONT></FONT></FONT>
+</p>
+</div>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="update" title="update">
+<H3><a name="update">update</a></H3>
+<p>Bring changes from the repository into the working copy.<BR>If no
+revision given, bring working copy up-to-date with HEAD rev.&nbsp;
+Else synchronize working copy to revision.</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>file</td>
+		<td>file to update</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>dir</td>
+		<td>directory to update</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>recurse</td>
+		<td>Set to &quot;false&quot; to operate on a single directory only
+			(applies only when <CODE>dir</CODE> attribute is set). Default is
+			&quot;true&quot;</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>revision</td>
+		<td>revision. Defaults is &quot;HEAD&quot;<BR>Possible values are
+			:<BR>- a date with the format as specified in dateFormatter attribute<BR>-
+			a revision number<BR>- HEAD, BASE, COMMITED or PREV</td>
+		<td>No</td>
+	</tr>
+</table>
+Parameters specified as nested elements :
+<ul>
+<li>fileset<BR>
+Filesets are used to select sets of files to update. 
+</li>
+</ul>
+</div>
+
+<![CDATA[=========================================================]]>
+
+<div class="h3" id="wcVersion" title="wcVersion">
+<H3><a name="wcVersion">wcVersion</a></H3>
+<p>Retrieves a state of the working copy. Similar to the svn's utility svnversion, just providing more.<BR>
+Crawls the working copy and retrieves the maximum revision number, revision range if workingCopy is mixed etc.
+</p>
+<table border="1" width="80%">	<tr>
+		<td>Attribute</td>
+		<td>Description</td>
+		<td>Required</td>
+	</tr>
+	<tr>
+		<td>path</td>
+		<td>a path to the working copy</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>prefix</td>
+		<td>a string which will be prefixed to output properties set/filled by this command</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>processUnversioned</td>
+		<td>flag whether presence of unversioned resoures should be treated as changes</td>
+		<td>No (defaults to false)</td>
+	</tr>
+</table>
+
+<p>The command fill set the following properties: (with optional prefix applied)</p>
+
+<table border="1" width="80%">	<tr>
+		<td>Property name</td>
+		<td>Description</td>
+	</tr>
+	<tr>
+		<td>repository.url</td>
+		<td>URL of the repository of the working copy root</td>
+	</tr>
+	<tr>
+		<td>repository.path</td>
+		<td>path in the repository</td>
+	</tr>
+	<tr>
+		<td>revision.max</td>
+		<td>the highest revision number in the working copy</td>
+	</tr>
+	<tr>
+		<td>revision.max-with-flags</td>
+		<td>the highest revision number in the working copy plus flags (M - modified, X - mixed)</td>
+	</tr>
+	<tr>
+		<td>revision.range</td>
+		<td>the revision range (in mixed wc), similar to svnversion format. (e.g. 1000:1010MX)</td>
+	</tr>
+	<tr>
+		<td>committed.max</td>
+		<td>the highest 'last committed revision'</td>
+	</tr>
+	<tr>
+		<td>committed.max-with-flags</td>
+		<td>the highest 'last committed revision' plus flags (M, X)</td>
+	</tr>
+	<tr>
+		<td>modified</td>
+		<td>set to "true" if working copy is modified, property not set otherwise</td>
+	</tr>
+	<tr>
+		<td>mixed</td>
+		<td>set to "true" if working copy is mixed, property not set otherwise</td>
+	</tr>
+</table>
+<p>
+An example of the properties that would be set in a sample working copy (with modifications):<br>
+(with prefix="svn.")
+<pre>
+svn.repository.url -> https://server/repos/branches/1.2.x
+svn.repository.path -> /repos/branches/1.2.x
+svn.revision.max -> 676
+svn.revision.max-with-flags -> 676M
+svn.revision.range -> 676M
+svn.committed.max -> 651
+svn.committed.max-with-flags -> 651M
+svn.modified -> true
+</pre>
+Example output in case of mixed and modified working copy:
+(without prefix set)
+<pre>
+repository.url -> https://server/repos/branches/1.2.x
+repository.path -> /repos/branches/1.2.x
+revision.max -> 676
+revision.max-with-flags -> 676MX
+revision.range -> 673:676M
+svn.committed.max -> 651
+svn.committed.max-with-flags -> 651M
+modified -> true
+mixed -> true
+</pre>
+</p>
+</div>
+
+<![CDATA[=========================================================]]>
+
+
+<div class="h2" id="Examples" title="Examples">
+<H2>Examples</H2>
+<p>&nbsp;</p>
+
+<div class="sample" style="width: 588px; height: 48px">
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;svn</FONT>
+<FONT COLOR="#000080">javahl=</FONT><FONT COLOR="#008000">&quot;${javahl}&quot;</FONT><FONT COLOR="#000080">&gt;</FONT></FONT></FONT><br>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;checkout</FONT>
+<FONT COLOR="#000080">url=</FONT><FONT COLOR="#008000">&quot;${urlRepos}&quot;</FONT>
+<FONT COLOR="#000080">destPath=</FONT><FONT COLOR="#008000">&quot;workingcopy&quot;</FONT>
+<FONT COLOR="#000080">/&gt;</FONT></FONT></FONT><br>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;/svn&gt;</FONT></FONT></FONT>
+</div>
+<p>checkouts a working copy from repository</p>
+<p>&nbsp;</p>
+</p>
+
+<p>
+<div class="sample">
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;svn</FONT><FONT COLOR="#000080">&gt;</FONT></FONT></FONT><br>
+<FONT COLOR="#000080">  <FONT FACE="Courier New"><FONT SIZE=2>&lt;delete&gt;</FONT></FONT></FONT><br>
+<FONT COLOR="#000080">    <FONT FACE="Courier New"><FONT SIZE=2>&lt;fileset</FONT>
+<FONT COLOR="#000080">dir=</FONT><FONT COLOR="#008000">&quot;workingcopy/deleteTest&quot;</FONT><FONT COLOR="#000080">&gt;</FONT></FONT></FONT><br>
+<FONT COLOR="#000080">      <FONT FACE="Courier New"><FONT SIZE=2>&lt;include</FONT>
+<FONT COLOR="#000080">name=</FONT><FONT COLOR="#008000">&quot;**/*.del&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT>
+<FONT COLOR="#000080">    <FONT FACE="Courier New"><FONT SIZE=2>&lt;/fileset&gt;</FONT></FONT></FONT><br>
+<FONT COLOR="#000080">  <FONT FACE="Courier New"><FONT SIZE=2>&lt;/delete&gt;</FONT></FONT></FONT><br>
+<FONT COLOR="#000080">  <FONT FACE="Courier New"><FONT SIZE=2>&lt;commit</FONT>
+<FONT COLOR="#000080">message=</FONT><FONT COLOR="#008000">&quot;commit
+deleted files&quot;</FONT> <FONT COLOR="#000080">dir=</FONT><FONT COLOR="#008000">&quot;workingcopy/deleteTest&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT><br>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;/svn&gt;</FONT></FONT></FONT>
+</div>
+<p>deletes some files from repository (and commit changes)</p>
+<p>&nbsp;</p>
+
+<p>
+<div class="sample">
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;svn&gt;</FONT></FONT></FONT><br>
+<FONT COLOR="#000080">  <FONT FACE="Courier New"><FONT SIZE=2>&lt;add</FONT>
+<FONT COLOR="#000080">dir=</FONT><FONT COLOR="#008000">&quot;workingcopy/propTest&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT><br>
+<FONT COLOR="#000080">  <FONT FACE="Courier New"><FONT SIZE=2>&lt;commit</FONT>
+<FONT COLOR="#000080">message=</FONT><FONT COLOR="#008000">&quot;propTest
+added&quot;</FONT> <FONT COLOR="#000080">dir=</FONT><FONT COLOR="#008000">&quot;workingcopy/propTest&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT><br>
+  <FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;propset</FONT>
+<FONT COLOR="#000080">path=</FONT><FONT COLOR="#008000">&quot;workingcopy/propTest/file.png&quot;</FONT>
+<FONT COLOR="#000080">name=</FONT><FONT COLOR="#008000">&quot;svn:mime-type&quot;</FONT>
+<FONT COLOR="#000080">value=</FONT><FONT COLOR="#008000">&quot;image/png&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT><br>
+  <FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;propset</FONT>
+<FONT COLOR="#000080">path=</FONT><FONT COLOR="#008000">&quot;workingcopy/propTest/file.png&quot;</FONT>
+<FONT COLOR="#000080">name=</FONT><FONT COLOR="#008000">&quot;myPicture&quot;</FONT>
+<FONT COLOR="#000080">file=</FONT><FONT COLOR="#008000">&quot;workingcopy/propTest/icon.gif&quot;</FONT><FONT COLOR="#000080">/&gt;</FONT></FONT></FONT><br>
+<FONT FACE="Courier New"><FONT SIZE=2><FONT COLOR="#000080">&lt;/svn&gt;</FONT></FONT></FONT>
+</div>
+<p>add my_repos/propTest to repository and set two properties on file.png <br>
+subversion command line interface is used (javahl="false").
+
+</BODY>
+</HTML>
Index: /branches/rk-oran/shared/ant-tasks/svnant/doc/svnant-user.html
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/doc/svnant-user.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/doc/svnant-user.html	(revision 18906)
@@ -0,0 +1,18 @@
+<html>
+	<head>
+		<meta http-equiv="Content-Language" content="en-us">
+		<title>SvnAnt User Manual</title>
+	</head>
+
+	<frameset cols="18%,82%">
+		<frame src="toc.html" name="navFrame">
+		<frame src="svn.html" name="mainFrame">
+	</frameset>
+	<noframes>
+		<h3>No Frames!</h3>
+		<p>
+			Your browser does not display frames. This link will
+			bring you to the table of content: <a href="toc.html">SvnAnt - Table of Content</a>
+		</p>
+	</noframes>
+</html>
Index: /branches/rk-oran/shared/ant-tasks/svnant/doc/toc.html
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/doc/toc.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/doc/toc.html	(revision 18906)
@@ -0,0 +1,18 @@
+<html>
+	<head>
+		<meta http-equiv="Content-Language" content="en-us"/>
+		<title>SvnAnt User Manual</title>
+		<base target="mainFrame"/>
+	</head>
+	<body>
+		<h2>SvnAnt</h2>
+		<h3>Table of Content</h3>
+		<a href="svn.html">Tasks</a>
+		<br/>
+		<a href="types.html">Types</a>
+		<br/>
+		<a href="selectors.html">Selectors</a>
+		<br/>
+		<a href="conditions.html">Conditions</a>
+	</body>
+</html>
Index: /branches/rk-oran/shared/ant-tasks/svnant/doc/types.html
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/doc/types.html	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/doc/types.html	(revision 18906)
@@ -0,0 +1,432 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns:ant="http://www.fiset.ca/ant-docs/v1" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"/>
+<title>Svn Types</title>
+<META HTTP-EQUIV="Content-Language" CONTENT="en-us"/>
+<style type="text/css">	
+				
+				body {
+					font: 80% Verdana, Arial, Helvetica, sans-serif;
+					margin: 5px; padding: 0;
+				/*	background: rgb(95%,95%,80%);  */
+					color: black;
+				}
+				h1 {
+					font-size: 200%; letter-spacing: 3px;
+					margin-bottom: 1em; 
+					padding: 0.66em 0 0.33em 1em;
+					background: rgb(85%,85%,70%);
+				}
+				h2 {
+					background: rgb(90%,90%,80%);
+				}
+				h3 {
+					background-color: rgb(95%,95%,85%);
+				}
+				.sample {
+					font-family: Courier, "Courier New", monospace;
+					background-color: #f3f1f4;
+				 }
+				div.sample {
+					margin-left: 10px;
+					margin-right: 10px;
+					padding-top: 3px;
+					padding-bottom: 3px;
+					padding-left: 3px;
+					padding-right: 3px;
+					border:1px dashed black;
+					width: 80%;
+				 }
+				 table.params {
+					width: 80%;
+					border: 1px solid gray;
+					margin-bottom:1em;
+				 }
+				 th.params, td.params {
+					padding: 0 0.5em;
+					border-left: 1px solid #DDD;
+					border-bottom: 1px solid #DDD;
+					font: 70%
+				}
+				th.params {
+					
+				}
+				table.toc {
+					width: 80%;
+					border: 1px solid gray;
+					margin-bottom:1em;
+				}
+				td.toc {
+					padding: 0 0.5em;
+					border: none
+					font: 70%
+				}
+				table.type {
+					width: 80%;
+					border: none;
+					margin-bottom:1em;
+				}
+				th.type, td.type {
+					text-align: left;
+					padding: 0 0.5em;
+					border: none
+					font: 70%
+				}
+				th.type {
+					font-weight: bold;
+				}
+				
+			</style>
+</head>
+<body lang="en-US" dir="LTR">
+<h1>Svn Types</h1>
+<h2>Table of Content</h2>
+<table class="toc">
+<tbody class="toc">
+<tr class="toc">
+<td class="toc">
+<a href="#svnFileSet">svnFileSet</a>
+</td>
+<td class="toc">FileSet replacement that operates on list of files obtained from Subversion.</td>
+</tr>
+</tbody>
+</table>
+<h2>Introduction</h2>
+<ant:introduction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		<p>
+			This document describes the type extensions that svn-ant brings to Ant. To use those types,
+			you must first obtain a copy of svnant.jar, add it to the classpath of your ant project
+			and define the types. Fortunately, there is a resource file, within the distributed JAR file,
+			and all those steps can be accomplished with the following code:
+			<div class="sample">
+<pre class="sample">
+				
+&lt;path id="svnant.classpath"&gt;
+  &lt;pathelement location="${svnant.dir}/lib/svnant.jar" /&gt;
+  &lt;pathelement location="${svnant.dir}/lib/svnClientAdapter.jar" /&gt;
+&lt;/path&gt;  
+
+&lt;typedef resource="svntypes.xml" classpathref="project.classpath"/&gt;
+				
+			</pre>
+</div>
+		</p>
+		<p>
+			If you are upgrading from an earlier version of svnAnt, and the following line was used
+			in your <i>build.xml</i> file, then replace it with the ones above.
+			<div class="sample">
+<pre class="sample">
+				
+&lt;taskdef resource="svntask.properties" classpathref="svnant.classpath"/&gt;
+				
+			</pre>
+</div>
+		</p>
+		<h3>
+<a name="bindings">Bindings</a>
+</h3>
+		<p>
+			All types offer two parameters: <b>javahl</b> and <b>svnkit</b>. Those parameters
+			are booleans, which means their values can be set to either <b>true</b> or <b>false</b>. 
+			If not specified, those parameters are assumed to be set (true). These two parameters are used
+			to select which client is used to access Subversion.
+		</p>
+		<p>
+			There are three clients used by svnAnt to access Subversion:
+			<ul>
+				<li>JavaHL;</li>
+				<li>SVNKit; and,</li>
+				<li>Command Line Interface.</li>
+			</ul>
+			To better understand the difference between those three clients, please refer to
+			documentation on <b>svnClientAdapter.jar</b>.
+		</p>
+		<p>
+			The property <b>javahl</b> is considered only if the javahl libraries are available. Similarly,
+			the property <b>svnkit</b> is considered only if SVNKit is present. Finally, <b>javahl</b>
+			takes precedence over <b>svnkit</b>.
+		</p>
+		<p>
+			To better illustrate the previous paragraph, use the following steps:
+			<ol>
+				<li>If <b>javahl</b> is <i>true</i> and JavaHL bindings are available, then JavaHL is used.</li>
+				<li>If <b>svnkit</b> is <i>true</i> and SVNKit is present, then SVNKit is used.</li>
+				<li>If the two previous tests failed, for any reason, then the Command Line Interface is used.</li>
+			</ol>
+		</p>
+	</ant:introduction>
+<h1>
+<a name="">svnFileSet</a>
+</h1>
+<p>FileSet replacement that operates on list of files obtained from Subversion.</p>
+<table class="type">
+<tbody class="type">
+<tr class="type">
+<th class="type">Implementation:</th>
+<td class="type">org.tigris.subclipse.svnant.SvnFileSet</td>
+</tr>
+</tbody>
+</table>
+<h2>Parameters</h2>
+<table class="params">
+<tr class="params">
+<th class="params">Attribute</th>
+<th class="params">Description</th>
+<th class="params">Required</th>
+</tr>
+<tr class="params">
+<td class="params">dir</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Specifies the root directory used by the file set. It should specify
+				a directory managed by Subversion.
+			</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Either dir or file must be specified
+			</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">file</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				If used, specifies a fileset that contains a single file.
+			</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Either dir or file must be specified
+			</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">includes</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Comma-seperated or space-separated list of patterns, which describe files that are 
+				included. If this attribute if not specified, then all files are included.
+			</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				No
+			</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">excludes</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				Comma-seperated or space-separated list of patterns, which describe files that are 
+				excluded. If this attribute if not specified, then no files are excluded.
+			</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				No
+			</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">javahl</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of JavaHL bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+<tr class="params">
+<td class="params">svnkit</td>
+<td class="params">
+<ant:description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		If set, instructs the use of SVNKit bindings, if available.
+		Set to <b>false</b> to use command line client interface to subversion. 
+		Defaults to true. See <a href="#bindings">note</a> for more details.
+	</ant:description>
+</td>
+<td class="params">
+<ant:required xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+		No
+	</ant:required>
+</td>
+</tr>
+</table>
+<h2>Nested Types</h2>
+<h3>exclude</h3>
+				The type svnFileSet can include the nested type 'exclude', similar to a classic FileSet.
+			<h3>include</h3>
+				The type svnFileSet can include the nested type 'include', similar to a classic FileSet.
+			<h3>patternSet</h3>
+				The type svnFileSet can include the nested type 'patternSet', similar to a classic FileSet.
+			<h3>selector</h3>
+				The type svnFileSet can include the any file selector, such as <b xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">contains</b>, <b xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">date</b>
+				<b xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">size</b>, or any <a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" href="selectors.html">file selector defined by svn-ant</a>
+			<h2>Description</h2>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				This type implements a FileSet. Instances of FileSet are used in tasks that operates on a number of files. The files
+				selected by a FileSet can be tailored by a number of patterns and selectors. More information about file sets is available
+				with the Ant documentation.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				The motivation with creating a replacement FileSet that is based on Subversion was to have the ability of creating
+				sets of files that include deleted and missing files. In fact, the classic fileset operates only on files that are reported
+				by the file system and can not predict deleted and missing files. Furthermore, there are useful commands that can be performed
+				on deleted and missing files, such as 'revert', 'delete', 'update' and others.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				At the present time, <b>svnFileSet</b> is experimental. It supports selectors but it does not yet accept any patterns 
+				(include, exclude). Those enhancments are to come later.
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				<b>svnFileSet</b> can be used within any svn-ant task that supports a nested file sets. It can also be used in any task
+				that is based on a file set. If you have a problem using <b>svnFileSet</b> within a task that works well with the classic
+				fileset, then report the problem to the author of the task. However, for the time being, there is a work around your 
+				problem. Instead of using a <b>svnFileSet</b> directly in the targeted task, use it indirectly via a classic fileset and
+				a reference. For example, if ANT complains about a task similar to the following:
+				<div class="sample">
+<pre class="sample">
+
+&lt;target name="example"&gt;
+	&lt;mkdir dir="test"/&gt;
+	&lt;copy todir="test"&gt;
+		&lt;svnFileSet dir="workingcopy"&gt;
+			&lt;svnAdded/&gt;
+		&lt;/svnFileSet&gt;
+	&lt;/copy&gt;
+&lt;/target&gt;
+					
+				</pre>
+</div>
+				
+				you can rewrite it, using a reference, as:
+				
+				<div class="sample">
+<pre class="sample">
+
+&lt;target name="example"&gt;
+	&lt;svnFileSet id="svnFileSetId_1" dir="workingcopy"&gt;
+		&lt;svnAdded/&gt;
+	&lt;/svnFileSet&gt;
+	&lt;mkdir dir="test"/&gt;
+	&lt;copy todir="test"&gt;
+		&lt;fileset refid="svnFileSetId_1"/&gt;
+	&lt;/copy&gt;
+&lt;/target&gt;
+					
+				</pre>
+</div>
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
+				If you are the author of a fileset-based task and that you can not understand 
+				why your task does not accept <b>svnFileSet</b> while it works perfectly well 
+				with the classic fileset, here is a thing you can check. If your task
+				accepts instances of FileSet with a method similar to:
+				<div class="sample">
+<pre class="sample">
+
+public void addFileset(FileSet set) {
+	...
+}
+					
+				</pre>
+</div>
+				then adding the following method should fix the problem:
+				<div class="sample">
+<pre class="sample">
+
+public void add(FileSet set) {
+	addFileSet(set);
+}
+					
+				</pre>
+</div>
+			</p>
+			<h3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Examples</h3>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				The following ant script can be used to remove all missing files from the associated repository:
+				<div class="sample">
+<pre class="sample">
+
+&lt;svn&gt;
+	&lt;delete&gt;
+		&lt;svnFileSet dir="workingcopy"&gt;
+			&lt;svnMissing/&gt;
+		&lt;/svnFileSet&gt;
+	&lt;/delete&gt;
+	&lt;commit 
+		dir="workingcopy" 
+		message="automatically removing missing files"/&gt;
+&lt;/svn&gt;
+					
+				</pre>
+</div>
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				The following ant script can be used to add all new files to the associated repository:
+				<div class="sample">
+<pre class="sample">
+
+&lt;svn&gt;
+	&lt;add&gt;
+		&lt;svnFileSet dir="workingcopy"&gt;
+			&lt;svnUnversioned/&gt;
+		&lt;/svnFileSet&gt;
+	&lt;/add&gt;
+	&lt;commit
+		dir="workingcopy" 
+		message="automatically adding files"/&gt;
+&lt;/svn&gt;
+					
+				</pre>
+</div>
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				The following ant script can be used to restore all deleted files:
+				<div class="sample">
+<pre class="sample">
+
+&lt;svn&gt;
+	&lt;revert&gt;
+		&lt;svnFileSet dir="workingcopy"&gt;
+			&lt;svnDeleted/&gt;
+		&lt;/svnFileSet&gt;
+	&lt;/revert&gt;
+&lt;/svn&gt;
+					
+				</pre>
+</div>
+			</p>
+			<p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+				If, in the previous example, you wanted svn-ant to use the command line adapter:
+				<div class="sample">
+<pre class="sample">
+
+&lt;svn javahl="false" svnkit="false"&gt;
+	&lt;revert&gt;
+		&lt;svnFileSet 
+			dir="workingcopy" 
+			javahl="false" 
+			svnkit="false"&gt;
+			&lt;svnDeleted 
+				javahl="false" 
+				svnkit="false"/&gt;
+		&lt;/svnFileSet&gt;
+	&lt;/revert&gt;
+&lt;/svn&gt;
+					
+				</pre>
+</div>
+			</p>
+		</body>
+</html>
Index: /branches/rk-oran/shared/ant-tasks/svnant/lib/JAVAHL-LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/lib/JAVAHL-LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/lib/JAVAHL-LICENSE	(revision 18906)
@@ -0,0 +1,55 @@
+This license applies to all portions of Subversion which are not
+externally-maintained libraries (e.g. apr/, apr-util/, and neon/).
+Such libraries have their own licenses; we recommend you read them, as
+their terms may differ from the terms below.
+
+This is version 1 of this license.  It is also available online at
+http://subversion.tigris.org/license-1.html.  If newer versions of
+this license are posted there (the same URL, but with the version
+number incremented: .../license-2.html, .../license-3.html, and so
+on), you may use a newer version instead, at your option.
+
+====================================================================
+Copyright (c) 2000-2005 CollabNet.  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 acknowledgment: "This product includes
+software developed by CollabNet (http://www.Collab.Net/)."
+Alternately, this acknowledgment may appear in the software itself, if
+and wherever such third-party acknowledgments normally appear.
+
+4. The hosted project names must not be used to endorse or promote
+products derived from this software without prior written
+permission. For written permission, please contact info@collab.net.
+
+5. Products derived from this software may not use the "Tigris" name
+nor may "Tigris" appear in their names without prior written
+permission of CollabNet.
+
+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 COLLABNET 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 CollabNet.
+
Index: /branches/rk-oran/shared/ant-tasks/svnant/lib/SVNCLIENTADAPTER-LICENSE
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/lib/SVNCLIENTADAPTER-LICENSE	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/lib/SVNCLIENTADAPTER-LICENSE	(revision 18906)
@@ -0,0 +1,185 @@
+SVNClientAdapter Library License
+
+This license applies to all portions of SVNClientAdapter library, which 
+are not externally-maintained libraries (e.g. JavaHL or SVNKit).
+
+Such libraries have their own licenses; we recommend you read them, as
+their terms may differ from the terms below.
+
+=============================================================================
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
Index: /branches/rk-oran/shared/ant-tasks/svnant/license.txt
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/license.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/license.txt	(revision 18906)
@@ -0,0 +1,64 @@
+SvnAnt license
+
+This license applies to all portions of svnant library, which 
+are not externally-maintained libraries (e.g. svnClientAdapter, JavaHL or SVNKit).
+
+Such libraries have their own licenses; we recommend you read them, as
+their terms may differ from the terms below.
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000 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 acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" 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 name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * 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/>.
+ *
+ */
+
+
Index: /branches/rk-oran/shared/ant-tasks/svnant/readme.txt
===================================================================
--- /branches/rk-oran/shared/ant-tasks/svnant/readme.txt	(revision 18906)
+++ /branches/rk-oran/shared/ant-tasks/svnant/readme.txt	(revision 18906)
@@ -0,0 +1,38 @@
+SvnAnt
+======
+You can find latest version of svnant on http://subclipse.tigris.org
+
+Installation
+============
+Put the svnant.jar and svnClientAdapter.jar files to classpath of your ant build file.
+(Or directly to your ANT_HOME/lib directory.)
+If you plan to use JavaHL instead of commandline, put the svnjavahl.jar to the classpath too.
+(An of course put the appropriate native OS library on your PATH/LD_PATH too)
+
+In the build file, load the <svn> task.
+E.g. like this:
+  <taskdef resource="svntask.properties" classpathref="project.classpath"/>
+(where svnant.jar lies in the "project.classpath")
+
+To provide access to the Subversion API, svnant uses svnClientAdapter on top of 
+either the JavaHL native Subversion Java (JNI) bindings or Subverion's
+command line programs (which must be installed and in your PATH).
+See the subclipse's FAQ <http://subclipse.tigris.org/faq.html#get-javahl">
+for info how to get JavaHL for your operating system.
+
+Documentation
+=============
+Documentation of the <svn> task is in the /doc directory.
+
+Play around
+===========
+To access the sources, just type "ant" in the directory containing the
+build.xml bundled with the distribution.  The default target will
+retrieve the sources corresponding to the version you have.  If you
+want to get the latest sources, type "ant checkoutLatest".
+
+Once you have the sources, svnant unit tests can be invoked using the
+top level build.xml by typing "ant runTests".  These tests provide a
+great set of examples of how to use svnant's Ant tasks and data types.
+
+Please send any usage questions to <mailto:users@subclipse.tigris.org>.
Index: /branches/rk-oran/shared/ant/bin/ant
===================================================================
--- /branches/rk-oran/shared/ant/bin/ant	(revision 18906)
+++ /branches/rk-oran/shared/ant/bin/ant	(revision 18906)
@@ -0,0 +1,299 @@
+#! /bin/sh
+
+#   Copyright 2001-2005 The Apache Software Foundation
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+# Extract launch and ant arguments, (see details below).
+ant_exec_args=
+no_config=false
+use_jikes_default=false
+ant_exec_debug=false
+show_help=false
+for arg in "$@" ; do
+  if [ "$arg" = "--noconfig" ] ; then
+    no_config=true
+  elif [ "$arg" = "--usejikes" ] ; then
+    use_jikes_default=true
+  elif [ "$arg" = "--execdebug" ] ; then
+    ant_exec_debug=true
+  elif [ my"$arg" = my"--h"  -o my"$arg" = my"--help"  ] ; then
+    show_help=true
+    ant_exec_args="$ant_exec_args -h"
+  else
+    if [  my"$arg" = my"-h"  -o  my"$arg" = my"-help" ] ; then
+      show_help=true
+    fi
+    ant_exec_args="$ant_exec_args \"$arg\""
+  fi
+done
+
+# Source/default ant configuration
+if $no_config ; then
+  rpm_mode=false
+  usejikes=$use_jikes_default
+else
+  # load system-wide ant configuration
+#  if [ -f "/etc/ant.conf" ] ; then
+#    . /etc/ant.conf
+#  fi
+
+  # load user ant configuration
+  if [ -f "$HOME/.ant/ant.conf" ] ; then
+    . $HOME/.ant/ant.conf
+  fi
+  if [ -f "$HOME/.antrc" ] ; then
+    . "$HOME/.antrc"
+  fi
+
+  # provide default configuration values
+  if [ -z "$rpm_mode" ] ; then
+    rpm_mode=false
+  fi
+  if [ -z "$usejikes" ] ; then
+    usejikes=$use_jikes_default
+  fi
+fi
+
+# Setup Java environment in rpm mode
+if $rpm_mode ; then
+  if [ -f /usr/share/java-utils/java-functions ] ; then
+    . /usr/share/java-utils/java-functions
+    set_jvm
+    set_javacmd
+  fi
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  Darwin*) darwin=true
+           if [ -z "$JAVA_HOME" ] ; then
+             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
+           fi
+           ;;
+esac
+
+if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
+  ## resolve links - $0 may be a link to ant's home
+  PRG="$0"
+  progname=`basename "$0"`
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+    else
+    PRG=`dirname "$PRG"`"/$link"
+    fi
+  done
+
+  ANT_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  ANT_HOME=`cd "$ANT_HOME" && pwd`
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$ANT_HOME" ] &&
+    ANT_HOME=`cygpath --unix "$ANT_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# set ANT_LIB location
+ANT_LIB="${ANT_HOME}/lib"
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD=`which java 2> /dev/null `
+    if [ -z "$JAVACMD" ] ; then
+        JAVACMD=java
+    fi
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly."
+  echo "  We cannot execute $JAVACMD"
+  exit 1
+fi
+
+# Build local classpath using just the launcher in non-rpm mode or
+# use the Jpackage helper in rpm mode with basic and default jars
+# specified in the ant.conf configuration. Because the launcher is
+# used, libraries linked in ANT_HOME will also be include, but this
+# is discouraged as it is not java-version safe. A user should
+# request optional jars and their dependencies via the OPT_JAR_LIST
+# variable
+if $rpm_mode && [ -f /usr/bin/build-classpath ] ; then
+  LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)"
+  # If the user requested to try to add some other jars to the classpath
+  if [ -n "$OPT_JAR_LIST" ] ; then
+    _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)"
+    if [ -n "$_OPTCLASSPATH" ] ; then 
+      LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
+    fi
+  fi
+
+  # Explicitly add javac path to classpath, assume JAVA_HOME set
+  # properly in rpm mode
+  if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
+    LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
+  fi
+  if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
+    LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
+  fi
+
+  # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
+  # user CLASSPATH first and ant-found jars after.
+  # In that case, the user CLASSPATH will override ant-found jars
+  #
+  # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
+  # with ant-found jars first and user CLASSPATH after
+  if [ -n "$CLASSPATH" ] ; then
+    # merge local and specified classpath 
+    if [ -z "$LOCALCLASSPATH" ] ; then 
+      LOCALCLASSPATH="$CLASSPATH"
+    elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
+      LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
+    else
+      LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
+    fi
+
+    # remove class path from launcher -cp option
+    CLASSPATH=""
+  fi
+else
+  # not using rpm_mode; use launcher to determine classpaths
+  if [ -z "$LOCALCLASSPATH" ] ; then
+      LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
+  else
+      LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
+  fi
+fi
+
+if [ -n "$JAVA_HOME" ] ; then
+  # OSX hack to make Ant work with jikes
+  if $darwin ; then
+    OSXHACK="${JAVA_HOME}/../Classes"
+    if [ -d "${OSXHACK}" ] ; then
+      for i in "${OSXHACK}"/*.jar
+      do
+        JIKESPATH="$JIKESPATH:$i"
+      done
+    fi
+  fi
+fi
+
+# Allow Jikes support (off by default)
+if $usejikes; then
+  ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
+fi
+
+# For Cygwin, switch paths to appropriate format before running java
+# For PATHs convert to unix format first, then to windows format to ensure
+# both formats are supported. Probably this will fail on directories with ;
+# in the name in the path. Let's assume that paths containing ; are more
+# rare than windows style paths on cygwin.
+if $cygwin; then
+  if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
+    format=mixed
+  else
+    format=windows
+  fi
+  ANT_HOME=`cygpath --$format "$ANT_HOME"`
+  ANT_LIB=`cygpath --$format "$ANT_LIB"`
+  JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
+  LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
+  LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
+  if [ -n "$CLASSPATH" ] ; then
+    CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
+    CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
+  fi
+  CYGHOME=`cygpath --$format "$HOME"`
+fi
+
+# Show script help if requested
+if $show_help ; then
+  echo $0 '[script options] [options] [target [target2 [target3] ..]]'
+  echo 'Script Options:'
+  echo '  --help, --h            print this message and ant help'
+  echo '  --noconfig             suppress sourcing of /etc/ant.conf,'
+  echo '                         $HOME/.ant/ant.conf, and $HOME/.antrc'
+  echo '                         configuration files'
+  echo '  --usejikes             enable use of jikes by default, unless'
+  echo '                         set explicitly in configuration files'
+  echo '  --execdebug            print ant exec line generated by this'
+  echo '                         launch script'
+  echo '  '
+fi
+# add a second backslash to variables terminated by a backslash under cygwin
+if $cygwin; then
+  case "$ANT_HOME" in
+    *\\ )
+    ANT_HOME="$ANT_HOME\\"
+    ;;
+  esac
+  case "$CYGHOME" in
+    *\\ )
+    CYGHOME="$CYGHOME\\"
+    ;;
+  esac
+  case "$JIKESPATH" in
+    *\\ )
+    JIKESPATH="$JIKESPATH\\"
+    ;;
+  esac
+  case "$LOCALCLASSPATH" in
+    *\\ )
+    LOCALCLASSPATH="$LOCALCLASSPATH\\"
+    ;;
+  esac
+  case "$CLASSPATH" in
+    *\\ )
+    CLASSPATH="$CLASSPATH\\"
+    ;;
+  esac
+fi
+# Execute ant using eval/exec to preserve spaces in paths,
+# java options, and ant args
+ant_sys_opts=
+if [ -n "$CYGHOME" ]; then
+  if [ -n "$JIKESPATH" ]; then
+    ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\""
+  else
+    ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
+  fi
+else
+  if [ -n "$JIKESPATH" ]; then
+    ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
+  fi
+fi
+ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -cp \"$CLASSPATH\" $ant_exec_args"
+if $ant_exec_debug ; then
+    echo $ant_exec_command
+fi
+eval $ant_exec_command
Index: /branches/rk-oran/shared/ant/bin/ant.bat
===================================================================
--- /branches/rk-oran/shared/ant/bin/ant.bat	(revision 18906)
+++ /branches/rk-oran/shared/ant/bin/ant.bat	(revision 18906)
@@ -0,0 +1,126 @@
+@echo off
+
+REM  Copyright 2001,2004-2005 The Apache Software Foundation
+REM
+REM  Licensed under the Apache License, Version 2.0 (the "License");
+REM  you may not use this file except in compliance with the License.
+REM  You may obtain a copy of the License at
+REM
+REM      http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM  Unless required by applicable law or agreed to in writing, software
+REM  distributed under the License is distributed on an "AS IS" BASIS,
+REM  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+REM  See the License for the specific language governing permissions and
+REM  limitations under the License.
+
+if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"
+
+if "%OS%"=="Windows_NT" @setlocal
+if "%OS%"=="WINNT" @setlocal
+
+rem %~dp0 is expanded pathname of the current script under NT
+set DEFAULT_ANT_HOME=%~dp0..
+
+if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%
+set DEFAULT_ANT_HOME=
+
+set _USE_CLASSPATH=yes
+
+rem Slurp the command line arguments. This loop allows for an unlimited number
+rem of arguments (up to the command line limit, anyway).
+set ANT_CMD_LINE_ARGS=%1
+if ""%1""=="""" goto doneStart
+shift
+:setupArgs
+if ""%1""=="""" goto doneStart
+if ""%1""==""-noclasspath"" goto clearclasspath
+set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
+shift
+goto setupArgs
+
+rem here is there is a -noclasspath in the options
+:clearclasspath
+set _USE_CLASSPATH=no
+shift
+goto setupArgs
+
+rem This label provides a place for the argument list loop to break out
+rem and for NT handling to skip to.
+
+:doneStart
+rem find ANT_HOME if it does not exist due to either an invalid value passed
+rem by the user or the %0 problem on Windows 9x
+if exist "%ANT_HOME%\lib\ant.jar" goto checkJava
+
+rem check for ant in Program Files
+if not exist "%ProgramFiles%\ant" goto checkSystemDrive
+set ANT_HOME=%ProgramFiles%\ant
+goto checkJava
+
+:checkSystemDrive
+rem check for ant in root directory of system drive
+if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive
+set ANT_HOME=%SystemDrive%\ant
+goto checkJava
+
+:checkCDrive
+rem check for ant in C:\ant for Win9X users
+if not exist C:\ant\lib\ant.jar goto noAntHome
+set ANT_HOME=C:\ant
+goto checkJava
+
+:noAntHome
+echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME.
+goto end
+
+:checkJava
+set _JAVACMD=%JAVACMD%
+
+if "%JAVA_HOME%" == "" goto noJavaHome
+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
+if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe
+goto checkJikes
+
+:noJavaHome
+if "%_JAVACMD%" == "" set _JAVACMD=java.exe
+
+:checkJikes
+if not "%JIKESPATH%"=="" goto runAntWithJikes
+
+:runAnt
+if "%_USE_CLASSPATH%"=="no" goto runAntNoClasspath
+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
+
+:runAntNoClasspath
+"%_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% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
+goto end
+
+:runAntWithJikes
+if "%_USE_CLASSPATH%"=="no" goto runAntWithJikesNoClasspath
+if not "%CLASSPATH%"=="" goto runAntWithJikesAndClasspath
+
+:runAntWithJikesNoClasspath
+"%_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%  -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
+goto end
+
+:end
+set _JAVACMD=
+set ANT_CMD_LINE_ARGS=
+
+if "%OS%"=="Windows_NT" @endlocal
+if "%OS%"=="WINNT" @endlocal
+
+:mainEnd
+if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"
+
Index: /branches/rk-oran/shared/artwork/Icon-README.txt
===================================================================
--- /branches/rk-oran/shared/artwork/Icon-README.txt	(revision 18906)
+++ /branches/rk-oran/shared/artwork/Icon-README.txt	(revision 18906)
@@ -0,0 +1,17 @@
+To create the MacOS icon, do
+* In GIMP, export the icon to tiff (png might be as good or better), fullsize (currently 128x128 [Aug 08])
+* You should also export a 16x16 icon to the same format, tweaked for readability at that small size
+* Go to a mac machine
+* run 'Icon Composer' and create the icon from the exported tiff
+	* drag fullsize tiff from finder to the appropriate panel in Icon Composer (currently the 128x128 panel)
+	* it should ask about copying the image to different sizes, opt for 'Copy to all smaller sizes'
+	* drag the 16x16 image to the 16x16 panel
+	* exit Icon Composer
+	* you will be asked where to save, save to shared/greenstone(2|3)/icon/icon.icns
+
+
+To create the Windows icon, do
+* In GIMP, export icons of these sizes: 128x128, 64x64, 48x48, 32x32, 16x16
+* 16x16 icon should have the edges cropped for readability at this small size
+* Open each as a layer in a new GIMP image (File->Open as Layer), and delete other layers (like 'Background')
+* Save as an ico file
Index: /branches/rk-oran/shared/greenstone2/ant-scripts/rk2-targets.xml
===================================================================
--- /branches/rk-oran/shared/greenstone2/ant-scripts/rk2-targets.xml	(revision 18906)
+++ /branches/rk-oran/shared/greenstone2/ant-scripts/rk2-targets.xml	(revision 18906)
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		.......................................................... 
+		August 2008
+		Targets for Greenstone2 release kits
+		Oran Fry
+		..........................................................
+-->
+
+<project name="rk2-targets">
+
+	<property name="version.major" value="2"/>
+
+	<target name="export-gsdl-gli">
+		<delete dir="${dest}"/>
+		<svn>
+			<export srcurl="${svn.root}/gsdl/${branch.path}" destPath="${dest}"/>
+			<export srcurl="${svn.root}/gli/${branch.path}" destPath="${dest}/gli"/>
+		</svn>
+	</target>
+
+	<target name="drop-in-docs">
+		<echo level="info">Dropping gsdl docs into distribution</echo>
+		<copy todir="${gsdl.basedir}" overwrite="true">
+			<fileset dir="${rk.home}/greenstone2/docs"/>
+		</copy>
+	</target>
+
+	<target name="gsdl-set-version-numbers">
+
+		<echo level="info">Setting version in common-src/src/lib/gsdlconf.h</echo>
+		<rsr file="${gsdl.basedir}/common-src/src/lib/gsdlconf.h" pattern="(#define GSDL_VERSION) &quot;.*&quot;" replacement="$1 &quot;${version}&quot;" />
+
+		<echo level="info">Setting version in Install.sh</echo>
+		<rsr file="${gsdl.basedir}/Install.sh" pattern="(echo &quot;Version: ).*(&quot; .*)" replacement="$1${version}$2" />
+
+		<echo level="info">Setting version in etc/VERSION</echo>
+		<rsr file="${gsdl.basedir}/etc/VERSION" pattern="(gsdl version: ).*" replacement="$1${version}" />
+
+		<antcall target="gsdl-set-dates-in-readmes"><param name="gsdl.basedir" value="${gsdl.basedir}"/></antcall>
+
+	</target>
+
+	<target name="gsdl-set-dates-in-readmes">
+		<echo level="info">Changing date and version in the docs</echo>
+
+		<!-- en -->
+		<if><bool><available file="${gsdl.basedir}/READMEen.txt"/></bool>
+			<rsr file="${gsdl.basedir}/READMEen.txt">
+				<job pattern="^(Date\s*)(.*)" replacement="$1${month.default} ${current.year}" />
+				<job pattern="^(Version\s*)(.*)" replacement="$1${version}" />
+			</rsr>
+		</if>
+
+		<!-- ar -->
+		<if><bool><available file="${gsdl.basedir}/READMEar.txt"/></bool>
+			<rsr file="${gsdl.basedir}/READMEar.txt">
+				<job pattern="(Ø§ÙØªØ§Ø±ÙØ® : \s*)(.*)" replacement="$1${month.ar} ${current.year}"/>
+				<job pattern="(Ø§ÙÙØ³Ø®Ù : \s*)(.*)" replacement="$1${version}"/>
+			</rsr>
+		</if>
+
+		<!-- es -->
+		<if><bool><available file="${gsdl.basedir}/READMEes.txt"/></bool>
+			<rsr file="${gsdl.basedir}/READMEes.txt">
+				<job pattern="^(Fecha\s*)(.*)" replacement="$1${month.es} de ${current.year}"/>
+				<job pattern="^(Versi.?n\s*)(.*)" replacement="$1${version}"/>
+			</rsr>
+		</if>
+
+		<!-- fr -->
+		<if><bool><available file="${gsdl.basedir}/READMEfr.txt"/></bool>
+			<rsr file="${gsdl.basedir}/READMEfr.txt">
+				<job pattern="^(Date\s*)(.*)" replacement="$1${month.fr} ${current.year}"/>
+				<job pattern="^(Version\s*)(.*)" replacement="$1${version}"/>
+			</rsr>
+		</if>
+
+		<!-- ru -->
+		<if><bool><available file="${gsdl.basedir}/READMEru.txt"/></bool>
+			<rsr file="${gsdl.basedir}/READMEru.txt">
+				<job pattern="^(ÐÐ°ÑÐ°\s*)(.*)" replacement="$1${month.ru} ${current.year}"/>
+				<job pattern="^(ÐÐµÑÑÐžÑ\s*)(.*)" replacement="$1${version}"/>
+			</rsr>
+		</if>
+
+	</target>
+
+
+	<target name="insert-export-to-cd-package">
+		<mkdir dir="${gsdl.basedir}/bin/windows"/>
+		<get src="http://greenstone.org/release-snapshots/server.exe" dest="${gsdl.basedir}/bin/windows/server.exe"/>
+		<get src="http://svn.greenstone.org/other-projects/trunk/winbin/bin/Setup.exe" dest="${gsdl.basedir}/bin/windows/Setup.exe"/>
+		<get src="http://svn.greenstone.org/other-projects/trunk/winbin/bin/gssetup.exe" dest="${gsdl.basedir}/bin/windows/gssetup.exe"/>
+	</target>
+
+	<target name="create-binary-zip-linux">
+		<property name="binzip.dir" value="distributions/Greenstone-${version}-${os.suffix}-binary"/>
+		<exec dir="${basedir}" executable="cp"><arg line="-r distributions/web ${binzip.dir}"/></exec>
+
+		<!-- delete sourcecode -->
+		<delete dir="${binzip.dir}/common-src"/>
+		<delete dir="${binzip.dir}/build-src"/>
+		<delete dir="${binzip.dir}/runtime-src"/>
+
+		<!-- delete loose files -->
+		<delete>
+			<fileset
+				dir="${binzip.dir}"
+				includes="README*.txt,Uninstall.sh,uninst.jar,acconfig.h,aclocal.m4,config.guess,config.sub,configtest.pl,configure,configure.in,install-sh,Makefile.in,micotest.cpp,config.h.in"
+				excludes="READMEen.txt"/>
+		</delete>
+
+	</target>
+
+	<target name="create-binary-zip-windows">
+		<property name="binzip.dir" value="distributions/Greenstone-${version}-${os.suffix}-binary"/>
+		<copy todir="${binzip.dir}">
+			<fileset dir="distributions/web"/>
+		</copy>
+
+		<!-- delete sourcecode -->
+		<delete dir="${binzip.dir}/common-src"/>
+		<delete dir="${binzip.dir}/build-src"/>
+		<delete dir="${binzip.dir}/runtime-src"/>
+
+		<!-- delete loose files -->
+		<delete>
+			<fileset dir="${binzip.dir}" includes="README*.txt,Uninstall.bat,Uninst.bat,uninst.jar,win32.mak,win32cfg.h,makegs2.bat" excludes="READMEen.txt"/>
+		</delete>
+	</target>
+
+	<target name="create-needed-empty-files">
+		<mkdir dir="${gsdl.basedir}/tmp"/>
+		<chmod dir="${gsdl.basedir}/tmp" perm="a+rwx"/>
+		<echo file="${gsdl.basedir}/etc/usage.txt"></echo>
+	</target>
+
+</project>
+	
Index: /branches/rk-oran/shared/greenstone2/docs/LICENSE.txt
===================================================================
--- /branches/rk-oran/shared/greenstone2/docs/LICENSE.txt	(revision 18906)
+++ /branches/rk-oran/shared/greenstone2/docs/LICENSE.txt	(revision 18906)
@@ -0,0 +1,346 @@
+Greenstone2 is licensed under the GNU General Public License v2
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: /branches/rk-oran/shared/greenstone2/docs/READMEar.txt
===================================================================
--- /branches/rk-oran/shared/greenstone2/docs/READMEar.txt	(revision 18906)
+++ /branches/rk-oran/shared/greenstone2/docs/READMEar.txt	(revision 18906)
@@ -0,0 +1,142 @@
+﻿العنوان : برنامج قرينستون للمكتبة الرقمية 
+
+الغرض : مجموعة برامج للمكتبة الرقميه و التي تشمل القدرة على 
+         خدمة مجموعات المكتبه الرقميه وبناء مجموعات جديدة 
+
+المؤلف : مشروع مكتبه نيوزيلندا الرقميه 
+
+الرخصة: الرخصة العامة gnu   (النسخه 2) 
+         الاحكام والشروط الكاملة هي في ملف "COPYING" علي هذا القرص المدمج 
+
+التاريخ : حزيران / يونية 2007 
+
+النسخه : 2.74 
+
+التوثيق  : Install.pdf  برنامج قرينستون للمكتبة الرقمية ، دليل  المثبت 
+     User.pdf برنامج قرينستون للمكتبة الرقمية ، دليل المستخدم 
+     Develop.pdf برنامج قرينستون للمكتبة الرقمية ، دليل المطور 
+     Paper.pdf برنامج قرينستون للمكتبة الرقمية ،من الورق الي  المجموعة
+
+مرافق اضافية 
+         واجهة المكتبي        واجهة رسومية لبناء المجموعات باستخدام قرينستون  (يتطلب النسخه 1.4 من جافا 
+                                 وقت التشغيل البيئة ، وشملت هذه على قرص مدمج) 
+
+منصة حاسوب 
+         يونيكس والنوافذ. ثنائيات وشفره المصدر مدرجة. 
+
+          واجهة المستخدم لقرينستون تستخدم متصفحات ويب قادرة على جافا سكريبت ، 
+         الجداول ، واطارات. المتصفحات التي  تلبي هذه المتطلبات تشمل : 
+
+                 Netscape Navigator 4.0
+                Internet Explorer 4.0
+                Mozilla, Safari
+
+         أحدث نسخ من هذه المتصفحات ينبغي ايضا ان تعمل. 
+
+
+يونيكس  Unix  وقد تم تجميع واختبار شفره المصدر  على لينكس  Linux و سولاريس Solaris. 
+         الشفرة الثنائية تتطلب  وجود  انتل x86 الذي يوزع مع لينكس  و يشمل دعم  ELF الثنائي و دعم  مكتبة  GNU C  (glibc 2.0   او اكبر). التوزيعات التي تلبي هذه المتطلبات تشمل : 
+
+                 رد هات 5.1      Redhat 5.1 
+                 سوسا لينكس 6.1    SuSE Linux 6.1
+                 ديبيان 2.1       Debian 2.1
+                 سلاكوير 4.0      Slackware 4.0
+
+         أحدث نسخ من هذه التوزيعات وينبغي ايضا ان تعمل. 
+
+تم تجميع شفره المصدر في بيئة النوافذ وقد تم تجميع مع Microsoft Visual C++ 4.2 و 6.0 
+         تم إختبار الشفرة الثنائية  على ويندوز 3.1 ، 95/98 ، NT ، 2000 ، أكس بي 
+         التقييد : 
+                 وتتطلب عملية البناء بيرل  PERL، و لذلك لا يمكن بناء  المجموعات 
+                  في ظل ويندوز 3.1 
+
+التثبيت  : install.pdf يصف الاجراء لاكمال التثبيت علي كل من نظام يونيكس Unix
+         ويندوز Windows، ويتضمن معلومات عن إعداد برامج قرينستون  وإعداد مزود Apache ، pws و IIS 
+         بصورة ملائمة. 
+
+         تتوفر نصوص تثبيت مفسرة لكل من  من يونيكس  Unix و  ويندوز Windows، التي توجهك  خطوة تلو الاخرى من خلال إجراءات التثبيت  وتوفير الخيارات المناسبه في كل مرحلة. 
+
+                تثبيت ويندوز 3.1 ، 95/98 ، NT ، 2000 ، أكس بي  : تنفيذ setup.exe
+                تثبيت  يونيكس  Unix: تنفيذ setuplinux.bin 
+
+        تتوفر نصوص نقض التثبيت و تنظيف عملية التثبيت الفاشلة . 
+
+الدعم : يرجى الابلاغ عن اي مشاكل تثبيت وتشغيل برنامج قرينستون للمكتبة الرقمية باستخدام  استماره تقرير الأخطاء المنصوص عليه في   support.htm في  الدليل  في هذا القرص
+         
+
+القائمة البريديه :يمكنط الإنضمام لقائمة قريمستون البريدية  و المتوفرة في  Http://greenstone.org/english/docs.html. معا هذه الصفحة و صفحة الأسئلة الأكثر شيوعا. في  نقطة الموقع هذا توجيه الي الكثير من المعلومات المفيدة. 
+
+محتويات هذا القرص :
+
+         Readme.txt         هذه الوثيقة 
+         COPYING                   يعطي الشروط التي بموجبها يمكن نسخ هذا البرنامج. 
+         Support.htm     استماره للابلاغ عن مشاكل تثبيت و  تشغيل  برنامج قرينستون للمكتبة الرقمية. 
+         setup.exe            ملف ويندوز لينكس الذاتي تركيب البرنامج (ويشمل  الخيار لتثبيت ثنائيات او المصدر) 
+         Setuplinux.bin ملف لينكس  linuxالذاتي تركيب البرنامج (ويشمل   الخيار لتثبيت ثنائيات او المصدر) 
+
+
+docs               التوثيق ، يشمل  ما يلي : 
+        Install.pdf    دليل المثبت و يصف إجراءات التثبيت لكل من  لينكس  linuxو ويندوز لينكس على حد سواء ، ويشمل  معلومات تعليمية  حول قرينستون  و 
+                                                                  مزود الويب Apache
+        User.pdf             دليل المستخدم  و يقدم وصفا شاملا حول  كيفية استخدام  برنامج قرينستون  في الوصول وبناء مجموعات. 
+        Develop.pdf   دليل المطور  و يصف هذا الدليل كيف يعمل  قرينستون . وهو يستهدف  اولئك الذين يرغبون في  تعديل المجموعات و التطوير                                                                                           والمحافظة على البرنامج. 
+        Paper.pdf          من الورق  الي المجموعة وهذا الدليل يعطي معلومات عملية   عن الإعداد الرقمي للنصوص الكاملة للوثائق. 
+
+ Unix    يونكس        إصدارة  يونكس النسخه ، و تشمل ثنائيات  لينكس  Linux 
+
+                     أدلة و ملفات المستوي الأعلي هي : 
+        Install.sh     نص محارة تثبيت يونيكس Unix  (اذا كنت  على لينكس Linux، يشمل الخيار هنا تثبيت الثنائيات أو خلاف ذلك تثبيت المصدر ) 
+ bin          ملفات  لينكس الثنائية
+
+Windows       ملفات ويندوز Windows الثنائية 
+
+                     أدلة و ملفات المستوي الأعلي هي  : 
+
+ bin                        ملفات ويندوز Windows الثنائية 
+
+Gsdl          هيكل دليل برنامج قرينستون للمكتبة الرقمية .و هذا يتطابق مع هيكل دليل  المكتبة الرقمية التي سوف تثبت. 
+      bin                               شفرات التنفيذ 
+      cgi-bin                  نصوص CGI 
+      collect                  مجموعات قرينستون  (وتشمل مجموعة Demo ، و الكشافات و مصادر الوثائق قبل بنائها.) 
+      etc                               ملفات الإعداد ، المدونات .. الخ ، 
+      Gli                               أداة واجهة مكتبي قرينستون 
+      images                     الصور التي تستخدمها الواجهة 
+      macros                    عرض ماكرو 
+      Perllib                 وحدات Perl المستخدمة عند البناء 
+      mappings              يونيكود جداول الترجمة 
+
+                     اجراءات التثبيت تثبت ملفات في بعض  من  هذه الأدلة على النحو التالي : 
+
+                         المستوي الأعلي    الملفات الدفعية أو نص المحارة 
+        bin              شفرات التنفيذ  
+        cgi-bin  نصوص CGI                                      
+        collect    مجموعة Demo     و المجموعات الاضافية كما هو محدد  
+        src, lib, packages           شفرة المصدر إذا تم تحديدها في زمن التثبيت. 
+                          
+                                         
+                                        
+  collect         مجموعات الاخضر (قبل البناء) - نلاحظ انه على الرغم من  اجراء  التثبيت  يثبت  الكشافات التي لم تبني، إلا ان مصادر الوثائق الأصلية  هي 
+                                     متاحة على القرص مدمج. يمكن ان تكون مصادر الوثائق الأصلية  مفيدة لأولئك الذين يحاولون انشاء مجموعات جديدة و التي تنسخ  شكل  هذه المجموعات. 
+
+        demo                         مجموعة قرينستون التوضيحية 
+        dls-e                    المجموعة الفرعية لمكتبة التنمية  
+        Wrdpdf                 العرض التوضيحي  MSWord و PDF  
+        gsarch                  مجموعة أرشيفات قرينستون  
+        Cltbib                  مجموعة بيبليوجرافية 
+        Cltext                  ملحق بيبليوجرافي
+        MARC-e                   مثال مارك  
+        oai                            المجموعة التوضيحية لمبادرة الأرشيف المفتوح  oai  
+        image-e                مجموعة صورة بسيطة  
+        pagedimg-e      مجموعة صور الصفحات  
+        authen-e            مجموعة التعريف و نسق العرض 
+        garish                  مجموعة garish التوضيحية
+        style-e               مجموعة CSS التوضيحية
+        isis-e                  مجموعة CDS/ISIS
+
+ Src           ملفات  مصدر البرنامج 
+
+       Windows                  معلومات الإعداد  للنوافذ Windows 
+       Unix                           معلومات الإعداد للنظام يونيكس  Unix
+       lib                             الشفره المصدريه ++C 
+       packages            الشفره المصدريه ++C للحزم المستخدمة في قرينستون .
+       Src                            الشفره المصدريه ++C
Index: /branches/rk-oran/shared/greenstone2/docs/READMEen.txt
===================================================================
--- /branches/rk-oran/shared/greenstone2/docs/READMEen.txt	(revision 18906)
+++ /branches/rk-oran/shared/greenstone2/docs/READMEen.txt	(revision 18906)
@@ -0,0 +1,125 @@
+Title   Greenstone digital library software
+
+Purpose A suite of digital library software which includes the ability to
+        serve digital library collections and build new collections
+
+Author  New Zealand Digital Library Project
+
+License GNU General Public Licence (Version 2)
+        Full terms and conditions are in the file "LICENSE.txt"
+
+Date    December 2008
+
+Version svn-trunk
+
+Contents: Programs
+
+        Greenstone library server  A cgi program to serve digital library 
+				   collections
+        Greenstone oaiserver       A cgi program to serve collections using 
+				   the OAI-PMH protocol.
+        Greenstone Librarian Interface (GLI)
+                                   A graphical tool for collection building
+        Greenstone Editor for Metadata Sets (GEMS)
+                                   A graphical tool for creating and editing 
+				   metadata sets used by GLI
+                
+Contents: Directory Structure
+
+        bin		Executable code
+        cgi-bin		CGI scripts
+        collect		Collections
+        etc		Configuration files, log files, user databases etc
+        gli		Librarian Interface
+        images		Images and CSS files used by the interface
+        macros		Display macros
+        mappings	Unicode translation tables
+        perllib		Perl modules used for collection building
+        
+	If source code is present (from a source release or by adding the 
+	source component):
+        common-src	Source code and packages used when building collections
+			 and at runtime
+        build-src	Source code and packages only used when building 
+			collections
+        runtime-src	Source code and packages only used at runtime
+
+Contents: Additional Packages (available only in full binary releases)
+
+	Java Runtime 1.6 (installer release only)
+	ImageMagick
+	Ghostscript (Windows, Mac only)
+	Perl (Windows only)
+
+Documentation and Support
+        Greenstone Website:
+			http://www.greenstone.org
+			Greenstone's main website.
+        Greenstone Wiki: 
+			http://wiki.greenstone.org
+			Contains documentation, and links to manuals, tutorials
+			 etc.
+        Greenstone Mailing List:
+			https://list.scms.waikato.ac.nz/mailman/listinfo/greenstone-users (to subscribe)
+			greenstone-users@list.scms.waikato.ac.nz (to post)
+        New Zealand Digital Library: 
+			http://www.nzdl.org
+			A demonstration site containing lots of collections
+
+
+Platform
+        
+	Greenstone runs on Unix, Windows 2000/XP/2003/Vista/2008 and 
+	Mac OS 10.5.2 (Leopard).
+        
+        The Greenstone Librarian Interface requires version 1.4 or later 
+        of the Java Runtime Environment. Java 1.6 is included in binary 
+        releases of Greenstone.
+
+        The Greenstone user interface uses a Web browser capable of Javascript,
+        Tables, and Frames.  Browsers that meet these requirements include:
+
+                Netscape Navigator 4.0
+                Internet Explorer 4.0
+                Mozilla
+		Safari
+
+        More recent versions of these browsers should also work (recommended).
+		
+Unix    
+	Source code has been compiled and tested on the following 
+	distributions:
+
+		Ubuntu 8.04 & 8.10
+		Mandriva 2008 Spring
+		OpenSUSE 11
+		Fedora 6 & 9
+		CentOS 5.2
+
+
+Windows 
+	Source code can be compiled with Microsoft Visual C++ 6.0, 7 
+	(VS 2003.Net), 8 (VS 2005 Pro or VC++ Express 2005 with Microsoft 
+	Platform SDK 2003 R2).
+
+        Binary code has been tested on 32 bit versions of:
+		Windows 2000
+		Windows XP
+		Windows Server 2003
+		Windows Vista
+		Windows Server 2008
+
+        Greenstone software (version 2.81 and later) no longer runs on 
+		Windows 3.1
+		Windows 95
+		Windows 98
+		Windows Me
+		Windows NT
+
+Mac
+	Source code has been compiled with Xcode 3.1 on Intel Mac OS 10.5.2.
+	Binary has been tested on Intel Mac OS 10.5.2 (Leopard).
+
+	However the source code can be compiled with other versions of Mac OS 
+	and Xcode, in that case please download Imagemagick and Ghostscript to 
+	recompile them from source.
Index: /branches/rk-oran/shared/greenstone2/docs/READMEes.txt
===================================================================
--- /branches/rk-oran/shared/greenstone2/docs/READMEes.txt	(revision 18906)
+++ /branches/rk-oran/shared/greenstone2/docs/READMEes.txt	(revision 18906)
@@ -0,0 +1,228 @@
+TÃ­tulo     Programa de Biblioteca Digital Greenstone
+
+Objeto     Una serie de programas de biblioteca digital que comprende
+           la capacidad de alimentar colecciones de bibliotecas digitales
+           y crear nuevas colecciones
+
+Autor      Proyecto de Biblioteca Digital de Nueva Zelandia
+
+Licencia   Licencia PÃºblica General GNU (VersiÃ³n 2)
+           Las condiciones completas figuran en el archivo "COPYING"
+           de este CD-ROM
+
+Fecha      Noviembre 2007
+
+VersiÃ³n    2.75
+
+DocumentaciÃ³n
+           Install.pdf    GuÃ­a de InstalaciÃ³n de la Biblioteca Digital
+                          Greenstone
+           User.pdf       GuÃ­a del Usuario de la Biblioteca Digital Greenstone
+           Develop.pdf    GuÃ­a del Programador de la Biblioteca Digital 
+                          Greenstone
+           Paper.pdf      Del Papel a la ColecciÃ³n
+
+Programas utilitarios suplementarios
+           Interfaz de la Biblioteca Digital  Una herramienta grÃ¡fica para 
+                                              crear y construir colecciones 
+                                              por medio de Greenstone
+                                              (requiere la versiÃ³n 1.4 del 
+                                              Ambiente de EjecuciÃ³n Java 
+                                              incluido en este CD-ROM)
+
+Plataformas
+           Unix y Windows. Comprende los binarios y el cÃ³digo fuente.
+
+           La interfaz de usuario de Greenstone utiliza un navegador Web con
+           capacidad para Javascript, tablas y marcos. Entre los navegadores
+           que cumplen esos requisitos cabe mencionar:
+
+                      Netscape Navigator 4.0
+                      Internet Explorer 4.0
+                      Mozilla, Safari
+
+           Las versiones mÃ¡s recientes  de  estos  navegadores  deben
+           funcionar tambiÃ©n.
+
+Unix       El cÃ³digo fuente se ha compilado y probado en Linux
+           y Solaris.
+           El cÃ³digo binario requiere una distribuciÃ³n Linux basada en un
+           procesador Intel x86 que incluye un apoyo binario ELF y admite la
+           biblioteca GNU C (glibc 2.0 o superior). Las distribuciones que
+           cumplen esos requisitos son:
+
+                      RedHat 5.1
+                      SuSe Linux 6.1
+                      Debian 2.1
+                      Slackware 4.0
+
+           Las versiones mÃ¡s recientes de estas distribuciones deben funcionar
+           tambiÃ©n.
+
+Windows    El cÃ³digo fuente de Windows se ha compilado con Microsoft Visual
+           C++ 4.2 y 6.0.
+           El cÃ³digo binario se ha probado con Windows 3.1, 95/98, NT, 2000
+           y XP.
+           RestricciÃ³n:
+                      El proceso de creaciÃ³n requiere PERL, por lo que las
+                      colecciones no pueden crearse con Windows 3.1.
+
+InstalaciÃ³n
+           En Install.pdf se expone el  procedimiento  completo de instalaciÃ³n
+           para Unix y Windows, y se incluye una guÃ­a informativa sobre la
+           configuraciÃ³n de Greenstone y la configuraciÃ³n adecuada de los
+           servidores Web Apache, PWS e IIS.
+
+           Se proporcionan instrucciones claras de instalaciÃ³n para Unix y
+           Windows que indican paso por paso el procedimiento de instalaciÃ³n y
+           ofrecen opciones apropiadas en cada etapa.
+
+            InstalaciÃ³n de Windows 9x/NT/2000/XP:
+                      ejecÃºtese setup.exe
+            InstalaciÃ³n de Unix:
+                      ejecÃºtese setupLinux.bin
+
+           Se proporcionan tambiÃ©n guiones de desinstalaciÃ³n que permiten
+           comenzar de nuevo en caso de que falle la instalaciÃ³n.
+
+Servicio de apoyo tÃ©cnico
+           SÃ­rvase seÃ±alar cualquier problema de instalaciÃ³n o de
+           funcionamiento del programa de Biblioteca Digital Greenstone
+           utilizando el formulario de comunicaciÃ³n de errores Support.htm que
+           se encuentra en el directorio de nivel superior de este CD-ROM.
+
+           Existe una lista de correo Greenstone en la que usted puede 
+           participar en http://greenstone.org/english/docs.html. Tanto esta 
+           pÃ¡gina como la lista de preguntas mÃ¡s frecuentes de este sitio 
+           contienen una gran cantidad de informaciÃ³n que le puede ser 
+           de utilidad.
+
+Contenido de este CD-ROM
+
+           README.TXT   El presente documento
+
+           COPYING      Expone las condiciones en que se puede copiar este
+                        programa 
+
+           Support.htm  Formulario para comunicar los problemas de instalaciÃ³n
+                        o de funcionamiento de Greenstone
+
+           setup.exe    El software de autoinstalaciÃ³n de Windows (comprende
+                        una opciÃ³n para instalar binarios o el cÃ³digo fuente)
+
+           setupLinux.bin    El software de autoinstalaciÃ³n de Linux (comprende
+                        una opciÃ³n para instalar binarios o el cÃ³digo fuente)
+
+           docs         DocumentaciÃ³n, a saber:
+
+                          Install.pdf   GuÃ­a de InstalaciÃ³n
+                                        Describe el procedimiento de instalaciÃ³n
+                                        de Unix y Windows y comprende una guÃ­a 
+                                        informativa sobre la configuraciÃ³n de 
+                                        Greenstone y el servidor Web Apache.
+
+                          User.pdf      GuÃ­a del Usuario
+                                        Da una explicaciÃ³n exhaustiva sobre cÃ³mo
+                                        utilizar el programa Greenstone de
+                                        creaciÃ³n de colecciones y acceso a
+                                        ellas.
+
+                          Develop.pdf   GuÃ­a del Programador
+                                        En este manual se explica cÃ³mo funciona
+                                        Greenstone. EstÃ¡ destinado a quienes
+                                        desean personalizar las colecciones y
+                                        desarrollar y mantener el programa.
+
+                          Paper.pdf     Del Papel a la ColecciÃ³n
+                                        En este manual se proporciona
+                                        informaciÃ³n prÃ¡ctica sobre la creaciÃ³n
+                                        de colecciones digitalizadas a partir de
+                                        documentos en texto completo.
+
+           Unix         Esta versiÃ³n Unix comprende binarios Linux
+
+                        Los archivos  y directorios de nivel superior son los
+                        siguientes:
+
+                          Install.sh    El guiÃ³n de shell de instalaciÃ³n (si
+                                        funciona con Linux comprende una opciÃ³n
+                                        para instalar binarios; de otro modo
+                                        instala el cÃ³digo fuente)
+                          bin           Binarios de Linux
+
+           Windows      Binarios de Windows
+
+                        Los archivos y directorios de nivel superior son 
+                        los siguientes:
+
+                          bin           Binarios de Windows
+
+           gsdl         La estructura de los directorios del programa de
+                        Biblioteca Digital Greenstone. Refleja la estructura de
+                        los directorios del Programa de Biblioteca Digital
+                        Greenstone que se instalarÃ¡n.
+
+                          bin           CÃ³digo ejecutable
+                          cgi-bin       Guiones CGI
+                          collect       Colecciones
+                          Greenstone    (comprende la colecciÃ³n de demostraciÃ³n,
+                                        los Ã­ndices creados previamente y los
+                                        documentos fuente)
+                          etc           Archivos de configuraciÃ³n, registros,
+                                        etc.
+                          gli           herramienta de la Interfaz de la
+                                        Biblioteca Digital Greenstone
+                          images        ImÃ¡genes utilizadas por la interfaz
+                          macros        Macros de visualizaciÃ³n
+                          perllib       MÃ³dulos Perl utilizados para la creaciÃ³n
+                          mappings      Tablas de traducciÃ³n Unicode
+
+                        El procedimiento de instalaciÃ³n instala archivos en 
+                        algunos de los directorios siguientes:
+
+                          nivel superior Archivo de proceso por lotes o guiÃ³n
+                                         de shell
+                          bin            CÃ³digo ejecutable
+                          cgi-bin        Guiones CGI
+                          collect        La colecciÃ³n de demostraciÃ³n de
+                                         Greenstone. Las colecciones 
+                                         suplementarias indicadadas en
+                                         el momento de la instalaciÃ³n
+                          src, lib, packages
+                                         CÃ³digo fuente en caso que se lo
+                                         especifique en el momento de la
+                                         instalaciÃ³n
+
+           collect      Colecciones Greenstone (creadas previamente) - nÃ³tese
+                        que aunque el procedimiento de instalaciÃ³n sÃ³lo instala
+                        los Ã­ndices creados previamente, los documentos fuente
+                        originales de cada colecciÃ³n estÃ¡n disponibles en el 
+                        CD-ROM. Los documentos fuente pueden ser Ãºtiles para
+                        quienes traten de crear nuevas colecciones que copien el
+                        fomato de aquellas colecciones.
+
+                          demo          ColecciÃ³n de muestra Greenstone
+                          dls-e         Subconjunto de la Biblioteca para
+                                        el Desarrollo
+                          wrdpdf-e      DemostraciÃ³n en MSWord y PDF
+                          gsarch-e      ColecciÃ³n de Archivos Greenstone
+                          cltbib-e      ColecciÃ³n bibliogrÃ¡fica
+                          cltext-e      Suplemento bibliogrÃ¡fico
+                          MARC-e        ColecciÃ³n de muestra MARC
+                          oai-e         ColecciÃ³n de muestra OAI
+                          image-e       ColecciÃ³n de imÃ¡genes sencillas
+			  pagedimg-e
+                          authen-e      DemostraciÃ³n de formateo y autenticaciÃ³n
+                          garish        VersiÃ³n Garish de la colecciÃ³n de muestra
+			  style-e
+                          isis-e        ColecciÃ³n de muestra CDS/ISIS
+
+           src            Archivos fuente del programa
+
+                          Windows       InformaciÃ³n de configuraciÃ³n para
+                                        Windows
+                          Unix          InformaciÃ³n de configuraciÃ³n para Unix
+                          lib           CÃ³digo de biblioteca C++
+                          packages      CÃ³digo fuente C++ para paquetes
+                                        utilizados por Greenstone
+                          src           CÃ³digo fuente C++
Index: /branches/rk-oran/shared/greenstone2/docs/READMEfr.txt
===================================================================
--- /branches/rk-oran/shared/greenstone2/docs/READMEfr.txt	(revision 18906)
+++ /branches/rk-oran/shared/greenstone2/docs/READMEfr.txt	(revision 18906)
@@ -0,0 +1,232 @@
+Titre   Logiciel de bibliothÃšque numÃ©rique Greenstone
+
+But     Une suite de logiciels de bibliothÃšque numÃ©rique qui comprend
+        la possibilitÃ© de servir et de construire des collections de
+        bibliothÃšques numÃ©riques
+
+Auteur  Projet de bibliothÃšque numÃ©rique de Nouvelle-ZÃ©lande (New
+        Zealand Digital Library Project)
+
+Licence Licence publique gÃ©nÃ©rale de GNU (GNU General Public License)
+        (Version 2)
+        Les clauses et conditions complÃštes se trouvent dans le fichier
+        "COPYING" de ce cÃ©dÃ©rom
+
+Date    Novembre 2007
+
+Version 2.75
+
+Documentation
+        Install.pdf
+            Guide d'installation de la bibliothÃšque numÃ©rique Greenstone
+        User.pdf
+            Guide de l'utilisateur de la bibliothÃšque numÃ©rique Greenstone
+        Develop.pdf
+            Guide du dÃ©veloppeur de la bibliothÃšque numÃ©rique Greenstone
+        Paper.pdf
+            BibliothÃšque numÃ©rique Greenstone: du papier Ã  la collection
+
+Outils complÃ©mentaires
+        Librarian Interface     Un outil graphique pour la construction de
+                                collection utilisant Greenstone (nÃ©cessite
+                                une version 1.4 de Java Runtime
+                                Environement, intÃ©grÃ©e dans ce CD-ROM)
+
+Plates-formes
+        Unix et Windows.  Les binaires et le code source sont fournis.
+
+        L'interface utilisateur de Greenstone utilise un navigateur web
+        gÃ©rant le Javascript, les tableaux, et les cadres. Exemples de
+        navigateurs convenables:
+
+                Netscape Navigator 4.0
+                Internet Explorer 4.0
+                Mozilla, Safari
+
+        Des versions plus rÃ©centes de ces navigateurs devraient
+        Ã©galement convenir.
+
+
+Unix    Le code source a Ã©tÃ© compilÃ© et testÃ© sous Linux et sous
+        Solaris. Le code binaire est prÃ©vu pour une distribution Linux sur
+        processeur x86 qui comprend un support pour les binaires au
+        format ELF et qui dispose de la bibliothÃšque C de GNU (glibc 2.0
+        ou une version ultÃ©rieure). Exemples de distributions
+        convenables:
+
+                RedHat 5.1
+                SuSE Linux 6.1
+                Debian 2.1
+                Slackware 4.0
+
+        Des versions plus rÃ©centes de ces distributions devraient
+        Ã©galement convenir.
+
+Windows Le code source a Ã©tÃ© compilÃ© avec Microsoft Visual C++ 4.2 et 6.0
+        Le code binaire a Ã©tÃ© testÃ© sur Windows 3.1, 95/98, NT, 2000, XP
+        Restriction:
+                Le processus de construction utilise Perl; les
+                collections ne peuvent donc pas Ãªtre construites sous
+                Windows 3.1 
+
+Installation
+        Install.pdf dÃ©crit la procÃ©dure d'installation complÃšte Ã  la
+        fois pour Unix et pour Windows, et comprend des didacticiels pour 
+        configurer Greenstone, et les serveurs web Apache, PWS et IIS
+        de maniÃšre appropriÃ©e.
+
+        Des scripts d'installation auto-documentÃ©s sont fournis Ã  la
+        fois pour Unix et pour Windows, qui vous emmÃšnent pas Ã  pas Ã 
+        travers la procÃ©dure d'installation et proposent les options
+        appropriÃ©es Ã  chaque Ã©tape.
+
+                Installation sous Windows 9x/NT/2000/XP:
+                    exÃ©cuter setup.exe
+                Installation sous Unix:
+                    exÃ©cuter setupLinux.bin
+
+        Des scripts de dÃ©sinstallation sont fournis qui nettoient tout
+        si le processus d'installation venait Ã  Ã©chouer.
+
+Support Veuillez nous faire part de tout problÃšme d'installation ou
+        d'exÃ©cution du logiciel de bibliothÃšque numÃ©rique Greenstone en
+        utilisant le formulaire de rapport de bogues fourni dans le fichier 
+        Support.htm dans le rÃ©pertoire de premier niveau de ce cÃ©dÃ©rom.
+
+        Il y a une liste de diffusion Greenstone que vous pouvez joindre Ã 
+        http://greenstone.org/english/docs.html. Cette page ainsi que la
+        liste faq pointent vers des informations utiles.
+
+Contenu de ce cÃ©dÃ©rom
+
+        README.TXT  Le prÃ©sent document
+
+        COPYING     Donne les conditions selon lesquelles ce logiciel
+                    peut Ãªtre copiÃ©
+
+        Support.htm Formulaire pour faire part de problÃšmes
+                    d'installation ou d'exÃ©cution de Greenstone
+
+        setup.exe   Programme d'auto-installation pour Windows
+                    (comprend une option pour installer les binaires ou
+                    le code source)
+
+        setupLinux.bin   Programme d'auto-installation pour Linux
+                    (comprend une option pour installer les binaires ou
+                    le code source)
+
+        docs        Documentation, comprenant:
+
+                        Install.pdf     Guide d'installation
+                                        DÃ©crit la procÃ©dure d'installation
+                                        pour Unix et pour Windows, et
+                                        comprend des didacticiels sur la
+                                        configuration de Greenstone et du
+                                        serveur web Apache.
+                                        
+                        User.pdf        Guide de l'utilisateur
+                                        Fournit une description complÃšte
+                                        de la maniÃšre d'utiliser le logiciel
+                                        Greenstone pour accÃ©der Ã  et
+                                        construire des collections.
+
+                        Develop.pdf     Guide du dÃ©veloppeur 
+                                        Ce manuel dÃ©crit le fonctionnement
+                                        de Greenstone. Il vise ceux qui
+                                        souhaitent personnaliser des
+                                        collections et dÃ©velopper et
+                                        maintenir le logiciel. 
+
+                        Paper.pdf       Du papier Ã  la collection
+                                        Ce manuel donne des informations
+                                        pratiques sur la crÃ©ation de
+                                        collections numÃ©risÃ©es Ã  partir
+                                        de documents textuels.
+
+        Unix        Version Unix, comprenant des binaires pour Linux
+
+                    Les fichiers et rÃ©pertoires de premier niveau sont:
+
+                        Install.sh      Script d'installation shell pour
+                                        Unix (exÃ©cutÃ© sous Linux, comprend
+                                        des options pour installer des
+                                        binaires; dans le cas contraire,
+                                        installe le code source). 
+                        bin             Binaires Linux
+
+        Windows     Binaires Windows
+
+                    Les fichiers et rÃ©pertoires de premier niveau sont:
+
+                        bin             Binaires Windows
+
+        gsdl        Structure de rÃ©pertoires du logiciel de bibliothÃšque
+                    numÃ©rique Greenstone. Miroir de la structure qui
+                    sera installÃ©e.
+
+                        bin             Code exÃ©cutable
+                        cgi-bin         Scripts CGI
+                        collect         Collections Greenstone
+                                        (comprend la collection Â«DemoÂ»,
+                                        les index prÃ©-construits et
+                                        les documents source)
+                        etc             Fichiers de configuration,
+                                        journaux, etc.
+                        gli             Outil de Greenstone Librarian
+                                        Interface
+                        images          Images utilisÃ©es par l'interface
+                        macros          Macros d'affichage
+                        perllib         Modules Perl utilisÃ©s lors de la
+                                        construction
+                        mappings        Tables Unicode
+
+                    La procÃ©dure d'installation installe des fichiers
+                    dans certains de ces rÃ©pertoires comme suit:
+
+                        premier niveau  Fichier de traitement par lots ou
+                                        script shell
+                        bin             Code exÃ©cutable 
+                        cgi-bin         Scripts CGI
+                        collect         La collection Â«DemoÂ» de Greenstone
+                                        Collections supplÃ©mentaires telles que
+                                        spÃ©cifiÃ© au moment de l'installation 
+                        src, lib, packages
+                                        Code source si tel a Ã©tÃ©
+                                        spÃ©cifiÃ© au moment de l'installation
+
+        collect     Collections Greenstone (prÃ©-construites) - remarquez que
+                    bien que la procÃ©dure d'installation n'installe que
+                    les index prÃ©-construits, les documents source de chaque
+                    collection sont disponibles sur le cÃ©dÃ©rom. Les documents
+                    source peuvent Ãªtre utiles Ã  ceux qui essaient de crÃ©er
+                    de nouvelles collections qui reprennent le format de ces
+                    collections.
+
+                        demo            DÃ©mo Greenstone
+                        dls-e           Sous-ensemble de la collection
+                                        BibliothÃ©que de DÃ©veloppement
+                        wrdpdf-e        DÃ©monstration MSWord et PDF
+                        gsarch-e        Collection des Archives de Greenstone
+                        cltbib-e        Collection bibliographie
+                        cltext-e        SupplÃ©ment bibliographie
+                        MARC-e          Exemple MARC
+                        oai-e           DÃ©mo OAI
+                        image-e         Collection d'images simple
+			pagedimg-e
+                        authen-e        DÃ©monstration de formatage et
+                                        d'authentification
+                        garish          Version Garish de la collection de
+                                        dÃ©monstration
+			style-e		
+			isis-e          Exemple CDS/ISIS
+
+        src         Fichiers source du programme
+
+                        Windows         Informations de configuration
+                                        pour Windows
+                        Unix            Informations de configuration
+                                        pour Unix
+                        lib             Code de bibliothÃšque C++
+                        packages        Code source C++ pour les
+                                        paquetages utilisÃ©s par Greenstone
+                        src             Code source C++
Index: /branches/rk-oran/shared/greenstone2/docs/READMEru.txt
===================================================================
--- /branches/rk-oran/shared/greenstone2/docs/READMEru.txt	(revision 18906)
+++ /branches/rk-oran/shared/greenstone2/docs/READMEru.txt	(revision 18906)
@@ -0,0 +1,241 @@
+ÐÐ°Ð·Ð²Ð°ÐœÐžÐµ ÐÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐµ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Greenstone.
+
+ÐŠÐµÐ»Ñ     ÐÐŸÐŒÐ¿Ð»ÐµÐºÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐ³ÐŸ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž, ÐºÐŸÑÐŸÑÑÐ¹
+         Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑ ÐŸÐ±ÑÐ»ÑÐ¶ÐžÐ²Ð°ÐœÐžÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ ÑÐžÑÑÐŸÐ²ÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº Ðž 
+         Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐœÐŸÐ²ÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹
+
+ÐÐ²ÑÐŸÑ    ÐÐŸÐ²ÐŸÐ·ÐµÐ»Ð°ÐœÐŽÑÐºÐžÐ¹ ÐÑÐŸÐµÐºÑ ÐŠÐžÑÑÐŸÐ²ÐŸÐ¹ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž
+
+ÐÐžÑÐµÐœÐ·ÐžÑ ÐÑÐœÐŸÐ²ÐœÐ°Ñ ÐŸÐ±ÑÐµÑÑÐ²ÐµÐœÐœÐ°Ñ Ð»ÐžÑÐµÐœÐ·ÐžÑ GNU (Ð²ÐµÑÑÐžÑ 2).
+         ÐÐŸÐ»ÐœÑÐµ ÑÐµÑÐŒÐžÐœÑ Ðž ÑÑÐ»ÐŸÐ²ÐžÑ ÐœÐ°Ñ
+ÐŸÐŽÑÑÑÑ Ð² ÑÐ°Ð¹Ð»Ðµ COPYING ÐœÐ° ÑÑÐŸÐŒ CD-ROM
+
+ÐÐ°ÑÐ°     ÐÐºÑÑÐ±ÑÑ 2005
+
+ÐÐµÑÑÐžÑ   2.62
+
+ÐÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ
+         Install.pdf   Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ Ð¿ÐŸ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Greenstone
+         User.pdf      Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»Ñ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Greenstone
+         Develop.pdf   Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÑÐžÐºÐ° ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Greenstone
+         Paper.pdf     ÐÑ Ð±ÑÐŒÐ°Ð³Ðž Ðº ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž 
+
+ÐÐŸÐ¿ÐŸÐ»ÐœÐžÑÐµÐ»ÑÐœÑÐµ
+         ÑÑÐžÐ»ÐžÑÑ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÑÐœÐŸÐ³ÐŸ ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ°
+         ÐÑÐ°ÑÐžÑÐµÑÐºÐžÐ¹ ÐžÐœÑÑÑÑÐŒÐµÐœÑ ÐŽÐ»Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐµÐŒ
+         Greenstone (ÑÑÐµÐ±ÑÐµÐŒÐ°Ñ Ð²ÐµÑÑÐžÑ 1.4 JRE, Ð²ÐºÐ»ÑÑÐµÐœÐœÐ°Ñ Ð² ÑÑÐŸÑ CD-ROM
+
+ÐÐ»Ð°ÑÑÐŸÑÐŒÐ°
+         Unix Ðž Windows. ÐÐžÐœÐ°ÑÐœÑÐµ ÐºÐŸÐŽÑ Ðž ÐžÑÑ
+ÐŸÐŽÐœÐ°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° Ð²ÐºÐ»ÑÑÐµÐœÑ
+
+         ÐÐœÑÐµÑÑÐµÐ¹Ñ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»Ñ Greenstone ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ Web-Ð±ÑÐ°ÑÐ·ÐµÑ,
+         Ð²ÐŸÑÐ¿ÑÐžÐœÐžÐŒÐ°ÑÑÐžÐ¹ ÑÐ°Ð±Ð»ÐžÑÑ Ðž ÑÑÐµÐ¹ÐŒÑ Javascript.
+         ÐÑÐ°ÑÐ·ÐµÑÑ, ÐºÐŸÑÐŸÑÑÐµ ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÑÑÑ ÑÑÐžÐŒ ÑÑÐµÐ±ÐŸÐ²Ð°ÐœÐžÑÐŒ:
+
+                  Netscape Navigator 4.0
+                  Internet Explorer 4.0
+                  Mozilla, Safari
+
+         ÐÐŸÐ»ÐµÐµ Ð¿ÐŸÐ·ÐŽÐœÐžÐµ Ð²ÐµÑÑÐžÐž ÑÑÐžÑ
+ Ð±ÑÐ°ÑÐ·ÐµÑÐŸÐ² ÑÐ°ÐºÐ¶Ðµ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÐ°Ð±ÐŸÑÐ°ÑÑ.
+
+         CD-ROM ÑÐŸÐŽÐµÑÐ¶ÐžÑ Windows- Ð²ÐµÑÑÐžÑ Netscape 4.05 Ð² ÐŽÐžÑÐµÐºÑÐŸÑÐžÐž
+         Windows\bin\windows\netscape.
+
+Unix     ÐÑÑ
+ÐŸÐŽÐœÐ°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° ÐºÐŸÐŒÐ¿ÐžÐ»ÐžÑÐŸÐ²Ð°Ð»Ð° Ðž Ð±ÑÐ»Ð° Ð¿ÑÐŸÐ²ÐµÑÐµÐœÐ° ÐœÐ° Linux Ðž
+         Solaris. ÐÐžÐœÐ°ÑÐœÑÐ¹ ÐºÐŸÐŽ ÑÑÐµÐ±ÑÐµÑ Intel Ñ
+86, ÐºÐŸÑÐŸÑÑÐ¹ Ð²ÐºÐ»ÑÑÐ°ÐµÑ
+         Ð±ÐžÐœÐ°ÑÐœÑÑ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÑ ELF Ðž Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÐµÑ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÑ GNU Ð¡ (glibc 2.0
+         ÐžÐ»Ðž Ð²ÑÑÐµ). ÐÐžÑÑÑÐžÐ±ÑÑÐžÐ²Ñ, ÐºÐŸÑÐŸÑÑÐµ ÐŸÑÐ²ÐµÑÐ°ÑÑ ÑÑÐžÐŒ ÑÑÐµÐ±ÐŸÐ²Ð°ÐœÐžÑÐŒ,
+         Ð²ÐºÐ»ÑÑÐ°ÑÑ:
+
+                  RedHat 5.1
+                  SuSE Linux 6.1
+                  Debian 2.1
+                  Slackware 4.0
+
+         ÐÐŸÐ»ÐµÐµ Ð¿ÐŸÐ·ÐŽÐœÐžÐµ Ð²ÐµÑÑÐžÐž ÑÑÐžÑ
+ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ²ÐŸÐ² ÑÐ°ÐºÐ¶Ðµ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÐ°Ð±ÐŸÑÐ°ÑÑ.
+
+Windows  ÐÑÑ
+ÐŸÐŽÐœÐ°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° Ð¿ÐŸÐŽ Windows ÐºÐŸÐŒÐ¿ÐžÐ»ÐžÑÐŸÐ²Ð°Ð»Ð°ÑÑ Ñ Microsoft Visual
+         C++ 4.2 Ðž 6.0; Ð±ÐžÐœÐ°ÑÐœÑÐ¹ ÐºÐŸÐŽ Ð±ÑÐ» Ð¿ÑÐŸÐ²ÐµÑÐµÐœ ÐœÐ° Windows 3.1, 95/98,
+         NT, 2000, XP
+
+         ÐÐ³ÑÐ°ÐœÐžÑÐµÐœÐžÐµ: 
+             ÐÑÐŸÑÐµÑÑ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž ÑÑÐµÐ±ÑÐµÑ ÐœÐ°Ð»ÐžÑÐžÑ PERL, Ðž Ð¿ÐŸÑÑÐŸÐŒÑ
+             ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž ÐœÐµ ÐŒÐŸ-Ð³ÑÑ ÑÐŸÐ·ÐŽÐ°Ð²Ð°ÑÑÑÑ  Ð¿ÐŸÐŽ Windows 3.1
+
+ÐÐœÑÑÐ°Ð»Ð»ÑÑÐžÑ  
+         Install.pdf ÐŸÐ¿ÐžÑÑÐ²Ð°ÐµÑ Ð¿ÐŸÐ»ÐœÑÑ Ð¿ÑÐŸÑÐµÐŽÑÑÑ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž ÐºÐ°Ðº ÐŽÐ»Ñ Unix,
+         ÑÐ°Ðº Ðž ÐŽÐ»Ñ Windows Ðž Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÑÑ ÐŸÐ±ÑÑÐ°ÑÑÑÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ
+         ÐºÐŸÐœÑÐžÐ³ÑÑÐžÑÐŸÐ²Ð°ÐœÐžÑ Greenstone, Ð° ÑÐ°ÐºÐ¶Ðµ ÑÐµÑÐ²ÐµÑÐŸÐ² Apache, PWS Ðž IIS Web
+         Servers, ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÐµÐœÐœÐŸ.
+
+         Ð¡Ð°ÐŒÐŸÑÑÑÐ°ÐœÐ°Ð²Ð»ÐžÐ²Ð°ÑÑÐžÐµÑÑ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐŸÐœÐœÑÐµ ÑÐºÑÐžÐ¿ÑÑ ÐžÐŒÐµÑÑÑÑ Ðž ÐŽÐ»Ñ Windows,
+         Ðž ÐŽÐ»Ñ Unix, ÐºÐŸÑÐŸÑÑÐµ Ð¿ÑÐŸÐ²ÐŸÐŽÑÑ ÐÐ°Ñ ÑÐ°Ð³ Ð·Ð° ÑÐ°Ð³ÐŸÐŒ ÑÐµÑÐµÐ· ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐŸÐœÐœÑÐµ
+         Ð¿ÑÐŸÑÐµÐŽÑÑÑ Ðž ÐŸÐ±ÐµÑÐ¿ÐµÑÐžÐ²Ð°ÑÑ ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÑÑÑÐžÐµ Ð²Ð°ÑÐžÐ°ÐœÑÑ ÐœÐ° ÐºÐ°Ð¶ÐŽÐŸÐ¹ ÑÑÐ°ÐŽÐžÐž.
+
+             ÐÐ»Ñ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž Windows 9Ñ
+/NT/2000/XP Ð²ÑÐ¿ÐŸÐ»ÐœÐžÑÐµ Setup.exe
+             ÐÐ»Ñ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž  Unix Ð²ÑÐ¿ÐŸÐ»ÐœÐžÑÐµ Unix/Install.sh
+
+         ÐÐŒÐµÑÑÑÑ ÐŽÐµÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐŸÐœÐœÑÐµ ÑÐºÑÐžÐ¿ÑÑ, ÐºÐŸÑÐŸÑÑÐµ ÐŽÐŸÐ»Ð¶ÐœÑ Ð¿ÑÐŸÐžÐ·Ð²ÐŸÐŽÐžÑÑ
+         ÑÐŽÐ°Ð»ÐµÐœÐžÐµ, ÐµÑÐ»Ðž ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÑ ÐœÐµÑÐŽÐ°ÑÐœÐ°.
+
+ÐÐŸÐŽÐŽÐµÑÐ¶ÐºÐ°
+         ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, ÑÐŸÐŸÐ±ÑÐžÑÐµ ÐŸ Ð»ÑÐ±ÑÑ
+ Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐ°Ñ
+ Ð² ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž ÐžÐ»Ðž ÐŽÐ°Ð»ÑÐœÐµÐ¹ÑÐµÐ¹
+         ÑÐ°Ð±ÐŸÑÐµ Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÑÐŒ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµÐŒ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Geenstone, 
+         ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÑ ÑÐŸÐŸÐ±ÑÐµÐœÐžÑ ÐŸÐ± ÐŸÑÐžÐ±ÐºÐ°Ñ
+, ÑÐŸÐŽÐµÑÐ¶Ð°ÑÐžÑ
+ÑÑ Ð² Support.htm ÐœÐ° Ð²ÐµÑÑ
+ÐœÐµÐŒ 
+         ÑÑÐŸÐ²ÐœÐµ Ð² ÑÑÐŸÐŒ CD-ROM.
+
+         ÐÐŒÐµÐµÑÑÑ ÑÐ¿ÐžÑÐŸÐº Ð°ÐŽÑÐµÑÐ°ÑÐŸÐ² Greenstone, Ðº ÐºÐŸÑÐŸÑÐŸÐŒÑ ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ 
+         Ð¿ÑÐžÑÐŸÐµÐŽÐžÐœÐžÑÑÑÑ, ÐœÐ° http: //greenstone.org/English/docs.html. Ð ÑÑÐ° 
+         ÑÑÑÐ°ÐœÐžÑÐ°, Ðž ÑÐ¿ÐžÑÐŸÐº ÐœÐ°ÐžÐ±ÐŸÐ»ÐµÐµ ÑÐ°ÑÑÐŸ Ð·Ð°ÐŽÐ°Ð²Ð°ÐµÐŒÑÑ
+ Ð²ÐŸÐ¿ÑÐŸÑÐŸÐ² ÐœÐ° ÑÑÐŸÐŒ ÑÐ°Ð¹ÑÐµ 
+         Ð²ÑÐ²ÐŸÐŽÑÑ ÐœÐ° Ð±ÐŸÐ»ÑÑÐŸÐµ ÐºÐŸÐ»ÐžÑÐµÑÑÐ²ÐŸ Ð¿ÐŸÐ»ÐµÐ·ÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž.
+
+Ð¡ÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÐµ ÐŽÐ°ÐœÐœÐŸÐ³ÐŸ CD-ROM
+
+         README.TXT   ÐÐŸÐºÑÐŒÐµÐœÑ, ÐºÐŸÑÐŸÑÑÐ¹ ÐÑ ÑÐžÑÐ°ÐµÑÐµ
+
+         COPYING      ÐÐÐÐÐ ÐÐÐÐÐÐ ÐÐ¿ÐžÑÑÐ²Ð°ÐµÑ ÑÑÐ»ÐŸÐ²ÐžÑ, Ð¿ÑÐž ÐºÐŸÑÐŸÑÑÑ
+ ÑÑÐŸ
+                      Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐµ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµ ÐŒÐŸÐ¶ÐµÑ Ð±ÑÑÑ ÑÐºÐŸÐ¿ÐžÑÐŸÐ²Ð°ÐœÐŸ        
+
+         Support.htm  Ð€ÐŸÑÐŒÐ° ÑÐŸÐŸÐ±ÑÐµÐœÐžÑ ÐŸ Ð¿ÑÐŸÐ±Ð»ÐµÐŒÐ°Ñ
+  Ð¿ÑÐž ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž ÐžÐ»Ðž
+                      Ð¿ÑÐŸÐŽÐŸÐ»Ð¶ÐµÐœÐžÐž ÑÐ°Ð±ÐŸÑÑ Ñ  Grenstone
+
+         Setup.exe    Ð¡Ð°ÐŒÐŸÐžÐœÑÑÐ°Ð»Ð»ÐžÑÑÐµÐŒÐ°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° Ð¿ÐŸÐŽ Windows, ÐºÐŸÑÐŸÑÐ°Ñ 
+                      Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑ Ð²ÑÐ±ÐŸÑÐ° ÐŽÐ»Ñ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž Ð±ÐžÐœÐ°ÑÐœÑÑ
+
+                      ÐºÐŸÐŽÐŸÐ² ÐžÐ»Ðž ÐžÑÑ
+ÐŸÐŽÐœÐŸÐ¹ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ
+
+         docs         ÐÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ, ÐºÐŸÑÐŸÑÐ°Ñ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÑÐ»ÐµÐŽÑÑÑÐµÐµ:
+
+                  Install.pdf   Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ Ð¿ÐŸ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž.
+                                ÐÐ¿ÐžÑÑÐ²Ð°ÐµÑ Ð¿ÑÐŸÑÐµÑÑ  ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž ÐŽÐ»Ñ Unix Ðž
+                                Windows Ðž Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÑÑ ÐŸÐ±ÑÑÐ°ÑÑÑÑ
+                                Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ Ð¿ÐŸ ÐºÐŸÐœÑÐžÐ³ÑÑÐžÑÐŸÐ²Ð°ÐœÐžÑ Greenstone, Web
+                                Server Ðž Apache
+
+                  User.pdf      Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»Ñ. 
+                                ÐÐ°ÑÑ Ð²ÑÐµÑÑÐŸÑÐŸÐœÐœÐµÐµ ÐŸÐ¿ÐžÑÐ°ÐœÐžÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ
+                                Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐ³ÐŸ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ Greenstone ÐŽÐ»Ñ
+                                Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÐž Ðž Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹
+
+                  Develop.pdf   Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ Ð Ð°Ð·ÑÐ°Ð±ÐŸÑÑÐžÐºÐ°.
+                                Ð­ÑÐŸ ÑÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ ÐŸÐ¿ÐžÑÑÐ²Ð°ÐµÑ, ÐºÐ°Ðº ÑÐ°Ð±ÐŸÑÐ°ÐµÑ
+                                Greenstone. ÐÐœÐŸ Ð¿ÑÐµÐŽÐœÐ°Ð·ÐœÐ°ÑÐµÐœÐŸ ÐŽÐ»Ñ ÑÐµÑ
+, ÐºÑÐŸ
+                                Ð¶ÐµÐ»Ð°ÐµÑ ÐœÐ°ÑÑÑÐ°ÐžÐ²Ð°ÑÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž, Ð° ÑÐ°ÐºÐ¶Ðµ ÑÐ°Ð·Ð²ÐžÐ²Ð°ÑÑ
+                                Ðž Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÑÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐµ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµ.
+
+                  Paper.pdf     ÐÑ Ð±ÑÐŒÐ°Ð³Ðž Ðº ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž.
+                                Ð­ÑÐŸ ÑÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ ÑÐŸÐŽÐµÑÐ¶ÐžÑ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÑÑ
+                                ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ Ð¿ÐŸ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÑÐžÑÑÐŸÐ²ÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹
+                                Ð¿ÐŸÐ»ÐœÐŸÑÐµÐºÑÑÐŸÐ²ÑÑ
+  ÐŽÐŸÐºÑÐŒÐµÐœÑÐŸÐ².
+
+         Unix         ÐÐµÑÑÐžÑ Unix, Ð²ÐºÐ»ÑÑÐ°ÑÑÐ°Ñ Ð±ÐžÐœÐ°ÑÐœÑÐµ ÐºÐŸÐŽÑ Linux, ÑÐ»ÐµÐŽÑÑÑÐžÐµ
+                      ÑÐ°Ð¹Ð»Ñ Ð²ÐµÑÑ
+ÐœÐµÐ³ÐŸ ÑÑÐŸÐ²ÐœÑ Ðž ÐŽÐžÑÐµÐºÑÐŸÑÐžÐž:            
+
+                  Install.sh    ÑÐºÑÐžÐ¿ÑÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž Ðž ÐŸÐ±ÐŸÐ»ÐŸÑÐºÐž Unix (ÐµÑÐ»Ðž
+                                ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑÑÑ Linux, ÑÐŸ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž
+                                Ð±ÐžÐœÐ°ÑÐœÑÑ
+ ÐºÐŸÐŽÐŸÐ²; Ð² Ð¿ÑÐŸÑÐžÐ²ÐœÐŸÐŒ ÑÐ»ÑÑÐ°Ðµ
+                                ÑÑÑÐ°ÐœÐ°Ð²Ð»ÐžÐ²Ð°ÐµÑÑÑ ÐžÑÑ
+ÐŸÐŽÐœÐ°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ°)
+                  bin           Ð±ÐžÐœÐ°ÑÐœÑÐµ ÐºÐŸÐŽÑ ÐŽÐ»Ñ Linux.
+
+         Windows      Ð±ÐžÐœÐ°ÑÐœÑÐµ ÐºÐŸÐŽÑ ÐŽÐ»Ñ Windows
+
+                  bin           Ð±ÐžÐœÐ°ÑÐœÑÐµ ÐºÐŸÐŽÑ ÐŽÐ»Ñ Windows
+
+         gsdl         Ð¡ÑÑÑÐºÑÑÑÐ° ÐŽÐžÑÐµÐºÑÐŸÑÐžÐž Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐ³ÐŸ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ ÑÐžÑÑÐŸÐ²ÐŸÐ¹
+                      Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Greenstone. ÐÐžÐ¶Ðµ ÑÐºÐ°Ð·Ð°ÐœÑ Ð·ÐµÑÐºÐ°Ð»Ð° ÑÑÑÑÐºÑÑÑÑ
+                      ÐŽÐžÑÐµÐºÑÐŸÑÐžÐ¹ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Greenstone, ÐºÐŸÑÐŸÑÑÐµ ÐŽÐŸÐ»Ð¶ÐœÑ
+                      Ð±ÑÑÑ ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÑ
+
+                  bin           ÐžÑÐ¿ÐŸÐ»ÐœÑÐµÐŒÑÐ¹ ÐºÐŸÐŽ
+                  cgi-bin       CGI-ÑÐºÑÐžÐ¿ÑÑ
+                  collect       ÐÐŸÐ»Ð»ÐµÐºÑÐžÐž Greenstone (Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÑ
+                                ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ, Ð¿ÑÐµÐŽÐ¿ÐŸÑÑÑÐŸÐµÑÐœÑÐµ ÐžÐœÐŽÐµÐºÑÑ Ðž ÐžÑÑ
+ÐŸÐŽÐœÑÐµ
+                                ÐŽÐŸÐºÑÐŒÐµÐœÑÑ)
+                  etc           ÐºÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÐŸÐœÐœÑÐµ ÑÐ°Ð¹Ð»Ñ, Ð¶ÑÑÐœÐ°Ð»Ñ ÑÐµÐ³ÐžÑÑÑÐ°ÑÐžÐž
+                                Ðž Ñ.ÐŽ.
+                  gli           ÐžÐœÑÑÑÑÐŒÐµÐœÑ ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ° Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Greenstone
+                  images        ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÑÐµ ÐžÐœÑÐµÑÑÐµÐ¹ÑÐŸÐŒ;
+                  macros        ÐŒÐ°ÐºÑÐŸÑ Ð¿ÐŸÐºÐ°Ð·Ð°;
+                  perllib       ÐŒÐŸÐŽÑÐ»Ðž Perl, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÑÐµ Ð¿ÑÐž ÑÐŸÐ·ÐŽÐ°ÐœÐžÐž
+                                ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹;  
+                  mappings      ÑÐ°Ð±Ð»ÐžÑÑ ÑÑÐ°ÐœÑÐ»ÑÑÐžÐž Unicode.
+
+                      ÐÐœÑÑÐ°Ð»Ð»ÑÑÐžÐŸÐœÐœÐ°Ñ Ð¿ÑÐŸÑÐµÐŽÑÑÐ° ÑÑÑÐ°ÐœÐ°Ð²Ð»ÐžÐ²Ð°ÐµÑ ÑÐ°Ð¹Ð»Ñ Ð² ÐœÐµÐºÐŸÑÐŸÑÑÐµ
+                      ÐžÐ· ÑÑÐžÑ
+ ÐŽÐžÑÐµÐºÑÐŸÑÐžÐ¹ ÑÐ»ÐµÐŽÑÑÑÐžÐŒ ÐŸÐ±ÑÐ°Ð·ÐŸÐŒ:
+
+                  top level     ÐºÐŸÐŒÐ°ÐœÐŽÐœÑÐ¹ ÑÐ°Ð¹Ð» ÐžÐ»Ðž ÑÐºÑÐžÐ¿Ñ ÐŸÐ±ÐŸÐ»ÐŸÑÐºÐž;
+                  bin           ÐžÑÐ¿ÐŸÐ»ÐœÑÐµÐŒÑÐ¹ ÐºÐŸÐŽ;   
+                  cgi-bin       ÑÐºÑÐžÐ¿ÑÑ Ð¡GL;
+                  collect       ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÐ°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ Greenstone.
+                                ÐÐŸÐ¿ÐŸÐ»ÐœÐžÑÐµÐ»ÑÐœÑÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž, ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐœÑÐµ Ð²ÐŸ
+                                Ð²ÑÐµÐŒÑ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž;
+                  src, lib, packages
+                                ÐžÑÑ
+ÐŸÐŽÐœÑÐ¹ ÐºÐŸÐŽ, ÐµÑÐ»Ðž ÐŸÐœ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœ Ð²ÐŸ Ð²ÑÐµÐŒÑ
+                                ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž.
+
+        collect       ÐÐŸÐ»Ð»ÐµÐºÑÐžÐž Greenstone, Ð¿ÑÐµÐŽÐ²Ð°ÑÐžÑÐµÐ»ÑÐœÐŸ ÑÐŸÐ·ÐŽÐ°ÐœÐœÑÐµ. ÐÐ±ÑÐ°ÑÐžÑÐµ
+                      Ð²ÐœÐžÐŒÐ°ÐœÐžÐµ, ÑÑÐŸ Ñ
+ÐŸÑÑ Ð¿ÑÐŸÑÐµÐŽÑÑÐ° ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž ÑÐŸÐ»ÑÐºÐŸ
+                      ÑÑÑÐ°ÐœÐ°Ð²Ð»ÐžÐ²Ð°ÐµÑ ÐžÐœÐŽÐµÐºÑÑ Ð¿ÑÐµÐŽÐ¿ÐŸÑÑÑÐŸÐµÐœÐžÑ, ÐŸÑÐžÐ³ÐžÐœÐ°Ð»ÑÐœÑÐµ
+                      ÐžÑÑ
+ÐŸÐŽÐœÑÐµ ÐŽÐŸÐºÑÐŒÐµÐœÑÑ ÐŽÐ»Ñ ÐºÐ°Ð¶ÐŽÐŸÐ¹ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž ÐŽÐŸÑÑÑÐ¿ÐœÑ ÐœÐ°
+                      CD-ROM. ÐÑÑ
+ÐŸÐŽÐœÑÐµ ÐŽÐŸÐºÑÐŒÐµÐœÑÑ ÐŒÐŸÐ³ÑÑ Ð±ÑÑÑ Ð¿ÐŸÐ»ÐµÐ·ÐœÑ ÐŽÐ»Ñ ÑÐµÑ
+,
+                      ÐºÑÐŸ Ð¿ÑÑÐ°ÐµÑÑÑ ÑÐŸÐ·ÐŽÐ°Ð²Ð°ÑÑ ÐœÐŸÐ²ÑÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž, ÐºÐŸÑÐŸÑÑÐµ ÐºÐŸÐ¿ÐžÑÑÑÑ 
+                      ÑÐŸÑÐŒÐ°Ñ ÑÑÐžÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹.
+
+                   demo         ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÐ¹ Ð¿ÑÐžÐŒÐµÑ Greenstone
+                   dls-e        Ð¡ÑÐ±ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž ÑÐ°Ð·Ð²ÐžÑÐžÑ
+                   wrdpdf-e     ÐÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÑ MSWord Ðž PDF
+                   gsarch-e     ÐÐŸÐ»Ð»ÐµÐºÑÐžÑ Ð°ÑÑ
+ÐžÐ²ÐŸÐ² Greenstone
+                   cltbib-e     ÐÐžÐ±Ð»ÐžÐŸÐ³ÑÐ°ÑÐžÑÐµÑÐºÐ°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ
+                   cltext-e     ÐÑÐžÐ»ÐŸÐ¶ÐµÐœÐžÐµ Ð±ÐžÐ±Ð»ÐžÐŸÐ³ÑÐ°ÑÐžÐž
+                   MARC-e       ÐÑÐžÐŒÐµÑ MARC
+                   oai-e        ÐÐµÐŒÐŸÐœÑÑÑÐ°ÑÐž-ÐŸÐœÐœÐ°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ OAI
+                   image-e      ÐÑÐŸÑÑÐ°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÐ¹
+                   authen-e     ÐÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÑ ÑÐŸÑÐŒÐ°ÑÐžÑÐŸÐ²Ð°-ÐœÐžÑ Ðž Ð°ÑÑÐµÐœÑÐžÑÐžÐºÐ°ÑÐžÐž
+                   garish       Ð ÐµÐ·ÐºÐ°Ñ Ð²ÐµÑÑÐžÑ ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœ-ÐœÐŸÐ¹ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž
+                   isis-e       ÐÑÐžÐŒÐµÑ CDS/ISIS
+
+        src           ÑÐ°Ð¹Ð»Ñ ÐžÑÑ
+ÐŸÐŽÐœÐŸÐ³ÐŸ ÑÐµÐºÑÑÐ° Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ
+
+                   Windows      ÐºÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÐŸÐœÐœÐ°Ñ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ ÐŽÐ»Ñ Windows
+                   Unix         ÐºÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÐŸÐœÐœÐ°Ñ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ ÐŽÐ»Ñ Unix  
+                   lib          Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° ÐºÐŸÐŽÐŸÐ² C++
+                   packages     ÐžÑÑ
+ÐŸÐŽÐœÑÐ¹ ÐºÐŸÐŽ C++ ÐŽÐ»Ñ Ð¿Ð°ÐºÐµÑÐŸÐ², ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÑÑ
+ 
+                                Greenstone
+                   src          ÐžÑÑ
+ÐŸÐŽÐœÑÐ¹ ÐºÐŸÐŽ C++ (ÑÐµÐºÑÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ).
Index: /branches/rk-oran/shared/greenstone2/docs/SUPPORT.txt
===================================================================
--- /branches/rk-oran/shared/greenstone2/docs/SUPPORT.txt	(revision 18906)
+++ /branches/rk-oran/shared/greenstone2/docs/SUPPORT.txt	(revision 18906)
@@ -0,0 +1,17 @@
+GREENSTONE SUPPORT
+
+A complete list of Greenstone support options is available at:
+http://www.greenstone.org/support
+
+Documentation Manuals are available on CD-ROM releases of Greenstone in the
+"Documentation" folder.
+
+To submit bug reports, follow these steps:
+
+	1.	Register as a developer to gain access to Greenstone's bug tracking
+		system at http://www.greenstone.org/developers-register
+	2.	Go to http://trac.greenstone.org/ in your web browser and click "login"
+		near the top of the screen. Login with your username and password.
+	3.	Click on "New Ticket" near the top of the screen and fill in the Create
+		New Ticket form.
+
Index: /branches/rk-oran/shared/greenstone3/ant-scripts/rk3-targets.xml
===================================================================
--- /branches/rk-oran/shared/greenstone3/ant-scripts/rk3-targets.xml	(revision 18906)
+++ /branches/rk-oran/shared/greenstone3/ant-scripts/rk3-targets.xml	(revision 18906)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		..........................................................
+		August 2008
+		Targets for Greenstone3 release kits
+		Oran Fry
+		..........................................................
+-->
+
+<project name="rk3-targets">
+
+	<property name="version.major" value="3"/>
+
+	<target name="greenstone3-set-version-numbers">
+		<rsr
+			file="${greenstone3basedir}/resources/java/global.properties.in"
+			pattern="@gsdl3version@"
+			replacement="${version}" />
+	</target>
+
+</project>
Index: /branches/rk-oran/shared/greenstone3/xsl/convert-build-xml-source.xsl
===================================================================
--- /branches/rk-oran/shared/greenstone3/xsl/convert-build-xml-source.xsl	(revision 18906)
+++ /branches/rk-oran/shared/greenstone3/xsl/convert-build-xml-source.xsl	(revision 18906)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <!-- we basically want to copy everything except for a few targets that no longer apply -->
+  <xsl:output method="xml"/>
+
+  <!-- for some reason, the default copy-of doesn't copy empty attributes, so have this to get the empty arg1 in equals-->
+  <xsl:template match="project|condition|and|isset|equals|not|or">
+    <xsl:copy>
+      <xsl:copy-of select="@*"/>
+      <xsl:apply-templates/>
+    </xsl:copy>
+  </xsl:template>
+      
+  <!-- delete the unnecessary targets -->
+  <xsl:template match="target[starts-with(@name, 'prepare')]"></xsl:template>
+  <xsl:template match="target[starts-with(@name, 'cvsupdate')]"></xsl:template>
+  <xsl:template match="target[starts-with(@name, 'update')]"></xsl:template>
+  <xsl:template match="target[starts-with(@name, 'checkout')]"></xsl:template>
+  <xsl:template match="target[starts-with(@name, 'rename-gs2build')]"></xsl:template>
+  <xsl:template match="target[@name='test']"></xsl:template>
+  <xsl:template match="target[@name='get-macos-extra']"><target name="get-macos-extra"></target></xsl:template>
+  <xsl:template match="target[@name='get-windows-binaries']"></xsl:template>
+  
+  <xsl:template match="property[@name='install-command']">
+    <property name="install-command" value="ant [options] install"/>
+  </xsl:template>
+
+  <xsl:variable name="install-for-dist" select="document('dist-build.xml')/project/target[@name='install-for-source-dist']"/>
+  
+  <!-- copy in our new install target -->
+  <xsl:template match="target[@name='install']">
+    <target name="install">
+      <xsl:copy-of select="$install-for-dist/@depends|$install-for-dist/@description|$install-for-dist/@if|$install-for-dist/@unless|$install-for-dist/node()"/>
+    </target>
+  </xsl:template>
+
+  <xsl:template match="*">
+    <xsl:copy-of select="."/>
+  </xsl:template>
+
+  <xsl:template match="comment()">
+    <xsl:copy-of select="."/>
+    <xsl:text>
+</xsl:text>
+  </xsl:template>
+    
+</xsl:stylesheet>
Index: /branches/rk-oran/shared/greenstone3/xsl/convert-build-xml.xsl
===================================================================
--- /branches/rk-oran/shared/greenstone3/xsl/convert-build-xml.xsl	(revision 18906)
+++ /branches/rk-oran/shared/greenstone3/xsl/convert-build-xml.xsl	(revision 18906)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <!-- we basically want to copy everything except for a few targets that no longer apply -->
+  <xsl:output method="xml"/>
+
+  <!-- for some reason, the default copy-of doesn't copy empty attributes, so have this to get the empty arg1 in equals-->
+  <xsl:template match="project|condition|and|isset|equals|not|or">
+    <xsl:copy>
+      <xsl:copy-of select="@*"/>
+      <xsl:apply-templates/>
+    </xsl:copy>
+  </xsl:template>
+  
+  <!-- delete the old install target-->
+  <xsl:template match="target[@name='install']"></xsl:template>
+
+  <!-- delete the unnecessary targets -->
+  <xsl:template match="target[starts-with(@name, 'prepare')]"></xsl:template>
+  <xsl:template match="target[starts-with(@name, 'cvsupdate')]"></xsl:template>
+  <xsl:template match="target[starts-with(@name, 'update')]"></xsl:template>
+  <xsl:template match="target[starts-with(@name, 'checkout')]"></xsl:template>
+  <xsl:template match="target[starts-with(@name, 'rename-gs2build')]"></xsl:template>
+  <xsl:template match="target[@name='test']"></xsl:template>
+  <xsl:template match="target[@name='get-macos-extra']"><target name="get-macos-extra"></target></xsl:template>
+  <xsl:template match="target[@name='get-windows-binaries']"></xsl:template>
+
+  <xsl:variable name="usage-for-dist" select="document('../../ant-scripts/operations-on-gs3home.xml')/project/target[@name='usage-for-binary-dist']"/>
+  
+  <!-- copy in our new usage target -->
+  <xsl:template match="target[@name='usage']">
+    <target name="usage">
+      <xsl:copy-of select="$usage-for-dist/@description|$usage-for-dist/node()"/>
+    </target>
+  </xsl:template>
+  
+  <xsl:template match="*">
+    <xsl:copy-of select="."/>
+  </xsl:template>
+
+  <xsl:template match="comment()">
+    <xsl:copy-of select="."/>
+    <xsl:text>
+</xsl:text>
+  </xsl:template>
+    
+</xsl:stylesheet>
Index: /branches/rk-oran/shared/language-strings/LanguagePack.properties
===================================================================
--- /branches/rk-oran/shared/language-strings/LanguagePack.properties	(revision 18906)
+++ /branches/rk-oran/shared/language-strings/LanguagePack.properties	(revision 18906)
@@ -0,0 +1,208 @@
+### Language page ###
+page.language-selector.displayText = Language
+language-selector-explanation.displayText = Please choose your preferred language
+#(Note: This installer has not been fully translated into all these languages yet)
+
+
+### Intro Page ###
+page.intro.displayText = Greenstone @version@ installer
+welcome-message.displayText = Greenstone@version.major@ is software for building and sharing digital libraries.\n\nIt is recommended that you uninstall any previous installations of Greenstone@version.major@ before running this installer.
+
+## License page ###
+page.license.displayText = Software License
+
+
+### Destination page ###
+page.destination.displayText = Installation Folder
+installDir.displayText = Select an installation folder
+
+
+### InstallShield install detected page ###
+page.dontBudge.displayText = Previous Install Detected
+is-install-detected.displayText = An installation of Greenstone2 older than version 2.81, or an installation of Greenstone3 older than version 3.04, was detected in the installation folder. Installation cannot proceed using the selected installation folder.\n\nPlease quit this installer, uninstall the existing Greenstone installation, and then re-run this installer (recommended). Alternatively, you may go back to the previous page of this installer and select a different installation folder.
+
+
+### Components Page ###
+# (Note: in the html here, we must use '<br>' for breaklines.
+# '<br/>' and other variations are not recognised.)
+page.selector.displayText = Components
+choose-components.displayText = Please choose the components you wish to install
+
+Looking_For_Previous_Installation.displayText = Search for Previous Installations
+Looking_For_Previous_Installation.explanatoryText = If this is an over-install, load some properties of the existing installation to aid the installation process.
+
+Installing_Core_System.displayText = Core System
+Installing_Core_System.explanatoryText = \
+<html> \
+This is the core Greenstone@version.major@ system. It is a required component. \
+</html>
+
+Installing_Source_Code_Core.displayText = Source Code Core
+Installing_Source_Code_Core.explanatoryText = \
+<html> \
+This is the core Greenstone@version.major@ system for source releases. <br>\n
+It includes supporting files to accompany the source code. \
+</html>
+
+Installing_Source_Code.displayText = Source Code
+Installing_Source_Code.explanatoryText = \
+<html> \
+Install the source code if you wish to compile Greenstone@version.major@ <br>\n
+yourself, make modifications to your copy of Greenstone@version.major@, or if<br>\n
+you just want to see how it works. \
+</html>
+
+Installing_ImageMagick.displayText = ImageMagick with JPEG2000 (@bundled.version.imagemagick@)
+Installing_ImageMagick.explanatoryText = \
+<html> \
+Greenstone uses ImageMagick to process images.<br>\n
+The bundled version of ImageMagick includes support for the JPEG2000 image <br>\
+format. If you have ImageMagick on your computer already, or if you don't wish <br>\
+to include images in Greenstone collections, then you may choose not to <br>\
+install ImageMagick. \
+</html>
+
+Installing_Ghostscript.displayText = GhostScript (@bundled.version.ghostscript@)
+Installing_Ghostscript.explanatoryText = \
+<html> \
+Greenstone uses GhostScript to process PDF and PostScript files.<br> \
+If you have Ghostscript on your computer already, or if you don't wish to<br>\
+include PDF of PostScript files in Greenstone collections, then you may choose <br>\
+not to install Ghostscript. \
+</html>
+
+Installing_Start_Menu_Shortcuts.displayText = Start Menu Shortcuts
+Installing_Start_Menu_Shortcuts.explanatoryText = Create shortcuts to Greenstone@version.major@ on your Start Menu
+
+Installing_Tomcat.displayText = Apache Tomcat (@bundled.version.tomcat@)
+Installing_Tomcat.explanatoryText = \
+<html> \
+Greenstone3 requires the Apache Tomcat web server to serve your digital library over <br> \
+the web. If you have an existing installation of Tomcat, you can use that installation <br> \
+(some configuration is required), so you can safely opt not to install this component. \
+</html>
+
+Installing_Ant.displayText = Apache Ant (@bundled.version.ant@)
+Installing_Ant.explanatoryText = \
+<html> \
+Greenstone3 requires Apache Ant to start and stop the Tomcat web server, to recompile <br> \
+the source code, and to perform some maintainence tasks. If you already have Ant installed, <br> \
+you can safely opt not to install this component. \
+</html>
+
+### Admin password page
+page.admin-password.displayText = Please set the Admin Password
+admin.password.displayText = Admin Password
+admin-password-expl.displayText = In order to access certain parts of the Greenstone interface you need a password. A user with the username 'admin' will be created for you with the password you provide. The password must be between 3 and 20 characters long.
+
+### Tomcat config page
+page.tomcat-config.displayText = Apache Tomcat Configuration
+tomcat-config-explanation1.displayText = Greenstone3 uses Apache Tomcat to share your digital libraries.
+tomcat-config-explanation2.displayText = You can either configure Tomcat here, or by editing the build.properties file in the Greenstone3 home folder (${installDir}).
+tomcat.server.displayText = Tomcat Server
+tomcat-server.explanatoryText = Please enter the name of the server machine where the library will be hosted. If you are not sure, accept the default (localhost).
+tomcat.port.explanatoryText = Please select the ports which tomcat should use. It is usually safe to accept the defaults. If you are already running other services on the default ports, please select some free ports.
+tomcat.port.displayText = Tom	cat Port
+tomcat.shutdown.port.displayText = Tomcat Shutdown Port
+
+### Progress page
+page.progress.displayText = Installation progress
+
+### Uninstaller Strings
+
+uninstaller.greenstone.uninstaller = Greenstone Uninstaller
+uninstaller.cancel = Cancel
+uninstaller.uninstall = Uninstall
+uninstaller.finish = Finish
+uninstaller.error = Error
+uninstaller.confirmation = Confirmation
+uninstaller.continue = Continue
+uninstaller.complete = Complete
+uninstaller.skip = Skip
+uninstaller.skip.all = Skip All
+uninstaller.retry = Retry
+uninstaller.readonly = Read Only
+
+uninstaller.will.uninstall.from = Uninstall Greenstone from:
+uninstaller.uninstall.options = Uninstall Options:
+uninstaller.keep.collections = Keep Collections
+uninstaller.are.you.sure = Are you sure you wish to Uninstall Greenstone
+uninstaller.are.you.sure.collections = You have chosen to delete your collections.\nPlease backup any collections you wish to keep before continuing
+uninstaller.failed.to.figure.cd = Failed to figure out the current directory
+uninstaller.cancelled = Uninstall Cancelled
+uninstaller.finished = Uninstall Finished
+uninstaller.deleting = Deleting {file} from disk
+
+uninstaller.info.skipping = INFO: Skipping {file}
+uninstaller.info.no.startmenu = INFO: No StartMenu path found. Deleting a StartMenu group will not be part of this uninstall
+uninstaller.warning.readonly = WARNING: {file} appears to be read-only
+uninstaller.warning.couldnt.delete = WARNING: {file} could not be deleted. Skipped.
+uninstaller.warning.nonexistent = WARNING: {file} does not exist
+uninstaller.error.nonexistent = ERROR: {file} does not exist
+uninstaller.error.couldnt.find.install.props = ERROR: Could not find the 'installation.properties' or 'etc/installation.properties' file.\nEither this is not a valid Greenstone installation, or the installation has been corrupted.\nUninstallation cannot proceed
+uninstaller.warning.couldnt.create.flagfile = WARNING: Couldn't create the flag file. You will have to delete the jre and loose uninstaller files manually
+
+
+### Ant-Installer Core strings
+
+dirNotExistCreate = The folder does not exist, create it?
+dirNotExist = The folder does not exist
+fileNotExist = The file does not exist
+dirNotCreated = The folder could not be created
+canNotCreateFile = Can not create file
+appRootInvalid = This folder does not appear to be the root of the application
+selectFile = Select File
+selectFolder = Select Folder
+browseDotDotDot = Browse...
+notValidSelection = Not a valid selection
+showDetails = Show Details
+
+#Default loading
+promptLoadDefaults = Installation configuration found. Load the existing configuration?
+promptMissingDefaultPassword = A password was not found it may have been omitted for security reasons, it will be set to the default.
+
+click = Click
+toContinue = to continue
+failed = Failed
+exit = Exit
+complete = Complete
+finished = Finished
+extracting = Extracting...
+installFinished = Install Finished
+install-cancelled = Install Cancelled
+running =
+
+backButton = Back
+cancelButton = Cancel
+nextButton = Next
+finishButtonText = Install
+
+output = Output
+errors = Errors
+notCorrectFormat = The field is not of the correct format
+notCorrectPasswordFormat = The password is not of the correct format
+passwordsDoNotMatch = The passwords do not match
+installationFailed = Install failed
+propertiesVersionMismatch = Some options are missing from the previous version and must be manually entered, continue?
+
+Finished = Finished
+Failed = Failed, view the error messages
+ant.failure = Ant run failed - examine the error logs for details
+
+license.next.text = Accept
+license.cancel.text = Reject
+
+#text install strings
+_required_=required
+_default_=default
+true=true
+affirmativeChars=T,Y
+licenseAccept=Do you accept the license? Y or N   [default\:Y]
+clickViewLicense=Press enter to view the license agreement
+clickViewText=Press enter to continue
+enterNumber=Enter a number
+fileDoesNotExist=The File does not exist
+license_next=enter 'N' for the next page, enter anything else to scroll to the the end
+large_select_next=enter 'N' for the next page, enter anything else to scroll to the the end
+nextChar=N
+availableOptions=view available options
Index: /branches/rk-oran/shared/language-strings/LanguagePack_ar.properties
===================================================================
--- /branches/rk-oran/shared/language-strings/LanguagePack_ar.properties	(revision 18906)
+++ /branches/rk-oran/shared/language-strings/LanguagePack_ar.properties	(revision 18906)
@@ -0,0 +1,403 @@
+### Language page ###
+page.language-selector.displayText:ÙØºØ©   
+language-selector-explanation.displayText:Ù
+Ù ÙØ¶ÙÙ Ø§Ø®ØªØ± Ø§ÙÙØºØ© Ø§ÙÙ
+ÙØ¶ÙØ© ÙØ¯ÙÙ  
+
+
+
+### Intro Page ###
+page.intro.displayText:Ø¬Ø±ÙÙØ³ØªÙÙ @ÙØ³Ø®Ø©@ Ù
+Ø«ØšØª  
+welcome-message.displayText:Greenstone@version.major @ ÙÙ ØšØ±Ù
+Ø¬ÙØ§Øª ÙØšÙØ§Ø¡ ÙØªÙØ§Ø³Ù
+ Ø§ÙÙ
+ÙØªØšØ§Øª Ø±ÙÙ
+ÙØ©. .\n\n ÙÙØµÙ ØšØ¥Ø²Ø§ÙØ© Ø¢Ù ØªØ«ØšÙØª Ø³Ø§ØšÙ ÙÙ  Greenstone@version.major @ ÙØšÙ ØªØŽØºÙÙ ÙØ°Ø§ Ø§ÙÙ
+Ø«ØšØª.  
+
+## License page ###
+page.license.displayText:Ø±Ø®ØµØ© Ø§ÙØšØ±Ù
+Ø¬ÙØ§Øª  
+
+
+### Destination page ###
+page.destination.displayText:Ù
+Ø¬ÙØ¯ Ø§ÙØªØ«ØšÙØª  
+installDir.displayText:Ø§Ø®ØªØ± Ù
+Ø¬ÙØ¯ Ø§ÙØªØ«ØšÙØª  
+
+
+### InstallShield install detected page ###
+page.dontBudge.displayText:ÙÙØ¬Ø¯ ØªØ«ØšÙØª Ø³Ø§ØšÙ  
+is-install-detected.displayText:ØªÙ
+ Ø§ÙÙØŽÙ Ø¹Ù ØªØ«ØšÙØª Ø¬Ø±ÙÙØ³ØªÙÙ2 Ø£ÙØ¯Ù
+ Ù
+Ù Ø§ÙÙØ³Ø®Ø© 2.81 Ø Ø£Ù ØªØ«ØšÙØª ÙØ¬Ø±ÙÙØ³ØªÙÙ3 Ø£ÙØ¯Ù
+ Ù
+Ù Ø§ÙÙØ³Ø®Ø© 3.04 Ø ÙÙ Ù
+Ø¬ÙØ¯ Ø§ÙØªØ«ØšÙØª . ÙØ§ ÙÙ
+ÙÙ Ø§ÙÙ
+Ø¶Ù ÙØ¯Ù
+Ø§ ÙÙ Ø§ÙØªØ«ØšÙØª ØšØ§Ø³ØªØ®Ø¯Ø§Ù
+ ÙØ°Ø§ Ø§ÙÙ
+Ø¬ÙØ¯. \n\n Ø§ÙØ±Ø¬Ø§Ø¡ ØªØ±Ù ÙØ°Ø§ Ø§ÙÙ
+Ø«ØšØª Ø Ø¥ÙØºØ§Ø¡ ØªØ«ØšÙØª Ø¬Ø±ÙÙØ³ØªÙÙ Ø§ÙÙ
+ÙØ¬ÙØ¯ Ø Ø«Ù
+ Ø¥Ø¹Ø§Ø¯Ø© ØªØŽØºÙÙ ÙØ°Ø§ Ø§ÙÙ
+Ø«ØšØª (Ù
+Ø³ØªØ­Ø³Ù). ÙØšØ¯ÙØ§ Ù
+Ù Ø°ÙÙ Ø ÙÙ
+ÙÙÙ Ø§ÙØ¹ÙØ¯Ø© Ø¥ÙÙ Ø§ÙØµÙØ­Ø© Ø§ÙØ³Ø§ØšÙØ© Ù
+Ù ÙØ°Ø§ Ø§ÙÙ
+Ø«ØšØª ÙØ§Ø®ØªÙØ§Ø± Ù
+Ø¬ÙØ¯ ØªØ«ØšÙØª Ù
+Ø®ØªÙÙ   
+
+
+### Components Page ###
+# (Note: in the html here, we must use '<br>' for breaklines.
+# '<br/>' and other variations are not recognised.)
+page.selector.displayText:Ù
+ÙÙÙØ§Øª  
+choose-components.displayText:Ø§ÙØ±Ø¬Ø§Ø¡ Ø§Ø®ØªÙØ§Ø± Ø§ÙØ¹ÙØ§ØµØ± Ø§ÙØªÙ ØªØ±ØºØš ÙÙ ØªØ«ØšÙØªÙØ§   
+
+Looking_For_Previous_Installation.displayText:ØšØ­Ø« Ø¹Ù Ø¢Ù ØªØ«ØšÙØª Ø³Ø§ØšÙ.  
+Looking_For_Previous_Installation.explanatoryText:Ø§Ø°Ø§ ÙØ§Ù ÙØ°Ø§ ÙÙ ØªØ«ØšÙØª Ø²Ø§ØŠØ¯ ØÙÙ
+ ØšØªØ­Ù
+ÙÙ ØšØ¹Ø¶ Ø®ØµØ§ØŠØµ Ø§ÙØªØ«ØšÙØª Ø§ÙÙ
+ÙØ¬ÙØ¯ ÙØ¯Ø¹Ù
+ Ø¥Ø¬Ø±Ø§Ø¡ Ø§ÙØªØ«ØšÙØª.  
+
+Installing_Core_System.displayText:Ø§ÙÙØžØ§Ù
+ Ø§ÙØ£Ø³Ø§Ø³Ù  
+Installing_Core_System.explanatoryText:ÙØ°Ø§ ÙÙ Greenstone@version.major@ system Ø§ÙØ£Ø³Ø§Ø³Ù. Ù ÙÙ Ù
+ÙÙÙ Ù
+Ø·ÙÙØš.  
+
+Installing_Source_Code_Core.displayText:ØŽÙØ±Ø© Ø§ÙÙ
+ØµØ¯Ø±  Ø§ÙØ£Ø³Ø§Ø³ÙØ©  
+Installing_Source_Code_Core.explanatoryText:ÙØ°Ø§ ÙÙ Ø§ÙÙØžØ§Ù
+ Ø§ÙØ£Ø³Ø§Ø³Ù ÙØ¥ØµØ¯Ø§Ø±Ø§Øª ØŽÙØ±Ø© <br>Greenstone@version.major @ . \n ØªØŽÙ
+Ù Ù
+ÙÙØ§Øª Ø§ÙØ¯Ø¹Ù
+ Ø§ÙÙ
+Ø±Ø§ÙÙØ© ÙØŽÙØ±Ø© Ø§ÙÙ
+ØµØ¯Ø±.  
+
+Installing_Source_Code.displayText:ØŽÙØ±Ø© Ø§ÙÙ
+ØµØ¯Ø±  
+Installing_Source_Code.explanatoryText:ÙÙ
+ ØšØªØ«ØšÙØª ØŽÙØ±Ø© Ø§ÙÙ
+ØµØ¯Ø± Ø¥Ø°Ø§ ÙÙØª ØªØ±ÙØ¯ Ø§ÙÙÙØ§Ù
+ ØšØªØ¬Ù
+ÙØ¹<br> Greenstone@version.major@ \n ØšÙÙØ³ÙØ ÙÙ
+ ØšØ¥Ø¯Ø®Ø§Ù Ø§ÙØªØ¹Ø¯ÙÙØ§Øª Ø¹ÙÙ ÙØ³Ø®ØªÙ Ù
+Ù Greenstone@version.major @ Ø Ø£Ù Ø¥Ø°Ø§ <br>\n ÙÙØª ÙÙØ· ØªØ±ÙØ¯ Ø£Ù ØªØ±Ù ÙÙÙ ÙØ¹Ù
+Ù.  
+
+Installing_ImageMagick.displayText:Ø¥ÙÙ
+Ø§Ø¬ Ù
+Ø§Ø¬ÙÙ Ù
+Ø¹JPEG2000 (@bundled.version.imagemagick@)  
+Installing_ImageMagick.explanatoryText:ÙØ³ØªØ®Ø¯Ù
+ Ø¬Ø±ÙÙØ³ØªÙÙ Ø¥ÙÙ
+Ø§Ø¬ Ù
+Ø§Ø¬ÙÙ ÙÙ
+Ø¹Ø§ÙØ¬Ø© Ø§ÙØµÙØ±<br>. \n ØªØŽÙ
+Ù ÙØ³Ø®Ø© Ø¥ÙÙ
+Ø§Ø¬ Ù
+Ø§Ø¬ÙÙ Ø§ÙÙ
+Ø¬Ù
+Ø¹Ø© Ø§ÙØ¯Ø¹Ù
+ ÙØ£ØŽÙØ§Ù<br> ØµÙØ± JPEG2000 . Ø¥Ø°Ø§ ÙØ§Ù ÙØ¯ÙÙ ØšØ§ÙÙØ¹Ù Ø¥ÙÙ
+Ø§Ø¬ Ù
+Ø§Ø¬ÙÙ Ø¹ÙÙ Ø¬ÙØ§Ø² Ø§ÙÙÙ
+ØšÙÙØªØ± Ø§ÙØ®Ø§Øµ ØšÙ Ø Ø£Ù Ø¥Ø°Ø§ ÙÙØª<br> ÙØ§ ØªØ±ØºØš ÙÙ ØªØ¶Ù
+ÙÙ Ø§ÙØµÙØ± ÙÙ Ù
+Ø¬Ù
+ÙØ¹Ø§Øª Ø¬Ø±ÙÙØ³ØªÙÙ ØÙÙØ§ ÙÙ
+ÙÙÙ Ø§Ù <br>ÙØ§ ØªØ«ØšØª Ø¥ÙÙ
+Ø§Ø¬ Ù
+Ø§Ø¬ÙÙ  
+
+Installing_Ghostscript.displayText:(@bundled.version.ghostscript@ÙÙØ³ØªØ³ÙØ±ÙØšØª@)  
+Installing_Ghostscript.explanatoryText:ÙØ³ØªØ®Ø¯Ù
+ Ø¬Ø±ÙÙØ³ØªÙÙ ÙÙØ³ØªØ³ÙØ±ÙØšØª ÙÙ
+Ø¹Ø§ÙØ¬Ø© Ù
+ÙÙØ§Øª  PDF Ù PostScript .<br> Ø¥Ø°Ø§ ÙØ¬Ø¯ ÙÙØ³ØªØ³ÙØ±ÙØšØª Ù
+Ø«ØšØªØ§ ÙÙ Ø¬ÙØ§Ø²Ù Ù
+Ù ÙØšÙ Ø Ø£Ù ÙØ§ ØªØ±ØºØš ÙÙ ØªØ¶Ù
+ÙÙ Ù
+ÙÙØ§Øª PDF Ù PostScript ÙÙ Ù
+Ø¬Ù
+ÙØ¹Ø§Øª Ø¬Ø±ÙÙØ³ØªÙÙ Ø ÙÙØ§ ÙÙ
+ÙÙÙ Ø§Ù<br> ÙØ§ ØªØ«ØšØª ÙÙØ³ØªØ³ÙØ±ÙØšØª.  
+
+Installing_Start_Menu_Shortcuts.displayText:Ø§Ø®ØªØµØ§Ø±Ø§Øª ÙØ§ØŠÙ
+Ø© Ø§ØšØ¯Ø£   
+Installing_Start_Menu_Shortcuts.explanatoryText:Ø¥ÙØŽØ§Ø¡ Ø§Ø®ØªØµØ§Ø±Ø§Øª ÙGreenstone@version.major @ ÙÙ ÙØ§ØŠÙ
+Ø© Ø§ØšØ¯Ø£   
+
+Installing_Tomcat.displayText:(bundled.version.tomcat @ Ø§ØšØ§ØªØŽÙ ØªÙÙ
+ÙØ§Øª@)   
+Installing_Tomcat.explanatoryText:ÙØªØ·ÙØš Ø¬Ø±ÙÙØ³ØªÙÙ3 Ù
+Ø²ÙØ¯ ÙØš Ø§ØšØ§ØªØŽÙ ØªÙÙ
+ÙØ§Øª ÙØ®Ø¯Ù
+Ø© Ø§ÙÙ
+ÙØªØšØ© Ø§ÙØ±ÙÙ
+ÙØ© Ø§ÙØ®Ø§ØµØ© ØšÙ ÙÙ<br> Ø§ÙÙØš. Ø¥Ø°Ø§ ÙØ§Ù ÙØ¯ÙÙ ØªØ«ØšÙØª ØªÙÙ
+ÙØ§Øª Ù
+ÙØ¬ÙØ¯Ø ÙÙ
+ÙÙÙ Ø§Ø³ØªØ®Ø¯Ø§Ù
+ Ø°ÙÙ Ø§ÙØªØ«ØšÙØª <br>(ÙØªØ·ÙØš ØšØ¹Ø¶ Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯) Ø Ø­ØªÙ ÙØ§ ØªØ­ØªØ§Ø¬ ÙÙØ°Ø§ Ø§ÙØªØ«ØšÙØª.  
+
+Installing_Ant.displayText:(bundled.version.ant @ Ø§ØšØ§ØªØŽÙ Ø¢ÙØª@)  
+Installing_Ant.explanatoryText:ÙØªØ·ÙØš Ø¬Ø±ÙÙØ³ØªÙÙ3 Ø§ØšØ§ØªØŽÙ Ø¢ÙØª ÙØªØŽØºÙÙ Ù Ø¥ÙÙØ§Ù Ù
+Ø²ÙØ¯ ÙØš ØªÙÙ
+ÙØ§Øª Ø Ù ÙØ¥Ø¹Ø§Ø¯Ø© ØªØ¬Ù
+ÙØ¹ <br>ØŽÙØ±Ø© Ø§ÙÙ
+ØµØ¯Ø± Ø Ù Ø§ÙÙÙØ§Ù
+ ØšØšØ¹Ø¶ Ø£Ø¹Ù
+Ø§Ù Ø§ÙØµÙØ§ÙØ©.ÙÙ
+ÙÙÙ ØªØ¬Ø§ÙØ² ÙØ°Ø§ Ø§ÙØ£Ù
+Ø± Ø¥Ø°Ø§ ÙÙ
+Øª ØšØªØ«ØšÙØª Ø¢ÙØª Ù
+Ù ÙØšÙ.  
+
+### Admin password page
+page.admin-password.displayText:ÙØ±Ø¬Ù ØªØ­Ø¯ÙØ¯ ÙÙÙ
+Ø© Ø³Ø± Ø§ÙÙ
+ØŽØ±Ù  
+admin.password.displayText:ÙÙÙ
+Ø© Ø³Ø± Ø§ÙÙ
+ØŽØ±Ù  
+admin-password-expl.displayText:Ù
+Ù Ø£Ø¬Ù Ø§ÙÙØµÙÙ Ø¥ÙÙ Ø£Ø¬Ø²Ø§Ø¡ Ù
+Ø¹ÙÙØ© Ù
+Ù ÙØ§Ø¬ÙØ© Ø¬Ø±ÙÙØ³ØªÙÙ ØªØ­ØªØ§Ø¬ Ø¥ÙÙ ÙÙÙ
+Ø© Ø³Ø±. Ø³ÙÙ ÙØªÙ
+ Ø¥ÙØŽØ§Ø¡ Ù
+Ø³ØªØ®Ø¯Ù
+  ØšØ¥Ø³Ù
+ Ø§ÙÙ
+Ø³ØªØ®Ø¯Ù
+  'Ø§ÙÙ
+ØŽØ±Ù'  Ù
+Ø¹ ÙÙÙ
+Ø© Ø§ÙØ³Ø± Ø§ÙØªÙ ØªÙØ¯Ù
+ÙØ§. Ø·ÙÙ ÙÙÙ
+Ø© Ø§ÙÙ
+Ø±ÙØ± ÙØ¬Øš Ø£Ù ÙÙÙÙ Ù
+Ø§ ØšÙÙ 3 Ù 20 Ø­Ø±ÙØ§ .   
+
+### Tomcat config page
+page.tomcat-config.displayText:Ø¥Ø¹Ø¯Ø§Ø¯ Ø§ØšØ§ØªØŽÙ ØªÙÙ
+ÙØ§Øª  
+tomcat-config-explanation1.displayText:ÙØ³ØªØ®Ø¯Ù
+ Ø¬Ø±ÙÙØ³ØªÙÙ3   Ø§ØšØ§ØªØŽÙ ØªÙÙ
+ÙØ§Øª  ÙØªÙØ§Ø³Ù
+  Ø§ÙÙ
+ÙØªØšØ§Øª Ø§ÙØ±ÙÙ
+ÙØ© Ø§ÙØ®Ø§ØµØ© ØšÙ.  
+tomcat-config-explanation2.displayText:ÙÙ
+ÙÙÙ ÙÙØ§ Ø¥Ù
+Ø§ Ø¥Ø¹Ø¯Ø§Ø¯ ØªÙÙ
+ÙØ§Øª Ø Ø£Ù Ù
+Ù Ø®ÙØ§Ù ØªØ­Ø¯ÙØ« Ù
+ÙÙ build.properties Ø§ÙÙ
+ÙØ¬ÙØ¯ ÙÙ Ù
+Ø¬ÙØ¯ Ø¬Ø±ÙÙØ³ØªÙÙ3 Ø§ÙØ£Ø³Ø§Ø³Ù ($ (installDir)).  
+tomcat.server.displayText:Ù
+Ø²ÙØ¯ ØªÙÙ
+ÙØ§Øª  
+tomcat-server.explanatoryText:Ø§ÙØ±Ø¬Ø§Ø¡ Ø¥Ø¯Ø®Ø§Ù Ø§Ø³Ù
+ Ù
+Ø²ÙØ¯ Ø§ÙØ¬ÙØ§Ø² Ø­ÙØ« ØªØ³ØªØ¶Ø§Ù Ø§ÙÙ
+ÙØªØšØ©. Ø¥Ø°Ø§ ÙÙ
+ ØªÙÙ Ù
+ØªØ£ÙØ¯Ø§ Ø ÙÙ
+ÙÙÙ ÙØšÙÙ Ø§ÙÙÙÙ
+Ø© Ø§ÙØ¥ÙØªØ±Ø§Ø¶ÙØ©  (localhost).  
+tomcat.port.explanatoryText:Ø§ÙØ±Ø¬Ø§Ø¡ Ø§Ø®ØªÙØ§Ø± Ø§ÙÙ
+ÙØ§ÙØ° Ø§ÙØªÙ ÙØ¬Øš Ø£Ù ÙØ³ØªØ®Ø¯Ù
+ÙØ§ ØªÙÙ
+ÙØ§Øª Ø Ù Ø¹Ø§Ø¯Ø© Ù
+Ø§ ÙÙÙÙ Ù
+ÙØšÙÙØ§ Ø¥Ø³ØªØ®Ø¯Ø§Ù
+ Ø§ÙÙÙÙ
+ Ø§ÙØ¥ÙØªØ±Ø§Ø¶ÙØ©. Ø¥Ø°Ø§ ÙÙØª ØšØ§ÙÙØ¹Ù ØªÙÙÙ
+ ØšØªØŽØºÙÙ Ø§ÙÙ
+ÙØ§ÙØ° Ø§ÙØ¥ÙØªØ±Ø§Ø¶ÙØ© ÙØ®Ø¯Ù
+Ø§Øª Ø£Ø®Ø±Ù Ø Ø§ÙØ±Ø¬Ø§Ø¡ Ø§Ø®ØªÙØ§Ø± ØšØ¹Ø¶ Ø§ÙÙ
+ÙØ§ÙØ° Ø§ÙØ­Ø±Ø©  
+tomcat.port.displayText:Ù
+ÙÙØ° ØªÙÙ
+ÙØ§Øª
+tomcat.shutdown.port.displayText:Ù
+ÙÙØ° Ø¥ØºÙØ§Ù ØªÙÙ
+ÙØ§Øª  
+
+### Progress page
+page.progress.displayText:ØªØ·ÙØ± Ø§ÙØªØ«ØšÙØª  
+
+### Uninstaller Strings
+
+uninstaller.greenstone.uninstaller:Ø¥ÙØºØ§Ø¡ ØªØ«ØšÙØª Ø¬Ø±ÙÙØ³ØªÙÙ  
+uninstaller.cancel:Ø¥ÙØºØ§Ø¡  
+uninstaller.uninstall:Ø¥ÙØºØ§Ø¡ Ø§ÙØªØ«ØšÙØª  
+uninstaller.finish:Ø¥ÙØªÙØ§Ø¡  
+uninstaller.error:Ø®Ø·Ø£  
+uninstaller.confirmation:ØªØ£ÙÙØ¯  
+uninstaller.continue:Ø¥Ø³ØªÙ
+Ø±Ø§Ø±  
+uninstaller.complete:Ø¥ÙØªÙ
+Ø§Ù  
+uninstaller.skip:ØªØ¬Ø§ÙØ²  
+uninstaller.skip.all:ØªØ¬Ø§ÙØ² Ø§ÙÙÙ  
+uninstaller.retry:Ø¥Ø¹Ø§Ø¯Ø©  
+uninstaller.readonly:ÙÙÙØ±Ø§Ø¡Ø© ÙÙØ·  
+
+uninstaller.will.uninstall.from:Ø¥ÙØºØ§Ø¡ ØªØ«ØšÙØª Ø¬Ø±ÙÙØ³ØªÙÙ Ù
+Ù :   
+uninstaller.uninstall.options:Ø®ÙØ§Ø±Ø§Øª Ø¥ÙØºØ§Ø¡ Ø§ÙØªØ«ØšÙØª:   
+uninstaller.keep.collections:Ø§Ø­ØªÙØž ØšØ§ÙÙ
+Ø¬Ù
+ÙØ¹Ø§Øª  
+uninstaller.are.you.sure:ÙÙ Ø£ÙØª Ù
+ØªØ£ÙØ¯ Ù
+Ù Ø£ÙÙ ØªØ±ØºØš ÙÙ Ø¥ÙØºØ§Ø¡ ØªØ«ØšÙØª Ø¬Ø±ÙÙØ³ØªÙÙ  
+uninstaller.are.you.sure.collections:ÙÙØ¯ Ø§Ø®ØªØ±Øª Ø­Ø°Ù Ø§ÙÙ
+Ø¬Ù
+ÙØ¹Ø§Øª Ø§ÙØ®Ø§ØµØ© ØšÙ. \n Ø§ÙØ±Ø¬Ø§Ø¡ Ø§ÙÙÙØ§Ù
+ ØšØ§ÙØ­ÙØž Ø§ÙØ¥Ø­ØªÙØ§Ø·Ù ÙØ£Ù Ù
+Ø¬Ù
+ÙØ¹Ø§Øª ØªÙØ¯ Ø§ÙØ¥Ø­ØªÙØ§Øž ØšÙØ§ ÙØšÙ Ù
+ÙØ§ØµÙØ© Ø§ÙØ¥Ø¬Ø±Ø§Ø¡.   
+uninstaller.failed.to.figure.cd:ÙØŽÙ ÙÙ Ù
+Ø¹Ø±ÙØ© Ø§ÙØ¯ÙÙÙ Ø§ÙØ­Ø§ÙÙ  
+uninstaller.cancelled:Ø¥ÙØºØ§Ø¡ Ø§ÙØªØ«ØšÙØª  
+uninstaller.finished:Ø¥ÙØªÙØ§Ø¡ Ø¥ÙØºØ§Ø¡ Ø§ÙØªØ«ØšÙØª   
+uninstaller.deleting:Ø­Ø°Ù    (Ù
+ÙÙ) Ù
+Ù Ø§ÙÙØ±Øµ  
+
+uninstaller.info.skipping:Ù
+Ø¹ÙÙÙ
+Ø§Øª : ØªØ¬Ø§ÙØ² ( Ø§ÙÙ
+ÙÙ)  
+uninstaller.info.no.startmenu:Ù
+Ø¹ÙÙÙ
+Ø§Øª : ÙØ§ ÙÙØ¬Ø¯ Ù
+Ø³Ø§Ø± ÙØ§ØŠÙ
+Ø© Ø¥ØšØ¯Ø£. Ø­Ø°Ù Ù
+Ø¬Ù
+ÙØ¹Ø© ÙØ§ØŠÙ
+Ø© Ø¥ØšØ¯Ø£ ÙÙ ÙÙÙÙ Ø¬Ø²Ø¡Ø§ Ù
+Ù  Ø¥ÙØºØ§Ø¡ Ø§ÙØªØ«ØšÙØª.   
+uninstaller.warning.readonly:ØªØ­Ø°ÙØ± : ÙØšØ¯Ù Ø£Ù (Ù
+ÙÙ)  ÙÙÙØ±Ø§Ø¡Ø© ÙÙØ·   
+uninstaller.warning.couldnt.delete:ØªØ­Ø°ÙØ± : (Ù
+ÙÙ)  ÙØ§ ÙÙ
+ÙÙ Ø­Ø°ÙÙ. ØªØ¬Ø§ÙØ².   
+uninstaller.warning.nonexistent:ØªØ­Ø°ÙØ± : (Ø§ÙÙ
+ÙÙ)  ØºÙØ± Ù
+ÙØ¬ÙØ¯   
+uninstaller.error.nonexistent:Ø®Ø·Ø£ : (Ø§ÙÙ
+ÙÙ)  ØºÙØ± Ù
+ÙØ¬ÙØ¯  
+uninstaller.error.couldnt.find.install.props:Ø®Ø·Ø£ : ØªØ¹Ø°Ø± Ø§ÙØ¹Ø«ÙØ± Ø¹ÙÙ Ù
+ÙÙ ' installation.properties ' Ø£Ù 'etc/installation.properties'. \n Ø¥Ù
+Ø§ Ø£Ù ÙÙÙÙ ÙØ°Ø§ ÙÙØ³ ØªØ«ØšÙØªØ§ ØµØ­ÙØ­Ø§ ÙØ¬Ø±ÙÙØ³ØªÙÙ Ø Ø£Ù Ø£Ù Ø¹Ù
+ÙÙØ© Ø§ÙØªØ«ØšÙØª ÙØ¯ ÙØ³Ø¯Øª.\n ÙØ§ ÙÙ
+ÙÙ Ø§ÙÙ
+Ø¶Ù ÙØ¯Ù
+Ø§ ÙÙ Ø¥ÙØºØ§Ø¡ Ø§ÙØªØ«ØšÙØª.  
+uninstaller.warning.couldnt.create.flagfile:ØªØ­Ø°ÙØ± : ØªØ¹Ø°Ø± Ø¥ÙØŽØ§Ø¡ Ù
+ÙÙ Ø§ÙØ¹ÙÙ
+. Ù ÙØ¬Øš Ø¹ÙÙÙ Ø£Ù ØªÙÙÙ
+ ØšØ­Ø°Ù  jre Ù Ø¥Ø³ØªØ®Ø±Ø§Ø¬ Ù
+ÙÙØ§Øª Ø¥ÙØºØ§Ø¡ Ø§ÙØªØ«ØšÙØª ÙØ¯ÙÙØ§.   
+
+
+### Ant-Installer Core strings
+
+dirNotExistCreate:Ù
+Ø¬ÙØ¯ ØºÙØ± Ù
+ÙØ¬ÙØ¯ Ø ÙÙ ØªØ±ØºØš ÙÙ Ø¥ÙØŽØ§Ø¡ ÙØ°Ø§ Ø§ÙÙ
+Ø¬ÙØ¯ Ø  
+dirNotExist:Ø§ÙÙ
+Ø¬ÙØ¯ ØºÙØ± Ù
+ÙØ¬ÙØ¯  
+fileNotExist:Ø§ÙÙ
+ÙÙ ØºÙØ± Ù
+ÙØ¬ÙØ¯  
+dirNotCreated:ÙØ§ ÙÙ
+ÙÙ Ø¥ÙØŽØ§Ø¡ Ø§ÙÙ
+Ø¬ÙØ¯  
+canNotCreateFile:ÙØ§ ÙÙ
+ÙÙ Ø¥ÙØŽØ§Ø¡ Ù
+ÙÙ  
+appRootInvalid:ÙØ§ ÙØšØ¯Ù Ø£Ù ÙØ°Ø§ Ø§ÙÙ
+Ø¬ÙØ¯  ÙÙ Ø§ÙÙ
+Ø¬ÙØ¯ Ø§ÙØ£Ø³Ø§Ø³Ù ÙÙØªØ·ØšÙÙ  
+selectFile:Ø§Ø®ØªØ± Ø§ÙÙ
+ÙÙ  
+selectFolder:Ø§Ø®ØªØ± Ù
+Ø¬ÙØ¯  
+browseDotDotDot:ØªØµÙØ­...  
+notValidSelection:Ø§ÙØ§Ø®ØªÙØ§Ø± ØºÙØ± ØµØ­ÙØ­   
+showDetails:Ø¹Ø±Ø¶ ØªÙØ§ØµÙÙ  
+
+#Default loading
+promptLoadDefaults:ÙÙØ¬Ø¯ Ø¥Ø¹Ø¯Ø§Ø¯ ØªØ«ØšÙØª . ØªØ­Ù
+ÙÙ Ø¥Ø¹Ø¯Ø§Ø¯ Ø§ÙØªØ«ØšÙØª Ø§ÙÙ
+ÙØ¬ÙØ¯ Ø  
+promptMissingDefaultPassword:ÙÙ
+ ÙØªÙ
+ Ø§ÙØ¹Ø«ÙØ± Ø¹ÙÙ ÙÙÙ
+Ø© Ø§ÙØ³Ø±  Ù Ø±ØšÙ
+Ø§ ÙØ¯ ØªÙ
+ Ø­Ø°ÙÙØ§ ÙØ£Ø³ØšØ§Øš Ø£Ù
+ÙÙØ© Ø Ø³ÙØªÙ
+ ØªØ­Ø¯ÙØ¯ Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ©  
+
+click:Ø§ÙÙØ±  
+toContinue:Ø¥Ø³ØªÙ
+Ø±Ø§Ø±  
+failed:ÙØŽÙ  
+exit:Ø®Ø±ÙØ¬  
+complete:Ø¥ÙØªÙ
+Ø§Ù  
+finished:Ø§ÙØªÙØ§Ø¡  
+extracting:Ø¥Ø³ØªØ®Ø±Ø§Ø¬...  
+installFinished:Ø§ÙØªÙØ§Ø¡ Ø§ÙØªØ«ØšÙØª  
+install-cancelled:ØªÙ
+ Ø¥ÙØºØ§Ø¡ Ø§ÙØªØ«ØšÙØª  
+
+backButton:Ø¹ÙØ¯Ø©  
+cancelButton:Ø¥ÙØºØ§Ø¡   
+nextButton:Ø§ÙØªØ§ÙÙ  
+finishButtonText:ØªØ«ØšÙØª  
+
+output:Ø§ÙÙ
+Ø®Ø±Ø¬Ø§Øª  
+errors:Ø£Ø®Ø·Ø§Ø¡   
+notCorrectFormat:ÙØ°Ø§ Ø§ÙØ­ÙÙ ÙÙØ³ ØšØ§ÙØŽÙÙ Ø§ÙØµØ­ÙØ­  
+notCorrectPasswordFormat:ÙÙÙ
+Ø© Ø§ÙÙ
+Ø±ÙØ± ÙÙØ³Øª ØšØ§ÙØŽÙÙ Ø§ÙØµØ­ÙØ­  
+passwordsDoNotMatch:ÙÙÙ
+Ø© Ø³Ø± Ø®Ø·Ø£  
+installationFailed:ÙØŽÙ Ø§ÙØªØ«ØšÙØª  
+propertiesVersionMismatch:ØšØ¹Ø¶ Ø§ÙØ®ÙØ§Ø±Ø§Øª ØºÙØ± Ù
+ÙØ¬ÙØ¯Ø© Ù
+Ù Ø§ÙÙØ³Ø®Ø© Ø§ÙØ³Ø§ØšÙØ© Ø ÙÙØ¬Øš Ø£Ù ØªØ¯Ø®Ù ÙØ¯ÙÙØ§ Ø Ø¥Ø³ØªÙ
+Ø±Ø§Ø± Ø  
+
+Finished:Ø§ÙØªÙØ§Ø¡  
+Failed:ÙØŽÙ Ø Ø¹Ø±Ø¶ Ø±Ø³Ø§ØŠÙ Ø§ÙØ®Ø·Ø£  
+ant.failure:ÙØŽÙ ØªØŽØºÙÙ Ø¢ÙØª - Ø¥ÙØ­Øµ Ø³Ø¬ÙØ§Øª Ø§ÙØ®Ø·Ø£ ÙÙØªÙØ§ØµÙÙ  
+
+license.next.text:Ø£ÙØšÙ   
+license.cancel.text:Ø±ÙØ¶   
Index: /branches/rk-oran/shared/language-strings/LanguagePack_de.properties
===================================================================
--- /branches/rk-oran/shared/language-strings/LanguagePack_de.properties	(revision 18906)
+++ /branches/rk-oran/shared/language-strings/LanguagePack_de.properties	(revision 18906)
@@ -0,0 +1,207 @@
+### Language page ###
+page.language-selector.displayText = Sprache
+language-selector-explanation.displayText = Bitte wÃ€hlen Sie die Installationssprache aus.
+#(Hinweis: Momentan unterstÃŒtzt die Installation noch nicht alle Sprachen.)
+
+
+### Intro Page ###
+page.intro.displayText = Greenstone @version@ Installation
+welcome-message.displayText = Greenstone@version.major@ ist eine Software zum Aufbau und Austausch von digitalen Bibliotheken.\n\nWir empfehlen, dass Sie alte Installationen von Greenstone@version.major@ deinstallieren, bevor Sie diese Installation starten.
+
+## License page ###
+page.license.displayText = Software Lizenz
+
+
+### Destination page ###
+page.destination.displayText = Installationsordner
+installDir.displayText = WÃ€hlen Sie einen Installationsordner
+
+
+### InstallShield install detected page ###
+page.dontBudge.displayText = Alte Installation gefunden
+is-install-detected.displayText = Eine Installation von Greenstone2 Ã€lter als Version 2.81, oder eine Installation von Greenstone3 Ã€lter als Version 3.04, wurde in Ihrem Installationsornder gefunden. Die Installation kann nicht im ausgewÃ€hlten Installationsordner fortgesetzt werden.\n\nBitte beenden sie die Installation, deinstallieren Sie die existierende Greenstone Installation, und setzen dann diese Installation fort (empfohlen). Alternativ kÃ¶nnen Sie zur vorigen Seite dieser Installation zurÃŒckkehren und einen anderen Installationsordner auswÃ€hlen.
+
+
+### Components Page ###
+# (Note: in the html here, we must use '<br>' for breaklines.
+# '<br/>' and other variations are not recognised.)
+page.selector.displayText = Komponenten
+choose-components.displayText = Bitte wÃ€hlen Sie die Komponenten, die Sie installieren mÃ¶chten
+
+Looking_For_Previous_Installation.displayText = Suche nach alten Installationen
+Looking_For_Previous_Installation.explanatoryText = Falls dies eine Nachinstallation ist, lade einige Eigenschaften der existierenden Installation, um den Installationsprozess zu leiten.
+
+Installing_Core_System.displayText = Kernsystem
+Installing_Core_System.explanatoryText = \
+<html> \
+Dies ist das Kernsystem von Greenstone@version.major@. Es ist eine benÃ¶tigte Komponente. \
+</html>
+
+Installing_Source_Code_Core.displayText = Quellcode des Kernsystems
+Installing_Source_Code_Core.explanatoryText = \
+<html> \
+Dies ist das Kernsystem von Greenstone@version.major@ fÃŒr Quellcode Versionen. <br>\n
+Es beinhaltet unterstÃŒtzende Dateien, die den Quellcode begleiten. \
+</html>
+
+Installing_Source_Code.displayText = Quellcode
+Installing_Source_Code.explanatoryText = \
+<html> \
+Installieren Sie den Quellcode wenn Sie Greenstone@version.major@ selbst kompilieren mÃ¶chten,<br>\n
+Ihre Kopie von Greenstone@version.major@ modifizieren wollen, oder wenn<br>\n
+Sie wissen mÃ¶chten, wie alles funktioniert. \
+</html>
+
+Installing_ImageMagick.displayText = ImageMagick mit JPEG2000 (@bundled.version.imagemagick@)
+Installing_ImageMagick.explanatoryText = \
+<html> \
+Greenstone benutzt ImageMagick um Bilder zu bearbeiten.<br>\n
+Die Version von ImageMagick beinhaltet support fÃŒr das Format JPEG2000. <br>\
+Falls Sie bereits ImageMagick auf Ihrem Computer installiert haben, oder falls Sie keine Bilder <br>\
+in Ihrer Greenstone Sammlung haben wollen brauchen Sie ImageMagick nicht zu installieren. \
+</html>
+
+Installing_Ghostscript.displayText = GhostScript (@bundled.version.ghostscript@)
+Installing_Ghostscript.explanatoryText = \
+<html> \
+Greenstone benutzt GhostScript um PDF und PostScript Dateien zu bearbeiten.<br> \
+Falls Sie bereits Ghostscript auf Ihrem Computer installiert haben, oder falls Sie keine<br>\
+ PDF oder PostScript Dateien in Ihrer Greenstone Sammlung haben wollen brauchen Sie Ghostscript nicht zu installieren. \
+</html>
+
+Installing_Start_Menu_Shortcuts.displayText = Startmenu-Shortcuts
+Installing_Start_Menu_Shortcuts.explanatoryText = Erzeugen von Shortcuts zu Greenstone@version.major@ in Ihrem Startmenu
+
+Installing_Tomcat.displayText = Apache Tomcat (@bundled.version.tomcat@)
+Installing_Tomcat.explanatoryText = \
+<html> \
+Greenstone3 benÃ¶tigt den Apache Tomcat Webserver um Ihre digitale Bibliothek ÃŒber das Internet anzubieten.<br> \
+Falls Sie eine existierende Installation von Tomcat haben, kÃ¶nnen Sie diese <br> \
+(mit einigen Ãnderungen der Konfiguration) benutzen, d.h. Sie kÃ¶nnen von der Installation dieser Komponente Abstand nehmen. \
+</html>
+
+Installing_Ant.displayText = Apache Ant (@bundled.version.ant@)
+Installing_Ant.explanatoryText = \
+<html> \
+Greenstone3 benÃ¶tigt Apache Ant um den Tomcat Webserver zu starten und stoppen, um den Quellcode <br> \
+zu rekompilieren, und fÃŒr einige Wartungsaufgaben. Falls Sie bereits Ant installiert haben, <br> \
+kÃ¶nnen Sie von der Installation dieser Komponente Abstand nehmen. \
+</html>
+
+### Admin password page
+page.admin-password.displayText = Bitte setzen Sie das Admin Passwort
+admin.password.displayText = Admin Passwort
+admin-password-expl.displayText = Um Zugang zu bestimmten Teilen der Greenstone BenutzeroberflÃ€che zu haben, benÃ¶tigen Sie ein Passwort. Ein Benutzer mit der Benutzerkennung 'admin' mit dem von Ihnen gegebenen Passwort wird fÃŒr Sie erzeugt. Das Passwort muss zwischen drei und acht Buchstaben lang sein.
+
+### Tomcat config page
+page.tomcat-config.displayText = Apache Tomcat Konfiguration
+tomcat-config-explanation1.displayText = Greenstone3 benutzt Apache Tomcat fÃŒr den Austausch von diditalen Bibliotheken.
+tomcat-config-explanation2.displayText = Sie kÃ¶nnen Tomcat entweder hier konfigurieren, oder durch editieren der build.properties Datei im Greenstone3 Heinmverzeichnis (${installDir}).
+tomcat.server.displayText = Tomcat Server
+tomcat-server.explanatoryText = Bitte geben Sie den Namen des Server, der die Bibliothek hostet, ein. Wenn Sie sich nicht sicher sind, akzeptieren Sie den Default (localhost).
+tomcat.port.explanatoryText = Bitte wÃ€hlen Sie die Ports, die Tomcat benutzen soll. Es ist normalerweise empfohlen die Defaults zu akzeptieren. Falls Sie bereits andere Services auf den default Ports laufen haben, wÃ€hlen Sie bitte einige freie Ports.
+tomcat.port.displayText = Tomcat Port
+tomcat.shutdown.port.displayText = Tomcat Shutdown Port
+
+### Progress page
+page.progress.displayText = Fortschritt der Installation
+
+### Uninstaller Strings
+
+uninstaller.greenstone.uninstaller = Deinstallation von Greenstone
+uninstaller.cancel = Abbrechen
+uninstaller.uninstall = Deinstallieren
+uninstaller.finish = Fertig stellen
+uninstaller.error = Fehler
+uninstaller.confirmation = BestÃ€tigung
+uninstaller.continue = Fortsetzen
+uninstaller.complete = Abschliessen
+uninstaller.skip = Ãberspringen
+uninstaller.skip.all = Alles Ãberspringen
+uninstaller.retry = Wiederholen
+uninstaller.readonly = SchreibgeschÃŒtzt
+
+uninstaller.will.uninstall.from = Dies wird Greenstone deinstallieren von
+uninstaller.uninstall.options = Deinstallationsoptionen:
+uninstaller.keep.collections = Sammlungen behalten
+uninstaller.are.you.sure = MÃ¶chten Sie Greenstone wirklich deinstallieren
+uninstaller.are.you.sure.collections = Sie haben  gewÃ€hlt Ihre Sammlungen zu deinstallieren.\nBitte erstellen Sie Sicherungskopien aller Sammlungen, die Sie behalten wollen, bevor sie die Deinstallation fortsetzen
+uninstaller.failed.to.figure.cd = Das aktuelle Verzeichnis konnte nicht ermittelt werden
+uninstaller.cancelled = Deinstallation abgebrochen
+uninstaller.finished = Deinstallation abgeschlossen
+uninstaller.deleting = LÃ¶sche {file} von der Festplatte
+
+uninstaller.info.skipping = INFO: Ãberspringe {file}
+uninstaller.info.no.startmenu = INFO: Kein Startmenupfad gefunden. Die Deinstallation beinhaltet nicht eine Startmenugruppe zu lÃ¶schen
+uninstaller.warning.readonly = WARNUNG: {file} ist schreibgeschÃŒtzt
+uninstaller.warning.couldnt.delete = WARNUNG: {file} konnte nicht gelÃ¶scht werden
+uninstaller.warning.nonexistent = WARNUNG: {file} existiert nicht
+uninstaller.error.nonexistent = FEHLER: {file} existiert nicht
+uninstaller.error.couldnt.find.install.props = FEHLER: Die Datei 'installation.properties' oder 'etc/installation.properties' konnte nicht gefunden werden.\nEntweder ist dies keine gÃŒltige Greenstone Installation, oder die Installation ist beschÃ€digt.\nDeinstallation kann nicht fortgesetzt werden
+uninstaller.warning.couldnt.create.flagfile = FEHLER: Konnte die Markierungsdatei nicht erzeugen. Sie mÃŒssen die restlichen Dateien und Verzeichnisse  manuell lÃ¶schen.
+
+
+### Ant-Installer Core strings
+
+dirNotExistCreate = Das Verzeichnis existiert nicht, soll es erzeugt werden?
+dirNotExist = Das Verzeichnis existiert nicht
+fileNotExist = Die Datei existiert nicht
+dirNotCreated = Das Verzeichnis konnte nicht erzeugt werden
+canNotCreateFile = Kann die Datei nicht erzeugen
+appRootInvalid = Dies Verzeichnis scheint nicht das Wurzelverzeichnis  der Anwendung zu sein
+selectFile = WÃ€hlen Sie eine Datei
+selectFolder = WÃ€hlen Sie ein Verzeichnis
+browseDotDotDot = Browse...
+notValidSelection = Keine gÃŒltige Auswahl
+showDetails = Zeige Details
+
+#Default loading
+promptLoadDefaults = Installationskonfiguration gefunden. Soll die existierende Konfiguration geladen werden?
+promptMissingDefaultPassword = Ein Passwort ist nicht gefunden worden, mÃ¶glicherweise wurde es aus SicherheitsgrÃŒnden ausgelassen, es wird auf den Default gesetzt.
+
+click = Klicken Sie
+toContinue = um fortzusetzen
+failed = Unterbrochen
+exit = Exit
+complete = Fertig stellen
+finished = Beendet
+extracting = Entpacke...
+installFinished = Installation beendet
+install-cancelled = Installation abgebrochen
+running = 
+
+backButton = ZurÃŒck
+cancelButton = Abbrechen
+nextButton = Weiter
+finishButtonText = installieren
+
+output = Ausgabe
+errors = Fehler
+notCorrectFormat = Das Feld ist nicht im richtigen Format
+notCorrectPasswordFormat = Das Passwort ist nicht im richtigen Format
+passwordsDoNotMatch = Die PasswÃ¶rter sind nicht identisch
+installationFailed = Installation war nicht erfolgreich
+propertiesVersionMismatch = Einige Optionen fehlen von der vorigen Version und mÃŒssen manuell eingegeben werden, fortsetzen?
+
+Finished = Beendet
+Failed = Installation unterbrochen, mÃ¶chten Sie Fehlermeldungen sehen
+ant.failure = Ant konnte nicht sum Laufen gebracht werden - mÃ¶chten Sie Fehlerprotokolle fÃŒr Details ansehen
+
+license.next.text = Akzeptieren
+license.cancel.text = Ablehnen
+
+#text install strings
+_required_=erforderlich
+_default_=Voreinstellung
+true=wahr
+affirmativeChars=W,J
+licenseAccept=Akzeptieren Sie diese Lizenz? J oder N  [Vorgabe\:J]
+clickViewLicense=DrÃŒcken Sie die Eingabetaste, um die Lizenzvereinbarung anzusehen
+clickViewText=Press enter to continue
+enterNumber=Geben Sie eine Zahl ein
+fileDoesNotExist=Die Datei existiert nicht
+license_next=Geben Sie 'N' fÃŒr die nÃ€chste Seite ein, oder eine andere
+Taste, um zum Ende zu springen
+large_select_next=Geben Sie 'N' fÃŒr die nÃ€chste Seite ein, oder eine andere Taste, um zum Ende zu springen
+nextChar=N
+availableOptions=VerfÃŒgbare Optionen ansehen
Index: /branches/rk-oran/shared/language-strings/LanguagePack_es.properties
===================================================================
--- /branches/rk-oran/shared/language-strings/LanguagePack_es.properties	(revision 18906)
+++ /branches/rk-oran/shared/language-strings/LanguagePack_es.properties	(revision 18906)
@@ -0,0 +1,204 @@
+﻿### Language page ###
+page.language-selector.displayText = Idioma
+language-selector-explanation.displayText = Por favor, elija su idioma preferido:
+#(Nota: Este instalador no ha sido completamente traducido a todos los idiomas aún.)
+
+
+### Intro Page ###
+page.intro.displayText = Instalador Greenstone @version@
+welcome-message.displayText = Greenstone@version.major@ es un software para construir y compartir bibliotecas digitales.\n\nSe recomienda desinstalar cualquier versión previa a Greenstone@version.major@ antes de ejecutar este instalador.
+
+## License page ###
+page.license.displayText = Licencia de Software
+
+
+### Destination page ###
+page.destination.displayText = Carpeta de Instalación
+installDir.displayText = Seleccione una carpeta para la instalación
+
+
+### InstallShield install detected page ###
+page.dontBudge.displayText = Versión anterior detectada
+is-install-detected.displayText = Fue detectada una instalación Greenstone2 anterior a la version 2.81, o una instalación de Greenstone3 anterior a la version 3.04 en la carpeta de instalación. No puede procederse con la instalación en la carpeta seleccionada.\n\nPor favor, salga del Instalador, desinstale la versión anterior y vuelva a ejecutar este programa (recomendado). Alternativamente, puede ir hacia atrás y seleccionar una carpeta de destino diferente.
+
+
+### Components Page ###
+# (Note: in the html here, we must use '<br>' for breaklines.
+# '<br/>' and other variations are not recognised.)
+page.selector.displayText = Componentes
+choose-components.displayText = Por favor, elija los componentes que desea instalar
+Looking_For_Previous_Installation.displayText = Buscando instalaciones previas
+Looking_For_Previous_Installation.explanatoryText = Si esta es una reinstalación, cargue algunas propiedades de la instalación existente para ayudar al proceso de instalación.
+
+Installing_Core_System.displayText = Sistema principal
+Installing_Core_System.explanatoryText = \
+<html> \
+Este es el módulo principal de Greenstone@version.major@. Es un componente requerido. \
+</html>
+
+Installing_Source_Code_Core.displayText = Módulo de Código fuente
+Installing_Source_Code_Core.explanatoryText = \
+<html> \
+Este es el sistema central de Greenstone@version.major@ para las versiones fuente. <br>\n
+Incluye archivos de soporte para acompañar al código fuente. \
+</html>
+
+Installing_Source_Code.displayText = Código fuente
+Installing_Source_Code.explanatoryText = \
+<html> \
+Instale el código fuente para el caso en que se quiera compilar Greenstone@version.major@, <br>\n
+hacer modificaciones a la copia de Greenstone@version.major@, o si solo quiere ver como funciona. \
+</html>
+
+Installing_ImageMagick.displayText = ImageMagick con JPEG2000 (@bundled.version.imagemagick@)
+Installing_ImageMagick.explanatoryText = \
+<html> \
+Greenstone usa ImageMagick para procesar imágenes.<br>\n
+Esta versión empaquetada de ImageMagick incluye soporte para el formato JPEG2000.<br>\
+Si ya tiene instalado ImageMagick en su computadora, o si no desea <br>\
+incluir imágenes en las colecciones de Greenstone, entonces puede optar por no <br>\
+instalar ImageMagick. \
+</html>
+
+Installing_Ghostscript.displayText = GhostScript (@bundled.version.ghostscript@)
+Installing_Ghostscript.explanatoryText = \
+<html> \
+Greenstone utiliza GhostScript para procesar archivos PDF y PostScript.<br> \
+Si ya tiene instalado Ghostscript, o si no va a incorporar archivos <br>\
+PDF o PostScript a las colecciones de  Greenstone, entonces puede optar por no instalarlo. \
+</html>
+
+Installing_Start_Menu_Shortcuts.displayText = Accesos directos del Menú Inicio
+Installing_Start_Menu_Shortcuts.explanatoryText = Crear accesos a Greenstone@version.major@ en el menú Inicio
+
+Installing_Tomcat.displayText = Apache Tomcat (@bundled.version.tomcat@)
+Installing_Tomcat.explanatoryText = \
+<html> \
+Greenstone3 requiere Apache Tomcat para servir a las colecciones digitales <br> \
+en la web. Si ya tiene instalado Tomcat puede usar dicha instalación (con algunos cambios requeridos), <br> \
+por lo cual puede optar por no instalar este componente. \
+</html>
+
+Installing_Ant.displayText = Apache Ant (@bundled.version.ant@)
+Installing_Ant.explanatoryText = \
+<html> \
+Greenstone3 requiere Apache Ant para iniciar y detener al servidor web Tomcat, para recompilar el código fuente <br> \ y para ejecutar algunas tareas de mantenimiento. Si ya tiene Ant instalado, <br> \
+entonces puede optar por no seleccionar este componente. \
+</html>
+
+### Admin password page
+page.admin-password.displayText = Por favor, configure la clave de Admin
+admin.password.displayText = Clave de Admin
+admin-password-expl.displayText = Para poder acceder a determinadas partes de la interfaz de Greenstone es necesaria una clave. Se creará un usuario con el nombre 'admin' con la clave que haya elegido. La clave debe tener entre 3 y 20 caracteres de longitud.
+
+### Tomcat config page
+page.tomcat-config.displayText = Configuración de Apache Tomcat
+tomcat-config-explanation1.displayText = Greenstone3 usa Apache Tomcat para compartir las bibliotecas digitales.
+tomcat-config-explanation2.displayText = Puede configurar Tomcat aquí o editando el archivo build.properties en la carpeta de inicio de Greenstone3 (${installDir}).
+tomcat.server.displayText = Servidor Tomcat
+tomcat-server.explanatoryText = Por favor, ingrese el nombre del servidor donde estará la biblioteca. Si no está seguro, acepte el valor por defecto (localhost).
+tomcat.port.explanatoryText = Seleccione los puertos que debe usar Tomcat. Por lo general, lo más seguro es aceptar los valores por defecto. Si ya estuviera ejecutando otros servicios en los puertos por defecto, entonces seleccione otros que estén libres. 
+tomcat.port.displayText = Puerto de Tomcat
+tomcat.shutdown.port.displayText = Puerto para shutdown de Tomcat
+
+### Progress page
+page.progress.displayText = Progreso de la instalación
+
+### Uninstaller Strings
+
+uninstaller.greenstone.uninstaller:Desinstalador de Greenstone
+uninstaller.cancel:Cancelar
+uninstaller.uninstall:Desinstalar
+uninstaller.finish:Finalizar
+uninstaller.error:Error
+uninstaller.confirmation:Confirmación
+uninstaller.continue:Continuar
+uninstaller.complete:Completar
+uninstaller.skip:Saltear
+uninstaller.skip.all:Saltear todo
+uninstaller.retry:Reintentar
+uninstaller.readonly:Sólo lectura
+
+uninstaller.will.uninstall.from:Esto desinstalará Greenstone de
+uninstaller.uninstall.options:Opciones de desinstalación:
+uninstaller.keep.collections:Mantener las colecciones
+uninstaller.are.you.sure:Está seguro de que quiere desinstalar Greenstone?
+uninstaller.are.you.sure.collections:Ha seleccionado borrar todas las colecciones.\nPor favor, haga una copia de respaldo de cualquier colección que desee mantener antes de continuar
+uninstaller.failed.to.figure.cd:Fallo al determinar la carpeta actual
+uninstaller.cancelled:Desinstalación cancelada
+uninstaller.finished:Desinstalación finalizada
+uninstaller.deleting:Borrando {file} del disco
+
+uninstaller.info.skipping:INFO: Salteando {file}
+uninstaller.info.no.startmenu:INFO: No se ha encontrado la ruta al Menú Inicio. Borrar el grupo de programas del Menú Inicio no será posible desde esta desinstalación
+uninstaller.warning.readonly:AVISO: {file} parece ser de solo lectura
+uninstaller.warning.couldnt.delete:AVISO: {file} no se puede borrar
+uninstaller.warning.nonexistent:AVISO: {file} no existe
+uninstaller.error.nonexistent:ERROR: {file} no existe
+uninstaller.error.couldnt.find.install.props:ERROR: No se puede encontrar el archivo 'installation.properties' o 'etc/installation.properties'.\nEsta no es una instalación válida de Greenstone o la instalación se ha dañado.\nLa desinstalación no puede continuar
+uninstaller.warning.couldnt.create.flagfile:AVISO: No se puede crear el archivo de marca. Tendrá que borrar manualmente el JRE y los archivos de desinstalación
+
+
+### Ant-Installer Core strings
+
+dirNotExistCreate=La carpeta no existe, quiere crearla?
+dirNotExist=La carpeta no existe
+fileNotExist=El archivo no existe
+dirNotCreated=No se puede crear la carpeta
+canNotCreateFile=No se puede crear el archivo
+appRootInvalid=Esta carpeta no parece ser la raíz de la aplicación
+selectFile=Seleccione el archivo
+selectFolder=Seleccione la carpeta
+browseDotDotDot=Examinar...
+notValidSelection=No es una selección válida
+showDetails=Ver detalles
+
+#Default loading
+promptLoadDefaults=Se encontró la configuración de una instalación. Quiere cargar la configuración existente?
+promptMissingDefaultPassword=No se ha encontrado una clave, pudo haber sido omitida por razones de seguridad. Se cargará el valor por defecto.
+
+click=Click
+toContinue=para continuar
+failed=Falló
+exit=Salir
+complete=Completada
+finished=Finalizada
+extracting=Extrayendo...
+installFinished=Instalación finalizada
+install-cancelled=Instalación cancelada
+running=
+
+backButton=Atrás
+cancelButton=Cancelar
+nextButton=Siguiente
+finishButtonText = Instalar
+
+output=Salida
+errors=Errores
+notCorrectFormat=El campo no es del tipo correcto
+notCorrectPasswordFormat=La clave no es del tipo correcto
+passwordsDoNotMatch=Las claves no coinciden
+installationFailed=Falló la instalación
+propertiesVersionMismatch=Algunas opciones no existen en la versión anterior y deben ingresarse manualmente, continuar?
+
+Finished=Finalizada
+Failed=Falló, ver los mensajes de error
+ant.failure=Falló la ejecución de Ant - examine los archivos de log de errores para más detalles
+
+license.next.text=Aceptar
+license.cancel.text=Rechazar
+
+#text install strings
+_required_=Requerido
+_default_=Por defecto
+true=Verdad
+affirmativeChars=S,V
+licenseAccept=Aceptar la licencia? S o N   [Por defecto\:Y]
+clickViewLicense=Pulsar intro para ver licencia.
+clickViewText=Pulsar intro para continuar.
+enterNumber=Introduzca un nmero.
+fileDoesNotExist=El fichero no existe.
+license_next=Pulse 'S' para ver la siguiente página, pulse cualquier otra tecla para ir al final.
+large_select_next=Pulse 'S' para ver la siguiente pàgina, pulse cualquier otra tecla para ir al final.
+nextChar=S
+availableOptions=Ver opciones disponibles.
Index: /branches/rk-oran/shared/language-strings/LanguagePack_es_EU.properties
===================================================================
--- /branches/rk-oran/shared/language-strings/LanguagePack_es_EU.properties	(revision 18906)
+++ /branches/rk-oran/shared/language-strings/LanguagePack_es_EU.properties	(revision 18906)
@@ -0,0 +1,62 @@
+dirNotExistCreate = Direktorioa ez da existitzen, sortu nahi al duzu?
+dirNotExist = Direktorioa ez da existitzen.
+fileNotExist = Fitxategia ez da existitzen.
+dirNotCreated = Ezin izan da direktorioa sortu.
+canNotCreateFile = Fitxategia ezin da sortu.
+appRootInvalid = Ez dirutdi direktorio hay aplikazioaren erroa denik.
+selectFile = Fitxategia aukeratu.
+selectFolder = karpeta aukeratu.
+notValidSelection = Ez da aukera onargarria.
+# browseDotDotDot = 
+showDetails = Erakutsi xehetasunak.
+
+#Default loading
+promptLoadDefaults = Instalazio konfigurazio bat aurkituta. Kargatu instalazioa?
+promptMissingDefaultPassword = A password was not found it may have been omitted for security reasons, it will be set to the default.
+
+click = Sakatu
+toContinue = Jarraitzeko
+failed = Hutsegitea
+exit = Atera
+complete = Bukatu
+finished = Bukatuta
+extracting = Ateratzen...
+installFinished = Instalazioa bukatuta.
+# install-cancelled = 
+running = Exekutatzen:
+
+backButton = Atzera
+cancelButton = Ezeztatu
+nextButton = Hurrengoa
+# finishButtonText = 
+
+output = Irteera
+errors = Akatsak
+notCorrectFormat = Fitxategia ez da formatu egokikoa.
+notCorrectPasswordFormat = Fitxategia ez da formatu egokikoa.
+passwordsDoNotMatch = Pasa hitzak berdinak izan behar dira 
+installationFailed = Instalaciòn fallado
+propertiesVersionMismatch = Faltan datos del versión anterior, continuar y entrar los manualmente?
+
+Finished = Bukatuta
+Failed = Huts egin da, erakutsi akats mezuak
+ant.failure = Ant run failed - examine the error logs for details
+
+license.next.text = Aceptar
+license.cancel.text = Cancellar
+
+
+#text install strings
+_required_=Beharrezkoa
+_default_=Lehenetsia
+true=Egia
+affirmativeChars=E,B
+licenseAccept=Baimena onartzen duzu? E,B edo N   [Lehenetsia\:Y]
+clickViewLicense=Sakatu hemen baimena ikusteko.
+clickViewText=Pulsar intro para continuar.
+enterNumber=Sartu zenbaki bat.
+fileDoesNotExist=Fitztegia ez da existitzen.
+license_next=Sakatu 'N' hurrengo horrialdea ikusteko, sakatu beste edozer gauza bukaerara joateko.
+large_select_next=Sakatu 'N' hurrengo horrialdea ikusteko, sakatu beste edozer gauza bukaerara joateko.
+nextChar=N
+availableOptions=ikusi aukerak
Index: /branches/rk-oran/shared/language-strings/LanguagePack_fr.properties
===================================================================
--- /branches/rk-oran/shared/language-strings/LanguagePack_fr.properties	(revision 18906)
+++ /branches/rk-oran/shared/language-strings/LanguagePack_fr.properties	(revision 18906)
@@ -0,0 +1,188 @@
+### Language page ###
+page.language-selector.displayText = Langue
+language-selector-explanation.displayText = Veuillez sÃ©lectionner la langue de lâinstallation.
+
+
+### Intro Page ###
+page.intro.displayText = Greenstone @version@ installer
+welcome-message.displayText = Greenstone@version.major@ est un programme qui permet la crÃ©ation et la diffusion de bibliothÃšques numÃ©riques.\n\nIl est recommandÃ© de dÃ©sinstaller les versions prÃ©cÃ©dentes de Greenstone@version.major@ avant de poursuivre avec cette installation.
+
+## License page ###
+page.license.displayText = Licence
+
+
+### Destination page ###
+page.destination.displayText = RÃ©pertoire d'installation 
+installDir.displayText = Veuillez sÃ©lectionner un rÃ©pertoire d'installation
+
+
+### InstallShield install detected page ###
+page.dontBudge.displayText = Ancienne version dÃ©tectÃ©e
+is-install-detected.displayText = Une installation de Greenstone2 plus ancienne que la version 2.81, ou une installation de Greenstone3 plus ancienne que la version 3.04, a Ã©tÃ© dÃ©tectÃ©e dans le rÃ©pertoire sÃ©lectionnÃ©. L'installation ne peut pas se poursuivre dans le rÃ©pertoire sÃ©lectionnÃ©.\n\nIl est vivement recommandÃ© de quitter cet installeur, dÃ©sinstaller l'ancienne version de Greenstone, puis redÃ©marrez cette installation. Autrement, vous pouvez retourner sur la page prÃ©cÃ©dente et sÃ©lectionner un rÃ©pertoire d'installation diffÃ©rent.
+
+
+### Components Page ###
+# (Note: in the html here, we must use '<br>' for breaklines.
+# '<br/>' and other variations are not recognised.)
+page.selector.displayText = Composants
+choose-components.displayText = Veuillez choisir les composants que vous souhaitez installer
+
+Looking_For_Previous_Installation.displayText = Recherche l'existence dâune installation prÃ©cÃ©dente 
+Looking_For_Previous_Installation.explanatoryText = S'il s'agit d'une rÃ©installation, charge quelques propriÃ©tÃ©s de l'installation existante afin d'aider au processus de rÃ©installation.
+
+Installing_Core_System.displayText = Composant de base
+Installing_Core_System.explanatoryText = \
+<html> \
+Ceci est le systÃšme central de Greenstone@version.major@. Il s'agit dâun composant obligatoire. \
+</html>
+
+Installing_Source_Code_Core.displayText = Code Source du Noyau
+Installing_Source_Code_Core.explanatoryText = \
+<html> \
+Ceci est le code source du noyau de Greenstone@version.major@. Ce composant inclue tous les fichiers accompagnant le code source gÃ©nÃ©ral. \
+</html>
+
+Installing_Source_Code.displayText = Code Source GÃ©nÃ©ral
+Installing_Source_Code.explanatoryText = \
+<html> \
+Installez le code source gÃ©nÃ©ral si vous souhaitez compiler Greenstone@version.major@ par vous mÃªme, si vous souhaitez y apporter des modifications, <br> \
+ou si vous souhaitez simplement savoir comment tout fonctionne. \
+</html>
+
+Installing_ImageMagick.displayText = ImageMagick avec JPEG2000 (@bundled.version.imagemagick@)
+Installing_ImageMagick.explanatoryText = \
+<html> \
+Greenstone utilise ImageMagick pour gÃ©rer les fichiers image.<br> \
+La version d'ImageMagick inclue dans cet installeur ajoute le support du format d'image JPEG2000.<br> \
+Si vous avez ImageMagick dÃ©jÃ  installÃ© sur votre ordinateur,<br> \
+ou si vous ne souhaitez pas inclure d'image dans vos collections Greenstone,<br> \
+alors vous pouvez choisir de ne pas installer ImageMagick. \
+</html>
+
+Installing_Ghostscript.displayText = GhostScript (@bundled.version.ghostscript@)
+Installing_Ghostscript.explanatoryText = \
+<html> \
+Greenstone utilise GhostScript pour gÃ©rer les fichiers PDF et PostScript.<br> \
+Si vous avez Ghostscript dÃ©jÃ  installÃ© sur votre ordinateur, ou si vous ne souhaitez pas inclure ce type de fichiers dans vos collections Greenstone,<br> \
+alors vous pouvez choisir de ne pas installer Ghostscript. \
+</html>
+
+Installing_Start_Menu_Shortcuts.displayText = Raccourcis du Menu DÃ©marrer
+Installing_Start_Menu_Shortcuts.explanatoryText = CrÃ©e des raccourcis pour Greenstone@version.major@ dans votre menu DÃ©marrer
+
+Installing_Tomcat.displayText = Apache Tomcat (@bundled.version.tomcat@)
+Installing_Tomcat.explanatoryText = \
+<html> \
+Greenstone3 nÃ©cessite le serveur web Apache Tomcat afin d'hÃ©berger vos bibliothÃšques numÃ©riques<br> \
+sur Internet. Si vous avez une installation existante de Tomcat, vous pouvez l'utiliser<br> \
+(avec quelques changements de configuration). Dans ce cas vous pouvez choisir de ne pas installer ce composant. \
+</html>
+
+Installing_Ant.displayText = Apache Ant (@bundled.version.ant@)
+Installing_Ant.explanatoryText = \
+<html> \
+Greenstone3 nÃ©cessite Apache Ant pour dÃ©marrer ou arrÃªter le serveur web Tomcat, pour recompiler <br> \
+le code source, et pour rÃ©aliser quelques tÃ¢ches de maintenance. Si Ant est dÃ©jÃ  installÃ©, <br> \
+vous pouvez alors choisir de ne pas installer ce composant. \
+</html>
+
+### Admin password page
+page.admin-password.displayText = Veuillez crÃ©er un mot de passe Administrateur
+admin.password.displayText = Mot de passe Admin
+admin-password-expl.displayText = Afin d'accÃ©der Ã  certaines parties de l'interface de Greenstone vous avez besoin d'un mot de passe. Un utilisateur avec le nom 'admin' sera crÃ©Ã© avec le mot de passe que vous aurez choisi. Ce mot de passe doit contenir entre 3 et 20 caractÃšres.
+
+### Tomcat config page
+page.tomcat-config.displayText = Configuration d'Apache Tomcat
+tomcat-config-explanation1.displayText = Greenstone3 nÃ©cessite le serveur web Apache Tomcat afin d'hÃ©berger vos bibliothÃšques numÃ©riques.
+tomcat-config-explanation2.displayText = Vous pouvez soit configurer Tomcat ici, soit Ã©diter le fichier build.properties qui se situe dans le rÃ©pertoire d'installation de Greenstone3 (${installDir}).
+tomcat.server.displayText = Nom du Serveur Tomcat
+tomcat-server.explanatoryText = Veuillez entrer le nom du serveur sur lequel la bibliothÃšque sera hÃ©bergÃ©e. Si vous ne le connaissez pas, alors laissez le nom par dÃ©faut (localhost).
+tomcat.port.explanatoryText = Veuillez choisir les ports que Tomcat devra utiliser. Il est gÃ©nÃ©ralement recommandÃ© de laisser les valeurs par dÃ©faut. Si vous avez dÃ©jÃ  des services qui utilisent ces ports, veuillez alors en choisir des libres.
+tomcat.port.displayText = Port d'Ã©coute
+tomcat.shutdown.port.displayText = Port de fermeture
+
+### Progress page
+page.progress.displayText = Progression de l'installation
+
+### Uninstaller Strings
+
+uninstaller.greenstone.uninstaller = DÃ©sinstallation de Greenstone 
+uninstaller.cancel = Annuler
+uninstaller.uninstall = DÃ©sinstaller
+uninstaller.finish = Finir
+uninstaller.error = Erreur
+uninstaller.confirmation = Confirmation
+uninstaller.continue = Continuer
+uninstaller.complete = Complet
+uninstaller.skip = Ignorer
+uninstaller.skip.all = Toujours Ignorer
+uninstaller.retry = RÃ©essayer
+uninstaller.readonly = Lecture seule
+
+uninstaller.will.uninstall.from = Ceci va dÃ©sinstaller l'installation de Greenstone suivante
+uninstaller.uninstall.options = Options de DÃ©sinstallation:
+uninstaller.keep.collections = Garder les Collections
+uninstaller.are.you.sure = Etes vous certain(e) de vouloir Greenstone ?
+uninstaller.are.you.sure.collections = Vous avez choisi de dÃ©sinstaller vos collections.\nveuillez sauvegarder vos collections si vous souhaitez les conserver avant de continuer.
+uninstaller.failed.to.figure.cd = Le rÃ©pertoire courant n'a pas Ã©tÃ© dÃ©tectÃ©
+uninstaller.cancelled = DÃ©sinstallation annulÃ©e
+uninstaller.finished =  DÃ©sinstallation TerminÃ©e
+uninstaller.deleting = Supprime {file}
+
+uninstaller.info.skipping = INFO: Ignore {file}
+uninstaller.info.no.startmenu = INFO: Aucun chemin vers le menu dÃ©marrÃ© nâa Ã©tÃ© dÃ©tectÃ©. Par consÃ©quent, les entrÃ©es du menu dÃ©marrer ne seront pas dÃ©sinstallÃ©es
+uninstaller.warning.readonly = ATTENTION: Le fichier {file} est en lecture seule
+uninstaller.warning.couldnt.delete =  ATTENTION: le fichier {file} nâa pas Ã©tÃ© supprimÃ©
+uninstaller.warning.nonexistent =  ATTENTION: le fichier {file} n'existe pas
+uninstaller.error.nonexistent = ERREUR: le fichier {file} n'existe pas
+uninstaller.error.couldnt.find.install.props = ERREUR: Impossible de trouver le fichier 'installation.properties' ou 'etc/installation.properties'.\nSoit il ne s'agit pas d'une installation de Greenstone valide, soit l'installation a Ã©tÃ© corrompue.\nLa dÃ©sinstallation ne peut pas se poursuivre.
+uninstaller.warning.couldnt.create.flagfile = ATTENTION: Impossible de crÃ©er le fichier marqueur. Vous devrez supprimer les derniers fichiers dans le rÃ©pertoire d'installation manuellement.
+
+### Ant-Installer Core strings
+
+dirNotExistCreate = Ce rÃ©pertoire n'existe pas, souhaitez-vous le crÃ©er maintenant ?
+dirNotExist = Ce rÃ©pertoire n'existe pas
+fileNotExist = Ce fichier n'existe pas 
+dirNotCreated = Ce rÃ©pertoire ne peut pas Ãªtre crÃ©Ã© Ã  cet emplacement
+canNotCreateFile = Impossible de crÃ©er le fichier
+appRootInvalid = Ce rÃ©pertoire n'est pas la racine de cette application
+selectFile = SÃ©lectionner ce fichier
+selectFolder = SÃ©lectionner ce rÃ©pertoire
+browseDotDotDot = Parcourir...
+notValidSelection = Ceci n'est pas une sÃ©lection valide
+showDetails = Montrer plus de dÃ©tails
+
+#Default loading
+promptLoadDefaults = Configuration d'installation trouvÃ©e. Charger cette prÃ©sente configuration?
+promptMissingDefaultPassword = Un mot de passe n'a pas Ã©tÃ© trouvÃ©, il a peut Ãªtre Ã©tÃ© omis pour des raisons de sÃ©curitÃ©. Il sera remis Ã  sa valeur par dÃ©faut. 
+
+click = Cliquer
+toContinue = pour continuer
+failed = Interrompue
+exit = Quitter
+complete = Complet
+finished = TerminÃ©
+extracting = DÃ©compression...
+installFinished = Installation TerminÃ©e
+install-cancelled = Installation AnnulÃ©e
+running = 
+
+backButton = PrÃ©cÃ©dent
+cancelButton = Annuler
+nextButton = Suivant
+finishButtonText = Installer
+
+output = DÃ©tail de l'installation
+errors = Erreur(s)
+notCorrectFormat = Ce champ n'est pas dans un format valide 
+notCorrectPasswordFormat = Ce mot de passe n'est pas valide
+passwordsDoNotMatch = Les mots de passe ne correspondent pas
+installationFailed = Install Interrompue
+propertiesVersionMismatch = Quelques options sont manquantes depuis la version prÃ©cÃ©dente et doivent Ãªtre entrÃ©es manuellement, continuer ?
+
+Finished = TerminÃ©
+Failed = Installation Interrompue, veuillez voir les messages d'erreur.
+ant.failure = Le lancement de Ant a pose problÃšme â veuillez examiner le fichier log pour plus de dÃ©tails
+
+license.next.text = Accepter
+license.cancel.text = Refuser
Index: /branches/rk-oran/shared/language-strings/LanguagePack_ru.properties
===================================================================
--- /branches/rk-oran/shared/language-strings/LanguagePack_ru.properties	(revision 18906)
+++ /branches/rk-oran/shared/language-strings/LanguagePack_ru.properties	(revision 18906)
@@ -0,0 +1,217 @@
+### Language page ###
+page.language-selector.displayText = Ð¯Ð·ÑÐº
+language-selector-explanation.displayText = ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, Ð²ÑÐ±ÐµÑÐžÑÐµ ÐœÑÐ¶ÐœÑÐ¹ ÑÐ·ÑÐº
+#(ÐÐ°ÐŒÐµÑÑÑÐµ, ÑÑÐ° Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž ÐµÑÐµ ÐœÐµ Ð¿ÐŸÐ»ÐœÐŸÑÑÑÑ Ð¿ÐµÑÐµÐ²ÐµÐŽÐµÐœÐ° ÐœÐ° Ð²ÑÐµ ÑÐ·ÑÐºÐž)
+
+
+### Intro Page ###
+page.intro.displayText = ÐÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž Greenstone @version@
+welcome-message.displayText = Greenstone@version.major@ - ÑÑÐŸ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° ÐŽÐ»Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ Ðž ÐŸÐ±ÐŒÐµÐœÐ° ÑÐ»ÐµÐºÑÑÐŸÐœÐœÑÐŒÐž Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ°ÐŒÐž.\n\nÐ ÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÐŒ ÑÐŽÐ°Ð»ÐžÑÑ Ð»ÑÐ±ÑÐµ Ð¿ÑÐµÐŽÑÐŽÑÑÐžÐµ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž Greenstone@version.major@ Ð¿ÐµÑÐµÐŽ Ð·Ð°Ð¿ÑÑÐºÐŸÐŒ ÑÑÐŸÐ¹ ÑÑÑÐ°ÐœÐŸÐ²ÐŸÑÐœÐŸÐ¹ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ. 
+
+## License page ###
+page.license.displayText = ÐÐžÑÐµÐœÐ·ÐžÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ
+
+
+### Destination page ###
+ page.destination.displayText = ÐÐ°Ð¿ÐºÐ° ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž 
+ installDir.displayText = ÐÑÐ±ÐµÑÐžÑÐµ Ð¿Ð°Ð¿ÐºÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž 
+
+
+### InstallShield install detected page ###
+page.dontBudge.displayText = ÐÐ±ÐœÐ°ÑÑÐ¶ÐµÐœÐ° Ð¿ÑÐµÐŽÑÐŽÑÑÐ°Ñ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐ°
+is-install-detected.displayText = ÐÑ ÐŸÐ±ÐœÐ°ÑÑÐ¶ÐžÐ»Ðž, ÑÑÐŸ Ð² Ð²ÑÐ±ÑÐ°ÐœÐœÐŸÐ¹ Ð¿Ð°Ð¿ÐºÐµ ÑÐ¶Ðµ ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœ Greenstone2 Ð²ÐµÑÑÐžÐž ÐœÐžÐ¶Ðµ ÑÐµÐŒ 2.81, ÐžÐ»Ðž Greenstone3 Ð²ÐµÑÑÐžÐž ÐœÐžÐ¶Ðµ ÑÐµÐŒ 3.04. ÐÐŸÑÑÐŸÐŒÑ ÑÑÐ° ÑÑÑÐ°ÐœÐŸÐ²ÐºÐ° Ð² ÑÐŸÐ¹ Ð¶Ðµ Ð¿Ð°Ð¿ÐºÐµ ÐŸÑÑÑÐµÑÑÐ²ÐžÑÑ ÐœÐµÐ»ÑÐ·Ñ. \n\nÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, Ð²ÑÐ¹ÐŽÐµÑÐµ ÐžÐ· ÑÑÐŸÐ¹ ÑÑÑÐ°ÐœÐŸÐ²ÐŸÑÐœÐŸÐ¹ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ, Ð·Ð°ÑÐµÐŒ ÑÐŽÐ°Ð»ÐžÑÐµ Ð²ÑÐµ ÑÑÑÐµÑÑÐ²ÑÑÑÐžÐµ Ð²ÐµÑÑÐžÐž Greenstone Ðž Ð¿ÐµÑÐµÐ·Ð°Ð¿ÑÑÑÐžÑÐµ ÑÑÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÑ  (ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ). ÐÐ»Ðž, Ð²ÐµÑÐœÑÑÐµÑÑ ÐœÐ° Ð¿ÑÐµÐŽÑÐŽÑÑÑÑ ÑÑÑÐ°ÐœÐžÑÑ Ðž Ð²ÑÐ±ÐµÑÐžÑÐµ ÐŽÑÑÐ³ÑÑ Ð¿Ð°Ð¿ÐºÑ ÐŽÐ»Ñ ÑÑÐŸÐ¹ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž.
+
+### Components Page ###
+# (Note: in the html here, we must use '<br>' for breaklines.
+# '<br/>' and other variations are not recognised.)
+page.selector.displayText = ÐÐŸÐŒÐ¿ÐŸÐœÐµÐœÑÑ
+choose-components.displayText = ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, Ð²ÑÐ±ÐµÑÐžÑÐµ ÐºÐ°ÐºÐžÐµ ÐºÐŸÐŒÐ¿ÐŸÐœÐµÐœÑÑ Ð²Ñ Ñ
+ÐŸÑÐµÐ»Ðž Ð±Ñ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ
+
+Looking_For_Previous_Installation.displayText = ÐÐŸÐžÑÐº Ð¿ÑÐµÐŽÑÐŽÑÑÐžÐ¹ ÑÑÑÐ°ÐœÐŸÐ²ÐŸÐº
+Looking_For_Previous_Installation.explanatoryText = ÐÑÐ»Ðž ÑÑÐŸ Ð¿ÐµÑÐµÑÑÑÐ°ÐœÐŸÐ²ÐºÐ°, Ð·Ð°Ð³ÑÑÐ·ÐžÑÐµ ÑÐ²ÐŸÐ¹ÑÑÐ²Ð° Ð¿ÑÐµÐŽÑÐŽÑÑÐžÐ¹ ÑÑÑÐ°ÐœÐŸÐ²ÐŸÐº, ÑÑÐŸÐ±Ñ Ð¿ÐŸÐŒÐŸÑÑ Ð² ÑÑÐŸÐ¹ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐµ.
+
+Installing_Core_System.displayText = ÐÑÐœÐŸÐ²ÐœÐ°Ñ ÑÐžÑÑÐµÐŒÐ°
+Installing_Core_System.explanatoryText = \
+<html> \
+ Ð­ÑÐŸ ÑÐŽÑÐŸ ÑÐžÑÑÐµÐŒÑ Greenstone@version.major@. Ð­ÑÐŸ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÑÐ¹ ÐºÐŸÐŒÐ¿ÐŸÐœÐµÐœÑ. \
+</html>
+
+Installing_Source_Code_Core.displayText = ÐÑÐœÐŸÐ²ÐœÐŸÐ¹ ÐžÑÑ
+ÐŸÐŽÐœÑÐ¹ ÐºÐŸÐŽ
+Installing_Source_Code_Core.explanatoryText = \
+<html> \
+Ð­ÑÐŸ ÐŸÑÐœÐŸÐ²ÐœÐŸÐ¹ ÐºÐŸÐŽ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ Greenstone@version.major@. <br>\n
+Ð¡ÑÐŽÐ° ÑÐ°ÐºÐ¶Ðµ Ð²ÐºÐ»ÑÑÐµÐœÑ ÑÐŸÐ¿ÑÐŸÐ²ÐŸÐ¶ÐŽÐ°ÑÑÐžÐµ ÑÐ°Ð¹Ð»Ñ. \
+</html>
+
+Installing_Source_Code.displayText = ÐÑÑ
+ÐŸÐŽÐœÑÐ¹ ÐºÐŸÐŽ
+Installing_Source_Code.explanatoryText = \
+<html> \
+Ð£ÑÑÐ°ÐœÐŸÐ²ÐžÑÐµ ÐžÑÑ
+ÐŸÐŽÐœÑÐ¹ ÐºÐŸÐŽ ÐµÑÐ»Ðž ÐÑ Ñ
+ÐŸÑÐžÑÐµ ÑÐ°ÐŒÐž ÑÐºÐŸÐŒÐ¿ÐžÐ»ÐžÑÐŸÐ²Ð°ÑÑ Greenstone@version.major@, <br>\n
+ÐžÐ»Ðž Ð²ÐœÐµÑÑÐž ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑ Ð² Ð²Ð°ÑÑ ÐºÐŸÐ¿ÐžÑ Greenstone@version.major@, ÐžÐ»Ðž ÐµÑÐ»Ðž<br>\n
+Ð²Ñ Ð¿ÑÐŸÑÑÐŸ Ñ
+ÐŸÑÐžÑÐµ Ð¿ÐŸÑÐŒÐŸÑÑÐµÑÑ, ÐºÐ°Ðº ÑÑÑÑÐŸÐµÐœÐ° ÑÑÐ° Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ°. \
+</html>
+
+Installing_ImageMagick.displayText = ImageMagick Ñ JPEG2000 (@bundled.version.imagemagick@)
+Installing_ImageMagick.explanatoryText = \
+<html> \
+Greenstone ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ ImageMagick ÐŽÐ»Ñ ÐŸÐ±ÑÐ°Ð±ÐŸÑÐºÐž ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÐ¹.<br>\n
+ÐÐºÐ»ÑÑÐµÐœÐœÐ°Ñ Ð²ÐµÑÑÐžÑ ImageMagick Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÐµÑ ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ ÑÐŸÑÐŒÐ°ÑÐ° JPEG2000 <br>\
+ÐÑÐ»Ðž ÐœÐ° ÐÐ°ÑÐµÐŒ ÐºÐŸÐŒÐ¿ÑÑÑÐµÑÐµ ÑÐ¶Ðµ ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœ ImageMagick, ÐžÐ»Ðž ÐµÑÐ»Ðž ÐÑ ÐœÐµ Ñ
+ÐŸÑÐžÑÐµ <br>\
+Ð²ÐºÐ»ÑÑÐ°ÑÑ ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ Ð² ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Greenstone, ÑÐŸ Ð²Ñ ÐŒÐŸÐ¶ÐµÑÐµ ÐœÐµ <br> \ 
+ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐžÐ²Ð°ÑÑ ImageMagick. \ 
+</html>
+
+Installing_Ghostscript.displayText = GhostScript (@bundled.version.ghostscript@)
+Installing_Ghostscript.explanatoryText = \
+<html> \
+Greenstone ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ GhostScript ÐŽÐ»Ñ ÐŸÐ±ÑÐ°Ð±ÐŸÑÐºÐž ÑÐ°Ð¹Ð»ÐŸÐ² PDF Ðž PostScript.<br> \
+ÐÑÐ»Ðž ÐœÐ° Ð²Ð°ÑÐµÐŒ ÐºÐŸÐŒÐ¿ÑÑÑÐµÑÐµ ÑÐ¶Ðµ ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœ Ghostscript, ÐžÐ»Ðž ÐµÑÐ»Ðž ÐÑ ÐœÐµ Ñ
+ÐŸÑÐžÑÐµ <br>\
+Ð²ÐºÐ»ÑÑÐ°ÑÑ PDF ÐžÐ»Ðž PostScript ÑÐ°Ð¹Ð»Ñ Ð² ÐºÐŸÐ»ÐµÐºÑÐžÐž Greenstone, ÑÐŸ Ð²Ñ ÐŒÐŸÐ¶ÐµÑÐµ ÐœÐµ <br>\
+ÑÑÑÐ°ÐœÐ°Ð²Ð»ÐžÐ²Ð°ÑÑ Ghostscript. \
+</html>
+
+Installing_Start_Menu_Shortcuts.displayText = ÐÐµÐœÑ "ÐÑÑÐº" 
+Installing_Start_Menu_Shortcuts.explanatoryText = Ð¡ÐŸÐ·ÐŽÐ°ÑÑ ÑÑÐ»ÑÐºÐž Greenstone@version.major@ Ð² ÐŒÐµÐœÑ "ÐÑÑÐº" 
+
+Installing_Tomcat.displayText = Apache Tomcat (@bundled.version.tomcat@)
+Installing_Tomcat.explanatoryText = \
+<html> \
+Greenstone3 ÑÑÐµÐ±ÑÐµÑ Ð²ÐµÐ±-ÑÐµÑÐ²ÐµÑ Apache Tomcat ÐŽÐ»Ñ ÐŸÐ±ÑÐ»ÑÐ¶ÐžÐ²Ð°ÐœÐžÑ Ð²Ð°ÑÐµÐ¹ ÑÐ»ÐµÐºÑÑÐŸÐœÐœÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Ð² <br> \ 
+ÐÐœÑÐµÑÐœÐµÑÐµ. ÐÑÐ»Ðž Ñ Ð²Ð°Ñ ÑÐ¶Ðµ ÐµÑÑÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐ° Tomcat, Ð²Ñ ÐŒÐŸÐ¶ÐµÑÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÐµÐµ <br> \ 
+ (Ð¿ÐŸÑÑÐµÐ±ÑÐµÑÑÑ ÐœÐµÐºÐŸÑÐŸÑÑÐµ ÐºÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÐž), ÑÐŸÐ³ÐŽÐ° Ð²Ñ ÐŒÐŸÐ¶ÐµÑÐµ Ð±ÐµÐ·Ð±ÐŸÐ»ÐµÐ·ÐœÐµÐœÐœÐŸ ÐŸÑÐºÐ°Ð·Ð°ÑÑÑÑ ÐŸÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž ÑÑÐŸÐ³ÐŸ ÐºÐŸÐŒÐ¿ÐŸÐœÐµÐœÑÐ°. \ 
+
+</html>
+
+Installing_Ant.displayText = Apache Ant (@bundled.version.ant@)
+Installing_Ant.explanatoryText = \
+<html> \
+Greenstone3 ÑÑÐµÐ±ÑÐµÑ Apache Ant ÐŽÐ»Ñ Ð·Ð°Ð¿ÑÑÐºÐ° Ðž ÐŸÑÑÐ°ÐœÐŸÐ²ÐºÐž Ð²ÐµÐ±-ÑÐµÑÐ²ÐµÑÐ° Tomcat, Ð¿ÐµÑÐµÐºÐŸÐŒÐ¿ÐžÐ»ÐžÑÐŸÐ²Ð°ÐœÐžÑ <br> \ 
+ÐžÑÑ
+ÐŸÐŽÐœÐŸÐ³ÐŸ ÐºÐŸÐŽÐ°, Ð° ÑÐ°ÐºÐ¶Ðµ ÐŽÐ»Ñ ÐœÐµÐºÐŸÑÐŸÑÑÑ
+ Ð·Ð°ÐŽÐ°Ñ ÑÐµÑ
+ÐœÐžÑÐµÑÐºÐŸÐ³ÐŸ ÐŸÐ±ÑÐ»ÑÐ¶ÐžÐ²Ð°ÐœÐžÑ. ÐÑÐ»Ðž Ñ Ð²Ð°Ñ ÑÐ¶Ðµ ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœ Ant, <br> \ 
+ÐÑ ÑÐŒÐµÐ»ÐŸ ÐŒÐŸÐ¶ÐµÑÐµ ÐŸÑÐºÐ°Ð·Ð°ÑÑÑÑ ÐŸÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž ÑÑÐŸÐ³ÐŸ ÐºÐŸÐŒÐ¿ÐŸÐœÐµÐœÑÐ°. \ 
+ </ HTML> 
+
+</html>
+
+### Admin password page
+page.admin-password.displayText = ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÐµ Ð¿Ð°ÑÐŸÐ»Ñ Ð°ÐŽÐŒÐžÐœÐžÑÑÑÐ°ÑÐŸÑÐ°
+admin.password.displayText = ÐÐ°ÑÐŸÐ»Ñ Ð°ÐŽÐŒÐžÐœÐžÑÑÑÐ°ÑÐŸÑÐ°
+admin-password-expl.displayText = ÐÐ»Ñ ÑÐŸÐ³ÐŸ ÑÑÐŸÐ±Ñ Ð¿ÐŸÐ»ÑÑÐžÑÑ ÐŽÐŸÑÑÑÐ¿ Ðº ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐœÑÐŒ ÑÐ°ÑÑÑÐŒ ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ° Greenstone ÐÐ°ÐŒ Ð¿ÐŸÐœÐ°ÐŽÐŸÐ±ÐžÑÑÑ Ð¿Ð°ÑÐŸÐ»Ñ. ÐÐ»Ñ Ð²Ð°Ð· Ð±ÑÐŽÐµÑ ÑÐŸÐ·ÐŽÐ°Ðœ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»Ñ Ñ ÐžÐŒÐµÐœÐµÐŒ "Admin". 
+ÐÐ»Ñ ÑÑÐŸÐ³ÐŸ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»Ñ ÐÐ°ÐŒ ÐœÑÐ¶ÐœÐŸ ÑÐºÐ°Ð·Ð°ÑÑ Ð¿Ð°ÑÐŸÐ»Ñ. Ð­ÑÐŸÑ Ð¿Ð°ÑÐŸÐ»Ñ ÐŽÐŸÐ»Ð¶ÐµÐœ Ð±ÑÑÑ ÐŸÑ 3 ÐŽÐŸ 20 ÑÐžÐŒÐ²ÐŸÐ»ÐŸÐ². 
+
+### Tomcat config page
+page.tomcat-config.displayText = ÐÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÑ Apache Tomcat
+tomcat-config-explanation1.displayText = Greenstone3 ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ Apache Tomcat ÐŽÐ»Ñ Ð¿ÑÐ±Ð»ÐžÐºÐ°ÑÐžÐž ÑÐžÑÑÐŸÐ²ÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº.
+tomcat-config-explanation2.displayText = ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ ÐœÐ°ÑÑÑÐŸÐžÑÑ Tomcat Ð·ÐŽÐµÑÑ, ÐžÐ»Ðž Ð¿ÑÑÐµÐŒ ÑÐµÐŽÐ°ÐºÑÐžÑÐŸÐ²Ð°ÐœÐžÑ ÑÐ°Ð¹Ð»Ð° Ð² build.properties Ð² Ð¿Ð°Ð¿ÐºÐµ Greenstone3 (${installDir}).
+tomcat.server.displayText = Ð¡ÐµÑÐ²ÐµÑ Tomcat
+tomcat-server.explanatoryText = ÐÐ²ÐµÐŽÐžÑÐµ ÐžÐŒÑ ÑÐµÑÐ²ÐµÑÐ°, ÐŒÐ°ÑÐžÐœÑ, Ð³ÐŽÐµ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° Ð±ÑÐŽÐµÑ ÐœÐ°Ñ
+ÐŸÐŽÐžÑÑÑ. ÐÑÐ»Ðž Ð²Ñ ÐœÐµ ÑÐ²ÐµÑÐµÐœÑ, Ð¿ÑÐžÐŒÐžÑÐµ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ (localhost).
+tomcat.port.explanatoryText = ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, Ð²ÑÐ±ÐµÑÐžÑÐµ Ð¿ÐŸÑÑ, ÐºÐŸÑÐŸÑÑÐ¹ ÑÐ»ÐµÐŽÑÐµÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ Tomcat. Ð­ÑÐŸ, ÐºÐ°Ðº Ð¿ÑÐ°Ð²ÐžÐ»ÐŸ, Ð±ÐµÐ·ÐŸÐ¿Ð°ÑÐœÐŸ Ð¿ÑÐžÐœÑÑÑ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ. ÐÑÐ»Ðž Ñ ÐÐ°Ñ ÑÐ¶Ðµ Ð·Ð°Ð¿ÑÑÐµÐœÐ° ÐŽÑÑÐ³Ð°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° ÐœÐ° Ð¿ÐŸÑÑÑ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ, Ð¿ÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, Ð²ÑÐ±ÐµÑÐžÑÐµ ÑÐ²ÐŸÐ±ÐŸÐŽÐœÑÐµ Ð¿ÐŸÑÑÑ. 
+tomcat.port.displayText = ÐÐŸÑÑ Tomcat
+tomcat.shutdown.port.displayText = ÐÐŸÑÑ Ð·Ð°ÐºÑÑÑÐžÑ Tomcat
+
+### Progress page
+page.progress.displayText = ÐÑÐŸÐ³ÑÐµÑÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž
+
+### Uninstaller Strings
+
+uninstaller.greenstone.uninstaller = ÐÐµÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÑ Greenstone
+uninstaller.cancel = ÐÑÐŒÐµÐœÐžÑÑ
+uninstaller.uninstall = Ð£ÐŽÐ°Ð»ÐžÑÑ
+uninstaller.finish = ÐÐ°ÐºÐŸÐœÑÐžÑÑ
+uninstaller.error = ÐÑÐžÐ±ÐºÐ°
+uninstaller.confirmation = ÐÐŸÐŽÑÐ²ÐµÑÐ¶ÐŽÐµÐœÐžÐµ
+uninstaller.continue = ÐÑÐŸÐŽÐŸÐ»Ð¶ÐžÑÑ
+uninstaller.complete = ÐÐ°Ð²ÐµÑÑÐžÑÑ
+uninstaller.skip = ÐÑÐŸÐ¿ÑÑÑÐžÑÑ
+uninstaller.skip.all = ÐÑÐŸÐ¿ÑÑÑÐžÑÑ Ð²ÑÐµ
+uninstaller.retry = ÐÐŸÐ²ÑÐŸÑÐžÑÑ
+uninstaller.readonly = Ð¢ÐŸÐ»ÑÐºÐŸ ÑÑÐµÐœÐžÐµ
+
+uninstaller.will.uninstall.from = Ð­ÑÐŸ ÑÐŽÐ°Ð»ÐžÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÑ Greenstone:
+uninstaller.uninstall.options = ÐÐ¿ÑÐžÐž ÐŽÐ»Ñ ÑÐŽÐ°Ð»ÐµÐœÐžÑ
+uninstaller.keep.collections = Ð¡ÐŸÑ
+ÑÐ°ÐœÐžÑÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž
+uninstaller.are.you.sure = ÐÑ ÐŽÐµÐ¹ÑÑÐ²ÐžÑÐµÐ»ÑÐœÐŸ Ñ
+ÐŸÑÐžÑÐµ ÑÐŽÐ°Ð»ÐžÑÑ Greenstone
+uninstaller.are.you.sure.collections = ÐÑ Ð²ÑÐ±ÑÐ°Ð»Ðž ÑÐŽÐ°Ð»ÐµÐœÐžÐµ Ð²Ð°ÑÐžÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹. \ nÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ° ÑÐºÐŸÐ¿ÐžÑÑÐ¹ÑÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž, ÐºÐŸÑÐŸÑÑÐµ ÐÑ Ñ
+ÐŸÑÐµÐ»Ðž Ð±Ñ ÑÐŸÑ
+ÑÐ°ÐœÐžÑÑ, Ð² ÐœÐ°ÐŽÐµÐ¶ÐœÐŸÐµ ÐŒÐµÑÑÐŸ Ð¿ÐµÑÐµÐŽ Ð¿ÑÐŸÐŽÐŸÐ»Ð¶ÐµÐœÐžÐµÐŒ
+uninstaller.failed.to.figure.cd = ÐÐµ ÑÐŽÐ°Ð»ÐŸÑÑ Ð²ÑÑÑÐœÐžÑÑ ÑÐµÐºÑÑÐžÐ¹ ÐºÐ°ÑÐ°Ð»ÐŸÐ³ 
+uninstaller.cancelled = Ð£ÐŽÐ°Ð»ÐµÐœÐžÐµ ÐŸÑÐŒÐµÐœÐµÐœÐŸ
+uninstaller.finished = Ð£ÐŽÐ°Ð»ÐµÐœÐžÐµ Ð·Ð°ÐºÐŸÐœÑÐµÐœÐŸ
+uninstaller.deleting = Ð€Ð°Ð¹Ð» {file} ÑÐŽÐ°Ð»ÑÐµÑÑÑ Ñ Ð¶ÐµÑÑÐºÐŸÐ³ÐŸ ÐŽÐžÑÐºÐ°
+
+uninstaller.info.skipping = ÐÐÐ€Ð: ÐÑÐŸÐ¿ÑÑÐºÐ°ÐµÐŒ ÑÐ°Ð¹Ð» {file}
+uninstaller.info.no.startmenu = ÐÐÐ€Ð: ÐÐµ ÐœÐ°ÑÐ»Ð°ÑÑ ÐŽÐžÑÐµÐºÑÐŸÑÐžÑ ÐŒÐµÐœÑ "ÐÑÑÐº". ÐÐŸÑÑÐŸÐŒÑ Ð³ÑÑÐ¿Ð¿Ð° Greenstone Ð² ÐŒÐµÐœÑ "ÐÑÑÐº" ÐœÐµ ÑÐŽÐ°Ð»ÐžÑÑÑ.
+uninstaller.warning.readonly = ÐÐÐÐÐÐÐÐ: {file} ÑÐŸÐ»ÑÐºÐŸ ÐŽÐ»Ñ ÑÑÐµÐœÐžÑ
+uninstaller.warning.couldnt.delete = ÐÐÐÐÐÐÐÐ: ÐÐµ ÑÐŽÐ°Ð»ÐŸÑÑ ÑÐŽÐ°Ð»ÐžÑÑ {file}. ÐÑÐŸÐ¿ÑÑÐºÐ°ÐµÑÑÑ.
+uninstaller.warning.nonexistent = ÐÐÐÐÐÐÐÐ: {file} ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐµÑ
+uninstaller.error.nonexistent = ÐÐšÐÐÐÐ: {file} ÑÐ°Ð¹Ð» ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐµÑ
+uninstaller.error.couldnt.find.install.props = ÐÐšÐÐÐÐ: ÐÐµ ÑÐŽÐ°Ð»ÐŸÑÑ ÐœÐ°Ð¹ÑÐž 'installation.properties' ÐžÐ»Ðž 'etc/installation.properties'. \nÐÐ»Ðž ÑÑÐ° ÐŽÐžÑÐµÐºÑÐŸÑÐžÑ ÐœÐµ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÑ Greenstone ÐžÐ»Ðž ÑÑÑÐ°ÐœÐŸÐ²ÐºÐ° Ð¿ÐŸÐ²ÑÐµÐ¶ÐŽÐµÐœÐ°. \nÐÐµÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÑ ÐœÐµ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐ°
+uninstaller.warning.couldnt.create.flagfile = ÐÐÐÐÐÐÐÐ: ÐÐµ ÑÐŽÐ°Ð»ÐŸÑÑ ÑÐŸÐ·ÐŽÐ°ÑÑ ÑÐ°Ð¹Ð» ÑÐ»Ð°Ð³. ÐÐ°ÐŒ Ð¿ÑÐžÐŽÐµÑÑÑ ÑÐŽÐ°Ð»ÐžÑÑ JRE Ðž ÐŸÑÑÐ°Ð»ÑÐœÑÐµ ÑÐ°Ð¹Ð»Ñ ÐŽÐµÐžÐœÑÑÐ°Ð»Ð»ÑÑÐŸÑÐ° Ð²ÑÑÑÐœÑÑ
+
+### Ant-Installer Core strings
+
+dirNotExistCreate = ÐÐ°Ð¿ÐºÐ° ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐµÑ, ÑÐŸÐ·ÐŽÐ°ÑÑ ÐµÐ³ÐŸ?
+dirNotExist = ÐÐ°Ð¿ÐºÐ° ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐµÑ
+fileNotExist = Ð€Ð°Ð¹Ð» ÐœÐµ ÑÑÑÐµÑÑÐ²ÑÐµÑ
+dirNotCreated = ÐÐµ ÑÐŽÐ°ÐµÑÑÑ ÑÐŸÐ·ÐŽÐ°ÑÑ ÑÐ°Ð¹Ð» Ð¿Ð°Ð¿ÐºÑ
+canNotCreateFile = ÐÐµ ÑÐŽÐ°ÐµÑÑÑ ÑÐŸÐ·ÐŽÐ°ÑÑ ÑÐ°Ð¹Ð»
+appRootInvalid = Ð­ÑÐ° Ð¿Ð°Ð¿ÐºÐ° ÐœÐµ ÐŸÑÐœÐ°Ð²ÐœÐ°Ñ Ð¿Ð°Ð¿ÐºÐ° Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ
+selectFile = ÐÑÐ±ÐŸÑ ÑÐ°Ð¹Ð»Ð°
+selectFolder = ÐÑÐ±ÐŸÑ Ð¿Ð°Ð¿ÐºÐž
+browseDotDotDot = ÐÐ±Ð·ÐŸÑ...
+notValidSelection = ÐÑÐ±ÐŸÑ ÐœÐµÐŽÐµÐ¹ÑÑÐ²ÐžÑÐµÐ»ÐµÐœ
+showDetails = ÐÐŸÐºÐ°Ð·Ð°ÑÑ Ð¿ÐŸÐŽÑÐŸÐ±ÐœÐŸÑÑÐž 
+
+#Default loading
+promptLoadDefaults = ÐÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÐž ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž ÐœÐ°Ð¹ÐŽÐµÐœÑ. ÐÐ°Ð³ÑÑÐ·ÐžÑÑ ÑÑÑÐµÑÑÐ²ÑÑÑÐžÐž ÐºÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÐž?
+promptMissingDefaultPassword = ÐÐ°ÑÐŸÐ»Ñ ÐœÐµ ÐœÐ°Ð¹ÐŽÐµÐœ. ÐÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸ, ÐŸÐœ Ð±ÑÐ» ÐŸÐ¿ÑÑÐµÐœ Ð¿ÐŸ ÑÐŸÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑÐŒ Ð±ÐµÐ·ÐŸÐ¿Ð°ÑÐœÐŸÑÑÐž, Ð±ÑÐŽÐµÑ ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœ Ð¿ÐŸ ÑÐŒÐŸÐ»ÑÐ°ÐœÐžÑ.
+
+click = ÐÐ°Ð¶Ð°ÑÑ
+toContinue = ÐŽÐ¿Ñ Ð¿ÑÐŸÐŽÐŸÐ»Ð¶ÐµÐœÐžÑ
+failed = ÐÑÐžÐ±ÐºÐ°
+exit = ÐÑÑ
+ÐŸÐŽ
+complete = ÐÐ°Ð²ÐµÑÑÐµÐœÐŸ
+finished = ÐÐ°ÐºÐŸÐœÑÐžÑÑ
+extracting = ÐÐ·Ð²Ð»ÐµÑÐµÐœÐžÐµ...
+installFinished = Ð£ÑÑÐ°ÐœÐŸÐ²ÐºÐ° Ð·Ð°ÐºÐŸÐœÑÐµÐœÐ°
+install-cancelled = Ð£ÑÑÐ°ÐœÐŸÐ²ÐºÐ° ÐŸÑÐŒÐµÐœÐµÐœÐ°
+running = Ð² Ð¿ÑÐŸÐ³ÑÐµÑÑÐµ
+
+backButton = ÐÐ°Ð·Ð°ÐŽ
+cancelButton = ÐÑÐŒÐµÐœÐžÑÑ
+nextButton = ÐÐ°Ð»ÐµÐµ
+finishButtonText = Ð£ÑÑÐ°ÐœÐŸÐ²ÐžÑÑ
+
+output = ÐÑÐ²ÐŸÐŽ
+errors = ÐÑÐžÐ±ÐºÐž
+notCorrectFormat = ÐÐµ Ð¿ÑÐ°Ð²ÐžÐ»ÑÐœÑÐ¹ ÑÐŸÑÐŒÐ°Ñ Ð¿ÐŸÐ»Ñ
+notCorrectPasswordFormat = ÐÐµ Ð¿ÑÐ°Ð²ÐžÐ»ÑÐœÑÐ¹ ÑÐŸÑÐŒÐ°Ñ Ð¿Ð°ÑÐŸÐ»Ñ
+passwordsDoNotMatch = ÐÐ°ÑÐŸÐ»Ðž ÐœÐµ ÑÐŸÐ²Ð¿Ð°ÐŽÐ°ÑÑ
+installationFailed = Ð£ÑÑÐ°ÐœÐŸÐ²ÐºÐ° ÐœÐµ ÑÐŽÐ°Ð»Ð°ÑÑ
+propertiesVersionMismatch = ÐÐµÐºÐŸÑÐŸÑÑÐµ ÐŸÐ¿ÑÐžÐž Ð¿ÑÐŸÐ¿Ð°Ð»Ðž ÐžÐ· Ð¿ÑÐµÐŽÑÐŽÑÑÐµÐ¹ Ð²ÐµÑÑÐžÐž Ðž ÐŽÐŸÐ»Ð¶ÐœÑ Ð±ÑÑÑ Ð²ÐœÐµÑÐµÐœÑ Ð²ÑÑÑÐœÑÑ, Ð¿ÑÐŸÐŽÐŸÐ»Ð¶ÐžÑÑ?
+
+Finished = ÐÐŸÑÐŸÐ²ÐŸ
+Failed = ÐÐµ ÑÐŽÐ°Ð»ÐŸÑÑ, Ð¿ÑÐŸÑÐŒÐŸÑÑÐµÑÑ ÑÐŸÐŸÐ±ÑÐµÐœÐžÑ ÐŸÐ± ÐŸÑÐžÐ±ÐºÐ°Ñ
+
+ant.failure = ÐÐ°Ð¿ÑÑÐº Ant ÐœÐµ ÑÐŽÐ°Ð»ÑÑ - Ð¿ÑÐŸÑÐŒÐŸÑÑÐµÑÑ ÑÐŸÐŸÐ±ÑÐµÐœÐžÑ ÐŸÐ± ÐŸÑÐžÐ±ÐºÐ°Ñ
+
+
+license.next.text = ÐÑÐžÐœÑÑÑ
+license.cancel.text = ÐÑÐºÐ»ÐŸÐœÐžÑÑ
Index: /branches/rk-oran/shared/language-strings/LanguagePack_zh.properties
===================================================================
--- /branches/rk-oran/shared/language-strings/LanguagePack_zh.properties	(revision 18906)
+++ /branches/rk-oran/shared/language-strings/LanguagePack_zh.properties	(revision 18906)
@@ -0,0 +1,264 @@
+### Language page ###
+page.language-selector.displayText = è¯­èš
+language-selector-explanation.displayText = è¯·éæ©è¯­èš
+#ïŒæ³šïŒæ¬å®è£
+åšå°æªè¢«ç¿»è¯æææè¯­ç§ïŒ
+
+
+### Intro Page ###
+page.intro.displayText = Greenstone @version@ å®è£
+åš
+welcome-message.displayText = Greenstone@version.major@æ¯çšäºæé åå
+±äº«æ°å­åŸä¹ŠéŠçèœ¯ä»¶ã\n\nå»ºè®®åšè¿è¡æ¬å®è£
+åšä»¥ååžèœœææå·²å®è£
+çGreenstoneçæ¬ã
+
+## License page ###
+page.license.displayText = èœ¯ä»¶è®žå¯
+
+
+### Destination page ###
+page.destination.displayText = å®è£
+ç®åœ
+installDir.displayText = éæ©å®è£
+ç®åœ
+
+
+### InstallShield install detected page ###
+page.dontBudge.displayText = æ£æµå°æ©æå®è£
+çæ¬
+is-install-detected.displayText = åšå®è£
+ç®åœäž­æ£æµå°äžäžªçæ¬äœäº2.81çGreenstone2ïŒæäžäžªçæ¬äœäº3.04çGreenstone3å®è£
+ãåšæéå®çç®åœäž­æ æ³è¿è¡å®è£
+ã\n\nè¯·éåºæ¬å®è£
+åšïŒåžèœœå·²å­åšçGreenstoneå®è£
+ïŒç¶åéæ°è¿è¡æ¬å®è£
+åšïŒæšèïŒãæè
+ïŒéåå°å®è£
+çäžäžæ­¥å¹¶éæ©å
+¶å®çå®è£
+ç®åœã
+
+
+### Components Page ###
+# (Note: in the html here, we must use '<br>' for breaklines.
+# '<br/>' and other variations are not recognised.)
+page.selector.displayText = å®è£
+éšä»¶
+choose-components.displayText = è¯·éæ©æèŠå®è£
+çéšä»¶
+
+Looking_For_Previous_Installation.displayText = æ¥æŸæ©æå®è£
+
+Looking_For_Previous_Installation.explanatoryText = åŠæåç°æ©æå®è£
+ïŒèœœå
+¥å·²å®è£
+çæ¬çå±æ§ã
+
+Installing_Core_System.displayText = æ žå¿ç³»ç»
+Installing_Core_System.explanatoryText = \
+<html> \
+è¯¥éšä»¶æ¯Greenstone@version.major@çæ žå¿ç³»ç»ãä¹å¿
+å®è£
+éšä»¶ã\
+</html>
+
+Installing_Source_Code_Core.displayText = æ žå¿æºä»£ç 
+Installing_Source_Code_Core.explanatoryText = \
+<html> \
+Greenstone@version.major@ä»£ç ååžçæ žå¿ç³»ç»ã<br>\n
+å
+æ¬äžæºä»£ç æç»çæ¯ææä»¶ã\
+</html>
+
+Installing_Source_Code.displayText = æºä»£ç 
+Installing_Source_Code.explanatoryText = \
+<html> \
+è¥éèªå·±çŒè¯Greenstone@version.major@ïŒ<br>\n
+å¯å¯¹äœ èªå·±çGreenstone@version.major@è¿è¡ä¿®æ¹ïŒ<br>\näœ ä¹å¯ä»
+ä»
+æ¢ç©¶Greenstoneæ¯åŠäœå·¥äœçã\
+</html>
+
+Installing_ImageMagick.displayText = æ¯æJPEG2000çImageMagick (@bundled.version.imagemagick@)
+Installing_ImageMagick.explanatoryText = \
+<html> \
+Greenstoneäœ¿çšImageMagickå€çåŸåã<br>\n
+ææç»çImageMagickå¯æ¯æJPEG2000åŸåã<br>\
+åŠæäœ çè®¡ç®æºå·²å®è£
+ImageMagickïŒ<br>\
+æè
+äœ äžæ³åšäœ çGreenstoneæ¶éäž­å å
+¥åŸåæä»¶ïŒ<br>\
+å¯éæ©äžå®è£
+ImageMagickã \
+</html>
+
+Installing_Ghostscript.displayText = GhostScript (@bundled.version.ghostscript@)
+Installing_Ghostscript.explanatoryText = \
+<html> \
+Greenstoneäœ¿çšGhostScriptå€çPDFåPostScriptæä»¶ã<br> \
+åŠæäœ çè®¡ç®æºå·²å®è£
+GhostscriptïŒ<br>\
+æè
+äœ äžæ³åšäœ çGreenstoneæ¶éäž­å å
+¥PDFåPostScriptæä»¶ïŒ<br>\
+å¯éæ©äžå®è£
+Ghostscript. \
+</html>
+
+Installing_Start_Menu_Shortcuts.displayText = åŒå§èåå¿«æ·é®
+Installing_Start_Menu_Shortcuts.explanatoryText = åå»ºGreenstone@version.major@åŒå§èåå¿«æ·é®
+
+Installing_Tomcat.displayText = Apache Tomcat (@bundled.version.tomcat@)
+Installing_Tomcat.explanatoryText = \
+<html> \
+Greenstone3èŠæ±å®è£
+Apache Tomcatçœç»äŒºæåšæ¥äŒºæäœ ççœç»æ°å­åŸä¹ŠéŠã<br> \
+åŠæäœ çè®¡ç®æºå·²å®è£
+äºTomcatïŒäœ å¯äœ¿çšèªå·±çå®è£
+ïŒéäœé
+çœ®ïŒïŒ<br> \
+å³ïŒæ é¡»å®è£
+æ¬éšä»¶ä¹å¯æ­£åžžè¿è¡ã\
+</html>
+
+Installing_Ant.displayText = Apache Ant (@bundled.version.ant@)
+Installing_Ant.explanatoryText = \
+<html> \
+Greenstone3èŠæ±å®è£
+Apache Antæ¥å¯åšåç»æ­¢Tomcatçœç»äŒºæåšïŒ<br> \
+éçŒè¯æºä»£ç ïŒä»¥åè¿è¡äžäºç»Žæ€å·¥äœãåŠæäœ çè®¡ç®æºå·²å®è£
+äºAntïŒ<br> \
+å¯éæ©äžå®è£
+æ¬éšä»¶ã\
+</html>
+
+### Admin password page
+page.admin-password.displayText = è¯·è®Ÿå®ç®¡çåå¯ç 
+admin.password.displayText = ç®¡çåå¯ç 
+admin-password-expl.displayText = è®¿é®Greenstoneçé¢çäžäºç¹å®éšåéèŠèŸå
+¥å¯ç ãäœ¿çšææäŸçå¯ç ïŒäžäžªçšæ·åäžº'admin'ççšæ·äŒè¢«èªåšåå»ºãå¯ç é¿åºŠå¿
+é¡»æ¯3è³8äœã
+
+### Tomcat config page
+page.tomcat-config.displayText = Apache Tomcaté
+çœ®
+tomcat-config-explanation1.displayText = Greenstone3äœ¿çšApache Tomcatå
+±äº«äœ çæ°å­åŸä¹ŠéŠã
+tomcat-config-explanation2.displayText = Tomcatå¯åšè¿éé
+çœ®ïŒä¹å¯éè¿ä¿®æ¹äž»ç®åœäž­çæä»¶build.properties(${installDir})ã
+tomcat.server.displayText = TomcatäŒºæåš
+tomcat-server.explanatoryText = è¯·èŸå
+¥äŒºæäœ çæ°å­åŸä¹ŠéŠçäž»æºçåå­ãåŠæäžç¥éïŒæ¥åé»è®€åŒ(localhost)ã
+tomcat.port.explanatoryText = è¯·èŸå
+¥Tomcatäœ¿çšçç«¯å£ãå®å
+šçåæ³æ¯æ¥åé»è®€åŒãåŠæé»è®€ç«¯å£å·²ç»è¿è¡äºå
+¶å®çæå¡ïŒè¯·éæ©å
+¶å®ç«¯å£ã
+tomcat.port.displayText = Tomcatç«¯å£
+tomcat.shutdown.port.displayText = Tomcatç»æ­¢ç«¯å£
+
+### Progress page
+page.progress.displayText = å®è£
+è¿çš
+
+### Uninstaller Strings
+
+uninstaller.greenstone.uninstaller = Greenstoneåžèœœåš
+uninstaller.cancel = åæ¶
+uninstaller.uninstall = åžèœœ
+uninstaller.finish = å®æ
+uninstaller.error = éè¯¯
+uninstaller.confirmation = ç¡®è®€
+uninstaller.continue = ç»§ç»­
+uninstaller.complete = å®æŽ
+uninstaller.skip = è·³è¿
+uninstaller.skip.all = è·³è¿ææ
+uninstaller.retry = åè¯
+uninstaller.readonly = åªè¯»
+
+uninstaller.will.uninstall.from = å°åžèœœGreenstoneå®è£
+
+uninstaller.uninstall.options = åžèœœéé¡¹ = 
+uninstaller.keep.collections = ä¿çæ¶é
+uninstaller.are.you.sure = äœ ç¡®è®€èŠåžèœœGreenstoneåïŒ
+uninstaller.are.you.sure.collections = äœ å·²éæ©å é€æ¶éã\nç»§ç»­äžäžæ­¥åè¯·å€ä»œèŠä¿ççæ¶é
+uninstaller.failed.to.figure.cd = æ æ³èŸšè®€åœåç®åœ
+uninstaller.cancelled = åžèœœåæ¶
+uninstaller.finished = åžèœœå®æ
+uninstaller.deleting = ä»ç®åœäž­å é€æä»¶{file}
+
+uninstaller.info.skipping = ä¿¡æ¯ = è·³è¿æä»¶{file}
+uninstaller.info.no.startmenu = ä¿¡æ¯ =  æŸäžå°StartMenuè·¯åŸãåžèœœè¿çšäžäŒå é€StartMenuç»
+uninstaller.warning.readonly = è­Šå =  æä»¶{file}åªè¯»
+uninstaller.warning.couldnt.delete = è­Šå =  æ æ³å é€å é€æä»¶{file}ãè·³è¿
+uninstaller.warning.nonexistent = è­Šå: {file}äžå­åš
+uninstaller.error.nonexistent = éè¯¯: {file}äžå­åš
+uninstaller.error.couldnt.find.install.props = éè¯¯:æŸäžå°æä»¶'installation.properties'æ'etc/installation.properties'ã\nèŠä¹è¿äžæ¯ææçGreenstoneå®è£
+ïŒæå®è£
+å·²è¢«ç Žåãåžèœœæ æ³ç»§ç»­ã
+uninstaller.warning.couldnt.create.flagfile = è­Šå:æ æ³åå»ºæ è¯æä»¶ãå¿
+é¡»æåšå é€jreååžèœœæä»¶
+
+
+### Ant-Installer Core strings
+
+dirNotExistCreate = ç®åœäžå­åšïŒèŠåå»ºåïŒ
+dirNotExist = ç®åœäžå­åš
+fileNotExist = æä»¶äžå­åš
+dirNotCreated = æ æ³åå»ºç®åœ
+canNotCreateFile = æ æ³åå»ºæä»¶
+appRootInvalid = ç®åœäŒŒä¹äžæ¯åºçšçšåºçæ ¹ç®åœ
+selectFile = éæ©æä»¶
+selectFolder = éæ©ç®åœ
+browseDotDotDot = æµè§...
+notValidSelection = æ æéæ©
+showDetails = æŸç€ºç»è
+
+#Default loading
+promptLoadDefaults = åç°å®è£
+é
+çœ®ãèœœå
+¥å·²æé
+çœ®ïŒ
+promptMissingDefaultPassword = æªæŸå°å¯ç ãä¹è®žæ¯åºäºå®å
+šåå è¢«ç¥å»ãè®Ÿäžºé»è®€åŒã
+
+click = ç¹å»
+toContinue = ç»§ç»­
+failed = å€±èŽ¥
+exit = éåº
+complete = å®æŽ
+finished = å®æ
+extracting = æåäž­...
+installFinished = å®è£
+å®æ
+install-cancelled = å®è£
+åæ¶
+running = è¿è¡äž­
+
+backButton = è¿å
+cancelButton = åæ¶
+nextButton = äžäžæ­¥
+finishButtonText = å®è£
+
+
+output = èŸåº
+errors = éè¯¯
+notCorrectFormat = åæš¡åŒéè¯¯
+notCorrectPasswordFormat = å¯ç æš¡åŒéè¯¯
+passwordsDoNotMatch = å¯ç éè¯¯
+installationFailed = å®è£
+å€±èŽ¥
+propertiesVersionMismatch = æ©æå®è£
+çæ¬çäžäºéé¡¹çŒºå€±ïŒå¿
+é¡»æåšèŸå
+¥ïŒç»§ç»­ïŒ
+
+Finished = å®æ
+Failed = å€±èŽ¥ïŒæŸç€ºéè¯¯ä¿¡æ¯
+ant.failure = Antè¿è¡å€±èŽ¥ïŒè¯Šç»ä¿¡æ¯è¯·æ¥çéè¯¯æ¥å¿
+
+license.next.text = æ¥å
+license.cancel.text = æç»
Index: /branches/rk-oran/shared/lib/dates.properties
===================================================================
--- /branches/rk-oran/shared/lib/dates.properties	(revision 18906)
+++ /branches/rk-oran/shared/lib/dates.properties	(revision 18906)
@@ -0,0 +1,165 @@
+#names of months in different languages
+
+default.Dates.Jan:January
+default.Dates.Feb:February
+default.Dates.Mar:March
+default.Dates.Apr:April
+default.Dates.May:May
+default.Dates.Jun:June
+default.Dates.Jul:July
+default.Dates.Aug:August
+default.Dates.Sep:September
+default.Dates.Oct:October
+default.Dates.Nov:November
+default.Dates.Dec:December
+
+ar.Dates.Jan:ÙÙØ§ÙØ±
+ar.Dates.Feb:ÙØšØ±Ø§ÙØ±
+ar.Dates.Mar:Ù
+Ø§Ø±Ø³
+ar.Dates.Apr:Ø§ØšØ±ÙÙ
+ar.Dates.May:Ù
+Ø§ÙÙ
+ar.Dates.Jun:ÙÙÙÙÙ
+ar.Dates.Jul:ÙÙÙÙÙ
+ar.Dates.Aug:Ø£ØºØ³Ø·Ø³
+ar.Dates.Sep:Ø³ØšØªÙ
+ØšØ±
+ar.Dates.Oct:Ø§ÙØªÙØšØ±
+ar.Dates.Nov:ÙÙÙÙ
+ØšØ±
+ar.Dates.Dec:Ø¯ÙØ³Ù
+ØšØ±
+
+ca.Dates.Jan:Gener
+ca.Dates.Feb:Febrer
+ca.Dates.Mar:MarÃ§
+ca.Dates.Apr:Abril
+ca.Dates.May:Maig
+ca.Dates.Jun:Juny
+ca.Dates.Jul:Juliol
+ca.Dates.Aug:Agost
+ca.Dates.Sep:Setembre
+ca.Dates.Oct:Octubre
+ca.Dates.Nov:Novembre
+ca.Dates.Dec:Desembre
+
+el.Dates.Jan:ÎÎ±ÎœÎ¿Ï
+Î¬ÏÎ¹Î¿Ï
+el.Dates.Feb:ÎŠÎµÎ²ÏÎ¿Ï
+Î¬ÏÎ¹Î¿Ï
+el.Dates.Mar:ÎÎ¬ÏÏÎ¹Î¿Ï
+el.Dates.Apr:ÎÏÏÎ¯Î»Î¹Î¿Ï
+el.Dates.May:ÎÎ¬ÏÎ¿Ï
+el.Dates.Jun:ÎÎ¿ÏÎœÎ¹Î¿Ï
+el.Dates.Jul:ÎÎ¿ÏÎ»Î¹Î¿Ï
+el.Dates.Aug:ÎÏÎ³Î¿Ï
+ÏÏÎ¿Ï
+el.Dates.Sep:Î£ÎµÏÏÎ­ÎŒÎ²ÏÎ·Ï
+el.Dates.Oct:Î¿ÎºÏÏÎ²ÏÎ·Ï
+el.Dates.Nov:ÎÎ¿Î­ÎŒÎ²ÏÎ·Ï
+el.Dates.Dec:ÎÎµÎºÎ­ÎŒÎ²ÏÎ·Ï
+
+es.Dates.Jan:Enero
+es.Dates.Feb:Febrero
+es.Dates.Mar:Marzo
+es.Dates.Apr:Abril
+es.Dates.May:Mayo
+es.Dates.Jun:Junio
+es.Dates.Jul:Julio
+es.Dates.Aug:Agosto
+es.Dates.Sep:Septiembre
+es.Dates.Oct:Octubre
+es.Dates.Nov:Noviembre
+es.Dates.Dec:Diciembre
+
+fr.Dates.Jan:Janvier
+fr.Dates.Feb:FÃ©vrier
+fr.Dates.Mar:Mars
+fr.Dates.Apr:Avril
+fr.Dates.May:Mai
+fr.Dates.Jun:Juin
+fr.Dates.Jul:Juillet
+fr.Dates.Aug:AoÃ»t
+fr.Dates.Sep:Septembre
+fr.Dates.Oct:Octobre
+fr.Dates.Nov:Novembre
+fr.Dates.Dec:DÃ©cembre
+
+lv.Dates.Jan:JanvÄris
+lv.Dates.Feb:FerbruÄris
+lv.Dates.Mar:Marts
+lv.Dates.Apr:AprÄ«lis
+lv.Dates.May:Maijs
+lv.Dates.Jun:JÅ«nijs
+lv.Dates.Jul:JÅ«lijs
+lv.Dates.Aug:Augusts
+lv.Dates.Sep:Septembris
+lv.Dates.Oct:Oktobris
+lv.Dates.Nov:Novembris
+lv.Dates.Dec:Decembris
+
+mr.Dates.Jan:à€à€Ÿà€šà¥à€µà€Ÿà€°à¥
+mr.Dates.Feb:à€«à¥à€¬à¥à€°à¥à€µà€Ÿà€°à¥
+mr.Dates.Mar:à€®à€Ÿà€°à¥à€
+mr.Dates.Apr:à€à€ªà¥à€°à€¿à€²
+mr.Dates.May:à€®à¥
+mr.Dates.Jun:à€à¥à€š
+mr.Dates.Jul:à€à¥à€²à¥
+mr.Dates.Aug:à€à€à€žà¥à€
+mr.Dates.Sep:à€žà€ªà¥à€à¥à€à€¬à€°
+mr.Dates.Oct:à€à€à¥à€à¥à€¬à€°
+mr.Dates.Nov:à€šà¥à€µà¥à€¹à¥à€à€¬à€°
+mr.Dates.Dec:à€¡à€¿à€žà¥à€à€¬à€°
+
+ro.Dates.Jan:Ianuarie
+ro.Dates.Feb:Februarie
+ro.Dates.Mar:Martie
+ro.Dates.Apr:Aprilie
+ro.Dates.May:Mai
+ro.Dates.Jun:Iunie
+ro.Dates.Jul:Iulie
+ro.Dates.Aug:August
+ro.Dates.Sep:Septembrie
+ro.Dates.Oct:Octombrie
+ro.Dates.Nov:Noiembrie
+ro.Dates.Dec:Decembrie
+
+ru.Dates.Jan:Ð¯ÐœÐ²Ð°ÑÑ
+ru.Dates.Feb:Ð€ÐµÐ²ÑÐ°Ð»Ñ
+ru.Dates.Mar:ÐÐ°ÑÑ
+ru.Dates.Apr:ÐÐ¿ÑÐµÐ»Ñ
+ru.Dates.May:ÐÐ°Ð¹
+ru.Dates.Jun:ÐÑÐœÑ
+ru.Dates.Jul:ÐÑÐ»Ñ
+ru.Dates.Aug:ÐÐ²Ð³ÑÑÑ
+ru.Dates.Sep:Ð¡ÐµÐœÑÑÐ±ÑÑ
+ru.Dates.Oct:ÐÐºÑÑÐ±ÑÑ
+ru.Dates.Nov:ÐÐŸÑÐ±ÑÑ
+ru.Dates.Dec:ÐÐµÐºÐ°Ð±ÑÑ
+
+vi.Dates.Jan:ThÃ¡ng GiÃªng
+vi.Dates.Feb:ThÃ¡ng Hai
+vi.Dates.Mar:ThÃ¡ng Ba
+vi.Dates.Apr:ThÃ¡ng TÆ°
+vi.Dates.May:ThÃ¡ng NÄm
+vi.Dates.Jun:ThÃ¡ng SÃ¡u
+vi.Dates.Jul:ThÃ¡ng Báº£y
+vi.Dates.Aug:ThÃ¡ng TÃ¡m
+vi.Dates.Sep:ThÃ¡ng ChÃ­n
+vi.Dates.Oct:ThÃ¡ng MÆ°á»i
+vi.Dates.Nov:ThÃ¡ng MÆ°á»i má»t
+vi.Dates.Dec:ThÃ¡ng MÆ°á»i hai
+
+zh.Dates.Jan:1æ
+zh.Dates.Feb:2æ
+zh.Dates.Mar:3æ
+zh.Dates.Apr:4æ
+zh.Dates.May:5æ
+zh.Dates.Jun:6æ
+zh.Dates.Jul:7æ
+zh.Dates.Aug:8æ
+zh.Dates.Sep:9æ
+zh.Dates.Oct:10æ
+zh.Dates.Nov:11æ
+zh.Dates.Dec:12æ
Index: /branches/rk-oran/shared/linux/rk
===================================================================
--- /branches/rk-oran/shared/linux/rk	(revision 18906)
+++ /branches/rk-oran/shared/linux/rk	(revision 18906)
@@ -0,0 +1,119 @@
+#!/bin/bash
+function show_title() {
+	echo    "O---------------------------------------------O"
+	echo    "|                                             |"
+	echo -n "|   $rk_name ";
+	for a in `seq 0 $(( 40 - ${#rk_name} ))`; do echo -n " "; done; echo "|"
+	echo -n "|   $rk_fullname ";
+	for a in `seq 0 $(( 40 - ${#rk_fullname} ))`; do echo -n " "; done; echo "|"
+	echo    "|                                             |"
+	echo    "O---------------------------------------------O"
+}
+
+#pre checks
+if [ "$rk_name" == "" ]; then
+	echo "rk_name not set";
+	exit;
+elif [ "$RK_HOME" == "" ]; then
+	echo "RK_HOME not set";
+	exit
+fi
+
+function show_help {
+
+	echo "$rk_name - $rk_fullname"
+	echo "Helps you to create releases from the Repository"
+	echo
+	echo "usage: $rk_name [-sim] [-from <target>] [other-args]"
+	echo "	-sim"
+	echo "		simulation only, don't actually do anything"
+	echo
+	echo "	-help"
+	echo "		show this help screen"
+	echo
+	echo "	-from <target>"
+	echo "		start execution from the target with the given target address"
+	echo
+	echo "	-to <target>"
+	echo "		stop execution just before the target with the given target address"
+	echo
+	echo "	-descend <target>"
+	echo "		execute only the target with the given address, including subtargets"
+	echo
+	echo "	-cp"
+	echo "		show the classpath being used by $rk_name"
+	echo
+	echo "	-cmd"
+	echo "		show the ant command being used by $rk_name"
+
+}
+
+#cd up a level or two if needed
+if [ ! -e "$rk_name-build.properties" ]; then
+	if [ -e "../$rk_name-build.properties" ]; then
+		RKOLDPWD=`pwd`
+		cd ..
+	elif [ -e "../../$rk_name-build.properties" ]; then
+		RKOLDPWD=`pwd`
+		cd ../..
+	fi
+fi
+
+#work out the classpath
+CLASSPATH=$JAVA_HOME/lib/tools.jar
+for file in $RK_HOME/lib/*.jar; do
+	CLASSPATH=$CLASSPATH:$file
+done
+for file in $RK_HOME/packages/ant/lib/*.jar; do
+	CLASSPATH=$CLASSPATH:$file
+done
+for file in $RK_HOME/packages/ant-installer/lib/*.jar; do
+	CLASSPATH=$CLASSPATH:$file
+done
+CLASSPATH=$CLASSPATH:$RK_HOME/packages/ant-installer/classes
+
+export CLASSPATH
+
+#set ANT_HOME
+export ANT_HOME=$RK_HOME/packages/ant
+export ANT_OPTS=-Xmx800M
+
+#create the command
+toexec="$ANT_HOME/bin/ant -addressing -lib `pwd`/installer/classes -f $RK_HOME/ant-scripts/build.xml -Dbasedir=`pwd` -D$rk_name.home=$RK_HOME"
+
+#pass on the arguments
+while [ "$1" != "" ]; do
+
+	if [ "$1" == "-help" ]; then
+		show_help
+		exit
+	elif [ "$1" == "-cp" ]; then
+		echo $CLASSPATH
+		exit
+	elif [ "$1" == "-cmd" ]; then
+		show_cmd=true
+	elif [ "$1" == "-sim" ]; then
+		toexec="$toexec $1"
+		sim_mode=on
+	else
+		toexec="$toexec $1"
+	fi
+	shift
+
+done
+
+#execute (or show the command to be executed)
+if [ "$show_cmd" == "true" ]; then
+	echo $toexec
+elif [ "$sim_mode" == "on" ]; then
+	show_title
+	$toexec
+else
+	show_title | tee ${rk_name}.out
+	$toexec 2>&1 | tee -a ${rk_name}.out
+fi
+
+if [ "$RKOLDPWD" != "" ]; then
+	cd $RKOLDPWD
+fi
+
Index: /branches/rk-oran/shared/linux/wrapper.cpp
===================================================================
--- /branches/rk-oran/shared/linux/wrapper.cpp	(revision 18906)
+++ /branches/rk-oran/shared/linux/wrapper.cpp	(revision 18906)
@@ -0,0 +1,158 @@
+#include <iostream>
+#include <fstream>
+#include <iomanip>
+
+using namespace std;
+
+#include "wrapper.h"
+#include "libsearch4j.h"
+
+bool extract_bundled_file( const char[], int, char*, bool );
+
+int main(int argc, char** argv) {
+
+	string tempdir = "@installer.name@.tmp"; //temporary directory where we will store extracted files
+	string jarfile = tempdir + "/@installer.name@.jar"; //where we will store the jar file
+	string javafile = tempdir + "/@java.installer@"; //where we will store the java tar file
+	bool succeeded = false;
+	bool textMode = false;
+
+	//parse arguments
+	for ( int i=0; i<argc; i++ ) {
+		if ( strcmp( argv[i], "text" ) == 0 ) {
+			textMode = true;
+		}
+	}
+
+
+	//create the temp folder
+	cout << "Creating temp directory..." << endl;
+	succeeded = ( 0 == system( ("mkdir " + tempdir).c_str() ) );
+	if ( !succeeded ) {
+		cout << "Failed to write to create the temp directory '" << tempdir << "'" << endl;
+		cout << "Check that it does not already exist and try again" << endl;
+		cout << "Exiting" << endl;
+		return 1;
+	}
+
+	//extract files
+	cout << "Extracting installer jar..." << endl;
+	succeeded = extract_bundled_file( @installer.name@jar, sizeof(@installer.name@jar), (char*)jarfile.c_str(), false);
+
+	#ifdef java_is_bundled
+	cout << "Preparing Greenstone installer..." << endl;
+	succeeded = extract_bundled_file( java, sizeof(java), (char*)javafile.c_str(), true ) && succeeded;
+	#endif
+		
+	if ( !succeeded ) {
+		cout << "Failed to extract one or more resources" << endl;
+		cout << "This installer may not have sufficient file permissions to write it to disk" << endl;
+		cout << "Or, the files may be corrupt or missing from this executable" << endl;
+		cout << "Exiting" << endl;
+		return 1;
+	}
+
+	//change to the temp directory
+	chdir( tempdir.c_str() );
+
+	#ifdef java_is_bundled
+	succeeded = (system( "/bin/sh -c ./@java.installer@ > /dev/null" ) == 0);
+	succeeded = succeeded && ( system( "tar -xf jre.tar" ) == 0 );
+	if ( !succeeded ) {
+		cout << "Failed to extract the bundled java archive to the temp directory" << endl;
+		cout << "You need the tar program on your PATH" << endl;
+		cout << "Exiting" << endl;
+		return 1;
+	}
+	#endif
+
+	//check if an appropriate java is found
+	Jvm minimum; minimum.setVersionFromString( "@java.min.version@" );
+	string phint = "./@java.extracted@";
+	string hint = "";
+	Jvm foundJvm;
+	bool jvmFound = find( foundJvm, true, minimum, false, false, phint, hint, false );
+
+	//if the jvm was not found, report not found
+	if ( !jvmFound ) {
+
+		//did not find a good java
+		cout << "Greenstone requires java @java.min.version@ or greater." << endl;
+		
+		//tell them if java is absent or just too old
+		Jvm tmpJvm;
+		if ( find( tmpJvm, false, minimum, false, false, phint, hint, false ) ) {
+			cout << "You have java, but it is too old." << endl;
+		} else {
+			cout << "Could not find java on your system." << endl;
+		}
+		
+		cout << "Install java (@java.min.version@ or greater) and set JAVA_HOME or JRE_HOME, and try again" << endl;
+		#ifndef java_is_bundled
+		cout << "Or, download a greentsone3 installer with bundled java and use that instead of this one" << endl;
+		#endif
+
+	//if we have found it, launch the installer
+	} else {
+
+		cout << "Launching Installer ..." << endl;
+		int launch_exit_code = 0;
+		launch_exit_code = system( (foundJvm.getExecutable() + " -Xmx85M -jar @installer.name@.jar" + (textMode?" text":"") ).c_str() );
+
+		//report how it went
+		if ( launch_exit_code == 0 ) {
+			cout << "Setup complete" << endl;
+		} else {
+			cout << "The installer exited with an error" << endl;
+			cout << "Greenstone may not be correctly installed" << endl;
+		}
+
+	}
+
+	//change back to the original directory
+	chdir("..");
+
+	//delete the temp files
+	cout << "Deleting the temp directory" << endl;
+	system( ("rm -rf " + tempdir).c_str() );
+
+	return 0;
+
+}
+
+bool extract_bundled_file( const char data[], int size, char* filename, bool make_executable) {
+
+	if ( size == 0 ) return false;
+
+	//delete the file if it exists
+	remove( filename );
+
+	//open the file
+	fstream binary_file( filename, ios::out|ios::binary );
+	if ( !binary_file.good() ) {
+		binary_file.close();
+		return false;
+	}
+
+	//write the file
+	binary_file.write( data, size );
+	if ( !binary_file.good() ) {
+		binary_file.close();
+		return false;
+	}
+
+	//close the file
+	binary_file.close();
+	if ( !binary_file.good() ) {
+		binary_file.close();
+		return false;
+	}
+
+	if ( make_executable ) {
+		string command = "chmod a+x " + string(filename);
+		system( command.c_str() );
+	}
+
+	return true;
+
+}
Index: /branches/rk-oran/shared/mac/Wrapper.app/Contents/Info.plist
===================================================================
--- /branches/rk-oran/shared/mac/Wrapper.app/Contents/Info.plist	(revision 18906)
+++ /branches/rk-oran/shared/mac/Wrapper.app/Contents/Info.plist	(revision 18906)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+
+	<key>CFBundleName</key>
+	<string>Greenstone@version@</string>
+
+	<key>CFBundleVersion</key>
+	<string>@version@</string>
+
+	<key>CFBundleAllowMixedLocalizations</key>
+	<string>true</string>
+
+	<key>CFBundleExecutable</key>
+	<string>JavaApplicationStub</string>
+
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+
+	<key>CFBundleGetInfoString</key>
+	<string>@version@</string>
+
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+
+	<key>CFBundleIconFile</key>
+	<string>icon.icns</string>
+
+	<key>Java</key>
+	<dict>
+
+		<key>MainClass</key>
+		<string>org.tp23.antinstaller.selfextract.NonExtractor</string>
+
+		<key>JVMVersion</key>
+		<string>1.4+</string>
+
+		<key>ClassPath</key>
+		<string>$JAVAROOT/@jar@</string>
+
+		<key>WorkingDirectory</key>
+		<string>/tmp</string>
+
+	        <key>VMOptions</key>
+        	<string>-Xmx85M</string>
+
+		<key>Properties</key> 
+		<dict>
+			<key>apple.laf.useScreenMenuBar</key>
+			<string>true</string>
+		</dict>
+
+	</dict>
+
+</dict>
+</plist>
Index: /branches/rk-oran/shared/mac/Wrapper.app/Contents/PkgInfo
===================================================================
--- /branches/rk-oran/shared/mac/Wrapper.app/Contents/PkgInfo	(revision 18906)
+++ /branches/rk-oran/shared/mac/Wrapper.app/Contents/PkgInfo	(revision 18906)
@@ -0,0 +1,1 @@
+APPLnull
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/.libs/libgdbm.lai
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/.libs/libgdbm.lai	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/.libs/libgdbm.lai	(revision 18906)
@@ -0,0 +1,32 @@
+# libgdbm.la - a libtool library file
+# Generated by ltmain.sh - GNU libtool 1.4.2 (1.922.2.53 2001/09/11 03:18:52)
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libgdbm.a'
+
+# Libraries that this one depends upon.
+dependency_libs=''
+
+# Version information for libgdbm.
+current=3
+age=0
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/.libs/libgdbm_compat.lai
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/.libs/libgdbm_compat.lai	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/.libs/libgdbm_compat.lai	(revision 18906)
@@ -0,0 +1,32 @@
+# libgdbm_compat.la - a libtool library file
+# Generated by ltmain.sh - GNU libtool 1.4.2 (1.922.2.53 2001/09/11 03:18:52)
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libgdbm_compat.a'
+
+# Libraries that this one depends upon.
+dependency_libs=''
+
+# Version information for libgdbm_compat.
+current=3
+age=0
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/COPYING
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/COPYING	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/COPYING	(revision 18906)
@@ -0,0 +1,346 @@
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/ChangeLog
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/ChangeLog	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/ChangeLog	(revision 18906)
@@ -0,0 +1,574 @@
+
+Tue Oct 15 15:00:11 PDT 2002	Jason Downs (downsj@downsj.com)
+
+	* samp1.cc: Remove.
+
+	* gdbm.3, gdbm.texinfo: 1.8.3.
+
+	* version.c: Version 1.8.3., modernize string (release date is in
+	  American format).
+
+	* gdbmreorg.c: Remove small memory leak.
+
+	* Makefile.in: Use more subs from configure, remove mention of SunOS.
+	  Add support for spec'ing an install time prefix via INSTALL_ROOT.
+
+	* INSTALL: Remove extra text from top.
+
+	* config.guess, config.sub: Update to latest versions.
+
+	* autoconf.h.in: Regenerate.
+
+	* configure.in: Modernize.
+
+	* systems.h: HAVE_ST_BLKSIZE -> HAVE_STRUCT_STAT_ST_BLKSIZE.
+
+Fri Sep 27 16:12:44 PDT 2002	Jason Downs (downsj@downsj.com)
+
+	* Makefile.in: Remove `info' target from all, since we don't even
+	  bother installing the one we built anyway.
+
+	* Fix a few checks against dbf.read_write.
+
+Wed Sep 25 15:19:00 PDT 2002	Jason Downs (downsj@downsj.com)
+
+	* Makefile.in: Remove the dbm and ndbm routines from the main
+	  library, moving them to gdbm_compat.  install-compat now
+	  installs the compat headers and the library.  Increment the
+	  MAJOR number of the shared library due to the removal of
+	  the compat functions.
+
+	* gdbm.3, gdbm.texinfo, version.c: 1.8.1; note gdbm_compat.
+
+	* proto.h: Change _gdbm_fatal() to void.
+
+	* update.c(_gdbm_fatal): Change function declaration to void.
+
+	* update.c(_gdbm_fatal): Change default exit status to 1.
+
+	* gdbmopen.c(gdbm_open): Remove setting of flags since we always check
+	  it against the mask.
+
+	* testdbm.c, testndbm.c: Added stdlib.h inclusions.
+
+	* falloc.c(push_avail_block): Fixed extremely rare case where the
+	  header avail table could fill up, causing us to over flow the
+	  table, corrupting memory, and eventually crashing.  Also forced
+	  merging of blocks within the scope of this routine (possibly
+	  should force them whenever the header avail table is being used).
+
+	* gdbmerrno.c: Fix error count, there are more than 18.
+
+	* gdbmerrno.h: Fix typo; GDBM_OPT_ILLEGAL is 20.
+
+	* gdbmopen.c: Fix typo; s/GDBM_OPENMASK/GDBM_WRITER/.
+
+Tue May 18 19:25:25 PDT 1999	Jason Downs	(downsj@downsj.com)
+
+	* gdbm.3, gdbm.texinfo: Update for 1.8.
+
+	* Makefile.in, configure.in: Switch to using libtool, but without
+	  automake.
+
+	* aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh: New
+	  files (libtool 1.2).
+
+Wed May 12 01:26:15 PDT 1999	Jason Downs	(downsj@downsj.com)
+
+	* gdbmopen.c, gdbmclose.c, gdbmreorg.c: check file_locking before
+	  calling locking macros; add support for setting GDBM_NOLOCK in
+	  gdbm_open().
+
+	* gdbmdefs.h: add file_locking flag to gdbm_file_info.
+
+	* gdbmconst.h, gdbm.proto: add GDBM_NOLOCK flag.
+
+	* gdbmfdesc.c: new file, adds external gdbm_fdesc() routine.
+
+	* gdbm.proto, gdbm.proto2: clean up, use __P, and compress.
+
+	* gdbmerrno.h: kill the enum, add defines for errors.
+
+	* gdbmsetopt.c, testgdbm.c: support GDBM_SYNC/GDBM_SYNCMODE.
+
+	* gdbmopen.c: gdbm_open() now DEFAULTS to ``fast mode''; use
+	  GDBM_SYNC to turn it off.  GDBM_FAST is obsolete and ignored.
+
+	* gdbmconst.h: add GDBM_SYNC and GDBM_SYNCMODE.
+
+	* proto.h, various source files: switch _ARGS to __P.
+
+	* systems.h, various source files: kill word_t, just use int
+	  everywhere.
+
+	* configure.in, autoconf.h.in: remove alloca() goo and modernize.
+
+	* many source files: replace all instances of alloca() with real
+	  malloc()s and free()s.
+
+	* update.c: don't deref NULL in _gdbm_fatal(), and don't use stdio.
+
+[  The following are entries revived from a dead experimental branch. ]
+
+Tue Nov  1 00:35:11 1994  Jason Downs  (downsj@downsj.com)
+
+	* gdbmopen.c (gdbm_open): actually initialize central_free and
+	  coalesce_blocks.
+
+	* gdbmdefs.h: added coalesce_blocks. these should've been bitmapped.
+	  oh well.
+
+	* falloc.c (various routines): made block merging an option.
+
+	* gdbmsetopt.c (gdbm_setopt): added GDBM_COALESCEBLKS option.
+
+	* gdbmconst.h: added GDBM_COALESCEBLKS option.
+
+Fri Jun  3 09:45:19 1994  Jason Downs  (downsj@downsj.com)
+        
+	* falloc.c (_gdbm_free): if central_free is set, all blocks are
+	  put into the header.
+        
+	* gdbmsetopt.c (gdbm_setopt): add GDBM_CENTFREE case.
+        
+	* gdbmdefs.h, gdbmconst.h, gdbm.proto: add central free option.
+
+Fri Jun  3 05:57:36 1994  Jason Downs  (downsj@downsj.com)
+
+	* falloc.c (pop_avail_block): merge block with header, instead
+	  of replace, since header may not be empty any longer.
+
+	* falloc.c (_gdbm_alloc): pop a block off the stack when the
+	  current header is half empty, instead of zero.
+
+Fri Jun  3 05:11:33 1994  Jason Downs  (downsj@downsj.com)
+
+	* gdbmstore.c (gdbm_store): don't alloc new disk if we're replacing
+	  and the records are the same size. suggested by phil a long time
+	  ago.
+
+Fri Jun  3 03:47:46 1994  Jason Downs  (downsj@downsj.com)
+        
+	* falloc.c (_gdbm_put_av_elem): allow adjacent blocks to be
+	  merged. inspired by the enhancement by Tim Howes.
+
+Thu Jun  2 22:15:19 1994  Jason Downs  (downsj@downsj.com)
+
+	* Makefile.in: add installation mode, owner, and group.
+
+Thu Jun  2 04:24:58 1994  Jason Downs  (downsj@downsj.com)
+
+	* Makefile.in: run mkinstalldirs before installing files.
+
+	* mkinstalldirs: new file.
+
+[ End of revived entries. ]
+
+Thu May 19 15:50:04 1994  Jason Downs  (downsj@downsj.com)
+	
+	* NEWS, README: update to 1.7.3.
+	
+	* gdbm.texinfo: update to 1.7.3, slight fixes.
+
+	* gdbm.3: update to 1.7.3, slight reformat.
+
+Thu May 19 14:45:51 1994  Jason Downs  (downsj@downsj.com)
+
+	* gdbmconst.h: removed the header magic numbers from this
+	  branch.
+
+	* version.c: added an include of autoconf.h, updated version
+
+	* gdbm.proto: added a define for GDBM_FASTMODE.
+
+Sun May 15 02:39:48 1994  Jason Downs  (downsj@downsj.com)
+
+	* gdbm.3, gdbm.texinfo: updates for 1.7.2
+	
+	* README, NEWS, version.c: update for 1.7.2
+	
+	* Makefile.in: removed files, changed (drastically) how the
+	  package compiles and installs.
+
+	* bytewise.c, bytewise.h: removed from this branch.
+
+Wed Mar 23 00:44:43 1994  Jason Downs  (downsj@downsj.com)
+
+	* extern.h: removed bogus (old) function declarations.
+
+Mon Mar 14 01:37:09 1994  Jason Downs  (downsj@downsj.com)
+
+	* Makefile.in: added new files.
+
+	* bytewise.c, bytewise.h: new portable byte order conversion
+	  package; supports 64bit longs/16bit ints.
+
+Sun Mar 13 22:56:10 1994  Jason Downs  (downsj@downsj.com)
+
+	* gdbmsetopt.c, gdbmconst.h: added GDBM_FASTMODE option.
+
+	* falloc.c: taught _gdbm_alloc() about the header avail table.
+	  hopefully, this will fix the bloating problem. i dunno, though,
+	  as i've never had that problem, myself.
+
+Sun Dec 26 05:17:04 1993  Jason Downs  (downsj@downsj.com)
+
+	* version.c: made gdbm_version const.
+
+	* gdbmerrno.c: made gdbm_strerror() and it's array const.
+
+	* various files: general clean up, reformating of code.
+
+	* systems.h: put <memory.h> inside of a conditional.
+
+	* configure.in, autoconf.h.in: added check for <memory.h>.
+
+	* systems.h: added a default define of SEEK_SET.
+
+	* bucket.c, gdbmopen.c, gdbmseq.c, gdbmdelete.c, gdbmdefs.h:
+	  cleaned up some uses of word_t.
+
+Tue Nov 16 03:11:56 1993  Jason Downs  (downsj@downsj.com)
+
+	* gdbm.3, gdbm.texinfo: updated versions to 1.3 for release
+
+	* version.c, README, NEWS: updated versions to 1.7.1 for release
+
+Sun Nov 14 17:21:03 1993  Jason Downs  (downsj@downsj.com)
+
+	* Makefile.in: added $(srcdir) to a few file references.
+
+Sat Nov 13 13:56:37 1993  Jason Downs  (downsj@downsj.com)
+
+	* gdbm.3, gdbm.texinfo: added new gdbm_firstkey()/gdbm_nextkey()
+	  documentation.
+
+	* gdbmopen.c: added SGI alloca patch.
+
+	* Makefile.in: changed installation prefix semantics.
+
+Sat Nov 13 01:52:31 1993  Jason Downs  (downsj@downsj.com)
+
+	* various source: redid the AIX alloca declaration. any new files
+	  that call alloca will have to start with the same header.
+
+	* all source, configure.in, Makefile.in: switched over to using
+	  autoconf.h, rather than packing all of the autoconf defs into
+	  the DEFS line.
+
+	* autoconf.h.in: new file.
+
+	* Makefile.in: changed rule for tndbm.o, hopefully making it more
+	  portable.
+
+	* alloca.c: added inclusion of stdlib.h
+
+Fri Nov 12 13:11:03 1993  Jason Downs  (downsj@downsj.com)
+
+	* Makefile.in, configure.in: fixed getop related bugs.
+
+	* systems.h: moved sys/types.h include to top.
+
+Wed Nov  3 17:18:59 1993  Jason Downs  (downsj@downsj.com)
+
+	* version.c: changed version to 1.7, for release.
+
+	* gdbmdefs.h: Moved all system includes to systems.h.
+
+Sun Oct 31 02:50:12 1993  Jason Downs  (downsj@downsj.com)
+
+	* version.c: changed version number to 1.7alpha.
+
+	* gdbm.texinfo: updated to reflect new routines and changes.
+	
+	* getopt.c, getopt.h: Added the GNU getopt.c to the dist, for
+	  compilation of testgdbm and conv2gdbm on machines without getopt().
+	
+	* various source files: changed all appropiate occurances of 'long'
+	  to type 'off_t'. Added off_t check to configure.in.
+
+	* gdbm.3: updated to reflect new routines and changes.
+
+Sat Oct 30 05:20:45 1993  Jason Downs  (downsj@downsj.com)
+
+        * testgdbm.c: Added support for bucket cache and block sizes,
+	  adding -c, -b and -g flags. Must use -g to specify the file
+          name, now.
+
+	* bucket.c, gdbmopen.c, gdbmclose.c, gdbmreorg.c, update.c,
+	  gdbmconst.h, gdbmdefs.h: Implemented dynamic, delayed
+	  initialization, bucket cache. New routine: _gdbm_init_cache().
+
+	* proto.h, gdbmerrno.c, gdbmerrno.h: Added gdbm_setopt() errors
+	  and prototypes.
+
+	* gdbmsetopt.c: New file, implements the gdbm_setopt() routine.
+
+	* testgdbm.c, testndbm.c, testdbm.c, conv2gdbm.c: cleaned up
+	  compiler warnings.
+
+	* update.c: repaired declarations and added prototypes for
+	  static routines, repaired declaration of _gdbm_fatal().
+
+	* falloc.c: repaired declarations and added prototypes for
+	  static routines.
+
+	* gdbmstore.c: commented out unsed variables in gdbm_store().
+
+	* proto.h: added prototypes for _gdbm_read_entry(),
+	  _gdbm_find_key(), and gdbm_sync().
+
+	* bucket.c, proto.h: changed _gdbm_get_bucket() and
+	  _gdbm_write_bucket() over to type void.
+
+Sat Oct 30 00:56:24 1993  Jason Downs  (downsj@downsj.com)
+
+	* gdbmerrno.c, gdbmexists.c, close.c, dbmrdonly.c: New files,
+	  adding the routines gdbm_strerror(), gdbm_exists(), and for
+	  better compatibility with the old dbm/ndbm libraries, the
+	  dbmclose() and dbm_rdonly() routines.
+
+	* various headers: Added prototypes for the new routines, and
+	  rearranged how gdbm.h is generated.
+
+Fri Oct 29 07:02:41 1993  Jason Downs  (downsj@downsj.com)
+
+	* README: split into README, INSTALL, and NEWS.  INSTALL
+	  includes more tips on compiling.  NEWS contains the 'short form'
+	  ChangeLog.
+	
+	* Makefile.in, configure.in: Redid parts of the autoconf
+	  stuff, and repaired many bugs.
+
+	* systems.h: Repaired the alloca declarations, among other
+	  things.
+
+	* various source files: changed all relevant usage of type
+	  'long' to type 'word_t', which will always be 32bits wide.
+	  'word_t' is defined in systems.h.
+
+Fri Jul 30 13:27:24 1993  Phil Nelson  (phil@cs.wwu.edu)
+
+	* findkey.c: Added a check of elem_loc == -1 in determining if
+	  the data cache held the item being looked for.
+
+Tue Jul 20 13:08:47 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* gdbm.texinfo: Fixed some errors.
+
+	* Makefile.in: Fixed some errors.
+
+ 	* version.c: Set version to 1.6 for release.
+
+Mon Jul 19 15:02:40 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* COPYING: Replaced Version 1 with Version 2.  Also updated
+	  all file notices to refer to version 2.
+
+	* gdbm.texinfo: Updated the documentation.
+
+	* README: Updated to current version.
+
+	* Makefile: updated clean and install.
+
+Wed Jul 14 13:37:44 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* Makfile.in: Added samp1.cc to the list of distributed files.
+
+Sat Jun  5 21:35:59 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* gdbm.proto, Makefile.in: Added #ifndef _GDBM_H_ protection
+	  for the final gdbm.h file.  Also added prototypes and C++
+	  support.
+
+	* gdbmseq.c: Added gdbm_errno initialization to gdbm_nextkey.
+
+	* gdbmerrno.h and others: Moved the extern definition of
+	  gdbm_erron to gdbmerrno.h from the other files.
+
+Mon May 17 12:32:02 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* gdbm.proto: Added GDBM_FAST to the read_write flags.
+
+Sun May 16 12:50:01 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* configure.in, Makefile.in: Added autoconf configuration
+	  to gdbm.
+
+Tue Mar 30 00:08:48 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* global.c: Set gdbm_errno to GDBM_NO_ERROR to force
+	  it into the data segment.
+
+Sun Mar 28 22:51:40 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* gdbmfetch.c: Set return_val.dsize to 0 as a default return
+	  value.  (I was told that was more compatible with dbm/ndbm.)
+
+	* gdbmopen.c: Changed a "sizeof(int)" to "sizeof(long)".
+
+	* testgdbm.c: Changed "char opt" to "int opt" to make sure
+	  opt can be -1.
+
+	* hash.c: Added "unsigned" to declaration of value for
+	  better overflow operation.
+
+	* gdbmreorg.c: Added a free for data.dptr in the main loop.
+	  Also changed the malloc for new_name to an alloca.
+	  Removed all frees on new_name.
+
+Sat Mar 27 23:25:14 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* gdbmconst.h, gdbmdefs.h, gdbmopen.c, gdbmreorg.c,
+	  testgdbm.c, update.c, gdbm.h: Added code to allow for a
+	  GDBM_FAST mode in which fsync is not called during
+	  database update mode. Added a new flag "-f" to 
+	  testgdbm to make use of the new fast mode.
+
+	* gdbmsync.c: Added this function to allow a programmer
+	  to use the GDBM_FAST mode but still be able to sync
+	  a database.
+
+	* gdbmopen.c, gdbmdelete.c, gdbmfetch.c, gdbmseq.c, gdbmstore.c,
+	  gdbmreorg.c: Added initialization of gdbm_errno to GDBM_NO_ERROR.
+
+Mon Mar 22 23:03:36 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* gdbmclose.c: (gdbmclose) Added a fsync before close to make
+	  sure the file is written to disk before continuing.
+
+Sun Mar 21 21:33:31 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* proto.h: Added this as a new file.  It adds ANSI prototypes
+	  for ANSI compilers.
+
+	* gdbmdefs.h: Added an include of proto.h.
+
+	* Makefile: Added proper references to proto.h
+
+	* gdbmopen.c: Changed (int *) casts to (long *) and added
+	  an initialization to dbf->header.
+
+	* gdbmreorg.c: Added an "end update" on the new database and
+	  correctly set up the bucket cache.
+
+	* update.c: (_gdbm_end_update) Added type void to header.
+
+Wed Mar 17 19:14:27 1993  Phil Nelson  (phil at cs.wwu.edu)
+
+	* Changed copyright on all files to include 1993.  Also deleted
+	  all references to my phone number.
+
+Thu Feb 28 17:05:09 1991  Phil Nelson  (phil at strawberry.cs.wwu.edu)
+
+	* Added 1991 to copyright lines on all files.
+
+	* gdbmfetch.c: Fixed a bug introduced by previous changes.
+
+	* version.c:  Updated version to 1.5.
+
+Fri Feb  8 12:27:13 1991  Phil Nelson  (phil at strawberry.cs.wwu.edu)
+
+	* Change author's e-mail address in all comments.
+
+	* gdbmopen.c, systems.h: Changed opening sequence so that a
+	  database will not be truncated in NEWDB mode until the
+	  write has locked the file.
+
+	* testgdbm.c: Fixed a bug that caused a segmentation fault on
+	  one computer.  Also added the flags "-r" for opening the
+	  database as a READER and "-n" for opening the database as
+	  a NEWDB writer.  The default mode remains the WRCREAT mode.
+
+	* Various source files, changed the data types of various
+	  variables from int to long.  This should not make any difference
+	  to systems where sizeof(int) = sizeof(long).  It should make
+	  it easier to move to other systems.
+
+	* gdbmstore.c: Added a check for NULL key or content dptr.  Due to
+	  NULLs being used as error indications, data cannot be NULL also.
+
+	* gdbmfetch.c, gdbmseq.c, fetch.c: Added checks for zero sized
+	  key and content so malloc will not try to allocate zero bytes.
+
+        * gdbmconst.h: Added this file so that all constants are in one
+	  central place.  A few constants can be changed without changing
+	  the header sizes.
+
+Tue Aug 14 13:08:43 1990  Phil Nelson  (phil at unicorn.wwu.edu)
+
+	* Version 1.4 released.  (version.c: Updated to correct version.)
+
+	* Makefile: Added $(LIBS) to link for conv2gdbm.
+
+	* README: Updated to version 1.4 and added a 1.0-1.4 change
+	  statement.
+
+Wed Aug  8 16:57:29 1990  Phil Nelson  (phil at unicorn.wwu.edu)
+
+	* gdbmopen.c: Restructured some code to initialize dbf
+	  more completely.
+
+	* dbm.h: Added a null define to satisfy some versions that
+	  require a dbmclose() call.
+
+	* findkey.c: (_gdbm_findkey) Added a check for the NULL
+	  pointer in ...ca_data.dptr.
+
+	* gdbmdelete.c: Added code to more completely remove the
+	  cache entry for a deleted item.
+
+	* gdbmreorg.c: Added code to finish the transfer of information
+	  from the new_dbf to the orginal dbf.
+
+Fri May 30 08:29:16 1990  Phil Nelson  (phil at unicorn.wwu.edu)
+
+	* gdbmstore.c: Changed a strncpy to bcopy.
+
+Tue May 15 09:55:21 1990  Phil Nelson  (phil at unicorn.wwu.edu)
+
+	* Version 1.3 released.
+
+	* systems.h: Changed the defines for alloca to use the
+	  name builtin_alloca to depend on BUILTIN_ALLOCA instead
+	  of __GNUC__.  Added a definition of BUILTIN_ALLOCA for
+	  GNUC and for sun sparc.
+
+Fri May 11 12:15:56 1990  Phil Nelson  (phil at unicorn.wwu.edu)
+
+	* systems.h: Removed the include for <sys/types> and now
+	  systems.h requires <sys/types> included before it.
+
+	* Makefile: Corrected the makefile to include a file that
+	  was missing before.  Also, switched order of conv2gdbm
+	  and alldbm in the all option.
+
+	* findkey.c (_gdbm_read_entry): Reordered some statements
+	  to make the code more readable.
+
+	* update.c (_gdbm_fatal): Changed fatal message from "dbm fatal:"
+	  to "gdbm fatal:".
+
+Mon Apr 30 10:18:24 1990  Phil Nelson  (phil at unicorn.wwu.edu)
+
+	* Version 1.2 released.
+
+Fri Apr 27 09:49:59 1990  Phil Nelson  (phil at unicorn.wwu.edu)
+
+	* Makefile: Added the dist option.  Similar to the 
+	  addition from hack@ai.mit.edu, but correct.
+
+	* falloc.c (push_avail_block):  Change the avail count
+	  to reflect the correct number of entries.
+
+	* dbminit.c (dbminit): Changed the stat call to stat the
+	  ".dir" file as is done in dbmopen.c (dbm_open).
+
+Tue Apr 10 12:18:40 1990  Phil Nelson  (phil at unicorn.wwu.edu)
+
+	* Version 1.1. released.
+
+	* gdbmopen.c (gdbm_open): Clear out bucket cache.
+
+
+
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/INSTALL
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/INSTALL	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/INSTALL	(revision 18906)
@@ -0,0 +1,118 @@
+This is a generic INSTALL file for utilities distributions.
+If this package does not come with, e.g., installable documentation or
+data files, please ignore the references to them below.
+
+To compile this package:
+
+1.  Configure the package for your system.  In the directory that this
+file is in, type `./configure'.  If you're using `csh' on an old
+version of System V, you might need to type `sh configure' instead to
+prevent `csh' from trying to execute `configure' itself.
+
+The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation, and
+creates the Makefile(s) (one in each subdirectory of the source
+directory).  In some packages it creates a C header file containing
+system-dependent definitions.  It also creates a file `config.status'
+that you can run in the future to recreate the current configuration.
+
+Running `configure' takes a minute or two.  While it is running, it
+prints some messages that tell what it is doing.  If you don't want to
+see the messages, run `configure' with its standard output redirected
+to `/dev/null'; for example, `./configure >/dev/null'.
+
+To compile the package in a different directory from the one
+containing the source code, you must use a version of `make' that
+supports the VPATH variable, such as GNU `make'.  `cd' to the directory
+where you want the object files and executables to go and run
+`configure'.  `configure' automatically checks for the source code in
+the directory that `configure' is in and in `..'.  If for some reason
+`configure' is not in the source code directory that you are
+configuring, then it will report that it can't find the source code.
+In that case, run `configure' with the option `--srcdir=DIR', where
+DIR is the directory that contains the source code.
+
+By default, `make install' will install the package's files in
+/usr/local/bin, /usr/local/lib, /usr/local/man, etc.  You can specify an
+installation prefix other than /usr/local by giving `configure' the option
+`--prefix=PATH'.  Alternately, you can do so by consistently giving a value
+for the `prefix' variable when you run `make', e.g.,
+	make prefix=/usr/gnu
+	make prefix=/usr/gnu install
+
+You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If
+you give `configure' the option `--exec-prefix=PATH' or set the
+`make' variable `exec_prefix' to PATH, the package will use PATH as
+the prefix for installing programs and libraries.  Data files and
+documentation will still use the regular prefix.  Normally, all files
+are installed using the regular prefix.
+
+Another `configure' option is useful mainly in `Makefile' rules for
+updating `config.status' and `Makefile'.  The `--no-create' option
+figures out the configuration for your system and records it in
+`config.status', without actually configuring the package (creating
+`Makefile's and perhaps a configuration header file).  Later, you can
+run `./config.status' to actually configure the package.  You can also
+give `config.status' the `--recheck' option, which makes it re-run
+`configure' with the same arguments you used before.  This option is
+useful if you change `configure'.
+
+Some packages pay attention to `--with-PACKAGE' options to `configure',
+where PACKAGE is something like `gnu-libc' or `x' (for the X Window System).
+The README should mention any --with- options that the package recognizes.
+
+`configure' ignores any other arguments that you give it.
+
+If your system requires unusual options for compilation or linking
+that `configure' doesn't know about, you can give `configure' initial
+values for some variables by setting them in the environment.  In
+Bourne-compatible shells, you can do that on the command line like
+this:
+	CC='gcc -traditional' DEFS=-D_POSIX_SOURCE ./configure
+
+The `make' variables that you might want to override with environment
+variables when running `configure' are:
+
+(For these variables, any value given in the environment overrides the
+value that `configure' would choose:)
+CC		C compiler program.
+		Default is `cc', or `gcc' if `gcc' is in your PATH.
+INSTALL		Program to use to install files.
+		Default is `install' if you have it, `cp' otherwise.
+
+(For these variables, any value given in the environment is added to
+the value that `configure' chooses:)
+DEFS		Configuration options, in the form `-Dfoo -Dbar ...'
+		Do not use this variable in packages that create a
+		configuration header file.
+LIBS		Libraries to link with, in the form `-lfoo -lbar ...'
+
+If you need to do unusual things to compile the package, we encourage
+you to figure out how `configure' could check whether to do them, and
+mail diffs or instructions to the address given in the README so we
+can include them in the next release.
+
+2.  Type `make' to compile the package.  If you want, you can override
+the `make' variables CFLAGS and LDFLAGS like this:
+
+	make CFLAGS=-O2 LDFLAGS=-s
+
+3.  If the package comes with self-tests and you want to run them,
+type `make check'.  If you're not sure whether there are any, try it;
+if `make' responds with something like
+	make: *** No way to make target `check'.  Stop.
+then the package does not come with self-tests.
+
+4.  Type `make install' to install programs, data files, and
+documentation.
+
+5.  You can remove the program binaries and object files from the
+source directory by typing `make clean'.  To also remove the
+Makefile(s), the header file containing system-dependent definitions
+(if the package uses one), and `config.status' (all the files that
+`configure' created), type `make distclean'.
+
+The file `configure.in' is used as a template to create `configure' by
+a program called `autoconf'.  You will only need it if you want to
+regenerate `configure' using a newer version of `autoconf'.
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/Makefile
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/Makefile	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/Makefile	(revision 18906)
@@ -0,0 +1,288 @@
+#### Start of system configuration section. ####
+
+srcdir = .
+top_builddir = .
+
+
+CC = gcc
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+
+# GDBM 1.8.3 builds shared libraries version 3.0
+SHLIB_VER = 3 0 0
+
+INSTALL = /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+
+# File ownership and group
+BINOWN = bin
+BINGRP = bin
+
+MAKEINFO = makeinfo
+TEXI2DVI = texi2dvi
+
+DEFS =
+
+# Where the system [n]dbm routines are...
+LIBS = -ldbm  -lc
+
+CFLAGS = -g -O2
+LDFLAGS = 
+
+# Common prefix for installation directories
+prefix = /usr/local
+exec_prefix = ${prefix}
+binprefix = $(exec_prefix)
+manprefix = $(prefix)
+
+# Directory in which to put libgdbm.a.
+libdir = ${exec_prefix}/lib
+# The include directory for gdbm.h and dbm.h.
+includedir = ${prefix}/include
+# Info and man directories.
+infodir = ${prefix}/info
+man3dir = ${prefix}/man/man3
+manext = 3
+
+#### End of system configuration section. ####
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o
+
+.c.o:
+	$(CC) -c $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) $(CFLAGS) $<
+
+.c.lo:
+	$(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) $(CFLAGS) $<
+
+SHELL = /bin/sh
+
+PROGS = libgdbm.la testgdbm testdbm testndbm tndbm tdbm conv2gdbm
+
+DBM_CF = dbminit.c delete.c fetch.c store.c seq.c close.c
+
+NDBM_CF = dbmopen.c dbmdelete.c dbmfetch.c dbmstore.c dbmseq.c \
+	dbmclose.c dbmdirfno.c dbmpagfno.c dbmrdonly.c
+
+GDBM_CF = gdbmopen.c gdbmdelete.c gdbmfetch.c  gdbmstore.c gdbmclose.c \
+	gdbmreorg.c gdbmseq.c gdbmsync.c gdbmerrno.c gdbmexists.c gdbmfdesc.c \
+	gdbmsetopt.c bucket.c falloc.c findkey.c global.c hash.c update.c \
+	version.c
+
+TEST_CF = testdbm.c testndbm.c testgdbm.c
+
+
+DBM_OF = dbminit.o delete.o fetch.o store.o seq.o close.o
+
+NDBM_OF = dbmopen.o dbmdelete.o dbmfetch.o dbmstore.o dbmseq.o \
+	dbmclose.o dbmdirfno.o dbmpagfno.o dbmrdonly.o
+
+GDBM_OF = gdbmopen.o gdbmdelete.o gdbmfetch.o  gdbmstore.o gdbmclose.o \
+	gdbmreorg.o gdbmseq.o gdbmsync.o gdbmerrno.o gdbmexists.o gdbmfdesc.o \
+	gdbmsetopt.o bucket.o falloc.o findkey.o global.o hash.o update.o \
+	version.o
+
+DBM_LOF = dbminit.lo delete.lo fetch.lo store.lo seq.lo close.lo
+
+NDBM_LOF = dbmopen.lo dbmdelete.lo dbmfetch.lo dbmstore.lo dbmseq.lo \
+	dbmclose.lo dbmdirfno.lo dbmpagfno.lo dbmrdonly.lo
+
+GDBM_LOF = gdbmopen.lo gdbmdelete.lo gdbmfetch.lo  gdbmstore.lo gdbmclose.lo \
+	gdbmreorg.lo gdbmseq.lo gdbmsync.lo gdbmerrno.lo gdbmexists.lo \
+	gdbmfdesc.lo gdbmsetopt.lo bucket.lo falloc.lo findkey.lo global.lo \
+	hash.lo update.lo version.lo
+
+TEX_F = gdbm.aux gdbm.cp gdbm.dvi gdbm.fn gdbm.ky gdbm.log gdbm.pg \
+	gdbm.toc gdbm.tp gdbm.vr
+
+TEXI_F = gdbm.info
+     
+SRCS = $(DBM_CF) $(NDBM_CF) $(GDBM_CF) $(TEST_CF)
+
+# The old all in one library:
+#OBJS = $(DBM_OF) $(NDBM_OF) $(GDBM_OF)
+#
+#LOBJS = $(DBM_LOF) $(NDBM_LOF) $(GDBM_LOF)
+
+# The new split libraries:
+OBJS = $(GDBM_OF)
+LOBJS = $(GDBM_LOF)
+
+C_OBJS = $(DBM_OF) $(NDBM_OF)
+C_LOBJS = $(DBM_LOF) $(NDBM_LOF)
+
+HDRS = gdbmdefs.h extern.h gdbmerrno.h systems.h dbm.h ndbm.h gdbmconst.h \
+	proto.h
+
+MSCFILES = COPYING ChangeLog Makefile.in README gdbm.3 gdbm.texinfo \
+	gdbm.info NEWS INSTALL gdbm.proto gdbm.proto2 conv2gdbm.c \
+	configure configure.in getopt.c getopt.h samp1.cc \
+	autoconf.h.in install-sh mkinstalldirs config.guess config.sub \
+	aclocal.m4 ltconfig ltmain.sh
+
+DISTFILES = $(SRCS) $(HDRS) $(MSCFILES)
+
+all: libgdbm.la libgdbm_compat.la
+
+progs: $(PROGS)
+
+install: libgdbm.la gdbm.h gdbm.info
+	$(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \
+		$(INSTALL_ROOT)$(includedir) $(INSTALL_ROOT)$(man3dir) \
+		$(INSTALL_ROOT)$(infodir)
+	$(LIBTOOL) $(INSTALL) -c libgdbm.la $(INSTALL_ROOT)$(libdir)/libgdbm.la
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) gdbm.h \
+		$(INSTALL_ROOT)$(includedir)/gdbm.h
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.3 \
+		$(INSTALL_ROOT)$(man3dir)/gdbm.3
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.info \
+		$(INSTALL_ROOT)$(infodir)/gdbm.info
+
+install-compat:
+	$(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \
+		$(INSTALL_ROOT)$(includedir)
+	$(LIBTOOL) $(INSTALL) -c libgdbm_compat.la \
+		$(INSTALL_ROOT)$(libdir)/libgdbm_compat.la
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/dbm.h \
+		$(INSTALL_ROOT)$(includedir)/dbm.h
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/ndbm.h \
+		$(INSTALL_ROOT)$(includedir)/ndbm.h
+
+#libgdbm.a: $(OBJS) gdbm.h
+#	rm -f libgdbm.a
+#	ar q libgdbm.a $(OBJS)
+#	$(RANLIB) libgdbm.a
+
+libgdbm.la: $(LOBJS) gdbm.h
+	rm -f libgdbm.la
+	$(LIBTOOL) --mode=link $(CC) -o libgdbm.la -rpath $(libdir) \
+		-version-info $(SHLIB_VER) $(LOBJS)
+
+libgdbm_compat.la: $(C_LOBJS) gdbm.h
+	rm -f libgdbm_compat.la
+	$(LIBTOOL) --mode=link $(CC) -o libgdbm_compat.la -rpath $(libdir) \
+		-version-info $(SHLIB_VER) $(C_LOBJS)
+
+gdbm.h:	gdbm.proto gdbmerrno.h gdbm.proto2
+	rm -f gdbm.h
+	cp $(srcdir)/gdbm.proto gdbm.h
+	chmod +w gdbm.h
+	grep _ $(srcdir)/gdbmerrno.h >> gdbm.h
+	cat $(srcdir)/gdbm.proto2 >> gdbm.h
+	chmod -w gdbm.h
+
+testgdbm: testgdbm.o libgdbm.la 
+	$(LIBTOOL) $(CC) $(LDFLAGS) -o testgdbm testgdbm.o libgdbm.la 
+
+testdbm: testdbm.o libgdbm.la libgdbm_compat.la
+	$(LIBTOOL) $(CC) $(LDFLAGS) -o testdbm testdbm.o libgdbm.la libgdbm_compat.la
+
+tdbm: testdbm.o
+	$(CC) $(LDFLAGS) -o tdbm testdbm.o $(LIBS)
+
+testndbm.o: testndbm.c
+	$(CC) -c -I. -I$(srcdir) $(CFLAGS) $(DEFS) -DGNU $(srcdir)/testndbm.c
+
+testndbm: testndbm.o libgdbm.la libgdbm_compat.la
+	$(LIBTOOL) $(CC) $(LDFLAGS) -o testndbm testndbm.o libgdbm.la libgdbm_compat.la
+
+tndbm.o: testndbm.c
+	cp $(srcdir)/testndbm.c ./tndbm.c
+	$(CC) -c -I. -I$(srcdir) $(CFLAGS) $(DEFS) ./tndbm.c
+	rm -f ./tndbm.c
+
+tndbm: tndbm.o
+	$(CC) $(LDFLAGS) -o tndbm tndbm.o $(LIBS)
+
+conv2gdbm: conv2gdbm.o libgdbm.la 
+	$(LIBTOOL) $(CC) $(LDFLAGS) -o conv2gdbm conv2gdbm.o $(LIBS) libgdbm.la 
+
+lintgdbm: 
+	lint $(DEFS) $(LFLAGS) $(DBM_CF) $(NDBM_CF) $(GDBM_CF) testgdbm.c
+
+TAGS: $(SRCS)
+	etags $(SRCS)
+
+info: gdbm.info
+
+gdbm.info: gdbm.texinfo
+	$(MAKEINFO) $(srcdir)/gdbm.texinfo
+
+dvi: gdbm.dvi
+
+gdbm.dvi: gdbm.texinfo
+	$(TEXI2DVI) $(srcdir)/gdbm.texinfo
+
+clean:
+	rm -rf $(PROGS) $(TEX_F) *.a *.la *.o *.lo core *.core junk* \
+		.libs _libs
+
+mostlyclean: clean
+
+distclean: clean
+	rm -f Makefile autoconf.h config.status config.cache config.log \
+		gdbm.h libtool $(TEXI_F) *~
+
+realclean: distclean
+	rm -f TAGS
+	-rm -f \
+	  `sed -n 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/gdbm-\1/p' \
+		version.c`.tar.gz
+
+dist:
+	echo \
+	  `sed -n 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/gdbm-\1/p' \
+		version.c` > .fname
+	rm -rf `cat .fname`
+	mkdir `cat .fname`
+	ln $(DISTFILES) `cat .fname`
+	tar chf `cat .fname`.tar `cat .fname`
+	gzip `cat .fname`.tar
+	rm -rf `cat .fname` .fname
+
+# dbm files
+dbminit.o:	autoconf.h gdbmdefs.h proto.h extern.h gdbmerrno.h
+delete.o:	autoconf.h gdbmdefs.h proto.h extern.h
+fetch.o:	autoconf.h gdbmdefs.h proto.h extern.h
+store.o:	autoconf.h gdbmdefs.h proto.h extern.h
+seq.o:		autoconf.h gdbmdefs.h proto.h extern.h
+
+# ndbm files
+dbmopen.o:	autoconf.h gdbmdefs.h extern.h gdbmerrno.h
+dbmdelete.o:	autoconf.h gdbmdefs.h extern.h
+dbmfetch.o:	autoconf.h gdbmdefs.h extern.h
+dbmstore.o:	autoconf.h gdbmdefs.h extern.h
+dbmseq.o:	autoconf.h gdbmdefs.h extern.h
+dbmclose.o:	autoconf.h gdbmdefs.h systems.h
+dbmpagfno.o:	autoconf.h gdbmdefs.h extern.h
+dbmdirfno.o:	autoconf.h gdbmdefs.h extern.h
+
+
+# gdbm files
+gdbmclose.o:	autoconf.h gdbmdefs.h 
+gdbmdelete.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+gdbmfetch.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+gdbmfdesc.o:	autoconf.h gdbmdefs.h
+gdbmopen.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+gdbmreorg.o:	autoconf.h gdbmdefs.h gdbmerrno.h extern.h
+gdbmseq.o:	autoconf.h gdbmdefs.h 
+gdbmstore.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+
+# gdbm support files
+bucket.o:	autoconf.h gdbmdefs.h
+falloc.o:	autoconf.h gdbmdefs.h
+findkey.o:	autoconf.h gdbmdefs.h
+global.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+hash.o:		autoconf.h gdbmdefs.h
+update.o:	autoconf.h gdbmdefs.h
+version.o:
+extern.h:
+gdbmdefs.h:	gdbmconst.h systems.h
+	touch gdbmdefs.h
+
+# other programs
+testgdbm.o:	autoconf.h gdbmdefs.h extern.h gdbmerrno.h systems.h
+testdbm.o:	autoconf.h
+testndbm.o:	autoconf.h ndbm.h
+tdbm.o:		autoconf.h
+conv2gdbm.o:	autoconf.h gdbm.h
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/Makefile.in
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/Makefile.in	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/Makefile.in	(revision 18906)
@@ -0,0 +1,288 @@
+#### Start of system configuration section. ####
+
+srcdir = @srcdir@
+top_builddir = .
+VPATH = @srcdir@
+
+CC = @CC@
+LIBTOOL = @LIBTOOL@
+
+# GDBM 1.8.3 builds shared libraries version 3.0
+SHLIB_VER = 3 0 0
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+
+# File ownership and group
+BINOWN = bin
+BINGRP = bin
+
+MAKEINFO = makeinfo
+TEXI2DVI = texi2dvi
+
+DEFS =
+
+# Where the system [n]dbm routines are...
+LIBS = @LIBS@ -lc
+
+CFLAGS = @CFLAGS@
+LDFLAGS = @LDFLAGS@
+
+# Common prefix for installation directories
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+binprefix = $(exec_prefix)
+manprefix = $(prefix)
+
+# Directory in which to put libgdbm.a.
+libdir = @libdir@
+# The include directory for gdbm.h and dbm.h.
+includedir = @includedir@
+# Info and man directories.
+infodir = @infodir@
+man3dir = @mandir@/man3
+manext = 3
+
+#### End of system configuration section. ####
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o
+
+.c.o:
+	$(CC) -c $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) $(CFLAGS) $<
+
+.c.lo:
+	$(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) $(CFLAGS) $<
+
+SHELL = /bin/sh
+
+PROGS = libgdbm.la testgdbm testdbm testndbm tndbm tdbm conv2gdbm
+
+DBM_CF = dbminit.c delete.c fetch.c store.c seq.c close.c
+
+NDBM_CF = dbmopen.c dbmdelete.c dbmfetch.c dbmstore.c dbmseq.c \
+	dbmclose.c dbmdirfno.c dbmpagfno.c dbmrdonly.c
+
+GDBM_CF = gdbmopen.c gdbmdelete.c gdbmfetch.c  gdbmstore.c gdbmclose.c \
+	gdbmreorg.c gdbmseq.c gdbmsync.c gdbmerrno.c gdbmexists.c gdbmfdesc.c \
+	gdbmsetopt.c bucket.c falloc.c findkey.c global.c hash.c update.c \
+	version.c
+
+TEST_CF = testdbm.c testndbm.c testgdbm.c
+
+
+DBM_OF = dbminit.o delete.o fetch.o store.o seq.o close.o
+
+NDBM_OF = dbmopen.o dbmdelete.o dbmfetch.o dbmstore.o dbmseq.o \
+	dbmclose.o dbmdirfno.o dbmpagfno.o dbmrdonly.o
+
+GDBM_OF = gdbmopen.o gdbmdelete.o gdbmfetch.o  gdbmstore.o gdbmclose.o \
+	gdbmreorg.o gdbmseq.o gdbmsync.o gdbmerrno.o gdbmexists.o gdbmfdesc.o \
+	gdbmsetopt.o bucket.o falloc.o findkey.o global.o hash.o update.o \
+	version.o
+
+DBM_LOF = dbminit.lo delete.lo fetch.lo store.lo seq.lo close.lo
+
+NDBM_LOF = dbmopen.lo dbmdelete.lo dbmfetch.lo dbmstore.lo dbmseq.lo \
+	dbmclose.lo dbmdirfno.lo dbmpagfno.lo dbmrdonly.lo
+
+GDBM_LOF = gdbmopen.lo gdbmdelete.lo gdbmfetch.lo  gdbmstore.lo gdbmclose.lo \
+	gdbmreorg.lo gdbmseq.lo gdbmsync.lo gdbmerrno.lo gdbmexists.lo \
+	gdbmfdesc.lo gdbmsetopt.lo bucket.lo falloc.lo findkey.lo global.lo \
+	hash.lo update.lo version.lo
+
+TEX_F = gdbm.aux gdbm.cp gdbm.dvi gdbm.fn gdbm.ky gdbm.log gdbm.pg \
+	gdbm.toc gdbm.tp gdbm.vr
+
+TEXI_F = gdbm.info
+     
+SRCS = $(DBM_CF) $(NDBM_CF) $(GDBM_CF) $(TEST_CF)
+
+# The old all in one library:
+#OBJS = $(DBM_OF) $(NDBM_OF) $(GDBM_OF)
+#
+#LOBJS = $(DBM_LOF) $(NDBM_LOF) $(GDBM_LOF)
+
+# The new split libraries:
+OBJS = $(GDBM_OF)
+LOBJS = $(GDBM_LOF)
+
+C_OBJS = $(DBM_OF) $(NDBM_OF)
+C_LOBJS = $(DBM_LOF) $(NDBM_LOF)
+
+HDRS = gdbmdefs.h extern.h gdbmerrno.h systems.h dbm.h ndbm.h gdbmconst.h \
+	proto.h
+
+MSCFILES = COPYING ChangeLog Makefile.in README gdbm.3 gdbm.texinfo \
+	gdbm.info NEWS INSTALL gdbm.proto gdbm.proto2 conv2gdbm.c \
+	configure configure.in getopt.c getopt.h samp1.cc \
+	autoconf.h.in install-sh mkinstalldirs config.guess config.sub \
+	aclocal.m4 ltconfig ltmain.sh
+
+DISTFILES = $(SRCS) $(HDRS) $(MSCFILES)
+
+all: libgdbm.la libgdbm_compat.la
+
+progs: $(PROGS)
+
+install: libgdbm.la gdbm.h gdbm.info
+	$(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \
+		$(INSTALL_ROOT)$(includedir) $(INSTALL_ROOT)$(man3dir) \
+		$(INSTALL_ROOT)$(infodir)
+	$(LIBTOOL) $(INSTALL) -c libgdbm.la $(INSTALL_ROOT)$(libdir)/libgdbm.la
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) gdbm.h \
+		$(INSTALL_ROOT)$(includedir)/gdbm.h
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.3 \
+		$(INSTALL_ROOT)$(man3dir)/gdbm.3
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.info \
+		$(INSTALL_ROOT)$(infodir)/gdbm.info
+
+install-compat:
+	$(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \
+		$(INSTALL_ROOT)$(includedir)
+	$(LIBTOOL) $(INSTALL) -c libgdbm_compat.la \
+		$(INSTALL_ROOT)$(libdir)/libgdbm_compat.la
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/dbm.h \
+		$(INSTALL_ROOT)$(includedir)/dbm.h
+	$(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/ndbm.h \
+		$(INSTALL_ROOT)$(includedir)/ndbm.h
+
+#libgdbm.a: $(OBJS) gdbm.h
+#	rm -f libgdbm.a
+#	ar q libgdbm.a $(OBJS)
+#	$(RANLIB) libgdbm.a
+
+libgdbm.la: $(LOBJS) gdbm.h
+	rm -f libgdbm.la
+	$(LIBTOOL) --mode=link $(CC) -o libgdbm.la -rpath $(libdir) \
+		-version-info $(SHLIB_VER) $(LOBJS)
+
+libgdbm_compat.la: $(C_LOBJS) gdbm.h
+	rm -f libgdbm_compat.la
+	$(LIBTOOL) --mode=link $(CC) -o libgdbm_compat.la -rpath $(libdir) \
+		-version-info $(SHLIB_VER) $(C_LOBJS)
+
+gdbm.h:	gdbm.proto gdbmerrno.h gdbm.proto2
+	rm -f gdbm.h
+	cp $(srcdir)/gdbm.proto gdbm.h
+	chmod +w gdbm.h
+	grep _ $(srcdir)/gdbmerrno.h >> gdbm.h
+	cat $(srcdir)/gdbm.proto2 >> gdbm.h
+	chmod -w gdbm.h
+
+testgdbm: testgdbm.o libgdbm.la @LIBOBJS@
+	$(LIBTOOL) $(CC) $(LDFLAGS) -o testgdbm testgdbm.o libgdbm.la @LIBOBJS@
+
+testdbm: testdbm.o libgdbm.la libgdbm_compat.la
+	$(LIBTOOL) $(CC) $(LDFLAGS) -o testdbm testdbm.o libgdbm.la libgdbm_compat.la
+
+tdbm: testdbm.o
+	$(CC) $(LDFLAGS) -o tdbm testdbm.o $(LIBS)
+
+testndbm.o: testndbm.c
+	$(CC) -c -I. -I$(srcdir) $(CFLAGS) $(DEFS) -DGNU $(srcdir)/testndbm.c
+
+testndbm: testndbm.o libgdbm.la libgdbm_compat.la
+	$(LIBTOOL) $(CC) $(LDFLAGS) -o testndbm testndbm.o libgdbm.la libgdbm_compat.la
+
+tndbm.o: testndbm.c
+	cp $(srcdir)/testndbm.c ./tndbm.c
+	$(CC) -c -I. -I$(srcdir) $(CFLAGS) $(DEFS) ./tndbm.c
+	rm -f ./tndbm.c
+
+tndbm: tndbm.o
+	$(CC) $(LDFLAGS) -o tndbm tndbm.o $(LIBS)
+
+conv2gdbm: conv2gdbm.o libgdbm.la @LIBOBJS@
+	$(LIBTOOL) $(CC) $(LDFLAGS) -o conv2gdbm conv2gdbm.o $(LIBS) libgdbm.la @LIBOBJS@
+
+lintgdbm: 
+	lint $(DEFS) $(LFLAGS) $(DBM_CF) $(NDBM_CF) $(GDBM_CF) testgdbm.c
+
+TAGS: $(SRCS)
+	etags $(SRCS)
+
+info: gdbm.info
+
+gdbm.info: gdbm.texinfo
+	$(MAKEINFO) $(srcdir)/gdbm.texinfo
+
+dvi: gdbm.dvi
+
+gdbm.dvi: gdbm.texinfo
+	$(TEXI2DVI) $(srcdir)/gdbm.texinfo
+
+clean:
+	rm -rf $(PROGS) $(TEX_F) *.a *.la *.o *.lo core *.core junk* \
+		.libs _libs
+
+mostlyclean: clean
+
+distclean: clean
+	rm -f Makefile autoconf.h config.status config.cache config.log \
+		gdbm.h libtool $(TEXI_F) *~
+
+realclean: distclean
+	rm -f TAGS
+	-rm -f \
+	  `sed -n 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/gdbm-\1/p' \
+		version.c`.tar.gz
+
+dist:
+	echo \
+	  `sed -n 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/gdbm-\1/p' \
+		version.c` > .fname
+	rm -rf `cat .fname`
+	mkdir `cat .fname`
+	ln $(DISTFILES) `cat .fname`
+	tar chf `cat .fname`.tar `cat .fname`
+	gzip `cat .fname`.tar
+	rm -rf `cat .fname` .fname
+
+# dbm files
+dbminit.o:	autoconf.h gdbmdefs.h proto.h extern.h gdbmerrno.h
+delete.o:	autoconf.h gdbmdefs.h proto.h extern.h
+fetch.o:	autoconf.h gdbmdefs.h proto.h extern.h
+store.o:	autoconf.h gdbmdefs.h proto.h extern.h
+seq.o:		autoconf.h gdbmdefs.h proto.h extern.h
+
+# ndbm files
+dbmopen.o:	autoconf.h gdbmdefs.h extern.h gdbmerrno.h
+dbmdelete.o:	autoconf.h gdbmdefs.h extern.h
+dbmfetch.o:	autoconf.h gdbmdefs.h extern.h
+dbmstore.o:	autoconf.h gdbmdefs.h extern.h
+dbmseq.o:	autoconf.h gdbmdefs.h extern.h
+dbmclose.o:	autoconf.h gdbmdefs.h systems.h
+dbmpagfno.o:	autoconf.h gdbmdefs.h extern.h
+dbmdirfno.o:	autoconf.h gdbmdefs.h extern.h
+
+
+# gdbm files
+gdbmclose.o:	autoconf.h gdbmdefs.h 
+gdbmdelete.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+gdbmfetch.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+gdbmfdesc.o:	autoconf.h gdbmdefs.h
+gdbmopen.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+gdbmreorg.o:	autoconf.h gdbmdefs.h gdbmerrno.h extern.h
+gdbmseq.o:	autoconf.h gdbmdefs.h 
+gdbmstore.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+
+# gdbm support files
+bucket.o:	autoconf.h gdbmdefs.h
+falloc.o:	autoconf.h gdbmdefs.h
+findkey.o:	autoconf.h gdbmdefs.h
+global.o:	autoconf.h gdbmdefs.h gdbmerrno.h 
+hash.o:		autoconf.h gdbmdefs.h
+update.o:	autoconf.h gdbmdefs.h
+version.o:
+extern.h:
+gdbmdefs.h:	gdbmconst.h systems.h
+	touch gdbmdefs.h
+
+# other programs
+testgdbm.o:	autoconf.h gdbmdefs.h extern.h gdbmerrno.h systems.h
+testdbm.o:	autoconf.h
+testndbm.o:	autoconf.h ndbm.h
+tdbm.o:		autoconf.h
+conv2gdbm.o:	autoconf.h gdbm.h
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/NEWS
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/NEWS	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/NEWS	(revision 18906)
@@ -0,0 +1,82 @@
+CHANGES from 1.8.2 to 1.8.3
+  1.  Various configure related changes and additional updates.
+
+CHANGES from 1.8.1 to 1.8.2
+  1.  Allow `NEWDB'-opened databases to actually, well, store records.
+
+CHANGES from 1.8 to 1.8.1
+  1.  Lots of bug fixes, including a data corruption bug.
+  2.  Updated to current autoconf and libtool.
+  3.  Moved the dbm/ndbm compatibility routines to libgdbm_compat.
+
+CHANGES from 1.7.3 to 1.8
+  1.  Added GDBM_CENTFREE functionality and option.
+  2.  Added GDBM_COALESCEBLKS functionality and option.
+  3.  Added GDBM_NOLOCK flag.
+  4.  Made ``fast'' mode the default, making GDBM_FAST obsolete, and adding
+      the GDBM_SYNC flag and GDBM_SYNCMODE option.
+  5.  Switched to building with libtool.
+
+CHANGES from 1.7.2 to 1.7.3
+  1.  Fixed a couple of last minute problems. (Namely, no autoconf.h in
+      version.c, and no GDBM_FASTMODE in gdbm.h!)
+  2.  Fixed some documentation bugs.
+
+CHANGES from 1.7.1 to 1.7.2
+  1.  Enhanced portability and compile/installation changes.
+  2.  Additional, "fast mode" related gdbm_setopt() option.
+  3.  Growth problems bug fix.
+
+CHANGES from 1.7 to 1.7.1
+  1.  Enhanced portabilty and compile/installation bug fixes.
+  2.  Switched over to using an auto config header.
+  2.  Slight documentation upgrade.
+
+CHANGES from 1.6 to 1.7
+  1.  A new dynamic, delayed initialization, bucket cache.
+  2.  New gdbm_setopt(), gdbm_exists(), and gdbm_strerror() routines.
+  3.  Slightly improved dbm/ndbm compatibility.
+  4.  Greatly improved portability to 64 or 16 bit machines.
+  5.  Various bug fixes.
+
+CHANGES from 1.5 to 1.6
+  1.  New documentation in both man and texinfo formats.
+  2.  Bug fixes.
+  3.  A New "writers" mode that does not fsync the database.
+  4.  Uses Autoconf now.
+
+CHANGES from 1.4 to 1.5:
+  1.  Minor bug fixes.  See the ChangeLog.
+  2.  Added gdbmconst.h to allow users to change the size of the
+      bucket cache in the systems.h file.
+
+CHANGES from 1.0 to 1.4:
+  1.  Mainly bug fixes.
+  2.  A define for "dbmclose()" was added to dbm.h for those few 
+      implementaions that need that call.
+  3.  For details, see the ChangeLog.
+
+CHANGES from 0.9 to 1.0:
+  1.  Makefiles were combined into one and a few new things added to it.
+  2.  Several minor bugs were fixed including a cache bug.
+  3.  Two new calls (dbm_pagfno, dbm_dirfno) were added to the NDBM interface.
+  3.  A conversion program from dbm files to gdbm files was added.
+  4.  Reorganize was changed to allow complex file names. (dir/file form)
+  5.  testgdbm, testndbm, and testdbm were modified to return key and data
+      pairs where needed and to take an optional file name as an argument.
+      testgdbm had some command characters changed.
+  6.  The DBM and NDBM interfaces were separated.
+  7.  An include file for dbm users was added. (dbm.h)
+  8.  The include file for ndbm users was renamed ndbm.h. (It was gndbm.h.)
+
+CHANGES from 0.8 to 0.9:
+  1.  The hash function changed.
+  2.  The file format changed.
+  3.  There was a complete rewrite of falloc.c.
+  4.  There were added compatiblity routines for ndbm.
+  5.  The file names for dbm compatibility routines were made to
+      look like dbm.
+  6.  Test programs changed.
+  7.  Support for System V.
+  8.  Various other small changes.
+  9.  The need for recovery and associated code was removed.
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/README
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/README	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/README	(revision 18906)
@@ -0,0 +1,56 @@
+GNU dbm is a set of database routines that use extendible hashing and
+works similar to the standard UNIX dbm routines.
+
+This is release 1.8.3 of GNU dbm.
+
+To compile gdbm:
+
+   a)  configure <config parameters like -prefix ... see INSTALL>
+   b)  make 
+
+To compile the optional test and conversion programs:
+
+   a)  make progs
+
+To install the basic package:
+
+   a)  make install
+
+To install the optional dbm and ndbm API compatibility library and headers:
+
+   a)  make install-compat
+
+Please report bugs to
+	bug-gnu-utils@gnu.org
+
+------------------------------------------
+
+The files are:
+
+INSTALL		- Installation tips and information.
+NEWS		- New and changed things.
+COPYING		- Copying information.
+README		- This file.
+
+bucket.c, extern.h, falloc.c, findkey.c, gdbm.proto, gdbmclose.c,
+gdbmconst.h gdbmdefs.h, gdbmdelete.c, gdbmerrno.h, gdbmfdesc.c, gdbmfetch.c,
+gdbmsync.c, gdbmopen.c, gdbmreorg.c, gdbmseq.c, gdbmstore.c, global.c, gdbm.h,
+hash.c systems.h, update.c, version.c - Source for GNU dbm library.
+
+dbm.h dbminit.c, delete.c, fetch.c, seq.c, store.c - Source for the
+DBM interface.
+
+dbmclose.c, dbmdelete.c, dbmdirfno.c, dbmfetch.c, dbmopen.c, dbmpagfno.c
+dbmseq.c, dbmstore.c, ndbm.h - Source for the NDBM interface.
+
+Makefile 	- Makefile, will make gdbm.a  (BSD and SYSV)
+testgdbm.c	- A simple test program.
+testdbm.c	- A simple test program.
+testndbm.c	- A simple test program.
+conv2gdbm.c	- A dbm database conversion program.
+
+gdbm.3, gdbm.texinfo - Documentation for gdbm.
+
+The author of GNU dbm may be reached via e-mail to <phil@cs.wwu.edu>,
+and the current maintainer may be reached at <downsj@downsj.com>.
+E-mail may be sent to either, or both, of these people.
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/aclocal.m4
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/aclocal.m4	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/aclocal.m4	(revision 18906)
@@ -0,0 +1,3573 @@
+# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*-
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001
+## Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+##
+## As a special exception to the GNU General Public License, if you
+## distribute this file as part of a program that contains a
+## configuration script generated by Autoconf, you may include it under
+## the same distribution terms that you use for the rest of that program.
+
+# serial 46 AC_PROG_LIBTOOL
+
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])
+
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.13)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+_LT_AC_PROG_ECHO_BACKSLASH
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE(libtool-lock,
+  [  --disable-libtool-lock  avoid locking (might break parallel builds)])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_SAVE
+     AC_LANG_C
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_RESTORE])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+
+  # recent cygwin and mingw systems supply a stub DllMain which the user
+  # can override, but on older systems we have to supply one
+  AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain,
+    [AC_TRY_LINK([],
+      [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
+      DllMain (0, 0, 0);],
+      [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])])
+
+  case $host/$CC in
+  *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*)
+    # old mingw systems require "-dll" to link a DLL, while more recent ones
+    # require "-mdll"
+    SAVE_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -mdll"
+    AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch,
+      [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])])
+    CFLAGS="$SAVE_CFLAGS" ;;
+  *-*-cygwin* | *-*-pw32*)
+    # cygwin systems need to pass --dll to the linker, and not link
+    # crt.o which will require a WinMain@16 definition.
+    lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;;
+  esac
+  ;;
+  ])
+esac
+
+_LT_AC_LTCONFIG_HACK
+
+])
+
+# AC_LIBTOOL_HEADER_ASSERT
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT],
+[AC_CACHE_CHECK([whether $CC supports assert without backlinking],
+    [lt_cv_func_assert_works],
+    [case $host in
+    *-*-solaris*)
+      if test "$GCC" = yes && test "$with_gnu_ld" != yes; then
+        case `$CC --version 2>/dev/null` in
+        [[12]].*) lt_cv_func_assert_works=no ;;
+        *)        lt_cv_func_assert_works=yes ;;
+        esac
+      fi
+      ;;
+    esac])
+
+if test "x$lt_cv_func_assert_works" = xyes; then
+  AC_CHECK_HEADERS(assert.h)
+fi
+])# AC_LIBTOOL_HEADER_ASSERT
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)
+])# _LT_AC_CHECK_DLFCN
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix*)
+  symcode='[[BCDEGRST]]'
+  ;;
+solaris* | sysv5*)
+  symcode='[[BDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $host_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  symcode='[[ABCDGISTW]]'
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+	if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+	  sed "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  save_LIBS="$LIBS"
+	  save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$no_builtin_flag"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$save_LIBS"
+	  CFLAGS="$save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AC_FD_CC
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AC_FD_CC
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC
+    fi
+  else
+    echo "$progname: failed program was:" >&AC_FD_CC
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  global_symbol_to_cdecl=
+  global_symbol_to_c_name_address=
+else
+  global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
+  global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
+fi
+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
+then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
+# ---------------------------------
+AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
+[# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) lt_cv_sys_path_separator=';' ;;
+    *)     lt_cv_sys_path_separator=':' ;;
+  esac
+  PATH_SEPARATOR=$lt_cv_sys_path_separator
+fi
+])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+			      [AC_DIVERT_PUSH(NOTICE)])
+_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "[$]0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+AC_DIVERT_POP
+])# _LT_AC_PROG_ECHO_BACKSLASH
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}]
+EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_unknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+          [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+            [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+	        [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+	          [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+	            [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+    	  lt_cv_dlopen_self_static, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+AC_DEFUN([_LT_AC_LTCONFIG_HACK],
+[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+need_locks="$enable_libtool_lock"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+if test x"$host" != x"$build"; then
+  ac_tool_prefix=${host_alias}-
+else
+  ac_tool_prefix=
+fi
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case $host_os in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="[$]2"
+
+## FIXME: this should be a separate macro
+##
+AC_MSG_CHECKING([for objdir])
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+AC_MSG_RESULT($objdir)
+##
+## END FIXME
+
+
+## FIXME: this should be a separate macro
+##
+AC_ARG_WITH(pic,
+[  --with-pic              try to use only PIC/non-PIC objects [default=use both]],
+pic_mode="$withval", pic_mode=default)
+test -z "$pic_mode" && pic_mode=default
+
+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
+# in isolation, and that seeing it set (from the cache) indicates that
+# the associated values are set (in the cache) correctly too.
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+AC_CACHE_VAL(lt_cv_prog_cc_pic,
+[ lt_cv_prog_cc_pic=
+  lt_cv_prog_cc_shlib=
+  lt_cv_prog_cc_wl=
+  lt_cv_prog_cc_static=
+  lt_cv_prog_cc_no_builtin=
+  lt_cv_prog_cc_can_build_shared=$can_build_shared
+
+  if test "$GCC" = yes; then
+    lt_cv_prog_cc_wl='-Wl,'
+    lt_cv_prog_cc_static='-static'
+
+    case $host_os in
+    aix*)
+      # Below there is a dirty hack to force normal static linking with -ldl
+      # The problem is because libdl dynamically linked with both libc and
+      # libC (AIX C++ library), which obviously doesn't included in libraries
+      # list by gcc. This cause undefined symbols with -static flags.
+      # This hack allows C programs to be linked with "-static -ldl", but
+      # not sure about C++ programs.
+      lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_cv_prog_cc_pic='-fno-common'
+      ;;
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	 lt_cv_prog_cc_pic=-Kconform_pic
+      fi
+      ;;
+    *)
+      lt_cv_prog_cc_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for PIC flags for the system compiler.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      lt_cv_prog_cc_wl='-Wl,'
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_cv_prog_cc_static='-Bstatic'
+      else
+	lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
+      lt_cv_prog_cc_pic='+Z'
+      ;;
+
+    irix5* | irix6*)
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      # PIC (with -KPIC) is the default.
+      ;;
+
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+
+    newsos6)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      # All OSF/1 code is PIC.
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_cv_prog_cc_pic='-Kpic'
+      lt_cv_prog_cc_static='-dn'
+      lt_cv_prog_cc_shlib='-belf'
+      ;;
+
+    solaris*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Wl,'
+      ;;
+
+    sunos4*)
+      lt_cv_prog_cc_pic='-PIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Qoption ld '
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      if test "x$host_vendor" = xsni; then
+	lt_cv_prog_cc_wl='-LD'
+      else
+	lt_cv_prog_cc_wl='-Wl,'
+      fi
+      ;;
+
+    uts4*)
+      lt_cv_prog_cc_pic='-pic'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_cv_prog_cc_pic='-Kconform_pic'
+	lt_cv_prog_cc_static='-Bstatic'
+      fi
+      ;;
+
+    *)
+      lt_cv_prog_cc_can_build_shared=no
+      ;;
+    esac
+  fi
+])
+if test -z "$lt_cv_prog_cc_pic"; then
+  AC_MSG_RESULT([none])
+else
+  AC_MSG_RESULT([$lt_cv_prog_cc_pic])
+
+  # Check to make sure the pic_flag actually works.
+  AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works])
+  AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
+    AC_TRY_COMPILE([], [], [dnl
+      case $host_os in
+      hpux9* | hpux10* | hpux11*)
+	# On HP-UX, both CC and GCC only warn that PIC is supported... then
+	# they create non-PIC objects.  So, if there were any warnings, we
+	# assume that PIC is not supported.
+	if test -s conftest.err; then
+	  lt_cv_prog_cc_pic_works=no
+	else
+	  lt_cv_prog_cc_pic_works=yes
+	fi
+	;;
+      *)
+	lt_cv_prog_cc_pic_works=yes
+	;;
+      esac
+    ], [dnl
+      lt_cv_prog_cc_pic_works=no
+    ])
+    CFLAGS="$save_CFLAGS"
+  ])
+
+  if test "X$lt_cv_prog_cc_pic_works" = Xno; then
+    lt_cv_prog_cc_pic=
+    lt_cv_prog_cc_can_build_shared=no
+  else
+    lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
+  fi
+
+  AC_MSG_RESULT([$lt_cv_prog_cc_pic_works])
+fi
+##
+## END FIXME
+
+# Check for any special shared library compilation flags.
+if test -n "$lt_cv_prog_cc_shlib"; then
+  AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries])
+  if echo "$old_CC $old_CFLAGS " | egrep -e "[[ 	]]$lt_cv_prog_cc_shlib[[ 	]]" >/dev/null; then :
+  else
+   AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure])
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+## FIXME: this should be a separate macro
+##
+AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works])
+AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl
+  lt_cv_prog_cc_static_works=no
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
+  AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes])
+  LDFLAGS="$save_LDFLAGS"
+])
+
+# Belt *and* braces to stop my trousers falling down:
+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
+AC_MSG_RESULT([$lt_cv_prog_cc_static_works])
+
+pic_flag="$lt_cv_prog_cc_pic"
+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
+wl="$lt_cv_prog_cc_wl"
+link_static_flag="$lt_cv_prog_cc_static"
+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
+can_build_shared="$lt_cv_prog_cc_can_build_shared"
+##
+## END FIXME
+
+
+## FIXME: this should be a separate macro
+##
+# Check to see if options -o and -c are simultaneously supported by compiler
+AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext])
+AC_CACHE_VAL([lt_cv_compiler_c_o], [
+$rm -r conftest 2>/dev/null
+mkdir conftest
+cd conftest
+echo "int some_variable = 0;" > conftest.$ac_ext
+mkdir out
+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+# that will create temporary files in the current directory regardless of
+# the output directory.  Thus, making CWD read-only will cause this test
+# to fail, enabling locking or at least warning the user not to do parallel
+# builds.
+chmod -w .
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
+compiler_c_o=no
+if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+  # The compiler can only warn and ignore the option if not recognized
+  # So say no if there are warnings
+  if test -s out/conftest.err; then
+    lt_cv_compiler_c_o=no
+  else
+    lt_cv_compiler_c_o=yes
+  fi
+else
+  # Append any errors to the config.log.
+  cat out/conftest.err 1>&AC_FD_CC
+  lt_cv_compiler_c_o=no
+fi
+CFLAGS="$save_CFLAGS"
+chmod u+w .
+$rm conftest* out/*
+rmdir out
+cd ..
+rmdir conftest
+$rm -r conftest 2>/dev/null
+])
+compiler_c_o=$lt_cv_compiler_c_o
+AC_MSG_RESULT([$compiler_c_o])
+
+if test x"$compiler_c_o" = x"yes"; then
+  # Check to see if we can write to a .lo
+  AC_MSG_CHECKING([if $compiler supports -c -o file.lo])
+  AC_CACHE_VAL([lt_cv_compiler_o_lo], [
+  lt_cv_compiler_o_lo=no
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -c -o conftest.lo"
+  save_objext="$ac_objext"
+  ac_objext=lo
+  AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      lt_cv_compiler_o_lo=no
+    else
+      lt_cv_compiler_o_lo=yes
+    fi
+  ])
+  ac_objext="$save_objext"
+  CFLAGS="$save_CFLAGS"
+  ])
+  compiler_o_lo=$lt_cv_compiler_o_lo
+  AC_MSG_RESULT([$compiler_o_lo])
+else
+  compiler_o_lo=no
+fi
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# Check to see if we can do hard links to lock some files if needed
+hard_links="nottested"
+if test "$compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+if test "$GCC" = yes; then
+  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+  AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions])
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+  compiler_rtti_exceptions=no
+  AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      compiler_rtti_exceptions=no
+    else
+      compiler_rtti_exceptions=yes
+    fi
+  ])
+  CFLAGS="$save_CFLAGS"
+  AC_MSG_RESULT([$compiler_rtti_exceptions])
+
+  if test "$compiler_rtti_exceptions" = "yes"; then
+    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+  else
+    no_builtin_flag=' -fno-builtin'
+  fi
+fi
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# See if the linker supports building shared libraries.
+AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries])
+
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+old_archive_from_expsyms_cmds=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_into_libs=no
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+link_all_deplibs=unknown
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced.  Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+extract_expsyms_cmds=
+
+case $host_os in
+cygwin* | mingw* | pw32*)
+  # FIXME: the MSVC++ port hasn't been tested in a loooong time
+  # When not using gcc, we currently assume that we are using
+  # Microsoft Visual C++.
+  if test "$GCC" != yes; then
+    with_gnu_ld=no
+  fi
+  ;;
+openbsd*)
+  with_gnu_ld=no
+  ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # If archive_cmds runs LD, not CC, wlarc should be empty
+  wlarc='${wl}'
+
+  # See if GNU ld supports shared libraries.
+  case $host_os in
+  aix3* | aix4* | aix5*)
+    # On AIX, the GNU linker is very broken
+    # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
+    ld_shlibs=no
+    cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+
+    # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+    # that the semantics of dynamic libraries on AmigaOS, at least up
+    # to version 4, is to share data among multiple programs linked
+    # with the same dynamic library.  Since this doesn't match the
+    # behavior of shared libraries on other platforms, we can use
+    # them.
+    ld_shlibs=no
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec='-L$libdir'
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+
+    extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
+      sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
+      test -f $output_objdir/impgen.exe || (cd $output_objdir && \
+      if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
+      else $CC -o impgen impgen.c ; fi)~
+      $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
+
+    old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
+
+    # cygwin and mingw dlls have different entry points and sets of symbols
+    # to exclude.
+    # FIXME: what about values for MSVC?
+    dll_entry=__cygwin_dll_entry@12
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
+    case $host_os in
+    mingw*)
+      # mingw values
+      dll_entry=_DllMainCRTStartup@12
+      dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
+      ;;
+    esac
+
+    # mingw and cygwin differ, and it's simplest to just exclude the union
+    # of the two symbol sets.
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
+
+    # recent cygwin and mingw systems supply a stub DllMain which the user
+    # can override, but on older systems we have to supply one (in ltdll.c)
+    if test "x$lt_cv_need_dllmain" = "xyes"; then
+      ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
+      ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
+	test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
+    else
+      ltdll_obj=
+      ltdll_cmds=
+    fi
+
+    # Extract the symbol export list from an `--export-all' def file,
+    # then regenerate the def file from the symbol export list, so that
+    # the compiled dll only exports the symbol export list.
+    # Be careful not to strip the DATA tag left be newer dlltools.
+    export_symbols_cmds="$ltdll_cmds"'
+      $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
+      sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
+
+    # If the export-symbols file already is a .def file (1st line
+    # is EXPORTS), use it as is.
+    # If DATA tags from a recent dlltool are present, honour them!
+    archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname-def;
+      else
+	echo EXPORTS > $output_objdir/$soname-def;
+	_lt_hint=1;
+	cat $export_symbols | while read symbol; do
+	 set dummy \$symbol;
+	 case \[$]# in
+	   2) echo "   \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
+	   *) echo "     \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
+	 esac;
+	 _lt_hint=`expr 1 + \$_lt_hint`;
+	done;
+      fi~
+      '"$ltdll_cmds"'
+      $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
+      $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
+      $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+      wlarc=
+    else
+      archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    fi
+    ;;
+
+  solaris* | sysv5*)
+    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+      ld_shlibs=no
+      cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    wlarc=
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+  esac
+
+  if test "$ld_shlibs" = yes; then
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    case $host_os in
+    cygwin* | mingw* | pw32*)
+      # dlltool doesn't understand --whole-archive et. al.
+      whole_archive_flag_spec=
+      ;;
+    *)
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+	whole_archive_flag_spec=
+      fi
+      ;;
+    esac
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case $host_os in
+  aix3*)
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+    archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$GCC" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    hardcode_direct=yes
+    archive_cmds=''
+    hardcode_libdir_separator=':'
+    if test "$GCC" = yes; then
+      case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	  strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  hardcode_direct=yes
+	else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	fi
+      esac
+
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	shared_flag='${wl}-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall can do strange things, so it is better to
+    # generate a list of symbols to export.
+    always_export_symbols=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag='-berok'
+      hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
+      archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+    else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag="-z nodefs"
+	archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='${wl}-berok'
+	# This is a bit strange, but is similar to how AIX traditionally builds
+	# it's shared libraries.
+	archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
+      fi
+    fi
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    # see comment about different semantics on the GNU ld section
+    ld_shlibs=no
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec=' '
+    allow_undefined_flag=unsupported
+    # Tell ltmain to make .lib files, not .a files.
+    libext=lib
+    # FIXME: Setting linknames here is a bad hack.
+    archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+    # The linker will automatically build a .lib file if we build a DLL.
+    old_archive_from_new_cmds='true'
+    # FIXME: Should let the user specify the lib program.
+    old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+    fix_srcfile_path='`cygpath -w "$srcfile"`'
+    ;;
+
+  darwin* | rhapsody*)
+    case "$host_os" in
+    rhapsody* | darwin1.[[012]])
+      allow_undefined_flag='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      allow_undefined_flag='-flat_namespace -undefined suppress'
+      ;;
+    esac
+    # FIXME: Relying on posixy $() will cause problems for
+    #        cross-compilation, but unfortunately the echo tests do not
+    #        yet detect zsh echo's removal of \ escapes.
+    archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring'
+    # We need to add '_' to the symbols in $export_symbols first
+    #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    whole_archive_flag_spec='-all_load $convenience'
+    ;;
+
+  freebsd1*)
+    ld_shlibs=no
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+  freebsd*)
+    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    case $host_os in
+    hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
+    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
+    esac
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_direct=yes
+    hardcode_minus_L=yes # Not in the search PATH, but as the default
+			 # location of the library.
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6*)
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    link_all_deplibs=yes
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+    else
+      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+    fi
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  newsos6)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+    else
+      case "$host_os" in
+      openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_libdir_flag_spec='-R$libdir'
+        ;;
+      *)
+        archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
+        hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        ;;
+      esac
+    fi
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+    ;;
+
+  osf3*)
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  osf4* | osf5*)	# as osf3* with the addition of -msym flag
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+      $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+      #Both c and cxx compiler support -rpath directly
+      hardcode_libdir_flag_spec='-rpath $libdir'
+    fi
+    hardcode_libdir_separator=:
+    ;;
+
+  sco3.2v5*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    runpath_var=LD_RUN_PATH
+    hardcode_runpath_var=yes
+    export_dynamic_flag_spec='${wl}-Bexport'
+    ;;
+
+  solaris*)
+    # gcc --version < 3.0 without binutils cannot create self contained
+    # shared libraries reliably, requiring libgcc.a to resolve some of
+    # the object symbols generated in some cases.  Libraries that use
+    # assert need libgcc.a to resolve __eprintf, for example.  Linking
+    # a copy of libgcc.a into every shared library to guarantee resolving
+    # such symbols causes other problems:  According to Tim Van Holder
+    # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
+    # (to the application) exception stack for one thing.
+    no_undefined_flag=' -z defs'
+    if test "$GCC" = yes; then
+      case `$CC --version 2>/dev/null` in
+      [[12]].*)
+	cat <<EOF 1>&2
+
+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
+*** create self contained shared libraries on Solaris systems, without
+*** introducing a dependency on libgcc.a.  Therefore, libtool is disabling
+*** -no-undefined support, which will at least allow you to build shared
+*** libraries.  However, you may find that when you link such libraries
+*** into an application without using GCC, you have to manually add
+*** \`gcc --print-libgcc-file-name\` to the link command.  We urge you to
+*** upgrade to a newer version of GCC.  Another option is to rebuild your
+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
+
+EOF
+        no_undefined_flag=
+	;;
+      esac
+    fi
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+    case $host_os in
+    solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+    esac
+    link_all_deplibs=yes
+    ;;
+
+  sunos4*)
+    if test "x$host_vendor" = xsequent; then
+      # Use $CC to link under sequent, because it throws in some extra .o
+      # files that make .init and .fini sections work.
+      archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+    fi
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4)
+    if test "x$host_vendor" = xsno; then
+      archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes # is this really true???
+    else
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4.3*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    export_dynamic_flag_spec='-Bexport'
+    ;;
+
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  dgux*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4*MP*)
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    hardcode_runpath_var=yes
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  sysv5uw7* | unixware7*)
+    no_undefined_flag='${wl}-z ${wl}text'
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    ;;
+  esac
+fi
+AC_MSG_RESULT([$ld_shlibs])
+test "$ld_shlibs" = no && can_build_shared=no
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# Check hardcoding attributes.
+AC_MSG_CHECKING([how to hardcode library paths into programs])
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$hardcode_shlibpath_var" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+AC_MSG_RESULT([$hardcode_action])
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+##
+## END FIXME
+
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+## FIXME: this should be a separate macro
+##
+# PORTME Fill in your ld.so characteristics
+AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+	if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	     echo ' yes '
+	     echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	  :
+	else
+	  can_build_shared=no
+	fi
+	;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can
+    # not hardcode correct soname into executable. Probably we can
+    # add versioning support to collect2, so additional links can
+    # be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}.so$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}.so'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  need_version=no
+  need_lib_prefix=no
+  case $GCC,$host_os in
+  yes,cygwin*)
+    library_names_spec='$libname.dll.a'
+    soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
+    postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog .libs/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    ;;
+  yes,mingw*)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
+    sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
+    ;;
+  yes,pw32*)
+    library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    ;;
+  *)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
+  soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  shlibpath_var=SHLIB_PATH
+  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+  soname_spec='${libname}${release}.sl$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6*)
+  version_type=irix
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
+  case $host_os in
+  irix5*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+    soname_spec='${libname}${release}.so$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case "$host_os" in
+    openbsd2.[[89]] | openbsd2.[[89]].*)
+      shlibpath_overrides_runpath=no
+      ;;
+    *)
+      shlibpath_overrides_runpath=yes
+      ;;
+    esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  need_lib_prefix=no
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_version=no
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+    soname_spec='$libname.so.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# Report the final consequences.
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+##
+## END FIXME
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+AC_LIBTOOL_DLOPEN_SELF
+
+## FIXME: this should be a separate macro
+##
+if test "$enable_shared" = yes && test "$GCC" = yes; then
+  case $archive_cmds in
+  *'~'*)
+    # FIXME: we may have to deal with multi-command sequences.
+    ;;
+  '$CC '*)
+    # Test whether the compiler implicitly links with -lc since on some
+    # systems, -lgcc has to come before -lc. If gcc already passes -lc
+    # to ld, don't add -lc before -lgcc.
+    AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+    AC_CACHE_VAL([lt_cv_archive_cmds_need_lc],
+    [$rm conftest*
+    echo 'static int dummy;' > conftest.$ac_ext
+
+    if AC_TRY_EVAL(ac_compile); then
+      soname=conftest
+      lib=conftest
+      libobjs=conftest.$ac_objext
+      deplibs=
+      wl=$lt_cv_prog_cc_wl
+      compiler_flags=-v
+      linker_flags=-v
+      verstring=
+      output_objdir=.
+      libname=conftest
+      save_allow_undefined_flag=$allow_undefined_flag
+      allow_undefined_flag=
+      if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+      then
+	lt_cv_archive_cmds_need_lc=no
+      else
+	lt_cv_archive_cmds_need_lc=yes
+      fi
+      allow_undefined_flag=$save_allow_undefined_flag
+    else
+      cat conftest.err 1>&5
+    fi])
+    AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc])
+    ;;
+  esac
+fi
+need_lc=${lt_cv_archive_cmds_need_lc-yes}
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# The second clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  :
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+if test -f "$ltmain"; then
+  trap "$rm \"${ofile}T\"; exit 1" 1 2 15
+  $rm -f "${ofile}T"
+
+  echo creating $ofile
+
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS \
+    AR AR_FLAGS CC LD LN_S NM SHELL \
+    reload_flag reload_cmds wl \
+    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+    library_names_spec soname_spec \
+    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
+    postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
+    old_striplib striplib file_magic_cmd export_symbols_cmds \
+    deplibs_check_method allow_undefined_flag no_undefined_flag \
+    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+    global_symbol_to_c_name_address \
+    hardcode_libdir_flag_spec hardcode_libdir_separator  \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+
+    case $var in
+    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+    extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  cat <<__EOF__ > "${ofile}T"
+#! $SHELL
+
+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$need_lc
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# The default C compiler.
+CC=$lt_CC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_pic_flag
+pic_mode=$pic_mode
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_compiler_c_o
+
+# Can we write directly to a .lo ?
+compiler_o_lo=$lt_compiler_o_lo
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_link_static_flag
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "${ofile}T"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | os2*)
+    cat <<'EOF' >> "${ofile}T"
+      # This is a source program that is used to create dlls on Windows
+      # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+	# This is a source program that is used to create import libraries
+	# on Windows for dlls which lack them. Don't remove nor modify the
+	# starting and closing comments
+# /* impgen.c starts here */
+# /*   Copyright (C) 1999-2000 Free Software Foundation, Inc.
+#
+#  This file is part of GNU libtool.
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#  */
+#
+# #include <stdio.h>		/* for printf() */
+# #include <unistd.h>		/* for open(), lseek(), read() */
+# #include <fcntl.h>		/* for O_RDONLY, O_BINARY */
+# #include <string.h>		/* for strdup() */
+#
+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
+# #ifndef O_BINARY
+# #define O_BINARY 0
+# #endif
+#
+# static unsigned int
+# pe_get16 (fd, offset)
+#      int fd;
+#      int offset;
+# {
+#   unsigned char b[2];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 2);
+#   return b[0] + (b[1]<<8);
+# }
+#
+# static unsigned int
+# pe_get32 (fd, offset)
+#     int fd;
+#     int offset;
+# {
+#   unsigned char b[4];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 4);
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# static unsigned int
+# pe_as32 (ptr)
+#      void *ptr;
+# {
+#   unsigned char *b = ptr;
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# int
+# main (argc, argv)
+#     int argc;
+#     char *argv[];
+# {
+#     int dll;
+#     unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+#     unsigned long export_rva, export_size, nsections, secptr, expptr;
+#     unsigned long name_rvas, nexp;
+#     unsigned char *expdata, *erva;
+#     char *filename, *dll_name;
+#
+#     filename = argv[1];
+#
+#     dll = open(filename, O_RDONLY|O_BINARY);
+#     if (dll < 1)
+# 	return 1;
+#
+#     dll_name = filename;
+#
+#     for (i=0; filename[i]; i++)
+# 	if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
+# 	    dll_name = filename + i +1;
+#
+#     pe_header_offset = pe_get32 (dll, 0x3c);
+#     opthdr_ofs = pe_header_offset + 4 + 20;
+#     num_entries = pe_get32 (dll, opthdr_ofs + 92);
+#
+#     if (num_entries < 1) /* no exports */
+# 	return 1;
+#
+#     export_rva = pe_get32 (dll, opthdr_ofs + 96);
+#     export_size = pe_get32 (dll, opthdr_ofs + 100);
+#     nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+#     secptr = (pe_header_offset + 4 + 20 +
+# 	      pe_get16 (dll, pe_header_offset + 4 + 16));
+#
+#     expptr = 0;
+#     for (i = 0; i < nsections; i++)
+#     {
+# 	char sname[8];
+# 	unsigned long secptr1 = secptr + 40 * i;
+# 	unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+# 	unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+# 	unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+# 	lseek(dll, secptr1, SEEK_SET);
+# 	read(dll, sname, 8);
+# 	if (vaddr <= export_rva && vaddr+vsize > export_rva)
+# 	{
+# 	    expptr = fptr + (export_rva - vaddr);
+# 	    if (export_rva + export_size > vaddr + vsize)
+# 		export_size = vsize - (export_rva - vaddr);
+# 	    break;
+# 	}
+#     }
+#
+#     expdata = (unsigned char*)malloc(export_size);
+#     lseek (dll, expptr, SEEK_SET);
+#     read (dll, expdata, export_size);
+#     erva = expdata - export_rva;
+#
+#     nexp = pe_as32 (expdata+24);
+#     name_rvas = pe_as32 (expdata+32);
+#
+#     printf ("EXPORTS\n");
+#     for (i = 0; i<nexp; i++)
+#     {
+# 	unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+# 	printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+#     }
+#
+#     return 0;
+# }
+# /* impgen.c ends here */
+
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
+
+  mv -f "${ofile}T" "$ofile" || \
+    (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
+  chmod +x "$ofile"
+fi
+##
+## END FIXME
+
+])# _LT_AC_LTCONFIG_HACK
+
+# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
+
+# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
+
+# AC_ENABLE_SHARED - implement the --enable-shared flag
+# Usage: AC_ENABLE_SHARED[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(shared,
+changequote(<<, >>)dnl
+<<  --enable-shared[=PKGS]  build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case $enableval in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
+])
+
+# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)])
+
+# AC_ENABLE_STATIC - implement the --enable-static flag
+# Usage: AC_ENABLE_STATIC[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(static,
+changequote(<<, >>)dnl
+<<  --enable-static[=PKGS]  build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case $enableval in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
+])
+
+# AC_DISABLE_STATIC - set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)])
+
+
+# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
+# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(fast-install,
+changequote(<<, >>)dnl
+<<  --enable-fast-install[=PKGS]  optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case $enableval in
+yes) enable_fast_install=yes ;;
+no) enable_fast_install=no ;;
+*)
+  enable_fast_install=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_fast_install=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
+])
+
+# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)])
+
+# AC_LIBTOOL_PICMODE - implement the --with-pic flag
+# Usage: AC_LIBTOOL_PICMODE[(MODE)]
+#   Where MODE is either `yes' or `no'.  If omitted, it defaults to
+#   `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)])
+
+
+# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    egrep "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])
+
+
+# AC_PATH_MAGIC - find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
+AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])
+
+
+# AC_PROG_LD - find the path to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | [[A-Za-z]]:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+	test "$with_gnu_ld" != no && break
+      else
+	test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])
+
+# AC_PROG_LD_GNU -
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  lt_cv_prog_gnu_ld=yes
+else
+  lt_cv_prog_gnu_ld=no
+fi])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])
+
+# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag,
+[lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+])
+
+# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependant libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* | pw32*)
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.[[012]])
+    lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  ;;
+
+freebsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20*|hpux11*)
+  lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libc.sl
+  ;;
+
+irix5* | irix6*)
+  case $host_os in
+  irix5*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1"
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+sysv5uw[[78]]* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  esac
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+])
+
+
+# AC_PROG_NM - find the path to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
+AC_MSG_CHECKING([for BSD-compatible nm])
+AC_CACHE_VAL(lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm=$ac_dir/${ac_tool_prefix}nm
+    if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+      elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+	lt_cv_path_NM="$tmp_nm -p"
+	break
+      else
+	lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	continue # so that we can try to find one that supports BSD flags
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+AC_MSG_RESULT([$NM])
+])
+
+# AC_CHECK_LIBM - check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32*)
+  # These system don't have libm
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, main, LIBM="-lm")
+  ;;
+esac
+])
+
+# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
+# the libltdl convenience library and INCLTDL to the include flags for
+# the libltdl header and adds --enable-ltdl-convenience to the
+# configure arguments.  Note that LIBLTDL and INCLTDL are not
+# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If DIR is not
+# provided, it is assumed to be `libltdl'.  LIBLTDL will be prefixed
+# with '${top_builddir}/' and INCLTDL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+])
+
+# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
+# the libltdl installable library and INCLTDL to the include flags for
+# the libltdl header and adds --enable-ltdl-install to the configure
+# arguments.  Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is
+# AC_CONFIG_SUBDIRS called.  If DIR is not provided and an installed
+# libltdl is not found, it is assumed to be `libltdl'.  LIBLTDL will
+# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed
+# with '${top_srcdir}/' (note the single quotes!).  If your package is
+# not flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, main,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    INCLTDL=
+  fi
+])
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/autoconf.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/autoconf.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/autoconf.h	(revision 18906)
@@ -0,0 +1,93 @@
+/* autoconf.h.  Generated by configure.  */
+/* autoconf.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define to 1 if you have the `bcopy' function. */
+#define HAVE_BCOPY 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `flock' function. */
+#define HAVE_FLOCK 1
+
+/* Define to 1 if you have the `fsync' function. */
+#define HAVE_FSYNC 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `getopt' function. */
+#define HAVE_GETOPT 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `dbm' library (-ldbm). */
+#define HAVE_LIBDBM 1
+
+/* Define to 1 if you have the `ndbm' library (-lndbm). */
+/* #undef HAVE_LIBNDBM */
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `rename' function. */
+#define HAVE_RENAME 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+
+/* Define to 1 if your `struct stat' has `st_blksize'. Deprecated, use
+   `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */
+/* #undef HAVE_ST_BLKSIZE */
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#define HAVE_SYS_FILE_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "gdbm"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "gdbm 1.8.3"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gdbm"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.8.3"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `long' if <sys/types.h> does not define. */
+/* #undef off_t */
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/autoconf.h.in
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/autoconf.h.in	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/autoconf.h.in	(revision 18906)
@@ -0,0 +1,92 @@
+/* autoconf.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define to 1 if you have the `bcopy' function. */
+#undef HAVE_BCOPY
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `flock' function. */
+#undef HAVE_FLOCK
+
+/* Define to 1 if you have the `fsync' function. */
+#undef HAVE_FSYNC
+
+/* Define to 1 if you have the `ftruncate' function. */
+#undef HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `getopt' function. */
+#undef HAVE_GETOPT
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `dbm' library (-ldbm). */
+#undef HAVE_LIBDBM
+
+/* Define to 1 if you have the `ndbm' library (-lndbm). */
+#undef HAVE_LIBNDBM
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `rename' function. */
+#undef HAVE_RENAME
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if your `struct stat' has `st_blksize'. Deprecated, use
+   `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */
+#undef HAVE_ST_BLKSIZE
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `long' if <sys/types.h> does not define. */
+#undef off_t
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/bucket.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/bucket.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/bucket.c	(revision 18906)
@@ -0,0 +1,337 @@
+/* bucket.c - The routines for playing with hash buckets. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+
+/* Initializing a new hash buckets sets all bucket entries to -1 hash value. */
+void
+_gdbm_new_bucket (dbf, bucket, bits)
+     gdbm_file_info *dbf;
+     hash_bucket *bucket;
+     int bits;
+{
+  int index;
+  
+  /* Initialize the avail block. */
+  bucket->av_count = 0;
+
+  /* Set the information fields first. */
+  bucket->bucket_bits = bits;
+  bucket->count = 0;
+  
+  /* Initialize all bucket elements. */
+  for (index = 0; index < dbf->header->bucket_elems; index++)
+    bucket->h_table[index].hash_value = -1;
+}
+
+
+
+/* Find a bucket for DBF that is pointed to by the bucket directory from
+   location DIR_INDEX.   The bucket cache is first checked to see if it
+   is already in memory.  If not, a bucket may be tossed to read the new
+   bucket.  In any case, the requested bucket is make the "current" bucket
+   and dbf->bucket points to the correct bucket. */
+
+void
+_gdbm_get_bucket (dbf, dir_index)
+     gdbm_file_info *dbf;
+     int dir_index;
+{
+  off_t bucket_adr;	/* The address of the correct hash bucket.  */
+  int   num_bytes;	/* The number of bytes read. */
+  off_t	file_pos;	/* The return address for lseek. */
+  register int index;	/* Loop index. */
+
+  /* Initial set up. */
+  dbf->bucket_dir = dir_index;
+  bucket_adr = dbf->dir [dir_index];
+  
+  if (dbf->bucket_cache == NULL)
+    {
+      if(_gdbm_init_cache(dbf, DEFAULT_CACHESIZE) == -1)
+        _gdbm_fatal(dbf, "couldn't init cache");
+    }
+
+  /* Is that one is not already current, we must find it. */
+  if (dbf->cache_entry->ca_adr != bucket_adr)
+    {
+      /* Look in the cache. */
+      for (index = 0; index < dbf->cache_size; index++)
+        {
+	  if (dbf->bucket_cache[index].ca_adr == bucket_adr)
+	    {
+	      dbf->bucket = dbf->bucket_cache[index].ca_bucket;
+	      dbf->cache_entry = &dbf->bucket_cache[index];
+	      return;
+	    }
+        }
+
+      /* It is not in the cache, read it from the disk. */
+      dbf->last_read = (dbf->last_read + 1) % dbf->cache_size;
+      if (dbf->bucket_cache[dbf->last_read].ca_changed)
+	_gdbm_write_bucket (dbf, &dbf->bucket_cache[dbf->last_read]);
+      dbf->bucket_cache[dbf->last_read].ca_adr = bucket_adr;
+      dbf->bucket = dbf->bucket_cache[dbf->last_read].ca_bucket;
+      dbf->cache_entry = &dbf->bucket_cache[dbf->last_read];
+      dbf->cache_entry->ca_data.elem_loc = -1;
+      dbf->cache_entry->ca_changed = FALSE;
+
+      /* Read the bucket. */
+      file_pos = lseek (dbf->desc, bucket_adr, L_SET);
+      if (file_pos != bucket_adr)
+	_gdbm_fatal (dbf, "lseek error");
+
+      num_bytes = read (dbf->desc, dbf->bucket, dbf->header->bucket_size);
+      if (num_bytes != dbf->header->bucket_size)
+	_gdbm_fatal (dbf, "read error");
+    }
+
+  return;
+}
+
+
+/* Split the current bucket.  This includes moving all items in the bucket to
+   a new bucket.  This doesn't require any disk reads because all hash values
+   are stored in the buckets.  Splitting the current bucket may require
+   doubling the size of the hash directory.  */
+void
+_gdbm_split_bucket (dbf, next_insert)
+     gdbm_file_info *dbf;
+     int next_insert;
+{
+  hash_bucket *bucket[2]; 	/* Pointers to the new buckets. */
+
+  int          new_bits;	/* The number of bits for the new buckets. */
+  int	       cache_0;		/* Location in the cache for the buckets. */
+  int	       cache_1;
+  off_t        adr_0;		/* File address of the new bucket 0. */
+  off_t        adr_1;		/* File address of the new bucket 1. */
+  avail_elem   old_bucket;	/* Avail Struct for the old bucket. */
+
+  off_t        dir_start0;	/* Used in updating the directory. */
+  off_t        dir_start1;
+  off_t        dir_end;
+
+  off_t       *new_dir;		/* Pointer to the new directory. */
+  off_t        dir_adr; 	/* Address of the new directory. */
+  int          dir_size;	/* Size of the new directory. */
+  off_t        old_adr[31]; 	/* Address of the old directories. */
+  int          old_size[31]; 	/* Size of the old directories. */
+  int	       old_count;	/* Number of old directories. */
+
+  int          index;		/* Used in array indexing. */
+  int          index1;		/* Used in array indexing. */
+  int          elem_loc;	/* Location in new bucket to put element. */
+  bucket_element *old_el;	/* Pointer into the old bucket. */
+  int	       select;		/* Used to index bucket during movement. */
+
+
+  /* No directories are yet old. */
+  old_count = 0;
+
+  if (dbf->bucket_cache == NULL)
+    {
+      if(_gdbm_init_cache(dbf, DEFAULT_CACHESIZE) == -1)
+        _gdbm_fatal(dbf, "couldn't init cache");
+    }
+
+  while (dbf->bucket->count == dbf->header->bucket_elems)
+    {
+      /* Initialize the "new" buckets in the cache. */
+      do
+	{
+	  dbf->last_read = (dbf->last_read + 1) % dbf->cache_size;
+	  cache_0 = dbf->last_read;
+	}      
+      while (dbf->bucket_cache[cache_0].ca_bucket == dbf->bucket);
+      bucket[0] = dbf->bucket_cache[cache_0].ca_bucket;
+      if (dbf->bucket_cache[cache_0].ca_changed)
+	_gdbm_write_bucket (dbf, &dbf->bucket_cache[cache_0]);
+      do
+	{
+	  dbf->last_read = (dbf->last_read + 1) % dbf->cache_size;
+	  cache_1 = dbf->last_read;
+	}      
+      while (dbf->bucket_cache[cache_1].ca_bucket == dbf->bucket);
+      bucket[1] = dbf->bucket_cache[cache_1].ca_bucket;
+      if (dbf->bucket_cache[cache_1].ca_changed)
+	_gdbm_write_bucket (dbf, &dbf->bucket_cache[cache_1]);
+      new_bits = dbf->bucket->bucket_bits+1;
+      _gdbm_new_bucket (dbf, bucket[0], new_bits);
+      _gdbm_new_bucket (dbf, bucket[1], new_bits);
+      adr_0 = _gdbm_alloc (dbf, dbf->header->bucket_size); 
+      dbf->bucket_cache[cache_0].ca_adr = adr_0;
+      adr_1 = _gdbm_alloc (dbf, dbf->header->bucket_size);
+      dbf->bucket_cache[cache_1].ca_adr = adr_1;
+
+      
+      
+      /* Double the directory size if necessary. */
+      if (dbf->header->dir_bits == dbf->bucket->bucket_bits)
+	{
+	  dir_size = dbf->header->dir_size * 2;
+	  dir_adr  = _gdbm_alloc (dbf, dir_size);
+	  new_dir  = (off_t *) malloc (dir_size);
+	  if (new_dir == NULL) _gdbm_fatal (dbf, "malloc error");
+	  for (index = 0;
+	  	index < dbf->header->dir_size/sizeof (off_t); index++)
+	    {
+	      new_dir[2*index]   = dbf->dir[index];
+	      new_dir[2*index+1] = dbf->dir[index];
+	    }
+	  
+	  /* Update header. */
+	  old_adr[old_count] = dbf->header->dir;
+	  dbf->header->dir = dir_adr;
+	  old_size[old_count] = dbf->header->dir_size;
+	  dbf->header->dir_size = dir_size;
+	  dbf->header->dir_bits = new_bits;
+	  old_count++;
+	  
+	  /* Now update dbf.  */
+	  dbf->header_changed = TRUE;
+	  dbf->bucket_dir *= 2;
+	  free (dbf->dir);
+	  dbf->dir = new_dir;
+	}
+
+      /* Copy all elements in dbf->bucket into the new buckets. */
+      for (index = 0; index < dbf->header->bucket_elems; index++)
+	{
+	  old_el = & (dbf->bucket->h_table[index]);
+	  select = (old_el->hash_value >> (31-new_bits)) & 1;
+	  elem_loc = old_el->hash_value % dbf->header->bucket_elems;
+	  while (bucket[select]->h_table[elem_loc].hash_value != -1)
+	    elem_loc = (elem_loc + 1) % dbf->header->bucket_elems;
+	  bucket[select]->h_table[elem_loc] = *old_el;
+	  bucket[select]->count += 1;
+	}
+      
+      /* Allocate avail space for the bucket[1]. */
+      bucket[1]->bucket_avail[0].av_adr
+	= _gdbm_alloc (dbf, dbf->header->block_size);
+      bucket[1]->bucket_avail[0].av_size = dbf->header->block_size;
+      bucket[1]->av_count = 1;
+      
+      /* Copy the avail elements in dbf->bucket to bucket[0]. */
+      bucket[0]->av_count = dbf->bucket->av_count;
+      index = 0;
+      index1 = 0;
+      if (bucket[0]->av_count == BUCKET_AVAIL)
+	{
+	  /* The avail is full, move the first one to bucket[1]. */
+	  _gdbm_put_av_elem (dbf->bucket->bucket_avail[0],
+			     bucket[1]->bucket_avail,
+			     &bucket[1]->av_count, FALSE);
+	  index = 1;
+	  bucket[0]->av_count --;
+	}
+      for (; index < dbf->bucket->av_count; index++)
+	{
+	  bucket[0]->bucket_avail[index1++] = dbf->bucket->bucket_avail[index];
+	}
+      
+      /* Update the directory.  We have new file addresses for both buckets. */
+      dir_start1 = (dbf->bucket_dir >> (dbf->header->dir_bits - new_bits)) | 1;
+      dir_end = (dir_start1 + 1) << (dbf->header->dir_bits - new_bits);
+      dir_start1 = dir_start1 << (dbf->header->dir_bits - new_bits);
+      dir_start0 = dir_start1 - (dir_end - dir_start1);
+      for (index = dir_start0; index < dir_start1; index++)
+	dbf->dir[index] = adr_0;
+      for (index = dir_start1; index < dir_end; index++)
+	dbf->dir[index] = adr_1;
+      
+      
+      /* Set changed flags. */
+      dbf->bucket_cache[cache_0].ca_changed = TRUE;
+      dbf->bucket_cache[cache_1].ca_changed = TRUE;
+      dbf->bucket_changed = TRUE;
+      dbf->directory_changed = TRUE;
+      dbf->second_changed = TRUE;
+      
+      /* Update the cache! */
+      dbf->bucket_dir = next_insert >> (31-dbf->header->dir_bits);
+      
+      /* Invalidate old cache entry. */
+      old_bucket.av_adr  = dbf->cache_entry->ca_adr;
+      old_bucket.av_size = dbf->header->bucket_size;
+      dbf->cache_entry->ca_adr = 0;
+      dbf->cache_entry->ca_changed = FALSE;
+      
+      /* Set dbf->bucket to the proper bucket. */
+      if (dbf->dir[dbf->bucket_dir] == adr_0)
+	{
+	  dbf->bucket = bucket[0];
+	  dbf->cache_entry = &dbf->bucket_cache[cache_0];
+	  _gdbm_put_av_elem (old_bucket,
+			     bucket[1]->bucket_avail,
+			     &bucket[1]->av_count, FALSE);
+	}
+      else
+	{
+	  dbf->bucket = bucket[1];
+	  dbf->cache_entry = &dbf->bucket_cache[cache_1];
+	  _gdbm_put_av_elem (old_bucket,
+			     bucket[0]->bucket_avail,
+			     &bucket[0]->av_count, FALSE);
+	}
+      
+    }
+
+  /* Get rid of old directories. */
+  for (index = 0; index < old_count; index++)
+    _gdbm_free (dbf, old_adr[index], old_size[index]);
+}
+
+
+/* The only place where a bucket is written.  CA_ENTRY is the
+   cache entry containing the bucket to be written. */
+
+void
+_gdbm_write_bucket (dbf, ca_entry)
+     gdbm_file_info *dbf;
+     cache_elem *ca_entry;
+{
+  int  num_bytes;	/* The return value for write. */
+  off_t file_pos;	/* The return value for lseek. */
+  
+  file_pos = lseek (dbf->desc, ca_entry->ca_adr, L_SET);
+  if (file_pos != ca_entry->ca_adr)
+    _gdbm_fatal (dbf, "lseek error");
+  num_bytes = write (dbf->desc, ca_entry->ca_bucket, dbf->header->bucket_size);
+  if (num_bytes != dbf->header->bucket_size)
+    _gdbm_fatal (dbf, "write error");
+  ca_entry->ca_changed = FALSE;
+  ca_entry->ca_data.hash_val = -1;
+  ca_entry->ca_data.elem_loc = -1;
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/close.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/close.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/close.c	(revision 18906)
@@ -0,0 +1,55 @@
+/* close.c - Close the "original" style database. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the original author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+    The author of this file is:
+       e-mail:  downsj@downsj.com
+
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+
+/* it's unclear whether dbmclose() is *always* a void function in old
+   C libraries. we use int, here. */
+
+int
+dbmclose()
+{
+  if (_gdbm_file != NULL)
+    {
+      gdbm_close (_gdbm_file);
+      _gdbm_file = NULL;
+      if (_gdbm_memory.dptr != NULL) free(_gdbm_memory.dptr);
+      _gdbm_memory.dptr = NULL;
+      _gdbm_memory.dsize = 0;
+    }
+  return (0);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/config.guess
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/config.guess	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/config.guess	(revision 18906)
@@ -0,0 +1,1363 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-09-03'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# This shell variable is my proudest work .. or something. --bje
+
+set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
+(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
+   || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
+dummy=$tmpdir/dummy ;
+files="$dummy.c $dummy.o $dummy.rel $dummy" ;
+trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	rm -f $files ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ;
+unset files'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit 0 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    macppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	eval $set_cc_for_build
+	cat <<EOF >$dummy.s
+	.data
+\$Lformat:
+	.byte 37,100,45,37,120,10,0	# "%d-%x\n"
+
+	.text
+	.globl main
+	.align 4
+	.ent main
+main:
+	.frame \$30,16,\$26,0
+	ldgp \$29,0(\$27)
+	.prologue 1
+	.long 0x47e03d80 # implver \$0
+	lda \$2,-1
+	.long 0x47e20c21 # amask \$2,\$1
+	lda \$16,\$Lformat
+	mov \$0,\$17
+	not \$1,\$18
+	jsr \$26,printf
+	ldgp \$29,0(\$26)
+	mov 0,\$16
+	jsr \$26,exit
+	.end main
+EOF
+	$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+	if test "$?" = 0 ; then
+		case `$dummy` in
+			0-0)
+				UNAME_MACHINE="alpha"
+				;;
+			1-0)
+				UNAME_MACHINE="alphaev5"
+				;;
+			1-1)
+				UNAME_MACHINE="alphaev56"
+				;;
+			1-101)
+				UNAME_MACHINE="alphapca56"
+				;;
+			2-303)
+				UNAME_MACHINE="alphaev6"
+				;;
+			2-307)
+				UNAME_MACHINE="alphaev67"
+				;;
+			2-1307)
+				UNAME_MACHINE="alphaev68"
+				;;
+			3-1307)
+				UNAME_MACHINE="alphaev7"
+				;;
+		esac
+	fi
+	rm -f $dummy.s $dummy && rmdir $tmpdir
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit 0 ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit 0;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit 0 ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit 0 ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit 0;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit 0;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit 0 ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7 && exit 0 ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit 0 ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit 0 ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit 0 ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit 0 ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD $dummy.c -o $dummy \
+	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+	rm -f $dummy.c $dummy && rmdir $tmpdir
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit 0 ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit 0 ;;
+    Night_Hawk:*:*:PowerMAX_OS)
+	echo powerpc-harris-powermax
+	exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit 0 ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit 0 ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit 0 ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit 0 ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit 0 ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit 0 ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit 0 ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit 0 ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		$CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+		rm -f $dummy.c $dummy && rmdir $tmpdir
+		echo rs6000-ibm-aix3.2.5
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit 0 ;;
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit 0 ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit 0 ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy`
+		    if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+		    rm -f $dummy.c $dummy && rmdir $tmpdir
+		fi ;;
+	esac
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+	rm -f $dummy.c $dummy && rmdir $tmpdir
+	echo unknown-hitachi-hiuxwe2
+	exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit 0 ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit 0 ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit 0 ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit 0 ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*T3D:*:*:*)
+	echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:FreeBSD:*:*)
+	# Determine whether the default compiler uses glibc.
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#if __GLIBC__ >= 2
+	LIBC=gnu
+	#else
+	LIBC=
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	rm -f $dummy.c && rmdir $tmpdir
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit 0 ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit 0 ;;
+    x86:Interix*:3*)
+	echo i386-pc-interix3
+	exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i386-pc-interix
+	exit 0 ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit 0 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit 0 ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	rm -f $dummy.c && rmdir $tmpdir
+	test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+	;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit 0 ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit 0 ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit 0 ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit 0 ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit 0 ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0 ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit 0 ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#ifdef __INTEL_COMPILER
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	rm -f $dummy.c && rmdir $tmpdir
+	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit 0 ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit 0 ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit 0 ;;
+    i*86:*:5:[78]*)
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit 0 ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit 0 ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit 0 ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit 0 ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit 0 ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit 0 ;;
+    M68*:*:R3V[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit 0 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit 0 ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit 0 ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit 0 ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit 0 ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit 0 ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit 0 ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit 0 ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit 0 ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Darwin:*:*)
+	echo `uname -p`-apple-darwin${UNAME_RELEASE}
+	exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit 0 ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit 0 ;;
+    NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit 0 ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit 0 ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit 0 ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit 0 ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit 0 ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit 0 ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit 0 ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit 0 ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit 0 ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit 0 ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+rm -f $dummy.c $dummy && rmdir $tmpdir
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit 0 ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit 0 ;;
+    c34*)
+	echo c34-convex-bsd
+	exit 0 ;;
+    c38*)
+	echo c38-convex-bsd
+	exit 0 ;;
+    c4*)
+	echo c4-convex-bsd
+	exit 0 ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/config.log
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/config.log	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/config.log	(revision 18906)
@@ -0,0 +1,675 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by gdbm configure 1.8.3, which was
+generated by GNU Autoconf 2.54.  Invocation command line was
+
+  $ ./configure --disable-shared --enable-static
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = rata.cs.waikato.ac.nz
+uname -m = i386
+uname -r = 9.2.1
+uname -s = Darwin
+uname -v = Darwin Kernel Version 9.2.1: Tue Feb  5 23:08:45 PST 2008; root:xnu-1228.4.20~1/RELEASE_I386
+
+/usr/bin/uname -p = i386
+/bin/uname -X     = unknown
+
+/bin/arch              = unknown
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+hostinfo               = Mach kernel version:
+	 Darwin Kernel Version 9.2.1: Tue Feb  5 23:08:45 PST 2008; root:xnu-1228.4.20~1/RELEASE_I386
+Kernel configured for up to 2 processors.
+2 processors are physically available.
+2 processors are logically available.
+Processor type: i486 (Intel 80486)
+Processors active: 0 1
+Primary memory available: 2.00 gigabytes
+Default processor set: 63 tasks, 250 threads, 2 processors
+Load average: 0.56, Mach factor: 1.43
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /usr/bin
+PATH: /bin
+PATH: /usr/sbin
+PATH: /sbin
+PATH: /usr/local/bin
+PATH: /usr/texbin
+PATH: /usr/X11/bin
+PATH: /Volumes/Research/oranfry/release-kits/mark2/bin
+PATH: /Applications/TextEdit.app/Contents/MacOS
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:1460: checking for gcc
+configure:1476: found /usr/bin/gcc
+configure:1486: result: gcc
+configure:1728: checking for C compiler version
+configure:1731: gcc --version </dev/null >&5
+i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5480)
+Copyright (C) 2005 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:1734: $? = 0
+configure:1736: gcc -v </dev/null >&5
+Using built-in specs.
+Target: i686-apple-darwin9
+Configured with: /var/tmp/gcc/gcc-5480~3/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=powerpc-apple-darwin9 --with-arch=apple --with-tune=generic --program-prefix= --host=i686-apple-darwin9 --target=i686-apple-darwin9
+Thread model: posix
+gcc version 4.0.1 (Apple Inc. build 5480)
+configure:1739: $? = 0
+configure:1741: gcc -V </dev/null >&5
+gcc-4.0: argument to `-V' is missing
+configure:1744: $? = 1
+configure:1764: checking for C compiler default output
+configure:1767: gcc    conftest.c  >&5
+configure:1770: $? = 0
+configure:1804: result: a.out
+configure:1809: checking whether the C compiler works
+configure:1815: ./a.out
+configure:1818: $? = 0
+configure:1833: result: yes
+configure:1840: checking whether we are cross compiling
+configure:1842: result: no
+configure:1845: checking for suffix of executables
+configure:1847: gcc -o conftest    conftest.c  >&5
+configure:1850: $? = 0
+configure:1873: result: 
+configure:1879: checking for suffix of object files
+configure:1897: gcc -c   conftest.c >&5
+configure:1900: $? = 0
+configure:1919: result: o
+configure:1923: checking whether we are using the GNU C compiler
+configure:1944: gcc -c   conftest.c >&5
+configure:1947: $? = 0
+configure:1950: test -s conftest.o
+configure:1953: $? = 0
+configure:1965: result: yes
+configure:1971: checking whether gcc accepts -g
+configure:1989: gcc -c -g  conftest.c >&5
+configure:1992: $? = 0
+configure:1995: test -s conftest.o
+configure:1998: $? = 0
+configure:2008: result: yes
+configure:2025: checking for gcc option to accept ANSI C
+configure:2082: gcc  -c -g -O2  conftest.c >&5
+configure:2085: $? = 0
+configure:2088: test -s conftest.o
+configure:2091: $? = 0
+configure:2108: result: none needed
+configure:2126: gcc -c -g -O2  conftest.c >&5
+conftest.c:2: error: syntax error before 'me'
+configure:2129: $? = 1
+configure: failed program was:
+#ifndef __cplusplus
+  choke me
+#endif
+configure:2232: checking how to run the C preprocessor
+configure:2258: gcc -E  conftest.c
+configure:2264: $? = 0
+configure:2291: gcc -E  conftest.c
+configure:2287:28: error: ac_nonexistent.h: No such file or directory
+configure:2297: $? = 1
+configure: failed program was:
+#line 2286 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+configure:2334: result: gcc -E
+configure:2349: gcc -E  conftest.c
+configure:2355: $? = 0
+configure:2382: gcc -E  conftest.c
+configure:2378:28: error: ac_nonexistent.h: No such file or directory
+configure:2388: $? = 1
+configure: failed program was:
+#line 2377 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+configure:2464: checking for a BSD-compatible install
+configure:2518: result: /usr/bin/install -c
+configure:2601: checking build system type
+configure:2619: result: i386-apple-darwin9.2.1
+configure:2627: checking host system type
+configure:2641: result: i386-apple-darwin9.2.1
+configure:2671: checking for ld used by GCC
+configure:2734: result: /usr/libexec/gcc/i686-apple-darwin9/4.0.1/ld
+configure:2743: checking if the linker (/usr/libexec/gcc/i686-apple-darwin9/4.0.1/ld) is GNU ld
+configure:2755: result: no
+configure:2760: checking for /usr/libexec/gcc/i686-apple-darwin9/4.0.1/ld option to reload object files
+configure:2767: result: -r
+configure:2772: checking for BSD-compatible nm
+configure:2808: result: /usr/bin/nm -p
+configure:2811: checking whether ln -s works
+configure:2815: result: yes
+configure:2822: checking how to recognise dependant libraries
+configure:3000: result: file_magic Mach-O dynamically linked shared library
+configure:3013: checking command to parse /usr/bin/nm -p output
+configure:3094: gcc -c -g -O2  conftest.c >&5
+configure:3097: $? = 0
+configure:3101: /usr/bin/nm -p conftest.o \| sed -n -e 's/^.*[ 	]\([BCDEGRST][BCDEGRST]*\)[ 	][ 	]*\(\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p' \> conftest.nm
+configure:3104: $? = 0
+cannot find nm_test_var in conftest.nm
+configure:3094: gcc -c -g -O2  conftest.c >&5
+configure:3097: $? = 0
+configure:3101: /usr/bin/nm -p conftest.o \| sed -n -e 's/^.*[ 	]\([BCDEGRST][BCDEGRST]*\)[ 	][ 	]*\(_\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p' \> conftest.nm
+configure:3104: $? = 0
+configure:3156: gcc -o conftest -g -O2   conftest.c conftstm.o >&5
+configure:3159: $? = 0
+configure:3203: result: ok
+configure:3208: checking for egrep
+configure:3218: result: grep -E
+configure:3223: checking for ANSI C header files
+configure:3237: gcc -E  conftest.c
+configure:3243: $? = 0
+configure:3330: gcc -o conftest -g -O2   conftest.c  >&5
+configure: In function 'main':
+configure:3321: warning: incompatible implicit declaration of built-in function 'exit'
+configure:3333: $? = 0
+configure:3335: ./conftest
+configure:3338: $? = 0
+configure:3352: result: yes
+configure:3376: checking for sys/types.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3376: checking for sys/stat.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3376: checking for stdlib.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3376: checking for string.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3376: checking for memory.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3376: checking for strings.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3376: checking for inttypes.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3376: checking for stdint.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3376: checking for unistd.h
+configure:3389: gcc -c -g -O2  conftest.c >&5
+configure:3392: $? = 0
+configure:3395: test -s conftest.o
+configure:3398: $? = 0
+configure:3408: result: yes
+configure:3434: checking dlfcn.h usability
+configure:3443: gcc -c -g -O2  conftest.c >&5
+configure:3446: $? = 0
+configure:3449: test -s conftest.o
+configure:3452: $? = 0
+configure:3461: result: yes
+configure:3465: checking dlfcn.h presence
+configure:3472: gcc -E  conftest.c
+configure:3478: $? = 0
+configure:3496: result: yes
+configure:3514: checking for dlfcn.h
+configure:3521: result: yes
+configure:3718: checking for ranlib
+configure:3734: found /usr/bin/ranlib
+configure:3745: result: ranlib
+configure:3798: checking for strip
+configure:3814: found /usr/bin/strip
+configure:3825: result: strip
+configure:4032: checking for objdir
+configure:4043: result: .libs
+configure:4064: checking for gcc option to produce PIC
+configure:4214: result: -fno-common
+configure:4218: checking if gcc PIC flag -fno-common works
+configure:4238: gcc -c -g -O2 -fno-common -DPIC  conftest.c >&5
+configure:4241: $? = 0
+configure:4244: test -s conftest.o
+configure:4247: $? = 0
+configure:4284: result: yes
+configure:4304: checking if gcc static flag -static works
+configure:4325: gcc -o conftest -g -O2   -static conftest.c  >&5
+ld_classic: can't locate file for: -lcrt0.o
+collect2: ld returned 1 exit status
+configure:4328: $? = 1
+configure: failed program was:
+#line 4312 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+configure:4349: result: no
+configure:4365: checking if gcc supports -c -o file.o
+configure:4385: gcc -c -g -O2 -o out/conftest2.o  conftest.c >&5
+configure:4409: result: yes
+configure:4414: checking if gcc supports -c -o file.lo
+configure:4438: gcc -c -g -O2 -c -o conftest.lo  conftest.c >&5
+configure:4441: $? = 0
+configure:4444: test -s conftest.lo
+configure:4447: $? = 0
+configure:4468: result: yes
+configure:4507: checking if gcc supports -fno-rtti -fno-exceptions
+configure:4526: gcc -c -g -O2 -fno-rtti -fno-exceptions -c conftest.c  conftest.c >&5
+cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not for C
+cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not for C
+configure:4529: $? = 0
+configure:4532: test -s conftest.o
+configure:4535: $? = 0
+configure:4551: result: yes
+configure:4566: checking whether the linker (/usr/libexec/gcc/i686-apple-darwin9/4.0.1/ld) supports shared libraries
+configure:5246: result: yes
+configure:5255: checking how to hardcode library paths into programs
+configure:5279: result: unsupported
+configure:5288: checking whether stripping libraries is possible
+configure:5296: result: no
+configure:5308: checking dynamic linker characteristics
+configure:5701: result: darwin9.2.1 dyld
+configure:5710: checking if libtool supports shared libraries
+configure:5712: result: yes
+configure:5719: checking whether to build shared libraries
+configure:5740: result: no
+configure:5747: checking whether to build static libraries
+configure:5751: result: yes
+configure:6998: checking for an ANSI C-conforming const
+configure:7062: gcc -c -g -O2  conftest.c >&5
+configure:7065: $? = 0
+configure:7068: test -s conftest.o
+configure:7071: $? = 0
+configure:7081: result: yes
+configure:7102: checking for stdlib.h
+configure:7107: result: yes
+configure:7102: checking for string.h
+configure:7107: result: yes
+configure:7111: checking sys/file.h usability
+configure:7120: gcc -c -g -O2  conftest.c >&5
+configure:7123: $? = 0
+configure:7126: test -s conftest.o
+configure:7129: $? = 0
+configure:7138: result: yes
+configure:7142: checking sys/file.h presence
+configure:7149: gcc -E  conftest.c
+configure:7155: $? = 0
+configure:7173: result: yes
+configure:7191: checking for sys/file.h
+configure:7198: result: yes
+configure:7102: checking for unistd.h
+configure:7107: result: yes
+configure:7111: checking fcntl.h usability
+configure:7120: gcc -c -g -O2  conftest.c >&5
+configure:7123: $? = 0
+configure:7126: test -s conftest.o
+configure:7129: $? = 0
+configure:7138: result: yes
+configure:7142: checking fcntl.h presence
+configure:7149: gcc -E  conftest.c
+configure:7155: $? = 0
+configure:7173: result: yes
+configure:7191: checking for fcntl.h
+configure:7198: result: yes
+configure:7102: checking for sys/types.h
+configure:7107: result: yes
+configure:7111: checking memory.y usability
+configure:7120: gcc -c -g -O2  conftest.c >&5
+configure:7148:20: error: memory.y: No such file or directory
+configure:7123: $? = 1
+configure: failed program was:
+#line 7113 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <memory.y>
+configure:7138: result: no
+configure:7142: checking memory.y presence
+configure:7149: gcc -E  conftest.c
+configure:7145:20: error: memory.y: No such file or directory
+configure:7155: $? = 1
+configure: failed program was:
+#line 7144 "configure"
+#include "confdefs.h"
+#include <memory.y>
+configure:7173: result: no
+configure:7191: checking for memory.y
+configure:7198: result: no
+configure:7212: checking for main in -ldbm
+configure:7233: gcc -o conftest -g -O2   conftest.c -ldbm   >&5
+configure:7236: $? = 0
+configure:7239: test -s conftest
+configure:7242: $? = 0
+configure:7253: result: yes
+configure:7265: checking for main in -lndbm
+configure:7286: gcc -o conftest -g -O2   conftest.c -lndbm  -ldbm  >&5
+ld: library not found for -lndbm
+collect2: ld returned 1 exit status
+configure:7289: $? = 1
+configure: failed program was:
+#line 7272 "configure"
+#include "confdefs.h"
+
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+configure:7306: result: no
+configure:7325: checking for rename
+configure:7362: gcc -o conftest -g -O2   conftest.c -ldbm  >&5
+configure:7365: $? = 0
+configure:7368: test -s conftest
+configure:7371: $? = 0
+configure:7381: result: yes
+configure:7325: checking for ftruncate
+configure:7362: gcc -o conftest -g -O2   conftest.c -ldbm  >&5
+configure:7365: $? = 0
+configure:7368: test -s conftest
+configure:7371: $? = 0
+configure:7381: result: yes
+configure:7325: checking for flock
+configure:7362: gcc -o conftest -g -O2   conftest.c -ldbm  >&5
+configure:7365: $? = 0
+configure:7368: test -s conftest
+configure:7371: $? = 0
+configure:7381: result: yes
+configure:7325: checking for bcopy
+configure:7362: gcc -o conftest -g -O2   conftest.c -ldbm  >&5
+configure:7340: warning: conflicting types for built-in function 'bcopy'
+configure:7365: $? = 0
+configure:7368: test -s conftest
+configure:7371: $? = 0
+configure:7381: result: yes
+configure:7325: checking for fsync
+configure:7362: gcc -o conftest -g -O2   conftest.c -ldbm  >&5
+configure:7365: $? = 0
+configure:7368: test -s conftest
+configure:7371: $? = 0
+configure:7381: result: yes
+configure:7395: checking for getopt
+configure:7432: gcc -o conftest -g -O2   conftest.c -ldbm  >&5
+configure:7435: $? = 0
+configure:7438: test -s conftest
+configure:7441: $? = 0
+configure:7451: result: yes
+configure:7464: checking for off_t
+configure:7485: gcc -c -g -O2  conftest.c >&5
+configure:7488: $? = 0
+configure:7491: test -s conftest.o
+configure:7494: $? = 0
+configure:7504: result: yes
+configure:7516: checking for struct stat.st_blksize
+configure:7536: gcc -c -g -O2  conftest.c >&5
+configure:7539: $? = 0
+configure:7542: test -s conftest.o
+configure:7545: $? = 0
+configure:7587: result: yes
+configure:7695: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by gdbm config.status 1.8.3, which was
+generated by GNU Autoconf 2.54.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on rata.cs.waikato.ac.nz
+
+config.status:607: creating Makefile
+config.status:711: creating autoconf.h
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_build=i386-apple-darwin9.2.1
+ac_cv_build_alias=i386-apple-darwin9.2.1
+ac_cv_c_compiler_gnu=yes
+ac_cv_c_const=yes
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_exeext=
+ac_cv_func_bcopy=yes
+ac_cv_func_flock=yes
+ac_cv_func_fsync=yes
+ac_cv_func_ftruncate=yes
+ac_cv_func_getopt=yes
+ac_cv_func_rename=yes
+ac_cv_header_dlfcn_h=yes
+ac_cv_header_fcntl_h=yes
+ac_cv_header_inttypes_h=yes
+ac_cv_header_memory_h=yes
+ac_cv_header_memory_y=no
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=yes
+ac_cv_header_stdlib_h=yes
+ac_cv_header_string_h=yes
+ac_cv_header_strings_h=yes
+ac_cv_header_sys_file_h=yes
+ac_cv_header_sys_stat_h=yes
+ac_cv_header_sys_types_h=yes
+ac_cv_header_unistd_h=yes
+ac_cv_host=i386-apple-darwin9.2.1
+ac_cv_host_alias=i386-apple-darwin9.2.1
+ac_cv_lib_dbm_main=yes
+ac_cv_lib_ndbm_main=no
+ac_cv_member_struct_stat_st_blksize=yes
+ac_cv_objext=o
+ac_cv_path_install='/usr/bin/install -c'
+ac_cv_prog_CPP='gcc -E'
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_ac_ct_RANLIB=ranlib
+ac_cv_prog_ac_ct_STRIP=strip
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cc_stdc=
+ac_cv_prog_egrep='grep -E'
+ac_cv_type_off_t=yes
+lt_cv_compiler_c_o=yes
+lt_cv_compiler_o_lo=yes
+lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+lt_cv_file_magic_cmd='/usr/bin/file -L'
+lt_cv_file_magic_test_file=/usr/lib/libSystem.dylib
+lt_cv_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/  {\"\1\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \([^ ]*\) \([^ ]*\)$/  {"\2", (lt_ptr) \&\2},/p'\'''
+lt_cv_global_symbol_to_cdecl='sed -n -e '\''s/^. .* \(.*\)$/extern char \1;/p'\'''
+lt_cv_ld_reload_flag=-r
+lt_cv_path_LD=/usr/libexec/gcc/i686-apple-darwin9/4.0.1/ld
+lt_cv_path_NM='/usr/bin/nm -p'
+lt_cv_prog_cc_can_build_shared=yes
+lt_cv_prog_cc_no_builtin=
+lt_cv_prog_cc_pic=' -fno-common'
+lt_cv_prog_cc_pic_works=yes
+lt_cv_prog_cc_shlib=
+lt_cv_prog_cc_static=
+lt_cv_prog_cc_static_works=no
+lt_cv_prog_cc_wl=-Wl,
+lt_cv_prog_gnu_ld=no
+lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ 	]\([BCDEGRST][BCDEGRST]*\)[ 	][ 	]*\(_\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p'\'''
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+CC='gcc'
+CFLAGS='-g -O2'
+CPP='gcc -E'
+CPPFLAGS=''
+DEFS='-DHAVE_CONFIG_H'
+ECHO='/bin/echo'
+ECHO_C='ECHO_N=''
+ECHO_T=''
+EGREP='grep -E'
+EXEEXT=''
+INSTALL_DATA='${INSTALL} -m 644'
+INSTALL_PROGRAM='${INSTALL}'
+INSTALL_SCRIPT='${INSTALL}'
+LDFLAGS=''
+LIBOBJS=''
+LIBS='-ldbm '
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+LN_S='ln -s'
+LTLIBOBJS=''
+OBJEXT='o'
+PACKAGE_BUGREPORT=''
+PACKAGE_NAME='gdbm'
+PACKAGE_STRING='gdbm 1.8.3'
+PACKAGE_TARNAME='gdbm'
+PACKAGE_VERSION='1.8.3'
+PATH_SEPARATOR=':'
+RANLIB='ranlib'
+SHELL='/bin/sh'
+STRIP='strip'
+ac_ct_CC='gcc'
+ac_ct_RANLIB='ranlib'
+ac_ct_STRIP='strip'
+bindir='${exec_prefix}/bin'
+build='i386-apple-darwin9.2.1'
+build_alias=''
+build_cpu='i386'
+build_os='darwin9.2.1'
+build_vendor='apple'
+datadir='${prefix}/share'
+exec_prefix='${prefix}'
+host='i386-apple-darwin9.2.1'
+host_alias=''
+host_cpu='i386'
+host_os='darwin9.2.1'
+host_vendor='apple'
+includedir='${prefix}/include'
+infodir='${prefix}/info'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localstatedir='${prefix}/var'
+mandir='${prefix}/man'
+oldincludedir='/usr/include'
+prefix='/usr/local'
+program_transform_name='s,x,x,'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+#define HAVE_BCOPY 1
+#define HAVE_DLFCN_H 1
+#define HAVE_FCNTL_H 1
+#define HAVE_FLOCK 1
+#define HAVE_FSYNC 1
+#define HAVE_FTRUNCATE 1
+#define HAVE_GETOPT 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_LIBDBM 1
+#define HAVE_MEMORY_H 1
+#define HAVE_RENAME 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_STRING_H 1
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+#define HAVE_SYS_FILE_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_UNISTD_H 1
+#define PACKAGE_BUGREPORT ""
+#define PACKAGE_NAME "gdbm"
+#define PACKAGE_STRING "gdbm 1.8.3"
+#define PACKAGE_TARNAME "gdbm"
+#define PACKAGE_VERSION "1.8.3"
+#define STDC_HEADERS 1
+
+configure: exit 0
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/config.status
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/config.status	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/config.status	(revision 18906)
@@ -0,0 +1,891 @@
+#! /bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+SHELL=${CONFIG_SHELL-/bin/sh}
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
+do
+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conftest.sh
+  echo  "exit 0"   >>conftest.sh
+  chmod +x conftest.sh
+  if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conftest.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by gdbm $as_me 1.8.3, which was
+generated by GNU Autoconf 2.54.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+config_files=" Makefile"
+config_headers=" autoconf.h"
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+ac_cs_version="\
+gdbm config.status 1.8.3
+configured by ./configure, generated by GNU Autoconf 2.54,
+  with options \"'--disable-shared' '--enable-static'\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=.
+INSTALL="/usr/bin/install -c"
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running /bin/sh ./configure " '--disable-shared' '--enable-static' " --no-create --no-recursion"
+    exec /bin/sh ./configure '--disable-shared' '--enable-static' --no-create --no-recursion ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "autoconf.h" ) CONFIG_HEADERS="$CONFIG_HEADERS autoconf.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=$TMPDIR/cs$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+   { (exit 1); exit 1; }
+}
+
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
+s,@SHELL@,/bin/sh,;t t
+s,@PATH_SEPARATOR@,:,;t t
+s,@PACKAGE_NAME@,gdbm,;t t
+s,@PACKAGE_TARNAME@,gdbm,;t t
+s,@PACKAGE_VERSION@,1.8.3,;t t
+s,@PACKAGE_STRING@,gdbm 1.8.3,;t t
+s,@PACKAGE_BUGREPORT@,,;t t
+s,@exec_prefix@,${prefix},;t t
+s,@prefix@,/usr/local,;t t
+s,@program_transform_name@,s,x,x,,;t t
+s,@bindir@,${exec_prefix}/bin,;t t
+s,@sbindir@,${exec_prefix}/sbin,;t t
+s,@libexecdir@,${exec_prefix}/libexec,;t t
+s,@datadir@,${prefix}/share,;t t
+s,@sysconfdir@,${prefix}/etc,;t t
+s,@sharedstatedir@,${prefix}/com,;t t
+s,@localstatedir@,${prefix}/var,;t t
+s,@libdir@,${exec_prefix}/lib,;t t
+s,@includedir@,${prefix}/include,;t t
+s,@oldincludedir@,/usr/include,;t t
+s,@infodir@,${prefix}/info,;t t
+s,@mandir@,${prefix}/man,;t t
+s,@build_alias@,,;t t
+s,@host_alias@,,;t t
+s,@target_alias@,,;t t
+s,@DEFS@,-DHAVE_CONFIG_H,;t t
+s,@ECHO_C@,\c,;t t
+s,@ECHO_N@,,;t t
+s,@ECHO_T@,,;t t
+s,@LIBS@,-ldbm ,;t t
+s,@CC@,gcc,;t t
+s,@CFLAGS@,-g -O2,;t t
+s,@LDFLAGS@,,;t t
+s,@CPPFLAGS@,,;t t
+s,@ac_ct_CC@,gcc,;t t
+s,@EXEEXT@,,;t t
+s,@OBJEXT@,o,;t t
+s,@CPP@,gcc -E,;t t
+s,@INSTALL_PROGRAM@,${INSTALL},;t t
+s,@INSTALL_SCRIPT@,${INSTALL},;t t
+s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
+s,@build@,i386-apple-darwin9.2.1,;t t
+s,@build_cpu@,i386,;t t
+s,@build_vendor@,apple,;t t
+s,@build_os@,darwin9.2.1,;t t
+s,@host@,i386-apple-darwin9.2.1,;t t
+s,@host_cpu@,i386,;t t
+s,@host_vendor@,apple,;t t
+s,@host_os@,darwin9.2.1,;t t
+s,@LN_S@,ln -s,;t t
+s,@ECHO@,/bin/echo,;t t
+s,@RANLIB@,ranlib,;t t
+s,@ac_ct_RANLIB@,ranlib,;t t
+s,@STRIP@,strip,;t t
+s,@ac_ct_STRIP@,strip,;t t
+s,@EGREP@,grep -E,;t t
+s,@LIBTOOL@,$(SHELL) $(top_builddir)/libtool,;t t
+s,@LIBOBJS@,,;t t
+s,@LTLIBOBJS@,,;t t
+CEOF
+
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+  	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+  	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+                                     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  sed "/^[ 	]*VPATH[ 	]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ 	]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ 	]*$//;
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
+ac_dB='[ 	].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[ 	]*$//' $ac_file_inputs >$tmp/in
+
+  # Handle all the #define templates only if necessary.
+  if grep "^[ 	]*#[ 	]*define" $tmp/in >/dev/null; then
+  # If there are no defines, we may have an empty if/fi
+  :
+  cat >$tmp/defines.sed <<CEOF
+/^[ 	]*#[ 	]*define/!b
+t clr
+: clr
+${ac_dA}PACKAGE_NAME${ac_dB}PACKAGE_NAME${ac_dC}"gdbm"${ac_dD}
+${ac_dA}PACKAGE_TARNAME${ac_dB}PACKAGE_TARNAME${ac_dC}"gdbm"${ac_dD}
+${ac_dA}PACKAGE_VERSION${ac_dB}PACKAGE_VERSION${ac_dC}"1.8.3"${ac_dD}
+${ac_dA}PACKAGE_STRING${ac_dB}PACKAGE_STRING${ac_dC}"gdbm 1.8.3"${ac_dD}
+${ac_dA}PACKAGE_BUGREPORT${ac_dB}PACKAGE_BUGREPORT${ac_dC}""${ac_dD}
+${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_TYPES_H${ac_dB}HAVE_SYS_TYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_STAT_H${ac_dB}HAVE_SYS_STAT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRINGS_H${ac_dB}HAVE_STRINGS_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_INTTYPES_H${ac_dB}HAVE_INTTYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDINT_H${ac_dB}HAVE_STDINT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_DLFCN_H${ac_dB}HAVE_DLFCN_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_FILE_H${ac_dB}HAVE_SYS_FILE_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_FCNTL_H${ac_dB}HAVE_FCNTL_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_TYPES_H${ac_dB}HAVE_SYS_TYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_LIBDBM${ac_dB}HAVE_LIBDBM${ac_dC}1${ac_dD}
+${ac_dA}HAVE_RENAME${ac_dB}HAVE_RENAME${ac_dC}1${ac_dD}
+${ac_dA}HAVE_FTRUNCATE${ac_dB}HAVE_FTRUNCATE${ac_dC}1${ac_dD}
+${ac_dA}HAVE_FLOCK${ac_dB}HAVE_FLOCK${ac_dC}1${ac_dD}
+${ac_dA}HAVE_BCOPY${ac_dB}HAVE_BCOPY${ac_dC}1${ac_dD}
+${ac_dA}HAVE_FSYNC${ac_dB}HAVE_FSYNC${ac_dC}1${ac_dD}
+${ac_dA}HAVE_GETOPT${ac_dB}HAVE_GETOPT${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRUCT_STAT_ST_BLKSIZE${ac_dB}HAVE_STRUCT_STAT_ST_BLKSIZE${ac_dC}1${ac_dD}
+CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+
+  fi # grep
+
+  # Handle all the #undef templates
+  cat >$tmp/undefs.sed <<CEOF
+/^[ 	]*#[ 	]*undef/!b
+t clr
+: clr
+${ac_uA}PACKAGE_NAME${ac_uB}PACKAGE_NAME${ac_uC}"gdbm"${ac_uD}
+${ac_uA}PACKAGE_TARNAME${ac_uB}PACKAGE_TARNAME${ac_uC}"gdbm"${ac_uD}
+${ac_uA}PACKAGE_VERSION${ac_uB}PACKAGE_VERSION${ac_uC}"1.8.3"${ac_uD}
+${ac_uA}PACKAGE_STRING${ac_uB}PACKAGE_STRING${ac_uC}"gdbm 1.8.3"${ac_uD}
+${ac_uA}PACKAGE_BUGREPORT${ac_uB}PACKAGE_BUGREPORT${ac_uC}""${ac_uD}
+${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_TYPES_H${ac_uB}HAVE_SYS_TYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_STAT_H${ac_uB}HAVE_SYS_STAT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRINGS_H${ac_uB}HAVE_STRINGS_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_INTTYPES_H${ac_uB}HAVE_INTTYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDINT_H${ac_uB}HAVE_STDINT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_DLFCN_H${ac_uB}HAVE_DLFCN_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_FILE_H${ac_uB}HAVE_SYS_FILE_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_FCNTL_H${ac_uB}HAVE_FCNTL_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_TYPES_H${ac_uB}HAVE_SYS_TYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_LIBDBM${ac_uB}HAVE_LIBDBM${ac_uC}1${ac_uD}
+${ac_uA}HAVE_RENAME${ac_uB}HAVE_RENAME${ac_uC}1${ac_uD}
+${ac_uA}HAVE_FTRUNCATE${ac_uB}HAVE_FTRUNCATE${ac_uC}1${ac_uD}
+${ac_uA}HAVE_FLOCK${ac_uB}HAVE_FLOCK${ac_uC}1${ac_uD}
+${ac_uA}HAVE_BCOPY${ac_uB}HAVE_BCOPY${ac_uC}1${ac_uD}
+${ac_uA}HAVE_FSYNC${ac_uB}HAVE_FSYNC${ac_uC}1${ac_uD}
+${ac_uA}HAVE_GETOPT${ac_uB}HAVE_GETOPT${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRUCT_STAT_ST_BLKSIZE${ac_uB}HAVE_STRUCT_STAT_ST_BLKSIZE${ac_uC}1${ac_uD}
+s,^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+done
+
+{ (exit 0); exit 0; }
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/config.sub
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/config.sub	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/config.sub	(revision 18906)
@@ -0,0 +1,1470 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-09-05'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k \
+	| m32r | m68000 | m68k | m88k | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| ns16k | ns32k \
+	| openrisc | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* \
+	| bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
+	| clipper-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* \
+	| m32r-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39 | mipstx39el \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+	| xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	or32 | or32-*)
+		basic_machine=or32-unknown
+		os=-coff
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2)
+		basic_machine=i686-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3d)
+		basic_machine=alpha-cray
+		os=-unicos
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+        tic4x | c4x*)
+		basic_machine=tic4x-unknown
+		os=-coff
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	windows32)
+		basic_machine=i386-pc
+		os=-windows32-msvcrt
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
+		basic_machine=sh-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparc | sparcv9 | sparcv9b)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto*)
+		os=-nto-qnx
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/configure
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/configure	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/configure	(revision 18906)
@@ -0,0 +1,8669 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.54 for gdbm 1.8.3.
+#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
+do
+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conftest.sh
+  echo  "exit 0"   >>conftest.sh
+  chmod +x conftest.sh
+  if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conftest.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) lt_cv_sys_path_separator=';' ;;
+    *)     lt_cv_sys_path_separator=':' ;;
+  esac
+  PATH_SEPARATOR=$lt_cv_sys_path_separator
+fi
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME='gdbm'
+PACKAGE_TARNAME='gdbm'
+PACKAGE_VERSION='1.8.3'
+PACKAGE_STRING='gdbm 1.8.3'
+PACKAGE_BUGREPORT=''
+
+ac_unique_file="gdbmdefs.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP EGREP LIBTOOL LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+              localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$0" : 'X\(//\)[^/]' \| \
+         X"$0" : 'X\(//\)$' \| \
+         X"$0" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures gdbm 1.8.3 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of gdbm 1.8.3:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-shared=PKGS  build shared libraries default=yes
+  --enable-static=PKGS  build static libraries default=yes
+  --enable-fast-install=PKGS  optimize for fast installation default=yes
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-pic              try to use only PIC/non-PIC objects default=use both
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+           test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+gdbm configure 1.8.3
+generated by GNU Autoconf 2.54
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by gdbm $as_me 1.8.3, which was
+generated by GNU Autoconf 2.54.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell meta-characters.
+ac_configure_args=
+ac_sep=
+for ac_arg
+do
+  case $ac_arg in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n ) continue ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    continue ;;
+  *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+    ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+  # Get rid of the leading space.
+  ac_sep=" "
+done
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=$`echo $ac_var`
+        echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core core.* *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+        { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+        { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+        { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+        ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+          ac_config_headers="$ac_config_headers autoconf.h"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output" >&5
+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    a.out ) # We found the default executable, but exeext='' is most
+            # certainly right.
+            break;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+check \`config.log' for details." >&5
+echo "$as_me: error: C compiler cannot create executables
+check \`config.log' for details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+          if test $ac_prog = install &&
+            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+            # AIX install.  It has an incompatible calling convention.
+            :
+          elif test $ac_prog = install &&
+            grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+            # program-specific install script used by HP pwplus--don't use.
+            :
+          else
+            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+            break 3
+          fi
+        fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_shared=yes
+fi;
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_static=yes
+fi;
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_fast_install=yes ;;
+no) enable_fast_install=no ;;
+*)
+  enable_fast_install=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_fast_install=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_fast_install=yes
+fi;
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) lt_cv_sys_path_separator=';' ;;
+    *)     lt_cv_sys_path_separator=':' ;;
+  esac
+  PATH_SEPARATOR=$lt_cv_sys_path_separator
+fi
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+	test "$with_gnu_ld" != no && break
+      else
+	test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  lt_cv_prog_gnu_ld=yes
+else
+  lt_cv_prog_gnu_ld=no
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm=$ac_dir/${ac_tool_prefix}nm
+    if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+      elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+	lt_cv_path_NM="$tmp_nm -p"
+	break
+      else
+	lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	continue # so that we can try to find one that supports BSD flags
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+
+NM="$lt_cv_path_NM"
+echo "$as_me:$LINENO: result: $NM" >&5
+echo "${ECHO_T}$NM" >&6
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
+echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* | pw32*)
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.[012])
+    lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  ;;
+
+freebsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20*|hpux11*)
+  lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libc.sl
+  ;;
+
+irix5* | irix6*)
+  case $host_os in
+  irix5*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+sysv5uw[78]* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  esac
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+
+
+
+
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output" >&5
+echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix*)
+  symcode='[BCDEGRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $host_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  symcode='[ABCDGISTW]'
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+	if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  sed "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  save_LIBS="$LIBS"
+	  save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$no_builtin_flag"
+	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$save_LIBS"
+	  CFLAGS="$save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  global_symbol_to_cdecl=
+  global_symbol_to_c_name_address=
+else
+  global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
+  global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
+fi
+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
+then
+  echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+  echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+                     || ('j' <= (c) && (c) <= 'r') \
+                     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+        || toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="/usr/bin:$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    egrep "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="/usr/bin:$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    egrep "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 3853 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+need_locks="$enable_libtool_lock"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+if test x"$host" != x"$build"; then
+  ac_tool_prefix=${host_alias}-
+else
+  ac_tool_prefix=
+fi
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case $host_os in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="$2"
+
+## FIXME: this should be a separate macro
+##
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+echo "$as_me:$LINENO: result: $objdir" >&5
+echo "${ECHO_T}$objdir" >&6
+##
+## END FIXME
+
+
+## FIXME: this should be a separate macro
+##
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
+# in isolation, and that seeing it set (from the cache) indicates that
+# the associated values are set (in the cache) correctly too.
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+if test "${lt_cv_prog_cc_pic+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+   lt_cv_prog_cc_pic=
+  lt_cv_prog_cc_shlib=
+  lt_cv_prog_cc_wl=
+  lt_cv_prog_cc_static=
+  lt_cv_prog_cc_no_builtin=
+  lt_cv_prog_cc_can_build_shared=$can_build_shared
+
+  if test "$GCC" = yes; then
+    lt_cv_prog_cc_wl='-Wl,'
+    lt_cv_prog_cc_static='-static'
+
+    case $host_os in
+    aix*)
+      # Below there is a dirty hack to force normal static linking with -ldl
+      # The problem is because libdl dynamically linked with both libc and
+      # libC (AIX C++ library), which obviously doesn't included in libraries
+      # list by gcc. This cause undefined symbols with -static flags.
+      # This hack allows C programs to be linked with "-static -ldl", but
+      # not sure about C++ programs.
+      lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_cv_prog_cc_pic='-fno-common'
+      ;;
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	 lt_cv_prog_cc_pic=-Kconform_pic
+      fi
+      ;;
+    *)
+      lt_cv_prog_cc_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for PIC flags for the system compiler.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      lt_cv_prog_cc_wl='-Wl,'
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_cv_prog_cc_static='-Bstatic'
+      else
+	lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
+      lt_cv_prog_cc_pic='+Z'
+      ;;
+
+    irix5* | irix6*)
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      # PIC (with -KPIC) is the default.
+      ;;
+
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+
+    newsos6)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      # All OSF/1 code is PIC.
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_cv_prog_cc_pic='-Kpic'
+      lt_cv_prog_cc_static='-dn'
+      lt_cv_prog_cc_shlib='-belf'
+      ;;
+
+    solaris*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Wl,'
+      ;;
+
+    sunos4*)
+      lt_cv_prog_cc_pic='-PIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Qoption ld '
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      if test "x$host_vendor" = xsni; then
+	lt_cv_prog_cc_wl='-LD'
+      else
+	lt_cv_prog_cc_wl='-Wl,'
+      fi
+      ;;
+
+    uts4*)
+      lt_cv_prog_cc_pic='-pic'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_cv_prog_cc_pic='-Kconform_pic'
+	lt_cv_prog_cc_static='-Bstatic'
+      fi
+      ;;
+
+    *)
+      lt_cv_prog_cc_can_build_shared=no
+      ;;
+    esac
+  fi
+
+fi
+
+if test -z "$lt_cv_prog_cc_pic"; then
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+else
+  echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5
+echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6
+
+  # Check to make sure the pic_flag actually works.
+  echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6
+  if test "${lt_cv_prog_cc_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
+    cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+        case $host_os in
+      hpux9* | hpux10* | hpux11*)
+	# On HP-UX, both CC and GCC only warn that PIC is supported... then
+	# they create non-PIC objects.  So, if there were any warnings, we
+	# assume that PIC is not supported.
+	if test -s conftest.err; then
+	  lt_cv_prog_cc_pic_works=no
+	else
+	  lt_cv_prog_cc_pic_works=yes
+	fi
+	;;
+      *)
+	lt_cv_prog_cc_pic_works=yes
+	;;
+      esac
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+      lt_cv_prog_cc_pic_works=no
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+    CFLAGS="$save_CFLAGS"
+
+fi
+
+
+  if test "X$lt_cv_prog_cc_pic_works" = Xno; then
+    lt_cv_prog_cc_pic=
+    lt_cv_prog_cc_can_build_shared=no
+  else
+    lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
+  fi
+
+  echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5
+echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6
+fi
+##
+## END FIXME
+
+# Check for any special shared library compilation flags.
+if test -n "$lt_cv_prog_cc_shlib"; then
+  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;}
+  if echo "$old_CC $old_CFLAGS " | egrep -e "[ 	]$lt_cv_prog_cc_shlib[ 	]" >/dev/null; then :
+  else
+   { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+## FIXME: this should be a separate macro
+##
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6
+if test "${lt_cv_prog_cc_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    lt_cv_prog_cc_static_works=no
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_prog_cc_static_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+  LDFLAGS="$save_LDFLAGS"
+
+fi
+
+
+# Belt *and* braces to stop my trousers falling down:
+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
+echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5
+echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6
+
+pic_flag="$lt_cv_prog_cc_pic"
+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
+wl="$lt_cv_prog_cc_wl"
+link_static_flag="$lt_cv_prog_cc_static"
+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
+can_build_shared="$lt_cv_prog_cc_can_build_shared"
+##
+## END FIXME
+
+
+## FIXME: this should be a separate macro
+##
+# Check to see if options -o and -c are simultaneously supported by compiler
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+$rm -r conftest 2>/dev/null
+mkdir conftest
+cd conftest
+echo "int some_variable = 0;" > conftest.$ac_ext
+mkdir out
+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+# that will create temporary files in the current directory regardless of
+# the output directory.  Thus, making CWD read-only will cause this test
+# to fail, enabling locking or at least warning the user not to do parallel
+# builds.
+chmod -w .
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
+compiler_c_o=no
+if { (eval echo configure:4385: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+  # The compiler can only warn and ignore the option if not recognized
+  # So say no if there are warnings
+  if test -s out/conftest.err; then
+    lt_cv_compiler_c_o=no
+  else
+    lt_cv_compiler_c_o=yes
+  fi
+else
+  # Append any errors to the config.log.
+  cat out/conftest.err 1>&5
+  lt_cv_compiler_c_o=no
+fi
+CFLAGS="$save_CFLAGS"
+chmod u+w .
+$rm conftest* out/*
+rmdir out
+cd ..
+rmdir conftest
+$rm -r conftest 2>/dev/null
+
+fi
+
+compiler_c_o=$lt_cv_compiler_c_o
+echo "$as_me:$LINENO: result: $compiler_c_o" >&5
+echo "${ECHO_T}$compiler_c_o" >&6
+
+if test x"$compiler_c_o" = x"yes"; then
+  # Check to see if we can write to a .lo
+  echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6
+  if test "${lt_cv_compiler_o_lo+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+  lt_cv_compiler_o_lo=no
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -c -o conftest.lo"
+  save_objext="$ac_objext"
+  ac_objext=lo
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+int some_variable = 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+      # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      lt_cv_compiler_o_lo=no
+    else
+      lt_cv_compiler_o_lo=yes
+    fi
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  ac_objext="$save_objext"
+  CFLAGS="$save_CFLAGS"
+
+fi
+
+  compiler_o_lo=$lt_cv_compiler_o_lo
+  echo "$as_me:$LINENO: result: $compiler_o_lo" >&5
+echo "${ECHO_T}$compiler_o_lo" >&6
+else
+  compiler_o_lo=no
+fi
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# Check to see if we can do hard links to lock some files if needed
+hard_links="nottested"
+if test "$compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+if test "$GCC" = yes; then
+  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+  echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+  compiler_rtti_exceptions=no
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+int some_variable = 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+      # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      compiler_rtti_exceptions=no
+    else
+      compiler_rtti_exceptions=yes
+    fi
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+  echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$compiler_rtti_exceptions" >&6
+
+  if test "$compiler_rtti_exceptions" = "yes"; then
+    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+  else
+    no_builtin_flag=' -fno-builtin'
+  fi
+fi
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# See if the linker supports building shared libraries.
+echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+old_archive_from_expsyms_cmds=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_into_libs=no
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+link_all_deplibs=unknown
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced.  Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+extract_expsyms_cmds=
+
+case $host_os in
+cygwin* | mingw* | pw32*)
+  # FIXME: the MSVC++ port hasn't been tested in a loooong time
+  # When not using gcc, we currently assume that we are using
+  # Microsoft Visual C++.
+  if test "$GCC" != yes; then
+    with_gnu_ld=no
+  fi
+  ;;
+openbsd*)
+  with_gnu_ld=no
+  ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # If archive_cmds runs LD, not CC, wlarc should be empty
+  wlarc='${wl}'
+
+  # See if GNU ld supports shared libraries.
+  case $host_os in
+  aix3* | aix4* | aix5*)
+    # On AIX, the GNU linker is very broken
+    # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
+    ld_shlibs=no
+    cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+
+    # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+    # that the semantics of dynamic libraries on AmigaOS, at least up
+    # to version 4, is to share data among multiple programs linked
+    # with the same dynamic library.  Since this doesn't match the
+    # behavior of shared libraries on other platforms, we can use
+    # them.
+    ld_shlibs=no
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec='-L$libdir'
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+
+    extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
+      sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
+      test -f $output_objdir/impgen.exe || (cd $output_objdir && \
+      if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
+      else $CC -o impgen impgen.c ; fi)~
+      $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
+
+    old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
+
+    # cygwin and mingw dlls have different entry points and sets of symbols
+    # to exclude.
+    # FIXME: what about values for MSVC?
+    dll_entry=__cygwin_dll_entry@12
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
+    case $host_os in
+    mingw*)
+      # mingw values
+      dll_entry=_DllMainCRTStartup@12
+      dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
+      ;;
+    esac
+
+    # mingw and cygwin differ, and it's simplest to just exclude the union
+    # of the two symbol sets.
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
+
+    # recent cygwin and mingw systems supply a stub DllMain which the user
+    # can override, but on older systems we have to supply one (in ltdll.c)
+    if test "x$lt_cv_need_dllmain" = "xyes"; then
+      ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
+      ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
+	test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
+    else
+      ltdll_obj=
+      ltdll_cmds=
+    fi
+
+    # Extract the symbol export list from an `--export-all' def file,
+    # then regenerate the def file from the symbol export list, so that
+    # the compiled dll only exports the symbol export list.
+    # Be careful not to strip the DATA tag left be newer dlltools.
+    export_symbols_cmds="$ltdll_cmds"'
+      $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
+      sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
+
+    # If the export-symbols file already is a .def file (1st line
+    # is EXPORTS), use it as is.
+    # If DATA tags from a recent dlltool are present, honour them!
+    archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname-def;
+      else
+	echo EXPORTS > $output_objdir/$soname-def;
+	_lt_hint=1;
+	cat $export_symbols | while read symbol; do
+	 set dummy \$symbol;
+	 case \$# in
+	   2) echo "   \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
+	   *) echo "     \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
+	 esac;
+	 _lt_hint=`expr 1 + \$_lt_hint`;
+	done;
+      fi~
+      '"$ltdll_cmds"'
+      $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
+      $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
+      $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+      wlarc=
+    else
+      archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    fi
+    ;;
+
+  solaris* | sysv5*)
+    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+      ld_shlibs=no
+      cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    wlarc=
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+  esac
+
+  if test "$ld_shlibs" = yes; then
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    case $host_os in
+    cygwin* | mingw* | pw32*)
+      # dlltool doesn't understand --whole-archive et. al.
+      whole_archive_flag_spec=
+      ;;
+    *)
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+	whole_archive_flag_spec=
+      fi
+      ;;
+    esac
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case $host_os in
+  aix3*)
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+    archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$GCC" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    hardcode_direct=yes
+    archive_cmds=''
+    hardcode_libdir_separator=':'
+    if test "$GCC" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	  strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  hardcode_direct=yes
+	else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	fi
+      esac
+
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	shared_flag='${wl}-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall can do strange things, so it is better to
+    # generate a list of symbols to export.
+    always_export_symbols=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag='-berok'
+      hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
+      archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+    else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag="-z nodefs"
+	archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='${wl}-berok'
+	# This is a bit strange, but is similar to how AIX traditionally builds
+	# it's shared libraries.
+	archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
+      fi
+    fi
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    # see comment about different semantics on the GNU ld section
+    ld_shlibs=no
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec=' '
+    allow_undefined_flag=unsupported
+    # Tell ltmain to make .lib files, not .a files.
+    libext=lib
+    # FIXME: Setting linknames here is a bad hack.
+    archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+    # The linker will automatically build a .lib file if we build a DLL.
+    old_archive_from_new_cmds='true'
+    # FIXME: Should let the user specify the lib program.
+    old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+    fix_srcfile_path='`cygpath -w "$srcfile"`'
+    ;;
+
+  darwin* | rhapsody*)
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      allow_undefined_flag='-flat_namespace -undefined suppress'
+      ;;
+    esac
+    # FIXME: Relying on posixy $() will cause problems for
+    #        cross-compilation, but unfortunately the echo tests do not
+    #        yet detect zsh echo's removal of \ escapes.
+    archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring'
+    # We need to add '_' to the symbols in $export_symbols first
+    #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    whole_archive_flag_spec='-all_load $convenience'
+    ;;
+
+  freebsd1*)
+    ld_shlibs=no
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+  freebsd*)
+    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    case $host_os in
+    hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
+    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
+    esac
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_direct=yes
+    hardcode_minus_L=yes # Not in the search PATH, but as the default
+			 # location of the library.
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6*)
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    link_all_deplibs=yes
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+    else
+      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+    fi
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  newsos6)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+    else
+      case "$host_os" in
+      openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_libdir_flag_spec='-R$libdir'
+        ;;
+      *)
+        archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
+        hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        ;;
+      esac
+    fi
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+    ;;
+
+  osf3*)
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  osf4* | osf5*)	# as osf3* with the addition of -msym flag
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+      $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+      #Both c and cxx compiler support -rpath directly
+      hardcode_libdir_flag_spec='-rpath $libdir'
+    fi
+    hardcode_libdir_separator=:
+    ;;
+
+  sco3.2v5*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    runpath_var=LD_RUN_PATH
+    hardcode_runpath_var=yes
+    export_dynamic_flag_spec='${wl}-Bexport'
+    ;;
+
+  solaris*)
+    # gcc --version < 3.0 without binutils cannot create self contained
+    # shared libraries reliably, requiring libgcc.a to resolve some of
+    # the object symbols generated in some cases.  Libraries that use
+    # assert need libgcc.a to resolve __eprintf, for example.  Linking
+    # a copy of libgcc.a into every shared library to guarantee resolving
+    # such symbols causes other problems:  According to Tim Van Holder
+    # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
+    # (to the application) exception stack for one thing.
+    no_undefined_flag=' -z defs'
+    if test "$GCC" = yes; then
+      case `$CC --version 2>/dev/null` in
+      [12].*)
+	cat <<EOF 1>&2
+
+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
+*** create self contained shared libraries on Solaris systems, without
+*** introducing a dependency on libgcc.a.  Therefore, libtool is disabling
+*** -no-undefined support, which will at least allow you to build shared
+*** libraries.  However, you may find that when you link such libraries
+*** into an application without using GCC, you have to manually add
+*** \`gcc --print-libgcc-file-name\` to the link command.  We urge you to
+*** upgrade to a newer version of GCC.  Another option is to rebuild your
+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
+
+EOF
+        no_undefined_flag=
+	;;
+      esac
+    fi
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+    case $host_os in
+    solaris2.[0-5] | solaris2.[0-5].*) ;;
+    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+    esac
+    link_all_deplibs=yes
+    ;;
+
+  sunos4*)
+    if test "x$host_vendor" = xsequent; then
+      # Use $CC to link under sequent, because it throws in some extra .o
+      # files that make .init and .fini sections work.
+      archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+    fi
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4)
+    if test "x$host_vendor" = xsno; then
+      archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes # is this really true???
+    else
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4.3*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    export_dynamic_flag_spec='-Bexport'
+    ;;
+
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  dgux*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4*MP*)
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    hardcode_runpath_var=yes
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  sysv5uw7* | unixware7*)
+    no_undefined_flag='${wl}-z ${wl}text'
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    ;;
+  esac
+fi
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# Check hardcoding attributes.
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$hardcode_shlibpath_var" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+##
+## END FIXME
+
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+## FIXME: this should be a separate macro
+##
+# PORTME Fill in your ld.so characteristics
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+	if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	     echo ' yes '
+	     echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	  :
+	else
+	  can_build_shared=no
+	fi
+	;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can
+    # not hardcode correct soname into executable. Probably we can
+    # add versioning support to collect2, so additional links can
+    # be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}.so$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}.so'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  need_version=no
+  need_lib_prefix=no
+  case $GCC,$host_os in
+  yes,cygwin*)
+    library_names_spec='$libname.dll.a'
+    soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog .libs/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    ;;
+  yes,mingw*)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
+    ;;
+  yes,pw32*)
+    library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
+    ;;
+  *)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
+  soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  shlibpath_var=SHLIB_PATH
+  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+  soname_spec='${libname}${release}.sl$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6*)
+  version_type=irix
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
+  case $host_os in
+  irix5*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+    soname_spec='${libname}${release}.so$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case "$host_os" in
+    openbsd2.[89] | openbsd2.[89].*)
+      shlibpath_overrides_runpath=no
+      ;;
+    *)
+      shlibpath_overrides_runpath=yes
+      ;;
+    esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  need_lib_prefix=no
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_version=no
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+    soname_spec='$libname.so.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# Report the final consequences.
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+##
+## END FIXME
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+f = shl_load;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+f = dlopen;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+        test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 6168 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 6266 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+## FIXME: this should be a separate macro
+##
+if test "$enable_shared" = yes && test "$GCC" = yes; then
+  case $archive_cmds in
+  *'~'*)
+    # FIXME: we may have to deal with multi-command sequences.
+    ;;
+  '$CC '*)
+    # Test whether the compiler implicitly links with -lc since on some
+    # systems, -lgcc has to come before -lc. If gcc already passes -lc
+    # to ld, don't add -lc before -lgcc.
+    echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+    if test "${lt_cv_archive_cmds_need_lc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  $rm conftest*
+    echo 'static int dummy;' > conftest.$ac_ext
+
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      soname=conftest
+      lib=conftest
+      libobjs=conftest.$ac_objext
+      deplibs=
+      wl=$lt_cv_prog_cc_wl
+      compiler_flags=-v
+      linker_flags=-v
+      verstring=
+      output_objdir=.
+      libname=conftest
+      save_allow_undefined_flag=$allow_undefined_flag
+      allow_undefined_flag=
+      if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+      then
+	lt_cv_archive_cmds_need_lc=no
+      else
+	lt_cv_archive_cmds_need_lc=yes
+      fi
+      allow_undefined_flag=$save_allow_undefined_flag
+    else
+      cat conftest.err 1>&5
+    fi
+fi
+
+    echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5
+echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6
+    ;;
+  esac
+fi
+need_lc=${lt_cv_archive_cmds_need_lc-yes}
+##
+## END FIXME
+
+## FIXME: this should be a separate macro
+##
+# The second clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  :
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+if test -f "$ltmain"; then
+  trap "$rm \"${ofile}T\"; exit 1" 1 2 15
+  $rm -f "${ofile}T"
+
+  echo creating $ofile
+
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS \
+    AR AR_FLAGS CC LD LN_S NM SHELL \
+    reload_flag reload_cmds wl \
+    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+    library_names_spec soname_spec \
+    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
+    postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
+    old_striplib striplib file_magic_cmd export_symbols_cmds \
+    deplibs_check_method allow_undefined_flag no_undefined_flag \
+    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+    global_symbol_to_c_name_address \
+    hardcode_libdir_flag_spec hardcode_libdir_separator  \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+
+    case $var in
+    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+    extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  cat <<__EOF__ > "${ofile}T"
+#! $SHELL
+
+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$need_lc
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# The default C compiler.
+CC=$lt_CC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_pic_flag
+pic_mode=$pic_mode
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_compiler_c_o
+
+# Can we write directly to a .lo ?
+compiler_o_lo=$lt_compiler_o_lo
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_link_static_flag
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "${ofile}T"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | os2*)
+    cat <<'EOF' >> "${ofile}T"
+      # This is a source program that is used to create dlls on Windows
+      # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+	# This is a source program that is used to create import libraries
+	# on Windows for dlls which lack them. Don't remove nor modify the
+	# starting and closing comments
+# /* impgen.c starts here */
+# /*   Copyright (C) 1999-2000 Free Software Foundation, Inc.
+#
+#  This file is part of GNU libtool.
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#  */
+#
+# #include <stdio.h>		/* for printf() */
+# #include <unistd.h>		/* for open(), lseek(), read() */
+# #include <fcntl.h>		/* for O_RDONLY, O_BINARY */
+# #include <string.h>		/* for strdup() */
+#
+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
+# #ifndef O_BINARY
+# #define O_BINARY 0
+# #endif
+#
+# static unsigned int
+# pe_get16 (fd, offset)
+#      int fd;
+#      int offset;
+# {
+#   unsigned char b[2];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 2);
+#   return b[0] + (b[1]<<8);
+# }
+#
+# static unsigned int
+# pe_get32 (fd, offset)
+#     int fd;
+#     int offset;
+# {
+#   unsigned char b[4];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 4);
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# static unsigned int
+# pe_as32 (ptr)
+#      void *ptr;
+# {
+#   unsigned char *b = ptr;
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# int
+# main (argc, argv)
+#     int argc;
+#     char *argv[];
+# {
+#     int dll;
+#     unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+#     unsigned long export_rva, export_size, nsections, secptr, expptr;
+#     unsigned long name_rvas, nexp;
+#     unsigned char *expdata, *erva;
+#     char *filename, *dll_name;
+#
+#     filename = argv[1];
+#
+#     dll = open(filename, O_RDONLY|O_BINARY);
+#     if (dll < 1)
+# 	return 1;
+#
+#     dll_name = filename;
+#
+#     for (i=0; filename[i]; i++)
+# 	if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
+# 	    dll_name = filename + i +1;
+#
+#     pe_header_offset = pe_get32 (dll, 0x3c);
+#     opthdr_ofs = pe_header_offset + 4 + 20;
+#     num_entries = pe_get32 (dll, opthdr_ofs + 92);
+#
+#     if (num_entries < 1) /* no exports */
+# 	return 1;
+#
+#     export_rva = pe_get32 (dll, opthdr_ofs + 96);
+#     export_size = pe_get32 (dll, opthdr_ofs + 100);
+#     nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+#     secptr = (pe_header_offset + 4 + 20 +
+# 	      pe_get16 (dll, pe_header_offset + 4 + 16));
+#
+#     expptr = 0;
+#     for (i = 0; i < nsections; i++)
+#     {
+# 	char sname[8];
+# 	unsigned long secptr1 = secptr + 40 * i;
+# 	unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+# 	unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+# 	unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+# 	lseek(dll, secptr1, SEEK_SET);
+# 	read(dll, sname, 8);
+# 	if (vaddr <= export_rva && vaddr+vsize > export_rva)
+# 	{
+# 	    expptr = fptr + (export_rva - vaddr);
+# 	    if (export_rva + export_size > vaddr + vsize)
+# 		export_size = vsize - (export_rva - vaddr);
+# 	    break;
+# 	}
+#     }
+#
+#     expdata = (unsigned char*)malloc(export_size);
+#     lseek (dll, expptr, SEEK_SET);
+#     read (dll, expdata, export_size);
+#     erva = expdata - export_rva;
+#
+#     nexp = pe_as32 (expdata+24);
+#     name_rvas = pe_as32 (expdata+32);
+#
+#     printf ("EXPORTS\n");
+#     for (i = 0; i<nexp; i++)
+#     {
+# 	unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+# 	printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+#     }
+#
+#     return 0;
+# }
+# /* impgen.c ends here */
+
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
+
+  mv -f "${ofile}T" "$ofile" || \
+    (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
+  chmod +x "$ofile"
+fi
+##
+## END FIXME
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset x;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *ccp;
+  char **p;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  ccp = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++ccp;
+  p = (char**) ccp;
+  ccp = (char const *const *) p;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+  }
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_const=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_c_const=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define const
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+for ac_header in stdlib.h string.h sys/file.h unistd.h fcntl.h sys/types.h memory.y
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+echo "$as_me:$LINENO: checking for main in -ldbm" >&5
+echo $ECHO_N "checking for main in -ldbm... $ECHO_C" >&6
+if test "${ac_cv_lib_dbm_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldbm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dbm_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dbm_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dbm_main" >&5
+echo "${ECHO_T}$ac_cv_lib_dbm_main" >&6
+if test $ac_cv_lib_dbm_main = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDBM 1
+_ACEOF
+
+  LIBS="-ldbm $LIBS"
+
+fi
+
+
+echo "$as_me:$LINENO: checking for main in -lndbm" >&5
+echo $ECHO_N "checking for main in -lndbm... $ECHO_C" >&6
+if test "${ac_cv_lib_ndbm_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lndbm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_ndbm_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_ndbm_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_ndbm_main" >&5
+echo "${ECHO_T}$ac_cv_lib_ndbm_main" >&6
+if test $ac_cv_lib_ndbm_main = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBNDBM 1
+_ACEOF
+
+  LIBS="-lndbm $LIBS"
+
+fi
+
+
+
+
+
+
+for ac_func in rename ftruncate flock bcopy fsync
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+for ac_func in getopt
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+  LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+echo "$as_me:$LINENO: checking for off_t" >&5
+echo $ECHO_N "checking for off_t... $ECHO_C" >&6
+if test "${ac_cv_type_off_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((off_t *) 0)
+  return 0;
+if (sizeof (off_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_off_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_off_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+echo "${ECHO_T}$ac_cv_type_off_t" >&6
+if test $ac_cv_type_off_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define off_t long
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5
+echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6
+if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_blksize)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_member_struct_stat_st_blksize=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_blksize)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_member_struct_stat_st_blksize=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_member_struct_stat_st_blksize=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5
+echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6
+if test $ac_cv_member_struct_stat_st_blksize = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+_ACEOF
+
+
+fi
+
+          ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+        "s/'/'\\\\''/g;
+    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if cmp -s $cache_file confcache; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[ 	]*VPATH[ 	]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ 	]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ 	]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+         sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
+do
+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conftest.sh
+  echo  "exit 0"   >>conftest.sh
+  chmod +x conftest.sh
+  if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conftest.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by gdbm $as_me 1.8.3, which was
+generated by GNU Autoconf 2.54.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+gdbm config.status 1.8.3
+configured by $0, generated by GNU Autoconf 2.54,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
+    exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "autoconf.h" ) CONFIG_HEADERS="$CONFIG_HEADERS autoconf.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=$TMPDIR/cs$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@EGREP@,$EGREP,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+  	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+  	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+                                     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
+ac_dB='[ 	].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[ 	]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	(][^ 	(]*\)\(([^)]*)\)[ 	]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	][^ 	]*\)[ 	]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if grep "^[ 	]*#[ 	]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[ 	]*#[ 	]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[ 	]*#[ 	]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/configure.in
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/configure.in	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/configure.in	(revision 18906)
@@ -0,0 +1,21 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT([gdbm], [1.8.3])
+AC_PREREQ(2.54)
+AC_CONFIG_SRCDIR([gdbmdefs.h])
+AC_CONFIG_HEADERS([autoconf.h])
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_INSTALL
+AM_PROG_LIBTOOL
+dnl AC_PROG_RANLIB
+dnl AC_C_BIGENDIAN([])
+AC_C_CONST
+AC_CHECK_HEADERS([stdlib.h string.h sys/file.h unistd.h fcntl.h sys/types.h memory.y])
+AC_CHECK_LIB(dbm, main)
+AC_CHECK_LIB(ndbm, main)
+AC_CHECK_FUNCS([rename ftruncate flock bcopy fsync])
+AC_REPLACE_FUNCS(getopt)
+AC_TYPE_OFF_T
+AC_CHECK_MEMBERS([struct stat.st_blksize])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/conv2gdbm.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/conv2gdbm.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/conv2gdbm.c	(revision 18906)
@@ -0,0 +1,184 @@
+/* conv2gdbm.c - This is a program to convert dbm files to gdbm files. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include <stdio.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include "gdbm.h"
+
+#include "getopt.h"
+
+extern int dbminit ();
+extern datum fetch ();
+extern datum firstkey ();
+extern datum nextkey ();
+
+static void usage();
+
+/* Boolean Constants */
+#define TRUE 1
+#define FALSE 0
+
+int
+main (argc, argv)
+     int argc;
+     char *argv[];
+{
+  GDBM_FILE gfile;	/* The gdbm file. */
+  datum key;		/* Key and data pairs retrieved. */
+  datum data;
+  int   errors;		/* error count. */
+  int   num;		/* insert count. */
+  int   block_size;     /* gdbm block size. */
+  char  quiet;		/* Do work Quietly? */
+  char  option_char;    /* The option character. */
+
+  char *dbm_file, *gdbm_file;   /* pointers to the file names. */
+
+  /* Initialize things. */
+  quiet = FALSE;
+  block_size = 0;
+
+  /* Check for proper arguments. */
+
+  if (argc < 2)
+    usage (argv[0]);
+
+  /* Check for the options.  */
+  while  ( (option_char = getopt (argc, argv, "b:q")) != EOF)
+    {
+      switch (option_char)
+	{
+	case 'b':
+	  block_size = atoi (optarg);
+	  break;
+
+	case 'q':
+	  quiet = TRUE;
+	  break;
+
+	default:
+	  usage (argv[0]);
+	}
+    }
+
+  /* The required dbm file name. */
+  if (argc <= optind)
+    {
+      usage (argv[0]);
+    }
+  else
+    {
+      dbm_file = argv[optind];
+      gdbm_file = argv[optind];
+      optind += 1;
+    }
+
+  /* The optional gdbm file name. */
+  if (argc > optind)
+    {
+      gdbm_file = argv[optind];
+      optind += 1;
+    }
+
+  /* No more arguments are legal. */
+  if (argc > optind)  usage (argv[0]);
+  
+  /* Open the dbm file. */
+  if (dbminit (dbm_file) != 0)
+    {
+      printf ("%s: dbm file not opened\n", argv[0]);
+      exit (2);
+    }
+
+  /* Open the gdbm file.  Since the dbm files have .pag and .dir we
+     will use the file name without any extension.  */
+  gfile = gdbm_open (gdbm_file, block_size, GDBM_WRCREAT, 00664, NULL);
+  if (gfile == NULL)
+    {
+      printf ("%s: gdbm file not opened\n", argv[0]);
+      exit (2);
+    }
+
+
+  /* Do the conversion.  */
+  errors = 0;
+  num = 0;
+
+  if (!quiet)
+    printf ("%s: Converting %s.pag and %s.dir to %s.\n", argv[0], dbm_file,
+	    dbm_file, gdbm_file);
+
+  /* The convert loop - read a key/data pair from the dbm file and insert
+     it into the gdbm file. */
+
+  for (key = firstkey (); key.dptr != NULL; key = nextkey (key))
+    {
+      data = fetch (key);
+      if (gdbm_store (gfile, key, data, GDBM_INSERT) != 0)
+	{
+	  errors++;
+	}
+      else
+	{
+	  num++;
+	  if ( !quiet && ((num % 100) == 0))
+	    {
+	      printf (".");
+	      if ( (num % 7000) == 0)
+		printf ("\n");
+	    }
+	}
+    }
+
+  gdbm_close (gfile);
+
+  if (!quiet)
+    {
+      /* Final reporting. */
+      if (errors)
+	printf ("%s: %d items not inserted into %s.\n", argv[0],
+	        errors, gdbm_file);
+
+      printf  ("%s: %d items inserted into %s.\n", argv[0], num, gdbm_file);
+    }
+  exit(0);
+  /* NOTREACHED */
+}
+
+static void usage (name)
+     char *name;
+{
+  printf ("usage: %s [-q] [-b block_size] dbmfile [gdbmfile]\n", name);
+  exit (2);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbm.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbm.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbm.h	(revision 18906)
@@ -0,0 +1,52 @@
+/* dbm.h  -  The include file for dbm users.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+/* The data and key structure.  This structure is defined for compatibility. */
+typedef struct {
+	char *dptr;
+	int   dsize;
+      } datum;
+
+
+/* These are the routines in dbm. */
+
+extern int	dbminit ();
+
+extern datum	fetch ();
+
+extern int	store ();
+
+extern int	delete ();
+
+extern int	delete ();
+
+extern datum	firstkey ();
+
+extern datum	nextkey ();
+
+extern int	dbmclose ();
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmclose.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmclose.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmclose.c	(revision 18906)
@@ -0,0 +1,43 @@
+/* dbmclose.c - The the dbm file.  This is the NDBM interface. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+
+/* Close the DBF file. */
+
+void
+dbm_close (dbf)
+     gdbm_file_info *dbf;
+{
+  gdbm_close (dbf);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmdelete.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmdelete.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmdelete.c	(revision 18906)
@@ -0,0 +1,46 @@
+/* dbmdelete.c - Remove the key and its associated data from the database.
+   This is the NDBM unix interface name.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+
+/* Remove the KEYed item and the KEY from the database DBF. */
+
+int
+dbm_delete (dbf,key)
+     gdbm_file_info *dbf;
+     datum key;
+{
+  return gdbm_delete (dbf,key);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmdirfno.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmdirfno.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmdirfno.c	(revision 18906)
@@ -0,0 +1,44 @@
+/* dbmdirfno.c - The .pag file number for NDBM interface. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+
+/* Return the file number of the DBF file.  NDBM original wanted the .dir
+   file number.  Since we have only one file number, we return it. */
+
+int
+dbm_dirfno (dbf)
+     gdbm_file_info *dbf;
+{
+  return (dbf->desc);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmfetch.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmfetch.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmfetch.c	(revision 18906)
@@ -0,0 +1,56 @@
+/* dbmfetch.c - Find a key and return the associated data.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+
+/* NDBM Look up a given KEY and return the information associated with that
+   KEY. The pointer in the structure that is  returned is a pointer to
+   dynamically allocated memory block.  */
+
+datum
+dbm_fetch (dbf, key)
+     gdbm_file_info *dbf;
+     datum key;
+{
+  datum  ret_val;		/* The return value. */
+
+  /* Free previous dynamic memory, do actual call, and save pointer to new
+     memory. */
+  ret_val = gdbm_fetch (dbf, key);
+  if (_gdbm_fetch_val != NULL) free (_gdbm_fetch_val);
+  _gdbm_fetch_val = ret_val.dptr;
+
+  /* Return the new value. */
+  return ret_val;
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbminit.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbminit.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbminit.c	(revision 18906)
@@ -0,0 +1,126 @@
+/* dbminit.c - Open the file for dbm operations. This looks like the
+   DBM interface. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+#include "extern.h"
+
+/* Initialize dbm system.  FILE is a pointer to the file name.  In
+   standard dbm, the database is found in files called FILE.pag and
+   FILE.dir.  To make gdbm compatable with dbm using the dbminit call,
+   the same file names are used.  Specifically, dbminit will use the file
+   name FILE.pag in its call to gdbm open.  If the file (FILE.pag) has a
+   size of zero bytes, a file initialization procedure is performed,
+   setting up the initial structure in the file.  Any error detected will
+   cause a return value of -1.  No errors cause the return value of 0.
+   NOTE: file.dir will be linked to file.pag. */
+
+int
+dbminit (file)
+     char *file;
+{
+  char* pag_file;	    /* Used to construct "file.pag". */
+  char* dir_file;	    /* Used to construct "file.dir". */
+  struct stat dir_stat;	    /* Stat information for "file.dir". */
+  int ret;
+
+
+  ret = 0;		    /* Default return value. */
+
+  /* Prepare the correct names of "file.pag" and "file.dir". */
+  pag_file = (char *) malloc (strlen (file)+5);
+  dir_file = (char *) malloc (strlen (file)+5);
+  if ((pag_file == NULL) || (dir_file == NULL))
+    {
+      gdbm_errno = GDBM_MALLOC_ERROR;	/* For the hell of it. */
+      return -1;
+    }
+
+  strcpy (pag_file, file);
+  strcat (pag_file, ".pag");
+  strcpy (dir_file, file);
+  strcat (dir_file, ".dir");
+
+  if (_gdbm_file != NULL)
+    gdbm_close (_gdbm_file);
+
+  /* Try to open the file as a writer.  DBM never created a file. */
+  _gdbm_file = gdbm_open (pag_file, 0, GDBM_WRITER, 0, NULL);
+
+  /* If it was not opened, try opening it as a reader. */
+  if (_gdbm_file == NULL)
+    {
+      _gdbm_file = gdbm_open (pag_file, 0, GDBM_READER, 0, NULL);
+  
+      /* Did we successfully open the file? */
+      if (_gdbm_file == NULL)
+	{
+	  gdbm_errno = GDBM_FILE_OPEN_ERROR;
+	  ret = -1;
+	  goto done;
+	}
+    }
+
+  /* If the database is new, link "file.dir" to "file.pag". This is done
+     so the time stamp on both files is the same. */
+  if (stat (dir_file, &dir_stat) == 0)
+    {
+      if (dir_stat.st_size == 0)
+	if (unlink (dir_file) != 0 || link (pag_file, dir_file) != 0)
+	  {
+	    gdbm_errno = GDBM_FILE_OPEN_ERROR;
+	    gdbm_close (_gdbm_file);
+	    ret = -1;
+	    goto done;
+	  }
+    }
+  else
+    {
+      /* Since we can't stat it, we assume it is not there and try
+         to link the dir_file to the pag_file. */
+      if (link (pag_file, dir_file) != 0)
+	{
+	  gdbm_errno = GDBM_FILE_OPEN_ERROR;
+	  gdbm_close (_gdbm_file);
+	  ret = -1;
+	  goto done;
+	}
+    }
+
+  ret = 0;
+
+done:
+  free (dir_file);
+  free (pag_file);
+  return ret;
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmopen.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmopen.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmopen.c	(revision 18906)
@@ -0,0 +1,138 @@
+/* dbmopen.c - Open the file for dbm operations. This looks like the
+   NDBM interface for dbm use. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+#include "extern.h"
+
+/* Initialize ndbm system.  FILE is a pointer to the file name.  In
+   standard dbm, the database is found in files called FILE.pag and
+   FILE.dir.  To make gdbm compatable with dbm using the dbminit call,
+   the same file names are used.  Specifically, dbminit will use the file
+   name FILE.pag in its call to gdbm open.  If the file (FILE.pag) has a
+   size of zero bytes, a file initialization procedure is performed,
+   setting up the initial structure in the file.  Any error detected will
+   cause a return value of -1.  No errors cause the return value of 0.
+   NOTE: file.dir will be ignored and will always have a size of zero.
+   FLAGS and MODE are the same as the open (2) call.  This call will
+   look at the FLAGS and decide what call to make to gdbm_open.  For
+   FLAGS == O_RDONLY, it will be a GDBM_READER, if FLAGS == O_RDWR|O_CREAT,
+   it will be a GDBM_WRCREAT (creater and writer) and if the FLAGS == O_RDWR,
+   it will be a GDBM_WRITER and if FLAGS contain O_TRUNC then it will be
+   a GDBM_NEWDB.  All other values of FLAGS in the flags are
+   ignored. */
+
+gdbm_file_info *
+dbm_open (file, flags, mode)
+     char *file;
+     int flags;
+     int mode;
+{
+  char* pag_file;	    /* Used to construct "file.pag". */
+  char* dir_file;	    /* Used to construct "file.dir". */
+  struct stat dir_stat;	    /* Stat information for "file.dir". */
+  gdbm_file_info *temp_dbf;  /* Temporary file pointer storage. */
+
+
+  /* Prepare the correct names of "file.pag" and "file.dir". */
+  pag_file = (char *) malloc (strlen (file)+5);
+  dir_file = (char *) malloc (strlen (file)+5);
+  if ((pag_file == NULL) || (dir_file == NULL))
+    {
+      gdbm_errno = GDBM_MALLOC_ERROR;	/* For the hell of it. */
+      return NULL;
+    }
+
+  strcpy (pag_file, file);
+  strcat (pag_file, ".pag");
+  strcpy (dir_file, file);
+  strcat (dir_file, ".dir");
+  
+
+  /* Call the actual routine, saving the pointer to the file information. */
+  flags &= O_RDONLY | O_RDWR | O_CREAT | O_TRUNC;
+  if (flags == O_RDONLY)
+    {
+      temp_dbf = gdbm_open (pag_file, 0, GDBM_READER, 0, NULL);
+    }
+  else if (flags == (O_RDWR | O_CREAT))
+    {
+      temp_dbf = gdbm_open (pag_file, 0, GDBM_WRCREAT, mode, NULL);
+    }
+  else if ( (flags & O_TRUNC) == O_TRUNC)
+    {
+      temp_dbf = gdbm_open (pag_file, 0, GDBM_NEWDB, mode, NULL);
+    }
+  else
+    {
+      temp_dbf = gdbm_open (pag_file, 0, GDBM_WRITER, 0, NULL);
+    }
+
+  /* Did we successfully open the file? */
+  if (temp_dbf == NULL)
+    {
+      gdbm_errno = GDBM_FILE_OPEN_ERROR;
+      goto done;
+    }
+
+  /* If the database is new, link "file.dir" to "file.pag". This is done
+     so the time stamp on both files is the same. */
+  if (stat (dir_file, &dir_stat) == 0)
+    {
+      if (dir_stat.st_size == 0)
+	if (unlink (dir_file) != 0 || link (pag_file, dir_file) != 0)
+	  {
+	    gdbm_errno = GDBM_FILE_OPEN_ERROR;
+	    gdbm_close (temp_dbf);
+	    temp_dbf = NULL;
+	    goto done;
+	  }
+    }
+  else
+    {
+      /* Since we can't stat it, we assume it is not there and try
+         to link the dir_file to the pag_file. */
+      if (link (pag_file, dir_file) != 0)
+	{
+	  gdbm_errno = GDBM_FILE_OPEN_ERROR;
+	  gdbm_close (temp_dbf);
+	  temp_dbf = NULL;
+	  goto done;
+	}
+    }
+
+done:
+  free (pag_file);
+  free (dir_file);
+  return temp_dbf;
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmpagfno.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmpagfno.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmpagfno.c	(revision 18906)
@@ -0,0 +1,44 @@
+/* dbmpagfno.c - The .pag file number for NDBM interface. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+
+/* Return the file number of the DBF file.  NDBM original wanted the .pag
+   file number.  Since we have only one file number, we return it. */
+
+int
+dbm_pagfno (dbf)
+     gdbm_file_info *dbf;
+{
+  return (dbf->desc);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmrdonly.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmrdonly.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmrdonly.c	(revision 18906)
@@ -0,0 +1,46 @@
+/* dbmrdonly.c - Check to see if a database is read only, NDBM style. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the original author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+    The author of this file is:
+       e-mail:  downsj@downsj.com
+
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+
+/* not much of a routine, but should be a function for compatibility. */
+
+int
+dbm_rdonly(dbf)
+    gdbm_file_info *dbf;
+{
+  return (dbf->read_write == GDBM_READER);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmseq.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmseq.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmseq.c	(revision 18906)
@@ -0,0 +1,80 @@
+/* dbmseq.c - Visit all elements in the database.  This is the NDBM
+   interface. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+
+/* NDBM Start the visit of all keys in the database.  This produces
+   something in hash order, not in any sorted order.  DBF is the dbm file
+   information pointer. */
+
+datum
+dbm_firstkey (dbf)
+     gdbm_file_info *dbf;
+{
+  datum ret_val;
+
+  /* Free previous dynamic memory, do actual call, and save pointer to new
+     memory. */
+  ret_val = gdbm_firstkey (dbf);
+  if (_gdbm_memory.dptr != NULL) free (_gdbm_memory.dptr);
+  _gdbm_memory = ret_val;
+
+  /* Return the new value. */
+  return ret_val;
+}
+
+
+/* NDBM Continue visiting all keys.  The next key in the sequence is returned.
+   DBF is the file information pointer. */
+
+datum
+dbm_nextkey (dbf)
+     gdbm_file_info *dbf;
+{
+  datum ret_val;
+
+  /* Make sure we have a valid key. */
+  if (_gdbm_memory.dptr == NULL)
+    return _gdbm_memory;
+
+  /* Call gdbm nextkey with the old value. After that, free the old value. */
+  ret_val = gdbm_nextkey (dbf,_gdbm_memory);
+  if (_gdbm_memory.dptr != NULL) free (_gdbm_memory.dptr);
+  _gdbm_memory = ret_val;
+
+  /* Return the new value. */
+  return ret_val;
+}
+
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmstore.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmstore.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/dbmstore.c	(revision 18906)
@@ -0,0 +1,49 @@
+/* dbmstore.c - Add a new key/data pair to the database. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+
+/* NDBM add a new element to the database.  CONTENT is keyed by KEY.
+   The file on disk is updated to reflect the structure of the new
+   database before returning from this procedure.  */
+
+int
+dbm_store (dbf, key, content, flags)
+     gdbm_file_info *dbf;
+     datum key;
+     datum content;
+     int flags;
+{
+  return gdbm_store (dbf, key, content, flags);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/delete.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/delete.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/delete.c	(revision 18906)
@@ -0,0 +1,45 @@
+/* delete.c - Remove the key and its associated data from the database.
+   This is the original unix interface name.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+
+/* Remove the KEYed item and the KEY from the database. */
+
+int
+delete (key)
+     datum key;
+{
+  return gdbm_delete (_gdbm_file, key);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/extern.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/extern.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/extern.h	(revision 18906)
@@ -0,0 +1,35 @@
+/* extern.h - The collection of external definitions needed. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* The global variables used for the "original" interface. */
+extern gdbm_file_info  *_gdbm_file;
+
+/* Memory for return data for the "original" interface. */
+extern datum _gdbm_memory;
+extern char *_gdbm_fetch_val;
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/falloc.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/falloc.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/falloc.c	(revision 18906)
@@ -0,0 +1,495 @@
+/* falloc.c - The file space management routines for dbm. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993, 1994  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+
+/* The forward definitions for this file.  See the functions for
+   the definition of the function. */
+
+static avail_elem get_elem __P((int, avail_elem [], int *));
+static avail_elem get_block __P((int, gdbm_file_info *));
+static void push_avail_block __P((gdbm_file_info *));
+static void pop_avail_block __P((gdbm_file_info *));
+static void adjust_bucket_avail __P((gdbm_file_info *));
+
+/* Allocate space in the file DBF for a block NUM_BYTES in length.  Return
+   the file address of the start of the block.  
+
+   Each hash bucket has a fixed size avail table.  We first check this
+   avail table to satisfy the request for space.  In most cases we can
+   and this causes changes to be only in the current hash bucket.
+   Allocation is done on a first fit basis from the entries.  If a
+   request can not be satisfied from the current hash bucket, then it is
+   satisfied from the file header avail block.  If nothing is there that
+   has enough space, another block at the end of the file is allocated
+   and the unused portion is returned to the avail block.  This routine
+   "guarantees" that an allocation does not cross a block boundary unless
+   the size is larger than a single block.  The avail structure is
+   changed by this routine if a change is needed.  If an error occurs,
+   the value of 0 will be returned.  */
+
+off_t
+_gdbm_alloc (dbf, num_bytes)
+     gdbm_file_info *dbf;
+     int num_bytes;
+{
+  off_t file_adr;		/* The address of the block. */
+  avail_elem av_el;		/* For temporary use. */
+
+  /* The current bucket is the first place to look for space. */
+  av_el = get_elem (num_bytes, dbf->bucket->bucket_avail,
+		    &dbf->bucket->av_count);
+
+  /* If we did not find some space, we have more work to do. */
+  if (av_el.av_size == 0)
+    {
+      /* If the header avail table is less than half full, and there's
+	 something on the stack. */
+      if ((dbf->header->avail.count <= (dbf->header->avail.size >> 1))
+          && (dbf->header->avail.next_block != 0))
+        pop_avail_block (dbf);
+
+      /* check the header avail table next */
+      av_el = get_elem (num_bytes, dbf->header->avail.av_table,
+      			&dbf->header->avail.count);
+      if (av_el.av_size == 0)
+        /* Get another full block from end of file. */
+        av_el = get_block (num_bytes, dbf);
+
+      dbf->header_changed = TRUE;
+    }
+
+  /* We now have the place from which we will allocate the new space. */
+  file_adr = av_el.av_adr;
+
+  /* Put the unused space back in the avail block. */
+  av_el.av_adr += num_bytes;
+  av_el.av_size -= num_bytes;
+  _gdbm_free (dbf, av_el.av_adr, av_el.av_size);
+
+  /* Return the address. */
+  return file_adr;
+  
+}
+
+
+
+/* Free space of size NUM_BYTES in the file DBF at file address FILE_ADR.  Make
+   it avaliable for reuse through _gdbm_alloc.  This routine changes the
+   avail structure. */
+
+void
+_gdbm_free (dbf, file_adr, num_bytes)
+     gdbm_file_info *dbf;
+     off_t file_adr;
+     int num_bytes;
+{
+  avail_elem temp;
+
+  /* Is it too small to worry about? */
+  if (num_bytes <= IGNORE_SIZE)
+    return;
+
+  /* Initialize the avail element. */
+  temp.av_size = num_bytes;
+  temp.av_adr = file_adr;
+
+  /* Is the freed space large or small? */
+  if ((num_bytes >= dbf->header->block_size) || dbf->central_free)
+    {
+      if (dbf->header->avail.count == dbf->header->avail.size)
+	{
+	  push_avail_block (dbf);
+	}
+      _gdbm_put_av_elem (temp, dbf->header->avail.av_table,
+			 &dbf->header->avail.count, dbf->coalesce_blocks);
+      dbf->header_changed = TRUE;
+    }
+  else
+    {
+      /* Try to put into the current bucket. */
+      if (dbf->bucket->av_count < BUCKET_AVAIL)
+	_gdbm_put_av_elem (temp, dbf->bucket->bucket_avail,
+			   &dbf->bucket->av_count, dbf->coalesce_blocks);
+      else
+	{
+	  if (dbf->header->avail.count == dbf->header->avail.size)
+	    {
+	      push_avail_block (dbf);
+	    }
+	  _gdbm_put_av_elem (temp, dbf->header->avail.av_table,
+			     &dbf->header->avail.count, dbf->coalesce_blocks);
+	  dbf->header_changed = TRUE;
+	}
+    }
+
+  if (dbf->header_changed)
+    adjust_bucket_avail (dbf);
+
+  /* All work is done. */
+  return;
+}
+
+
+
+/* The following are all utility routines needed by the previous two. */
+
+
+/* Gets the avail block at the top of the stack and loads it into the
+   active avail block.  It does a "free" for itself!  This can (and is)
+   now called even when the avail block is not empty, so we must be
+   smart about things. */
+
+static void
+pop_avail_block (dbf)
+     gdbm_file_info *dbf;
+{
+  int  num_bytes;		/* For use with the read system call. */
+  off_t file_pos;		/* For use with the lseek system call. */
+  avail_elem new_el;
+  avail_block *new_blk;
+  int index;
+
+  if (dbf->header->avail.count == dbf->header->avail.size)
+    {
+      /* We're kind of stuck here, so we re-split the header in order to
+         avoid crashing.  Sigh. */
+      push_avail_block(dbf);
+    }
+
+  /* Set up variables. */
+  new_el.av_adr = dbf->header->avail.next_block;
+  new_el.av_size = ( ( (dbf->header->avail.size * sizeof (avail_elem)) >> 1)
+			+ sizeof (avail_block));
+
+  /* Allocate space for the block. */
+  new_blk = (avail_block *) malloc (new_el.av_size);
+  if (new_blk == NULL) _gdbm_fatal(dbf, "malloc failed");
+
+  /* Read the block. */
+  file_pos = lseek (dbf->desc, new_el.av_adr, L_SET);
+  if (file_pos != new_el.av_adr)  _gdbm_fatal (dbf, "lseek error");
+  num_bytes = read (dbf->desc, new_blk, new_el.av_size);
+  if (num_bytes != new_el.av_size) _gdbm_fatal (dbf, "read error");
+
+  /* Add the elements from the new block to the header. */
+  index = 0;
+  while (index < new_blk->count)
+    {
+      while(index < new_blk->count
+            && dbf->header->avail.count < dbf->header->avail.size)
+	{
+	   /* With luck, this will merge a lot of blocks! */
+	   _gdbm_put_av_elem(new_blk->av_table[index],
+			     dbf->header->avail.av_table,
+			     &dbf->header->avail.count, TRUE);
+	   index++;
+	}
+      if (dbf->header->avail.count == dbf->header->avail.size)
+        {
+          /* We're kind of stuck here, so we re-split the header in order to
+             avoid crashing.  Sigh. */
+          push_avail_block(dbf);
+	}
+    }
+
+  /* Fix next_block, as well. */
+  dbf->header->avail.next_block = new_blk->next_block;
+
+  /* We changed the header. */
+  dbf->header_changed = TRUE;
+
+  /* Free the previous avail block.   It is possible that the header table
+     is now FULL, which will cause us to overflow it! */
+  if (dbf->header->avail.count == dbf->header->avail.size)
+    {
+      /* We're kind of stuck here, so we re-split the header in order to
+         avoid crashing.  Sigh. */
+      push_avail_block(dbf);
+    }
+
+  _gdbm_put_av_elem (new_el, dbf->header->avail.av_table,
+		     &dbf->header->avail.count, TRUE);
+  free (new_blk);
+}
+
+
+/* Splits the header avail block and pushes half onto the avail stack. */
+
+static void
+push_avail_block (dbf)
+     gdbm_file_info *dbf;
+{
+  int  num_bytes;
+  int  av_size;
+  off_t av_adr;
+  int  index;
+  off_t file_pos;
+  avail_block *temp;
+  avail_elem  new_loc;
+ 
+
+  /* Caclulate the size of the split block. */
+  av_size = ( (dbf->header->avail.size * sizeof (avail_elem)) >> 1)
+            + sizeof (avail_block);
+
+  /* Get address in file for new av_size bytes. */
+  new_loc = get_elem (av_size, dbf->header->avail.av_table,
+		      &dbf->header->avail.count);
+  if (new_loc.av_size == 0)
+    new_loc = get_block (av_size, dbf);
+  av_adr = new_loc.av_adr;
+
+
+  /* Split the header block. */
+  temp = (avail_block *) malloc (av_size);
+  if (temp == NULL) _gdbm_fatal (dbf, "malloc error");
+  /* Set the size to be correct AFTER the pop_avail_block. */
+  temp->size = dbf->header->avail.size;
+  temp->count = 0;
+  temp->next_block = dbf->header->avail.next_block;
+  dbf->header->avail.next_block = av_adr;
+  for (index = 1; index < dbf->header->avail.count; index++)
+    if ( (index & 0x1) == 1)	/* Index is odd. */
+      temp->av_table[temp->count++] = dbf->header->avail.av_table[index];
+    else
+      dbf->header->avail.av_table[index>>1]
+	= dbf->header->avail.av_table[index];
+
+  /* Update the header avail count to previous size divided by 2. */
+  dbf->header->avail.count >>= 1;
+
+  /* Free the unneeded space. */
+  new_loc.av_adr += av_size;
+  new_loc.av_size -= av_size;
+  _gdbm_free (dbf, new_loc.av_adr, new_loc.av_size);
+
+  /* Update the disk. */
+  file_pos = lseek (dbf->desc, av_adr, L_SET);
+  if (file_pos != av_adr) _gdbm_fatal (dbf, "lseek error");
+  num_bytes = write (dbf->desc, temp, av_size);
+  if (num_bytes != av_size) _gdbm_fatal (dbf, "write error");
+  free (temp);
+}
+
+
+
+/* Get_elem returns an element in the AV_TABLE block which is
+   larger than SIZE.  AV_COUNT is the number of elements in the
+   AV_TABLE.  If an item is found, it extracts it from the AV_TABLE
+   and moves the other elements up to fill the space. If no block is 
+   found larger than SIZE, get_elem returns a size of zero.  This
+   routine does no I/O. */
+
+static avail_elem
+get_elem (size, av_table, av_count)
+     int size;
+     avail_elem av_table[];
+     int *av_count;
+{
+  int index;			/* For searching through the avail block. */
+  avail_elem val;		/* The default return value. */
+
+  /* Initialize default return value. */
+  val.av_adr = 0;
+  val.av_size = 0;
+
+  /* Search for element.  List is sorted by size. */
+  index = 0;
+  while (index < *av_count && av_table[index].av_size < size)
+    {
+      index++;
+    }
+
+  /* Did we find one of the right size? */
+  if (index >= *av_count)
+    return val;
+
+  /* Ok, save that element and move all others up one. */
+  val = av_table[index];
+  *av_count -= 1;
+  while (index < *av_count)
+    {
+      av_table[index] = av_table[index+1];
+      index++;
+    }
+
+  return val;
+}
+
+
+/* This routine inserts a single NEW_EL into the AV_TABLE block.
+   This routine does no I/O. */
+
+int
+_gdbm_put_av_elem (new_el, av_table, av_count, can_merge)
+     avail_elem new_el;
+     avail_elem av_table[];
+     int *av_count;
+     int can_merge;		/* We should allow blocks to merge. */
+{
+  int index;			/* For searching through the avail block. */
+  int index1;
+
+  /* Is it too small to deal with? */
+  if (new_el.av_size <= IGNORE_SIZE)
+    return FALSE;
+
+  if (can_merge == TRUE)
+    {
+      /* Search for blocks to coalesce with this one. */
+      index = 0;
+
+      while (index < *av_count)
+	{
+	  /* Can we merge with the previous block? */
+	  if ((av_table[index].av_adr
+	       + av_table[index].av_size) == new_el.av_adr)
+	    {
+	      /* Simply expand the endtry. */
+	      av_table[index].av_size += new_el.av_size;
+	    }
+	    /* Can we merge with the next block? */
+	    else if ((new_el.av_adr
+	      	      + new_el.av_size) == av_table[index].av_adr)
+	      {
+	        /* Update this entry. */
+	        av_table[index].av_adr = new_el.av_adr;
+		av_table[index].av_size += new_el.av_size;
+	      }
+	    /* Not contiguous */
+	    else
+	      {
+		index++;
+		continue;
+	      }
+	    
+	    /* If we got here, we're done. */
+	    return TRUE;
+	}
+    }
+
+  /* Search for place to put element.  List is sorted by size. */
+  index = 0;
+  while (index < *av_count && av_table[index].av_size < new_el.av_size)
+    {
+      index++;
+    }
+
+  /* Move all others up one. */
+  index1 = *av_count-1;
+  while (index1 >= index)
+    {
+      av_table[index1+1] = av_table[index1];
+      index1--;
+    }
+
+  /* Add the new element. */
+  av_table[index] = new_el;
+
+  /* Increment the number of elements. */
+  *av_count += 1;
+
+  return TRUE;
+}
+
+
+
+
+
+/* Get_block "allocates" new file space and the end of the file.  This is
+   done in integral block sizes.  (This helps insure that data smaller than
+   one block size is in a single block.)  Enough blocks are allocated to
+   make sure the number of bytes allocated in the blocks is larger than SIZE.
+   DBF contains the file header that needs updating.  This routine does
+   no I/O.  */
+
+static avail_elem
+get_block (size, dbf)
+     int size;
+     gdbm_file_info *dbf;
+{
+  avail_elem val;
+
+  /* Need at least one block. */
+  val.av_adr  = dbf->header->next_block;
+  val.av_size = dbf->header->block_size;
+
+  /* Get enough blocks to fit the need. */
+  while (val.av_size < size)
+    val.av_size += dbf->header->block_size;
+
+  /* Update the header and return. */
+  dbf->header->next_block += val.av_size;
+
+  /* We changed the header. */
+  dbf->header_changed = TRUE;
+
+  return val;
+  
+}
+
+
+/*  When the header already needs writing, we can make sure the current
+    bucket has its avail block as close to 1/3 full as possible. */
+static void
+adjust_bucket_avail (dbf)
+     gdbm_file_info *dbf;
+{
+  int third = BUCKET_AVAIL / 3;
+  avail_elem av_el;
+
+  /* Can we add more entries to the bucket? */
+  if (dbf->bucket->av_count < third)
+    {
+      if (dbf->header->avail.count > 0)
+	{
+	  dbf->header->avail.count -= 1;
+	  av_el = dbf->header->avail.av_table[dbf->header->avail.count];
+	  _gdbm_put_av_elem (av_el, dbf->bucket->bucket_avail,
+			     &dbf->bucket->av_count, dbf->coalesce_blocks);
+	  dbf->bucket_changed = TRUE;
+	}
+      return;
+    }
+
+  /* Is there too much in the bucket? */
+  while (dbf->bucket->av_count > BUCKET_AVAIL-third
+	 && dbf->header->avail.count < dbf->header->avail.size)
+    {
+      av_el = get_elem (0, dbf->bucket->bucket_avail, &dbf->bucket->av_count);
+      _gdbm_put_av_elem (av_el, dbf->header->avail.av_table,
+			 &dbf->header->avail.count, dbf->coalesce_blocks);
+      dbf->bucket_changed = TRUE;
+    }
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/fetch.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/fetch.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/fetch.c	(revision 18906)
@@ -0,0 +1,56 @@
+/* fetch.c - Find a key and return the associated data.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+
+/* Look up a given KEY and return the information associated with that KEY.
+   The pointer in the structure that is  returned is a pointer to dynamically
+   allocated memory block.  This DBM interface uses the NDBM interface. */
+
+datum
+fetch (key)
+     datum key;
+{
+  datum  ret_val;		/* The return value. */
+
+  /* Free previous dynamic memory, do actual call, and save pointer to new
+     memory. */
+  ret_val = gdbm_fetch (_gdbm_file, key);
+  if (_gdbm_fetch_val != NULL) free (_gdbm_fetch_val);
+  _gdbm_fetch_val = ret_val.dptr;
+
+  /* Return the new value. */
+  return ret_val;
+
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/findkey.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/findkey.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/findkey.c	(revision 18906)
@@ -0,0 +1,160 @@
+/* findkey.c - The routine that finds a key entry in the file. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+
+/* Read the data found in bucket entry ELEM_LOC in file DBF and
+   return a pointer to it.  Also, cache the read value. */
+
+char *
+_gdbm_read_entry (dbf, elem_loc)
+     gdbm_file_info *dbf;
+     int elem_loc;
+{
+  int num_bytes;		/* For seeking and reading. */
+  int key_size;
+  int data_size;
+  off_t file_pos;
+  data_cache_elem *data_ca;
+
+  /* Is it already in the cache? */
+  if (dbf->cache_entry->ca_data.elem_loc == elem_loc)
+    return dbf->cache_entry->ca_data.dptr;
+
+  /* Set sizes and pointers. */
+  key_size = dbf->bucket->h_table[elem_loc].key_size;
+  data_size = dbf->bucket->h_table[elem_loc].data_size;
+  data_ca = &dbf->cache_entry->ca_data;
+  
+  /* Set up the cache. */
+  if (data_ca->dptr != NULL) free (data_ca->dptr);
+  data_ca->key_size = key_size;
+  data_ca->data_size = data_size;
+  data_ca->elem_loc = elem_loc;
+  data_ca->hash_val = dbf->bucket->h_table[elem_loc].hash_value;
+  if (key_size+data_size == 0)
+    data_ca->dptr = (char *) malloc (1);
+  else
+    data_ca->dptr = (char *) malloc (key_size+data_size);
+  if (data_ca->dptr == NULL) _gdbm_fatal (dbf, "malloc error");
+
+
+  /* Read into the cache. */
+  file_pos = lseek (dbf->desc,
+		    dbf->bucket->h_table[elem_loc].data_pointer, L_SET);
+  if (file_pos != dbf->bucket->h_table[elem_loc].data_pointer)
+    _gdbm_fatal (dbf, "lseek error");
+  num_bytes = read (dbf->desc, data_ca->dptr, key_size+data_size);
+  if (num_bytes != key_size+data_size) _gdbm_fatal (dbf, "read error");
+  
+  return data_ca->dptr;
+}
+
+
+
+/* Find the KEY in the file and get ready to read the associated data.  The
+   return value is the location in the current hash bucket of the KEY's
+   entry.  If it is found, a pointer to the data and the key are returned
+   in DPTR.  If it is not found, the value -1 is returned.  Since find
+   key computes the hash value of key, that value */
+int
+_gdbm_findkey (dbf, key, dptr, new_hash_val)
+     gdbm_file_info *dbf;
+     datum key;
+     char **dptr;
+     int *new_hash_val;		/* The new hash value. */
+{
+  int    bucket_hash_val;	/* The hash value from the bucket. */
+  char  *file_key;		/* The complete key as stored in the file. */
+  int    elem_loc;		/* The location in the bucket. */
+  int    home_loc;		/* The home location in the bucket. */
+  int    key_size;		/* Size of the key on the file.  */
+
+  /* Compute hash value and load proper bucket.  */
+  *new_hash_val = _gdbm_hash (key);
+  _gdbm_get_bucket (dbf, *new_hash_val>> (31-dbf->header->dir_bits));
+
+  /* Is the element the last one found for this bucket? */
+  if (dbf->cache_entry->ca_data.elem_loc != -1 
+      && *new_hash_val == dbf->cache_entry->ca_data.hash_val
+      && dbf->cache_entry->ca_data.key_size == key.dsize
+      && dbf->cache_entry->ca_data.dptr != NULL
+      && bcmp (dbf->cache_entry->ca_data.dptr, key.dptr, key.dsize) == 0)
+    {
+      /* This is it. Return the cache pointer. */
+      *dptr = dbf->cache_entry->ca_data.dptr+key.dsize;
+      return dbf->cache_entry->ca_data.elem_loc;
+    }
+      
+  /* It is not the cached value, search for element in the bucket. */
+  elem_loc = *new_hash_val % dbf->header->bucket_elems;
+  home_loc = elem_loc;
+  bucket_hash_val = dbf->bucket->h_table[elem_loc].hash_value;
+  while (bucket_hash_val != -1)
+    {
+      key_size = dbf->bucket->h_table[elem_loc].key_size;
+      if (bucket_hash_val != *new_hash_val
+	 || key_size != key.dsize
+	 || bcmp (dbf->bucket->h_table[elem_loc].key_start, key.dptr,
+			(SMALL < key_size ? SMALL : key_size)) != 0) 
+	{
+	  /* Current elem_loc is not the item, go to next item. */
+	  elem_loc = (elem_loc + 1) % dbf->header->bucket_elems;
+	  if (elem_loc == home_loc) return -1;
+	  bucket_hash_val = dbf->bucket->h_table[elem_loc].hash_value;
+	}
+      else
+	{
+	  /* This may be the one we want.
+	     The only way to tell is to read it. */
+	  file_key = _gdbm_read_entry (dbf, elem_loc);
+	  if (bcmp (file_key, key.dptr, key_size) == 0)
+	    {
+	      /* This is the item. */
+	      *dptr = file_key+key.dsize;
+	      return elem_loc;
+	    }
+	  else
+	    {
+	      /* Not the item, try the next one.  Return if not found. */
+	      elem_loc = (elem_loc + 1) % dbf->header->bucket_elems;
+	      if (elem_loc == home_loc) return -1;
+	      bucket_hash_val = dbf->bucket->h_table[elem_loc].hash_value;
+	    }
+	}
+    }
+
+  /* If we get here, we never found the key. */
+  return -1;
+
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.3
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.3	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.3	(revision 18906)
@@ -0,0 +1,584 @@
+.ds ve 1.8.3
+.TH GDBM 3 10/15/2002
+.SH NAME
+GDBM - The GNU database manager.  Includes \fBdbm\fR and \fBndbm\fR
+compatability. (Version \*(ve.)
+.SH SYNOPSIS
+.B #include <gdbm.h>
+.PP
+.SM
+.B extern gdbm_error
+.br
+.B gdbm_errno
+.PP
+.B extern char
+.br
+.B *gdbm_version
+.PP
+.B GDBM_FILE
+.br
+.B gdbm_open (name, block_size, read_write, mode, fatal_func)
+.br
+.B char * name;
+.br
+.B int block_size, read_write, mode;
+.br
+.B void (*fatal_func) ();
+.PP
+.B void
+.br
+.B gdbm_close (dbf)
+.br
+.B GDBM_FILE dbf;
+.PP
+.B int
+.br
+.B gdbm_store (dbf, key, content, flag)
+.br
+.B GDBM_FILE dbf;
+.br
+.B datum key, content;
+.br
+.B int flag;
+.PP
+.B datum
+.br
+.B gdbm_fetch (dbf, key)
+.br
+.B GDBM_FILE dbf;
+.br
+.B datum key;
+.PP
+.B int
+.br
+.B gdbm_delete (dbf, key)
+.br
+.B GDBM_FILE dbf;
+.br
+.B datum key;
+.PP
+.B datum
+.br
+.B gdbm_firstkey (dbf)
+.br
+.B GDBM_FILE dbf;
+.PP
+.B datum
+.br
+.B gdbm_nextkey (dbf, key)
+.br
+.B GDBM_FILE dbf;
+.br
+.B datum key;
+.PP
+.B int
+.br
+.B gdbm_reorganize (dbf)
+.br
+.B GDBM_FILE dbf;
+.PP
+.B void
+.br
+.B gdbm_sync (dbf)
+.br
+.B GDBM_FILE dbf;
+.PP
+.B int
+.br
+.B gdbm_exists (dbf, key)
+.br
+.B GDBM_FILE dbf;
+.br
+.B datum key;
+.PP
+.B char *
+.br
+.B gdbm_strerror (errno)
+.br
+.B gdbm_error errno;
+.PP
+.B int
+.br
+.B gdbm_setopt (dbf, option, value, size)
+.br
+.B GDBM_FILE dbf;
+.br
+.B int option;
+.br
+.B int *value;
+.br
+.B int size;
+.PP
+.B int
+.br
+.B gdbm_fdesc (dbf)
+.br
+.B GDBM_FILE dbf;
+.PP
+.PP
+.B DBM Compatability routines:
+.PP
+.B #include <dbm.h>
+.PP
+.SM
+.B int
+.br
+.B dbminit (name)
+.br
+.B char *name;
+.PP
+.B int
+.br
+.B store (key, content)
+.br
+.B datum key, content;
+.PP
+.B datum
+.br
+.B fetch (key)
+.br
+.B datum key;
+.PP
+.B int
+.br
+.B delete (key)
+.br
+.B datum key;
+.PP
+.B datum
+.br
+.B firstkey ()
+.PP
+.B datum
+.br
+.B nextkey (key)
+.br
+.B datum key;
+.PP
+.B int
+.br
+.B dbmclose ()
+.PP
+.PP
+.B NDBM Compatability routines:
+.PP
+.B #include <ndbm.h>
+.PP
+.SM
+.B DBM
+.br
+.B *dbm_open (name, flags, mode)
+.br
+.B char *name;
+.br
+.B int flags, mode;
+.PP
+.B void
+.br
+.B dbm_close (file)
+.br
+.B DBM *file;
+.PP
+.B datum
+.br
+.B dbm_fetch (file, key)
+.br
+.B DBM *file;
+.br
+.B datum key;
+.PP
+.B int
+.br
+.B dbm_store (file, key, content, flags)
+.br
+.B DBM *file;
+.br
+.B datum key, content;
+.br
+.B int flags;
+.PP
+.B int
+.br
+.B dbm_delete (file, key)
+.br
+.B DBM *file;
+.br
+.B datum key;
+.PP
+.B datum
+.br
+.B dbm_firstkey (file)
+.br
+.B DBM *file;
+.PP
+.B datum
+.br
+.B dbm_nextkey (file)
+.br
+.B DBM *file;
+.PP
+.B int
+.br
+.B dbm_error (file)
+.br
+.B DBM *file;
+.PP
+.B int
+.br
+.B dbm_clearerr (file)
+.br
+.B DBM *file;
+.PP
+.B int
+.br
+.B dbm_pagfno (file)
+.br
+.B DBM *file;
+.PP
+.B int
+.br
+.B dbm_dirfno (file)
+.br
+.B DBM *file;
+.PP
+.B int
+.br
+.B dbm_rdonly (file)
+.br
+.B DBM *file;
+
+
+.SH DESCRIPTION
+GNU dbm is a library of routines that manages data files that contain
+key/data pairs.  The access provided is that of storing, 
+retrieval, and deletion by key and a non-sorted traversal of all
+keys.  A process is allowed to use multiple data files at the
+same time.
+
+A process that opens a gdbm file is designated as a "reader" or a
+"writer".  Only one writer may open a gdbm file and many readers may
+open the file.  Readers and writers can not open the gdbm file at the
+same time. The procedure for opening a gdbm file is:
+
+  GDBM_FILE dbf;
+
+  dbf = gdbm_open ( name, block_size, read_write, mode, fatal_func )
+
+\fIName\fR is the name of the file (the complete name,
+gdbm does not append any characters to this name).  \fIBlock_size\fR is
+the size of a single transfer from disk to memory. This parameter is
+ignored unless the file is a new file.  The minimum size is 512.  If
+it is less than 512, dbm will use the stat block size for the file system.
+\fIRead_write\fR can have one of the following values:
+.br
+.B GDBM_READER
+reader
+.br
+.B GDBM_WRITER
+writer
+.br
+.B GDBM_WRCREAT
+writer - if database does not exist create new one
+.br
+.B GDBM_NEWDB
+writer - create new database regardless if one exists
+.br
+For the last three (writers of the database) the following may be added
+added to \fIread_write\fR by bitwise or:
+.B GDBM_SYNC,
+which causes all database operations to be synchronized to the disk, and
+.B GDBM_NOLOCK,
+which prevents the library from performing any locking on the database file.
+The option
+.B GDBM_FAST
+is now obsolete, since gdbm defaults to no-sync mode.
+.br
+\fIMode\fR is the file mode (see \fBchmod(2)\fR and \fBopen(2)\fR) if the
+file is created. \fI(*Fatal_func) ()\fR is a function for dbm to call
+if it detects a fatal error. The only parameter of this function is a string.
+If the value of 0 is provided, gdbm will use a default function.
+
+The return value \fIdbf\fR is the pointer needed by all other routines to
+access that gdbm file.  If the return is the NULL pointer, \fBgdbm_open\fR
+was not successful.  The errors can be found in \fIgdbm_errno\fR for gdbm
+errors and in \fIerrno\fR for system errors.  (For error codes, see
+gdbmerrno.h.)
+
+In all of the following calls, the parameter \fIdbf\fR refers to the pointer
+returned from \fBgdbm_open\fR.
+
+It is important that every file opened is also closed.  This is needed to
+update the reader/writer count on the file.  This is done by:
+
+  gdbm_close (dbf);
+
+
+The database is used by 3 primary routines.  The first stores data in the
+database.
+
+  ret = gdbm_store ( dbf, key, content, flag )
+
+\fIDbf\fR is the pointer returned by \fBgdbm_open\fR.  \fIKey\fR is the
+key data.  \fIContent\fR is the data to be associated with the \fIkey\fR.
+\fIFlag\fR can have one of the following values:
+.br
+.B GDBM_INSERT
+insert only, generate an error if key exists
+.br
+.B GDBM_REPLACE
+replace contents if key exists.
+
+If a reader calls \fBgdbm_store\fR, the return value will be  -1.
+If called with GDBM_INSERT and \fIkey\fR is in the database, the return
+value will be 1.  Otherwise, the return value is 0.
+
+\fINOTICE: If you store data for a key that is already in the data base,
+gdbm replaces the old data with the new data if called with GDBM_REPLACE.
+You do not get two data items for the same key and you do not get an
+error from gdbm_store.
+
+NOTICE: The size in gdbm is not restricted like dbm or ndbm.  Your data
+can be as large as you want.\fR
+
+
+To search for some data:
+
+  content = gdbm_fetch ( dbf, key )
+
+\fIDbf\fR is the pointer returned by \fBgdbm_open\fR.  \fIKey\fR is
+the key data.
+
+
+If the \fIdptr\fR element of the return value is NULL, no data was
+found.  Otherwise the return value is a pointer to the found data.
+The storage space for the \fIdptr\fR element is allocated using
+\fBmalloc(3C)\fR.  \fBGdbm\fI does not automatically free this data.
+It is the programmer's responsibility to free this storage when it is
+no longer needed.\fR
+
+
+To search for some data, without retrieving it:
+
+  ret = gdbm_exists ( dbf, key )
+
+\fIDbf\fR is the pointer returned by \fBgdbm_open\fR.  \fIKey\fR is
+the key data to search for.
+
+If the \fIkey\fR is found within the database, the return value \fIret\fR
+will be true.  If nothing appropiate is found, \fIret\fR will be false.
+This routine is useful for checking for the existance of a record,
+without performing the memory allocation done by \fBgdbm_fetch\fR.
+
+
+To remove some data from the database:
+
+  ret = gdbm_delete ( dbf, key )
+
+\fIDbf\fR is the pointer returned by \fBgdbm_open\fR.  \fIKey\fR is the
+key data.
+
+The return value is -1 if the item is not present or the requester is a reader.
+The return value is 0 if there was a successful delete.
+
+
+The next two routines allow for accessing all items in the database.  This 
+access is not key sequential, but it is guaranteed to visit every key in
+the database once.  (The order has to do with the hash values.)
+
+  key = gdbm_firstkey ( dbf )
+
+  nextkey = gdbm_nextkey ( dbf, key )
+
+\fIDbf\fR is the pointer returned by \fBgdbm_open\fR. \fIKey\fR is the
+key data.
+
+The return values are both of type \fBdatum\fR.  If the \fIdptr\fR
+element of the return value is NULL, there is no first key or next key.
+Again notice that \fIdptr\fR points to data allocated by \fBmalloc(3C)\fR
+and \fBgdbm\fR will not free it for you. 
+
+These functions were intended to visit the database in read-only algorithms,
+for instance, to validate the database or similar operations.
+
+File `visiting' is based on a `hash table'.  \fIgdbm_delete\fR re-arranges the
+hash table to make sure that any collisions in the table do not leave some item
+`un-findable'.  The original key order is NOT guaranteed to remain unchanged in
+ALL instances.  It is possible that some key will not be visited if a loop like
+the following is executed:
+
+   key = gdbm_firstkey ( dbf );
+   while ( key.dptr ) {
+      nextkey = gdbm_nextkey ( dbf, key );
+      if ( some condition ) {
+         gdbm_delete ( dbf, key );
+         free ( key.dptr );
+      }
+      key = nextkey;
+   }
+
+
+The following routine should be used very infrequently.
+  
+  ret = gdbm_reorganize ( dbf )
+
+If you have had a lot of deletions and would like to shrink the space
+used by the \fBgdbm\fR file, this routine will reorganize the database.
+\fBGdbm\fR will not shorten the length of a \fBgdbm\fR file except by
+using this reorganization.  (Deleted file space will be reused.)
+
+
+Unless your database was opened with the GDBM_SYNC flag, gdbm does not
+wait for writes to be flushed to the disk before continuing.
+The following routine can be used to guarantee that the database is
+physically written to the disk file.
+
+  gdbm_sync ( dbf )
+
+It will not return until the disk file state is syncronized with the
+in-memory state of the database.
+
+
+To convert a \fBgdbm\fR error code into English text, use this routine:
+
+  ret = gdbm_strerror ( errno )
+
+Where \fIerrno\fR is of type \fIgdbm_error\fR, usually the global
+variable \fIgdbm_errno\fR.  The appropiate phrase is returned.
+
+
+\fBGdbm\fR now supports the ability to set certain options on an
+already open database.
+
+  ret = gdbm_setopt ( dbf, option, value, size )
+
+Where \fIdbf\fR is the return value from a previous call to \fBgdbm_open\fR,
+and \fIoption\fR specifies which option to set.  The valid options are
+currently:
+
+  \fBGDBM_CACHESIZE\fR - Set the size of the internal bucket
+  cache. This option may only be set once on each \fIGDBM_FILE\fR
+  descriptor, and is set automatically to 100 upon the first
+  access to the database.
+
+  \fBGDBM_FASTMODE\fR - Set \fBfast mode\fR to either on or off.  This
+  allows \fBfast mode\fR to be toggled on an already open and
+  active database. \fIvalue\fR (see below) should be set to either
+  TRUE or FALSE.  \fIThis option is now obsolete.\fR
+
+  \fBGDBM_SYNCMODE\fR - Turn on or off file system synchronization operations.
+  This setting defaults to off; \fIvalue\fR (see below) should be set to either
+  TRUE or FALSE.
+
+  \fBGDBM_CENTFREE\fR - Set \fBcentral free block pool\fR to either on or off.
+  The default is off, which is how previous versions of \fBGdbm\fR
+  handled free blocks. If set, this option causes all subsequent free
+  blocks to be placed in the \fBglobal\fR pool, allowing (in thoery)
+  more file space to be reused more quickly. \fIvalue\fR (see below) should
+  be set to either TRUE or FALSE.
+  \fINOTICE: This feature is still under study.\fR
+
+  \fBGDBM_COALESCEBLKS\fR - Set \fBfree block merging\fR to either on or off.
+  The default is off, which is how previous versions of \fBGdbm\fR
+  handled free blocks. If set, this option causes adjacent free blocks
+  to be merged. This can become a CPU expensive process with time, though,
+  especially if used in conjunction with \fBGDBM_CENTFREE\fR. \fIvalue\fR
+  (see below) should be set to either TRUE or FALSE.
+  \fINOTICE: This feature is still under study.\fR
+
+\fIvalue\fR is the value to set \fIoption\fR to, specified as an integer
+pointer.  \fIsize\fR is the size of the data pointed to by \fIvalue\fR.
+The return value will be -1 upon failure, or 0 upon success.  The global
+variable \fIgdbm_errno\fR will be set upon failure.
+
+For instance, to set a database to use a cache of 10, after opening it
+with \fBgdbm_open\fR, but prior to accessing it in any way, the following
+code could be used:
+
+  int value = 10;
+  
+  ret = gdbm_setopt( dbf, GDBM_CACHESIZE, &value, sizeof(int));
+
+
+If the database was opened with the \fBGDBM_NOLOCK\fR flag, the user may
+wish to perform their own file locking on the database file in order to
+prevent multiple writers operating on the same file simultaneously.
+
+In order to support this, the \fIgdbm_fdesc\fR routine is provided.
+
+  ret = gdbm_fdesc ( dbf )
+
+Where \fIdbf\fR is the return value from a previous call to \fBgdbm_open\fR.
+The return value will be the file descriptor of the database.
+
+The following two external variables may be useful:
+
+\fIgdbm_errno\fR is the variable that contains more information about
+gdbm errors.  (gdbm.h has the definitions of the error values and
+defines gdbm_errno as an external variable.)
+.br
+\fIgdbm_version\fR is the string containing the version information.
+
+
+There are a few more things of interest.  First, \fBgdbm\fR files are
+not "sparse".  You can copy them with the UNIX \fBcp(1)\fR command and
+they will not expand in the copying process.  Also, there is a
+compatibility mode for use with programs that already use UNIX
+\fBdbm\fR.  In this compatibility mode, no \fRgdbm\fR file pointer is
+required by the programmer, and only one file may be opened at a time.
+All users in compatibility mode are assumed to be writers.  If the
+\fBgdbm\fR file is a read only, it will fail as a writer, but will
+also try to open it as a reader.  All returned pointers in datum
+structures point to data that \fBgdbm\fR WILL free.  They should be
+treated as static pointers (as standard UNIX \fBdbm\fR does).
+
+
+.SH LINKING
+This library is accessed by specifying \fI-lgdbm\fR as the last
+parameter to the compile line, e.g.:
+.sp
+	gcc -o prog prog.c -lgdbm
+
+If you wish to use the \fBdbm\fR or \fBndbm\fR compatibility routines,
+you must link in the \fIgdbm_compat\fR library as well.  For example:
+.sp
+	gcc -o prog proc.c -lgdbm -lgdbm_compat
+
+.SH BUGS
+
+.SH "SEE ALSO"
+dbm, ndbm
+
+.SH AUTHOR
+by Philip A. Nelson and Jason Downs.
+Copyright (C) 1990 - 1999 Free Software Foundation, Inc.
+
+GDBM is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+GDBM is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDBM; see the file COPYING.  If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+You may contact the original author by:
+.br
+   e-mail:  phil@cs.wwu.edu
+.br
+  us-mail:  Philip A. Nelson
+.br
+Computer Science Department
+.br
+Western Washington University
+.br
+Bellingham, WA 98226
+
+You may contact the current maintainer by:
+.br
+   e-mail:  downsj@downsj.com
+
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.h	(revision 18906)
@@ -0,0 +1,139 @@
+/* gdbm.h  -  The include file for dbm users.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+/* Protection for multiple includes. */
+#ifndef _GDBM_H_
+#define _GDBM_H_
+
+/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who
+   can create the database. */
+#define  GDBM_READER  0		/* A reader. */
+#define  GDBM_WRITER  1		/* A writer. */
+#define  GDBM_WRCREAT 2		/* A writer.  Create the db if needed. */
+#define  GDBM_NEWDB   3		/* A writer.  Always create a new db. */
+#define  GDBM_FAST    0x10	/* Write fast! => No fsyncs.  OBSOLETE. */
+#define  GDBM_SYNC    0x20	/* Sync operations to the disk. */
+#define  GDBM_NOLOCK  0x40	/* Don't do file locking operations. */
+
+/* Parameters to gdbm_store for simple insertion or replacement in the
+   case that the key is already in the database. */
+#define  GDBM_INSERT  0		/* Never replace old data with new. */
+#define  GDBM_REPLACE 1		/* Always replace old data with new. */
+
+/* Parameters to gdbm_setopt, specifing the type of operation to perform. */
+#define  GDBM_CACHESIZE 1       /* Set the cache size. */
+#define  GDBM_FASTMODE  2       /* Toggle fast mode.  OBSOLETE. */
+#define  GDBM_SYNCMODE	3	/* Turn on or off sync operations. */
+#define  GDBM_CENTFREE  4	/* Keep all free blocks in the header. */
+#define  GDBM_COALESCEBLKS 5	/* Attempt to coalesce free blocks. */
+
+/* The data and key structure.  This structure is defined for compatibility. */
+typedef struct {
+	char *dptr;
+	int   dsize;
+      } datum;
+
+
+/* The file information header. This is good enough for most applications. */
+typedef struct {int dummy[10];} *GDBM_FILE;
+
+/* Determine if the C(++) compiler requires complete function prototype  */
+#ifndef __P
+#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
+#define __P(x) x
+#else
+#define __P(x) ()
+#endif
+#endif
+
+/* External variable, the gdbm build release string. */
+extern char *gdbm_version;	
+
+
+/* GDBM C++ support */
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/* These are the routines! */
+
+extern GDBM_FILE gdbm_open __P((char *, int, int, int, void (*)()));
+extern void gdbm_close __P((GDBM_FILE));
+extern int gdbm_store __P((GDBM_FILE, datum, datum, int));
+extern datum gdbm_fetch __P((GDBM_FILE, datum));
+extern int gdbm_delete __P((GDBM_FILE, datum));
+extern datum gdbm_firstkey __P((GDBM_FILE));
+extern datum gdbm_nextkey __P((GDBM_FILE, datum));
+extern int gdbm_reorganize __P((GDBM_FILE));
+extern void gdbm_sync __P((GDBM_FILE));
+extern int gdbm_exists __P((GDBM_FILE, datum));
+extern int gdbm_setopt __P((GDBM_FILE, int, int *, int));
+extern int gdbm_fdesc __P((GDBM_FILE));
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#define	GDBM_NO_ERROR		0
+#define	GDBM_MALLOC_ERROR	1
+#define	GDBM_BLOCK_SIZE_ERROR	2
+#define	GDBM_FILE_OPEN_ERROR	3
+#define	GDBM_FILE_WRITE_ERROR	4
+#define	GDBM_FILE_SEEK_ERROR	5
+#define	GDBM_FILE_READ_ERROR	6
+#define	GDBM_BAD_MAGIC_NUMBER	7
+#define	GDBM_EMPTY_DATABASE	8
+#define	GDBM_CANT_BE_READER	9
+#define	GDBM_CANT_BE_WRITER	10
+#define	GDBM_READER_CANT_DELETE	11
+#define	GDBM_READER_CANT_STORE	12
+#define	GDBM_READER_CANT_REORGANIZE	13
+#define	GDBM_UNKNOWN_UPDATE	14
+#define	GDBM_ITEM_NOT_FOUND	15
+#define	GDBM_REORGANIZE_FAILED	16
+#define	GDBM_CANNOT_REPLACE	17
+#define	GDBM_ILLEGAL_DATA	18
+#define	GDBM_OPT_ALREADY_SET	19
+#define	GDBM_OPT_ILLEGAL	20
+typedef int gdbm_error;		/* For compatibilities sake. */
+extern gdbm_error gdbm_errno;
+
+/* extra prototypes */
+
+/* GDBM C++ support */
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+extern char *gdbm_strerror __P((gdbm_error));
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.proto
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.proto	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.proto	(revision 18906)
@@ -0,0 +1,101 @@
+/* gdbm.h  -  The include file for dbm users.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+/* Protection for multiple includes. */
+#ifndef _GDBM_H_
+#define _GDBM_H_
+
+/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who
+   can create the database. */
+#define  GDBM_READER  0		/* A reader. */
+#define  GDBM_WRITER  1		/* A writer. */
+#define  GDBM_WRCREAT 2		/* A writer.  Create the db if needed. */
+#define  GDBM_NEWDB   3		/* A writer.  Always create a new db. */
+#define  GDBM_FAST    0x10	/* Write fast! => No fsyncs.  OBSOLETE. */
+#define  GDBM_SYNC    0x20	/* Sync operations to the disk. */
+#define  GDBM_NOLOCK  0x40	/* Don't do file locking operations. */
+
+/* Parameters to gdbm_store for simple insertion or replacement in the
+   case that the key is already in the database. */
+#define  GDBM_INSERT  0		/* Never replace old data with new. */
+#define  GDBM_REPLACE 1		/* Always replace old data with new. */
+
+/* Parameters to gdbm_setopt, specifing the type of operation to perform. */
+#define  GDBM_CACHESIZE 1       /* Set the cache size. */
+#define  GDBM_FASTMODE  2       /* Toggle fast mode.  OBSOLETE. */
+#define  GDBM_SYNCMODE	3	/* Turn on or off sync operations. */
+#define  GDBM_CENTFREE  4	/* Keep all free blocks in the header. */
+#define  GDBM_COALESCEBLKS 5	/* Attempt to coalesce free blocks. */
+
+/* The data and key structure.  This structure is defined for compatibility. */
+typedef struct {
+	char *dptr;
+	int   dsize;
+      } datum;
+
+
+/* The file information header. This is good enough for most applications. */
+typedef struct {int dummy[10];} *GDBM_FILE;
+
+/* Determine if the C(++) compiler requires complete function prototype  */
+#ifndef __P
+#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
+#define __P(x) x
+#else
+#define __P(x) ()
+#endif
+#endif
+
+/* External variable, the gdbm build release string. */
+extern char *gdbm_version;	
+
+
+/* GDBM C++ support */
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/* These are the routines! */
+
+extern GDBM_FILE gdbm_open __P((char *, int, int, int, void (*)()));
+extern void gdbm_close __P((GDBM_FILE));
+extern int gdbm_store __P((GDBM_FILE, datum, datum, int));
+extern datum gdbm_fetch __P((GDBM_FILE, datum));
+extern int gdbm_delete __P((GDBM_FILE, datum));
+extern datum gdbm_firstkey __P((GDBM_FILE));
+extern datum gdbm_nextkey __P((GDBM_FILE, datum));
+extern int gdbm_reorganize __P((GDBM_FILE));
+extern void gdbm_sync __P((GDBM_FILE));
+extern int gdbm_exists __P((GDBM_FILE, datum));
+extern int gdbm_setopt __P((GDBM_FILE, int, int *, int));
+extern int gdbm_fdesc __P((GDBM_FILE));
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.proto2
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.proto2	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.proto2	(revision 18906)
@@ -0,0 +1,15 @@
+
+/* extra prototypes */
+
+/* GDBM C++ support */
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+extern char *gdbm_strerror __P((gdbm_error));
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.texinfo
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.texinfo	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbm.texinfo	(revision 18906)
@@ -0,0 +1,793 @@
+\input texinfo	@c -*- Texinfo -*-
+@comment %**start of header (This is for running Texinfo on a region.)
+@setfilename gdbm.info
+@settitle gdbm
+@dircategory Programming & development tools
+@direntry
+* GDBM: (gdbm).			The GNU database manager.
+@end direntry
+@c @setchapternewpage odd
+@comment %**end of header (This is for running Texinfo on a region.)
+
+@iftex
+@finalout
+@end iftex
+
+@ifinfo
+This file documents the GNU dbm utility.
+
+Copyright (C) 1989-1999 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through Tex and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+@end ifinfo
+
+@titlepage
+@null
+@sp 6
+@center @titlefont{GNU dbm}
+@sp 2
+@center A Database Manager
+@sp 2
+@center by Philip A. Nelson and Jason Downs
+@sp 4
+@center Manual by Pierre Gaumond, Philip A. Nelson and Jason Downs
+@sp 1
+@center Edition 1.5
+@sp 1
+@center for GNU @code{dbm}, Version 1.8.3.
+@page
+@null
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1993-99 Free Software Foundation, Inc.
+@sp 2
+
+This is Edition 1.5 of the @cite{GNU @code{dbm} Manual}, for @code{gdbm}
+Version 1.8.3. @*
+Last updated October 15, 2002
+
+Published by the Free Software Foundation @*
+675 Massachusetts Avenue, @*
+Cambridge, MA 02139 USA @*
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Free Software Foundation.
+@end titlepage
+@page
+
+@node Top, Copying, (dir), (dir)
+@ifinfo
+GNU @code{dbm} is a library of functions implementing a hashed database
+on a disk file.  This manual documents GNU @code{dbm} Version 1.8.3
+(@code{gdbm}).  The software was written by Philip A. Nelson. This
+document was originally written by Pierre Gaumond from texts written by
+Phil.
+@end ifinfo
+
+
+@menu
+Introduction:
+
+* Copying::                    Your rights.
+* Intro::                      Introduction to GNU dbm.
+* List::                       List of functions.
+
+Functions:
+
+* Open::                       Opening the database.
+* Close::                      Closing the database.
+* Store::                      Inserting and replacing records in the database.
+* Fetch::                      Searching records in the database.
+* Delete::                     Removing records from the database.
+* Sequential::                 Sequential access to records.
+* Reorganization::             Database reorganization.
+* Sync::                       Insure all writes to disk have competed.
+* Errors::                     Convert internal error codes into English.
+* Options::                    Setting internal options.
+* Locking::                    File locking.
+
+Other topics:
+
+* Variables::                  Two useful variables.
+* Compatibility::              Compatibility with UNIX dbm and ndbm.
+* Conversion::                 Converting dbm files to gdbm format.
+* Bugs::                       Problems and bugs.
+@end menu
+
+@node Copying, Intro, Top, Top
+@chapter Copying Conditions.
+This library is @dfn{free}; this means that everyone is free to use
+it and free to redistribute it on a free basis.  GNU @code{dbm} (@code{gdbm})
+is not in the public domain; it is copyrighted and there
+are restrictions on its distribution, but these restrictions are
+designed to permit everything that a good cooperating citizen would want
+to do.  What is not allowed is to try to prevent others from further
+sharing any version of @code{gdbm} that they might get from
+you.@refill
+
+  Specifically, we want to make sure that you have the right to give
+away copies @code{gdbm}, that you receive
+source code or else can get it if you want it, that you can change these
+functions or use pieces of them in new free programs, and that you know
+you can do these things.@refill
+
+  To make sure that everyone has such rights, we have to forbid you to
+deprive anyone else of these rights.  For example, if you distribute
+copies @code{gdbm}, you must give the recipients all
+the rights that you have.  You must make sure that they, too, receive or
+can get the source code.  And you must tell them their rights.@refill
+
+  Also, for our own protection, we must make certain that everyone finds
+out that there is no warranty for anything in the @code{gdbm} distribution.
+If these functions are modified by someone else and passed on, we want
+their recipients to know that what they have is not what we distributed,
+so that any problems introduced by others will not reflect on our
+reputation.@refill
+
+@code{gdbm} is currently distributed under the terms of the GNU General
+Public License, Version 2.  (@emph{NOT} under the GNU General Library
+Public License.)  A copy the GNU General Public License is included with
+the distribution of @code{gdbm}.
+
+@node Intro, List, Copying, Top
+@chapter Introduction to GNU @code{dbm}.
+
+GNU @code{dbm} (@code{gdbm})is a library of database functions that use
+extendible hashing and works similar to the standard UNIX @code{dbm}
+functions.  These routines are provided to a programmer needing to
+create and manipulate a hashed database. (@code{gdbm} is @emph{NOT} a
+complete database package for an end user.)
+
+The basic use of @code{gdbm} is to store key/data pairs in a data file.
+Each key must be unique and each key is paired with only one data item.
+The keys can not be directly accessed in sorted order.  The basic unit
+of data in @code{gdbm} is the structure:
+
+@example
+  typedef struct @{
+             char *dptr;
+             int  dsize;
+          @} datum;
+@end example
+
+This structure allows for arbitrary sized keys and data items.
+
+The key/data pairs are stored in a @code{gdbm} disk file, called a
+@code{gdbm} database.  An application must open a @code{gdbm} database
+to be able manipulate the keys and data contained in the database.
+@code{gdbm} allows an application to have multiple databases open at the
+same time.  When an application opens a @code{gdbm} database, it is
+designated as a @code{reader} or a @code{writer}.  A @code{gdbm}
+database opened by at most one writer at a time.  However, many readers
+may open the database open simultaneously.  Readers and writers can not
+open the @code{gdbm} database at the same time.
+
+@node List, Open, Intro, Top
+@chapter List of functions.
+
+The following is a quick list of the functions contained in the @code{gdbm}
+library. The include file @code{gdbm.h}, that can be included by the user,
+contains a definition of these functions.
+
+@example
+#include <gdbm.h>
+
+GDBM_FILE gdbm_open(name, block_size, flags, mode, fatal_func);
+void gdbm_close(dbf);
+int gdbm_store(dbf, key, content, flag);
+datum gdbm_fetch(dbf, key);
+int gdbm_delete(dbf, key);
+datum gdbm_firstkey(dbf);
+datum gdbm_nextkey(dbf, key);
+int gdbm_reorganize(dbf);
+void gdbm_sync(dbf);
+int gdbm_exists(dbf, key);
+char *gdbm_strerror(errno);
+int gdbm_setopt(dbf, option, value, size);
+int gdbm_fdesc(dbf);
+@end example
+
+The @code{gdbm.h} include file is often in the @file{/usr/local/include}
+directory. (The actual location of @code{gdbm.h} depends on your local
+installation of @code{gdbm}.)
+
+@node Open, Close, List, Top
+@chapter Opening the database.
+
+Initialize @code{gdbm} system. If the file has a size of zero bytes, a file
+initialization procedure is performed, setting up the initial structure in the
+file.
+
+The procedure for opening a @code{gdbm} file is:
+
+@example
+GDBM_FILE dbf;
+
+dbf = gdbm_open(name, block_size, flags, mode, fatal_func);
+@end example
+
+The parameters are:
+
+@table @asis
+@item char *name
+The name of the file (the complete name, @code{gdbm} does not append any
+characters to this name).
+@item int block_size
+It is used during initialization to determine the size of various constructs. It
+is the size of a single transfer from disk to memory. This parameter is ignored
+if the file has been previously initialized. The minimum size is 512.
+If the value is less than 512, the file system blocksize is used, otherwise the
+value of @code{block_size} is used.
+@item int flags
+If @code{flags} is set to GDBM_READER, the user wants to just read the
+database and any call to @code{gdbm_store} or @code{gdbm_delete} will fail.
+Many readers can access the database at the same time. If @code{flags} is
+set to GDBM_WRITER, the user wants both read and write access to the database
+and requires exclusive access. If @code{flags} is set to GDBM_WRCREAT, the
+user wants both read and write access to the database and if the database does
+not exist, create a new one. If @code{flags} is set to GDBM_NEWDB, the
+user want a new database created, regardless of whether one existed, and wants
+read and write access to the new database.  The following may also be logically
+or'd into the database flags: GDBM_SYNC, which causes all database operations
+to be synchronized to the disk, and GDBM_NOLOCK, which prevents the library
+from performing any locking on the database file.  The option GDBM_FAST is
+now obsolete, since @code{gdbm} defaults to no-sync mode.  Any error detected
+will cause a return value of NULL and an appropriate value will be in
+@code{gdbm_errno} (see Variables). If no errors occur, a pointer to the
+@code{gdbm} file descriptor will be returned.
+@item int mode
+File mode (see chmod(2) and open(2) if the file is created).
+@item void (*fatal_func) ()
+A function for @code{gdbm} to call if it detects a fatal error. The only
+parameter of this function is a string. If the value of NULL is provided,
+@code{gdbm} will use a default function.
+@end table
+
+The return value, @code{dbf}, is the pointer needed by all other functions to
+access that @code{gdbm} file. If the return is the NULL pointer,
+@code{gdbm_open} was not successful. The errors can be found in
+@code{gdbm_errno} for @code{gdbm} errors and in @code{errno} for file system
+errors (for error codes, see @code{gdbm.h}).
+
+In all of the following calls, the parameter @code{dbf} refers to the pointer
+returned from @code{gdbm_open}.
+
+@node Close, Store, Open, Top
+@chapter Closing the database.
+
+It is important that every file opened is also closed. This is needed to
+update the reader/writer count on the file. This is done by:
+
+@example
+gdbm_close(dbf);
+@end example
+
+The parameter is:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@end table
+
+Closes the @code{gdbm} file and frees all memory associated with the file 
+@code{dbf}. 
+
+@node Store, Fetch, Close, Top
+@chapter Inserting and replacing records in the database.
+
+The function @code{gdbm_store} inserts or replaces records in the database.
+
+@example
+ret = gdbm_store(dbf, key, content, flag);
+@end example
+
+The parameters are:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@item datum key
+The @code{key} data.
+@item datum content
+The data to be associated with the key.
+@item int flag
+Defines the action to take when the key is already in the database. The value
+GDBM_REPLACE (defined in @code{gdbm.h}) asks that the old data be replaced by
+the new @code{content}. The value GDBM_INSERT asks that an error be returned
+and no action taken if the @code{key} already exists.
+@end table
+
+The values returned in @code{ret} are:
+
+@table @asis
+@item -1
+The item was not stored in the database because the caller was not an
+official writer or either @code{key} or @code{content} have a NULL dptr field.
+Both @code{key} and @code{content} must have the dptr field be a non-NULL value.
+Since a NULL dptr field is used by other functions to indicate an error, a NULL
+field cannot be valid data.
+@item +1
+The item was not stored because the argument @code{flag} was GDBM_INSERT and
+the @code{key} was already in the database.
+@item 0
+No error. @code{content} is keyed by @code{key}. The file on disk is updated
+to reflect the structure of the new database before returning from this
+function.
+@end table
+
+If you store data for a @code{key} that is already in the data base,
+@code{gdbm} replaces the old data with the new data if called with
+GDBM_REPLACE. You do not get two data items for the same @code{key} and you do
+not get an error from @code{gdbm_store}.
+
+The size in @code{gdbm} is not restricted like @code{dbm} or @code{ndbm}. Your
+data can be as large as you want.
+
+@node Fetch, Delete, Store,Top
+@chapter Searching for records in the database.
+
+Looks up a given @code{key} and returns the information associated with that
+key. The pointer in the structure that is  returned is a pointer to dynamically
+allocated memory block. To search for some data:
+
+@example
+content = gdbm_fetch(dbf, key);
+@end example
+
+The parameters are:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@item datum key
+The @code{key} data.
+@end table
+
+The datum returned in @code{content} is a pointer to the data found. If the
+dptr is NULL, no data was found. If dptr is not NULL, then it points
+to data allocated by malloc. @code{gdbm} does not automatically free this data.
+The user must free this storage when done using it. This eliminates the
+need to copy the result to save it for later use (you just save the pointer).
+
+You may also search for a particular key without retrieving it, using:
+
+@example
+ret = gdbm_exists(dbf, key);
+@end example
+
+The parameters are:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@item datum key
+The @code{key} data.
+@end table
+
+Unlike @code{gdbm_fetch}, this routine does not allocate any memory, and
+simply returns true or false, depending on whether the @code{key} exists,
+or not.
+
+@node Delete, Sequential, Fetch, Top
+@chapter Removing records from the database.
+
+To remove some data from the database:
+
+@example
+ret = gdbm_delete(dbf, key);
+@end example
+
+The parameters are:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@item datum key
+The @code{key} data.
+@end table
+
+The ret value is -1 if the item is not present or the requester is a reader.
+The ret value is 0 if there was a successful delete.
+
+@code{gdbm_delete} removes the keyed item and the @code{key} from the database
+@code{dbf}. The file on disk is updated to reflect the structure of the new
+database before returning from this function.
+
+@node Sequential, Reorganization, Delete, Top
+@chapter Sequential access to records.
+
+The next two functions allow for accessing all items in the database. This
+access is not @code{key} sequential, but it is guaranteed to visit every
+@code{key} in the database once. The order has to do with the hash values.
+@code{gdbm_firstkey} starts the visit of all keys in the database.
+@code{gdbm_nextkey} finds and reads the next entry in the hash structure for
+@code{dbf}.
+
+@example
+key = gdbm_firstkey(dbf);
+
+nextkey = gdbm_nextkey(dbf, key);
+@end example
+
+The parameters are:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@item datum @code{key}
+@item datum nextkey
+The @code{key} data.
+@end table
+
+The return values are both datum. If @code{key}.dptr or nextkey.dptr is NULL,
+there is no first @code{key} or next @code{key}. Again notice that dptr points to
+data allocated by malloc and @code{gdbm} will not free it for you.
+
+These functions were intended to visit the database in read-only algorithms,
+for instance, to validate the database or similar operations.
+
+File @code{visiting} is based on a @code{hash table}. @code{gdbm_delete}
+re-arranges the hash table to make sure that any collisions in the table do not
+leave some item @code{un-findable}. The original key order is NOT guaranteed to
+remain unchanged in ALL instances. It is possible that some key will not be
+visited if a loop like the following is executed:
+
+@example
+@group
+   key = gdbm_firstkey ( dbf );
+   while ( key.dptr ) @{
+      nextkey = gdbm_nextkey ( dbf, key );
+      if ( some condition ) @{
+         gdbm_delete ( dbf, key );
+         free ( key.dptr );
+      @}
+      key = nextkey;
+   @}
+@end group
+@end example
+
+@node Reorganization, Sync, Sequential, Top
+@chapter Database reorganization.
+
+The following function should be used very seldom.
+
+@example
+ret = gdbm_reorganize(dbf);
+@end example
+
+The parameter is:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@end table
+
+If you have had a lot of deletions and would like to shrink the space
+used by the @code{gdbm} file, this function will reorganize the database.
+@code{gdbm} will not shorten the length of a @code{gdbm} file (deleted file space will be
+reused) except by using this reorganization.
+
+This reorganization requires creating a new file and inserting all the elements
+in the old file @code{dbf} into the new file. The new file is then renamed to
+the same name as the old file and @code{dbf} is updated to contain all the
+correct information about the new file. If an error is detected, the return
+value is negative. The value zero is returned after a successful
+reorganization.
+
+@node Sync, Errors, Reorganization, Top
+@chapter Database Synchronization
+
+Unless your database was opened with the GDBM_SYNC flag, @code{gdbm} does not
+wait for writes to be flushed to the disk before continuing.  This allows
+faster writing of databases at the risk of having a corrupted database if
+the application terminates in an abnormal fashion.  The following function
+allows the programmer to make sure the disk version of the 
+database has been completely updated with all changes to the current time.
+
+@example
+gdbm_sync(dbf);
+@end example
+
+The parameter is:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@end table
+
+This would usually be called after a complete set of changes have been
+made to the database and before some long waiting time.
+@code{gdbm_close} automatically calls the equivalent of @code{gdbm_sync}
+so no call is needed if the database is to be closed immediately after
+the set of changes have been made.
+
+@node Errors, Options, Sync, Top
+@chapter Error strings.
+
+To convert a @code{gdbm} error code into English text, use this routine:
+
+@example
+ret = gdbm_strerror(errno)
+@end example
+
+The parameter is:
+
+@table @asis
+@item gdbm_error errno
+The @code{gdbm} error code, usually @code{gdbm_errno}.
+@end table
+
+The appropiate phrase for reading by humans is returned.
+
+@node Options, Locking, Errors, top
+@chapter Seting options.
+
+@code{Gdbm} supports the ability to set certain options on an already
+open database.
+
+@example
+ret = gdbm_setopt(dbf, option, value, size);
+@end example
+
+The parameters are:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@item int option
+The option to be set.
+@item int *value
+A pointer to the value to which @code{option} will be set.
+@item int size
+The length of the data pointed to by @code{value}.
+@end table
+
+The valid options are:
+
+  GDBM_CACHESIZE - Set the size of the internal bucket cache.  This
+  option may only be set once on each GDBM_FILE descriptor, and
+  is set automatically to 100 upon the first access to the database.
+
+  GDBM_FASTMODE - Set fast mode to either on or off.  This allows
+  fast mode to be toggled on an already open and active database.
+  value (see below) should be set to either TRUE or FALSE.
+  @emph{This option is now obsolete.}
+
+  GDBM_SYNCMODE - Turn on or off file system synchronization operations.  This
+  setting defaults to off; value (see below) should be set to either TRUE or
+  FALSE.
+
+  GDBM_CENTFREE - Set central free block pool to either on or off.
+  The default is off, which is how previous versions of @code{Gdbm}
+  handled free blocks.  If set, this option causes all subsequent free
+  blocks to be placed in the @emph{global} pool, allowing (in theory)
+  more file space to be reused more quickly.  value (see below) should
+  be set to either TRUE or FALSE.
+  @emph{NOTICE: This feature is still under study.}
+
+  GDBM_COALESCEBLKS - Set free block merging to either on or off.
+  The default is off, which is how previous versions of @code{Gdbm}
+  handled free blocks.  If set, this option causes adjacent free blocks
+  to be merged.  This can become a CPU expensive process with time, though,
+  especially if used in conjunction with GDBM_CENTFREE.  value (see below)
+  should be set to either TRUE or FALSE.
+  @emph{NOTICE: This feature is still under study.}
+
+The return value will be -1 upon failure, or 0 upon success.  The global
+variable @code{gdbm_errno} will be set upon failure.
+
+For instance, to set a database to use a cache of 10, after opening it
+with @code{gdbm_open}, but prior to accessing it in any way, the following
+code could be used:
+
+@example
+int value = 10;
+ret = gdbm_setopt(dbf, GDBM_CACHESIZE, &value, sizeof(int));
+@end example
+
+@node Locking, Variables, Options, Top
+@chapter File Locking.
+
+With locking disabled (if @code{gdbm_open} was called with GDBM_NOLOCK),
+the user may want to perform their own file locking on the database file
+in order to prevent multiple writers operating on the same file
+simultaneously.
+
+In order to support this, the @code{gdbm_fdesc} routine is provided.
+
+@example
+ret = gdbm_fdesc(dbf);
+@end example
+
+The single valid parameter is:
+
+@table @asis
+@item GDBM_FILE dbf
+The pointer returned by @code{gdbm_open}.
+@end table
+
+The return value will be the file descriptor of the database.
+
+@node Variables, Compatibility, Locking, Top
+@chapter Two useful variables.
+
+The following two variables are variables that may need to be used:
+
+@table @asis
+@item gdbm_error gdbm_errno
+The variable that contains more information about @code{gdbm} errors
+(@code{gdbm.h} has the definitions of the error values).
+@item char * gdbm_version
+The string containing the version information.
+@end table
+
+@node Compatibility, Conversion, Variables, Top
+@chapter Compatibility with standard @code{dbm} and @code{ndbm}.
+
+GNU @code{dbm} files are not @code{sparse}. You can copy them with the UNIX
+@code{cp} command and they will not expand in the copying process.
+
+There is a compatibility mode for use with programs that already use UNIX
+@code{dbm} and UNIX @code{ndbm}.
+
+GNU @code{dbm} has compatibility functions for @code{dbm}. For @code{dbm}
+compatibility functions, you need the include file @code{dbm.h}.
+
+In this compatibility mode, no @code{gdbm} file pointer is required
+by the user, and Only one file may be opened at a time. All users in
+compatibility mode are assumed to be writers. If the @code{gdbm} file is a
+read only, it will fail as a writer, but will also try to open it as a reader.
+All returned pointers in datum structures point to data that @code{gdbm} WILL
+free. They should be treated as static pointers (as standard UNIX @code{dbm}
+does). The compatibility function names are the same as the UNIX @code{dbm}
+function names. Their definitions follow:
+
+@example
+int dbminit(name);
+int store(key, content);
+datum fetch(key);
+int delete(key);
+datum firstkey();
+datum nextkey(key);
+int dbmclose();
+@end example
+
+Standard UNIX @code{dbm} and GNU @code{dbm} do not have the same data
+format in the file. You cannot access a standard UNIX @code{dbm} file with GNU
+@code{dbm}!  If you want to use an old database with GNU @code{dbm}, you must
+use the @code{conv2gdbm} program.
+
+Also, GNU @code{dbm} has compatibility functions for @code{ndbm}. For
+@code{ndbm} compatibility functions, you need the include file @code{ndbm.h}.
+
+Again, just like @code{ndbm}, any returned datum can be assumed to be static
+storage. You do not have to free that memory, the @code{ndbm} compatibility
+functions will do it for you.
+
+The functions are:
+
+@example
+DBM *dbm_open(name, flags, mode);
+void dbm_close(file);
+datum dbm_fetch(file, key);
+int dbm_store(file, key, @code{content}, flags);
+int dbm_delete(file, key);
+datum dbm_firstkey(file);
+datum dbm_nextkey(file);
+int dbm_error(file);
+int dbm_clearerr(file);
+int dbm_dirfno(file);
+int dbm_pagfno(file);
+int dbm_rdonly(file);
+@end example
+
+If you want to compile an old C program that used UNIX @code{dbm} or @code{ndbm}
+and want to use @code{gdbm} files, execute the following @code{cc} command:
+
+@example
+cc ... -L/usr/local/lib -lgdbm -lgdbm_compat
+@end example
+
+@node Conversion, Bugs, Compatibility, Top
+@chapter Converting @code{dbm} files to @code{gdbm} format.
+
+The program @code{conv2gdbm} has been provided to help you convert from @code{dbm}
+databases to @code{gdbm}. The usage is:
+
+@example
+conv2gdbm [-q] [-b block_size] dbm_file [gdbm_file]
+@end example
+
+The options are:
+
+@table @asis
+@item -q
+Causes @code{conv2gdbm} to work quietly.
+@item block_size
+Is the same as in @code{gdbm_open}.
+@item dbm_file
+Is the name of the @code{dbm} file without the @code{.pag} or @code{.dir}
+extensions.
+@item gdbm_file
+Is the complete file name. If not included, the @code{gdbm} file name is the
+same as the @code{dbm} file name without any extensions. That is
+@code{conv2gdbm} @code{dbmfile} converts the files @code{dbmfile.pag} and
+@code{dbmfile.dir} into a @code{gdbm} file called @code{dbmfile}.
+@end table
+
+
+@node Bugs, , Conversion, Top
+@chapter Problems and bugs.
+
+If you have problems with GNU @code{dbm} or think you've found a bug,
+please report it. Before reporting a bug, make sure you've actually
+found a real bug. Carefully reread the documentation and see if it
+really says you can do what you're trying to do. If it's not clear
+whether you should be able to do something or not, report that too; it's
+a bug in the documentation!
+
+Before reporting a bug or trying to fix it yourself, try to isolate it
+to the smallest possible input file that reproduces the problem. Then
+send us the input file and the exact results @code{gdbm} gave you. Also
+say what you expected to occur; this will help us decide whether the
+problem was really in the documentation.
+
+Once you've got a precise problem, send e-mail to:
+
+@example
+Internet: @file{bug-gnu-utils@@prep.ai.mit.edu}.
+UUCP: @file{mit-eddie!prep.ai.mit.edu!bug-gnu-utils}.
+@end example
+
+Please include the version number of GNU @code{dbm} you are using. You can get
+this information by printing the variable @code{gdbm_version} (see Variables).
+
+Non-bug suggestions are always welcome as well. If you have questions
+about things that are unclear in the documentation or are just obscure
+features, please report them too.
+
+You may contact the author by:
+@example
+    e-mail:  phil@@cs.wwu.edu
+   us-mail:  Philip A. Nelson
+             Computer Science Department
+             Western Washington University
+             Bellingham, WA 98226
+@end example
+
+You may contact the current maintainer by:
+@example
+    e-mail:  downsj@@downsj.com
+@end example
+
+@bye
+
+
+
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmclose.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmclose.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmclose.c	(revision 18906)
@@ -0,0 +1,69 @@
+/* gdbmclose.c - Close a previously opened dbm file. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+/* Close the dbm file and free all memory associated with the file DBF.
+   Before freeing members of DBF, check and make sure that they were
+   allocated.  */
+
+void
+gdbm_close (dbf)
+     gdbm_file_info *dbf;
+{
+  register int index;	/* For freeing the bucket cache. */
+
+  /* Make sure the database is all on disk. */
+  if (dbf->read_write != GDBM_READER)
+    fsync (dbf->desc);
+
+  /* Close the file and free all malloced memory. */
+  if (dbf->file_locking)
+    {
+      UNLOCK_FILE(dbf);
+    }
+  close (dbf->desc);
+  free (dbf->name);
+  if (dbf->dir != NULL) free (dbf->dir);
+
+  if (dbf->bucket_cache != NULL) {
+    for (index = 0; index < dbf->cache_size; index++) {
+      if (dbf->bucket_cache[index].ca_bucket != NULL)
+	free (dbf->bucket_cache[index].ca_bucket);
+      if (dbf->bucket_cache[index].ca_data.dptr != NULL)
+	free (dbf->bucket_cache[index].ca_data.dptr);
+    }
+    free (dbf->bucket_cache);
+  }
+  if ( dbf->header != NULL ) free (dbf->header);
+  free (dbf);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmconst.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmconst.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmconst.h	(revision 18906)
@@ -0,0 +1,66 @@
+/* gdbmconst.h - The constants defined for use in gdbm. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+/* Start with the constant definitions.  */
+#define  TRUE    1
+#define  FALSE   0
+
+/* Parameters to gdbm_open. */
+#define  GDBM_READER  0		/* READERS only. */
+#define  GDBM_WRITER  1		/* READERS and WRITERS.  Can not create. */
+#define  GDBM_WRCREAT 2		/* If not found, create the db. */
+#define  GDBM_NEWDB   3		/* ALWAYS create a new db.  (WRITER) */
+#define  GDBM_OPENMASK 7	/* Mask for the above. */
+#define  GDBM_FAST    0x10	/* Write fast! => No fsyncs.  OBSOLETE. */
+#define  GDBM_SYNC    0x20	/* Sync operations to the disk. */
+#define  GDBM_NOLOCK  0x40	/* Don't do file locking operations. */
+
+/* Parameters to gdbm_store for simple insertion or replacement in the
+   case a key to store is already in the database. */
+#define  GDBM_INSERT  0		/* Do not overwrite data in the database. */
+#define  GDBM_REPLACE 1		/* Replace the old value with the new value. */
+
+/* Parameters to gdbm_setopt, specifing the type of operation to perform. */
+#define	 GDBM_CACHESIZE	1	/* Set the cache size. */
+#define  GDBM_FASTMODE	2	/* Turn on or off fast mode.  OBSOLETE. */
+#define  GDBM_SYNCMODE	3	/* Turn on or off sync operations. */
+#define  GDBM_CENTFREE	4	/* Keep all free blocks in the header. */
+#define  GDBM_COALESCEBLKS 5	/* Attempt to coalesce free blocks. */
+
+/* In freeing blocks, we will ignore any blocks smaller (and equal) to
+   IGNORE_SIZE number of bytes. */
+#define IGNORE_SIZE 4
+
+/* The number of key bytes kept in a hash bucket. */
+#define SMALL    4
+
+/* The number of bucket_avail entries in a hash bucket. */
+#define BUCKET_AVAIL 6
+
+/* The size of the bucket cache. */
+#define DEFAULT_CACHESIZE  100
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmdefs.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmdefs.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmdefs.h	(revision 18906)
@@ -0,0 +1,207 @@
+/* gdbmdefs.h - The include file for dbm.  Defines structure and constants. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+*************************************************************************/
+
+#include "systems.h"
+#include "gdbmconst.h"
+
+/* The type definitions are next.  */
+
+/* The data and key structure.  This structure is defined for compatibility. */
+
+typedef struct {
+	char *dptr;
+	int   dsize;
+      } datum;
+
+
+/* The available file space is stored in an "avail" table.  The one with
+   most activity is contained in the file header. (See below.)  When that
+   one filles up, it is split in half and half is pushed on an "avail
+   stack."  When the active avail table is empty and the "avail stack" is
+   not empty, the top of the stack is popped into the active avail table. */
+
+/* The following structure is the element of the avaliable table.  */
+typedef struct {
+  	int   av_size;		/* The size of the available block. */
+	off_t  av_adr;		/* The file address of the available block. */
+      } avail_elem;
+
+/* This is the actual table. The in-memory images of the avail blocks are
+   allocated by malloc using a calculated size.  */
+typedef struct {
+	int   size;		/* The number of avail elements in the table.*/
+	int   count;		/* The number of entries in the table. */
+	off_t next_block;	/* The file address of the next avail block. */
+	avail_elem av_table[1]; /* The table.  Make it look like an array.  */
+      } avail_block;
+
+/* The dbm file header keeps track of the current location of the hash
+   directory and the free space in the file.  */
+
+typedef struct {
+	int   header_magic;  /* 0x13579ace to make sure the header is good. */
+	int   block_size;    /* The  optimal i/o blocksize from stat. */
+	off_t dir;	     /* File address of hash directory table. */
+	int   dir_size;	     /* Size in bytes of the table.  */
+	int   dir_bits;	     /* The number of address bits used in the table.*/
+	int   bucket_size;   /* Size in bytes of a hash bucket struct. */
+	int   bucket_elems;  /* Number of elements in a hash bucket. */
+	off_t next_block;    /* The next unallocated block address. */
+	avail_block avail;   /* This must be last because of the psuedo
+				array in avail.  This avail grows to fill
+				the entire block. */
+      }  gdbm_file_header;
+
+
+/* The dbm hash bucket element contains the full 31 bit hash value, the
+   "pointer" to the key and data (stored together) with their sizes.  It also
+   has a small part of the actual key value.  It is used to verify the first
+   part of the key has the correct value without having to read the actual
+   key. */
+
+typedef struct {
+	int   hash_value;	/* The complete 31 bit value. */
+	char  key_start[SMALL];	/* Up to the first SMALL bytes of the key.  */
+	off_t data_pointer;	/* The file address of the key record. The
+				   data record directly follows the key.  */
+	int   key_size;		/* Size of key data in the file. */
+	int   data_size;	/* Size of associated data in the file. */
+      } bucket_element;
+
+
+/* A bucket is a small hash table.  This one consists of a number of
+   bucket elements plus some bookkeeping fields.  The number of elements
+   depends on the optimum blocksize for the storage device and on a
+   parameter given at file creation time.  This bucket takes one block.
+   When one of these tables gets full, it is split into two hash buckets.
+   The contents are split between them by the use of the first few bits
+   of the 31 bit hash function.  The location in a bucket is the hash
+   value modulo the size of the bucket.  The in-memory images of the
+   buckets are allocated by malloc using a calculated size depending of
+   the file system buffer size.  To speed up write, each bucket will have
+   BUCKET_AVAIL avail elements with the bucket. */
+
+typedef struct {
+        int   av_count;		   /* The number of bucket_avail entries. */
+        avail_elem bucket_avail[BUCKET_AVAIL];  /* Distributed avail. */
+	int   bucket_bits;	   /* The number of bits used to get here. */
+	int   count;		   /* The number of element buckets full. */
+	bucket_element h_table[1]; /* The table.  Make it look like an array.*/
+      } hash_bucket;
+
+/* We want to keep from reading buckets as much as possible.  The following is
+   to implement a bucket cache.  When full, buckets will be dropped in a
+   least recently read from disk order.  */
+
+/* To speed up fetching and "sequential" access, we need to implement a
+   data cache for key/data pairs read from the file.  To find a key, we
+   must exactly match the key from the file.  To reduce overhead, the
+   data will be read at the same time.  Both key and data will be stored
+   in a data cache.  Each bucket cached will have a one element data
+   cache.  */
+
+typedef struct {
+        int   hash_val;
+	int   data_size;
+	int   key_size;
+	char *dptr;
+	int   elem_loc;
+      }  data_cache_elem;
+
+typedef struct {
+        hash_bucket *   ca_bucket;
+	off_t           ca_adr;
+	char		ca_changed;   /* Data in the bucket changed. */
+	data_cache_elem ca_data;
+      } cache_elem;
+
+
+
+/* This final structure contains all main memory based information for
+   a gdbm file.  This allows multiple gdbm files to be opened at the same
+   time by one program. */
+
+typedef struct {
+	/* Global variables and pointers to dynamic variables used by gdbm.  */
+
+  	/* The file name. */
+	char *name;
+
+	/* The reader/writer status. */
+	int read_write;
+
+	/* Fast_write is set to 1 if no fsyncs are to be done. */
+	int fast_write;
+
+	/* Central_free is set if all free blocks are kept in the header. */
+	int central_free;
+
+	/* Coalesce_blocks is set if we should try to merge free blocks. */
+	int coalesce_blocks;
+
+	/* Whether or not we should do file locking ourselves. */
+	int file_locking;
+
+	/* The fatal error handling routine. */
+	void (*fatal_err) ();
+
+	/* The gdbm file descriptor which is set in gdbm_open.  */
+	int desc;
+
+	/* The file header holds information about the database. */
+	gdbm_file_header *header;
+
+	/* The hash table directory from extendible hashing.  See Fagin et al, 
+	   ACM Trans on Database Systems, Vol 4, No 3. Sept 1979, 315-344 */
+	off_t *dir;
+
+	/* The bucket cache. */
+	cache_elem *bucket_cache;
+	int cache_size;
+	int last_read;
+
+	/* Points to the current hash bucket in the cache. */
+	hash_bucket *bucket;
+
+	/* The directory entry used to get the current hash bucket. */
+	int bucket_dir;
+
+	/* Pointer to the current bucket's cache entry. */
+	cache_elem *cache_entry;
+
+
+	/* Bookkeeping of things that need to be written back at the
+	   end of an update. */
+	char  header_changed;
+	char  directory_changed;
+	char  bucket_changed;
+	char  second_changed;
+	
+      } gdbm_file_info;
+
+/* Now define all the routines in use. */
+#include "proto.h"
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmdelete.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmdelete.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmdelete.c	(revision 18906)
@@ -0,0 +1,119 @@
+/* gdbmdelete.c - Remove the key and its associated data from the database. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+/* Remove the KEYed item and the KEY from the database DBF.  The file on disk
+   is updated to reflect the structure of the new database before returning
+   from this procedure.  */
+
+int
+gdbm_delete (dbf, key)
+     gdbm_file_info *dbf;
+     datum key;
+{
+  int elem_loc;		/* The location in the current hash bucket. */
+  int last_loc;		/* Last location emptied by the delete.  */
+  int home;		/* Home position of an item. */
+  bucket_element elem;  /* The element to be deleted. */
+  char *find_data;	/* Return pointer from findkey. */
+  int   hash_val;	/* Returned by findkey. */
+  off_t free_adr;       /* Temporary stroage for address and size. */
+  int   free_size;
+
+  /* First check to make sure this guy is a writer. */
+  if (dbf->read_write == GDBM_READER)
+    {
+      gdbm_errno = GDBM_READER_CANT_DELETE;
+      return -1;
+    }
+
+  /* Initialize the gdbm_errno variable. */
+  gdbm_errno = GDBM_NO_ERROR;
+
+  /* Find the item. */
+  elem_loc = _gdbm_findkey (dbf, key, &find_data, &hash_val);
+  if (elem_loc == -1)
+    {
+      gdbm_errno = GDBM_ITEM_NOT_FOUND;
+      return -1;
+    }
+
+  /* Save the element.  */
+  elem = dbf->bucket->h_table[elem_loc];
+
+  /* Delete the element.  */
+  dbf->bucket->h_table[elem_loc].hash_value = -1;
+  dbf->bucket->count -= 1;
+
+  /* Move other elements to guarantee that they can be found. */
+  last_loc = elem_loc;
+  elem_loc = (elem_loc + 1) % dbf->header->bucket_elems;
+  while (elem_loc != last_loc
+	 && dbf->bucket->h_table[elem_loc].hash_value != -1)
+    {
+      home = dbf->bucket->h_table[elem_loc].hash_value
+	     % dbf->header->bucket_elems;
+      if ( (last_loc < elem_loc && (home <= last_loc || home > elem_loc))
+	  || (last_loc > elem_loc && home <= last_loc && home > elem_loc))
+	
+	{
+	  dbf->bucket->h_table[last_loc] = dbf->bucket->h_table[elem_loc];
+	  dbf->bucket->h_table[elem_loc].hash_value = -1;
+	  last_loc = elem_loc;
+	}
+      elem_loc = (elem_loc + 1) % dbf->header->bucket_elems;
+    }
+
+  /* Free the file space. */
+  free_adr = elem.data_pointer;
+  free_size = elem.key_size + elem.data_size;
+  _gdbm_free (dbf, free_adr, free_size);
+
+  /* Set the flags. */
+  dbf->bucket_changed = TRUE;
+
+  /* Clear out the data cache for the current bucket. */
+  if (dbf->cache_entry->ca_data.dptr != NULL)
+    {
+      free (dbf->cache_entry->ca_data.dptr);
+      dbf->cache_entry->ca_data.dptr = NULL;
+    }
+  dbf->cache_entry->ca_data.hash_val = -1;
+  dbf->cache_entry->ca_data.key_size = 0;
+  dbf->cache_entry->ca_data.elem_loc = -1;
+
+  /* Do the writes. */
+  _gdbm_end_update (dbf);
+  return 0;  
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmerrno.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmerrno.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmerrno.c	(revision 18906)
@@ -0,0 +1,64 @@
+/* gdbmerrno.c - convert gdbm errors into english. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the original author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+    The author of this file is:
+       e-mail:  downsj@downsj.com
+
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmerrno.h"
+
+/* this is not static so that applications may access the array if they
+   like. it must be in the same order as the error codes! */
+
+const char * const gdbm_errlist[] = {
+  "No error", "Malloc error", "Block size error", "File open error",
+  "File write error", "File seek error", "File read error",
+  "Bad magic number", "Empty database", "Can't be reader", "Can't be writer",
+  "Reader can't delete", "Reader can't store", "Reader can't reorganize",
+  "Unknown update", "Item not found", "Reorganize failed", "Cannot replace",
+  "Illegal data", "Option already set", "Illegal option"
+};
+
+#define gdbm_errorcount	((sizeof(gdbm_errlist) / sizeof(gdbm_errlist[0])) - 1)
+
+const char *
+gdbm_strerror(error)
+    gdbm_error error;
+{
+  if(((int)error < 0) || ((int)error > gdbm_errorcount))
+    {
+      return("Unknown error");
+    }
+  else
+    {
+      return(gdbm_errlist[(int)error]);
+    }
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmerrno.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmerrno.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmerrno.h	(revision 18906)
@@ -0,0 +1,55 @@
+/* gdbmerrno.h - The enumeration type describing all the dbm errors. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* gdbm sets the following error codes. */
+#define	GDBM_NO_ERROR		0
+#define	GDBM_MALLOC_ERROR	1
+#define	GDBM_BLOCK_SIZE_ERROR	2
+#define	GDBM_FILE_OPEN_ERROR	3
+#define	GDBM_FILE_WRITE_ERROR	4
+#define	GDBM_FILE_SEEK_ERROR	5
+#define	GDBM_FILE_READ_ERROR	6
+#define	GDBM_BAD_MAGIC_NUMBER	7
+#define	GDBM_EMPTY_DATABASE	8
+#define	GDBM_CANT_BE_READER	9
+#define	GDBM_CANT_BE_WRITER	10
+#define	GDBM_READER_CANT_DELETE	11
+#define	GDBM_READER_CANT_STORE	12
+#define	GDBM_READER_CANT_REORGANIZE	13
+#define	GDBM_UNKNOWN_UPDATE	14
+#define	GDBM_ITEM_NOT_FOUND	15
+#define	GDBM_REORGANIZE_FAILED	16
+#define	GDBM_CANNOT_REPLACE	17
+#define	GDBM_ILLEGAL_DATA	18
+#define	GDBM_OPT_ALREADY_SET	19
+#define	GDBM_OPT_ILLEGAL	20
+
+typedef int gdbm_error;		/* For compatibilities sake. */
+
+extern gdbm_error gdbm_errno;
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmexists.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmexists.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmexists.c	(revision 18906)
@@ -0,0 +1,51 @@
+/* gdbmexists.c - Check to see if a key exists */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 1, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the original author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+    The author of this file is:
+       e-mail:  downsj@downsj.com
+
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+/* this is nothing more than a wrapper around _gdbm_findkey(). the
+   point? it doesn't alloate any memory. */
+
+int
+gdbm_exists (dbf, key)
+    gdbm_file_info *dbf;
+    datum key;
+{
+  char *find_data;		/* dummy */
+  int hash_val;		/* dummy */
+
+  return (_gdbm_findkey (dbf, key, &find_data, &hash_val) >= 0);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmfdesc.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmfdesc.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmfdesc.c	(revision 18906)
@@ -0,0 +1,45 @@
+/* gdbfdesc.c - return the file descriptor associated with the database. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1999  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the original author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+    The author of this file is:
+       e-mail:  downsj@downsj.com
+
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+/* Return the file number of the DBF file. */
+
+int
+gdbm_fdesc(dbf)
+      gdbm_file_info	*dbf;
+{
+  return (dbf->desc);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmfetch.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmfetch.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmfetch.c	(revision 18906)
@@ -0,0 +1,76 @@
+/* gdbmfetch.c - Find a key and return the associated data.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+/* Look up a given KEY and return the information associated with that KEY.
+   The pointer in the structure that is  returned is a pointer to dynamically
+   allocated memory block.  */
+
+datum
+gdbm_fetch (dbf, key)
+     gdbm_file_info *dbf;
+     datum key;
+{
+  datum  return_val;		/* The return value. */
+  int    elem_loc;		/* The location in the bucket. */
+  char  *find_data;		/* Returned from find_key. */
+  int    hash_val;		/* Returned from find_key. */
+
+  /* Set the default return value. */
+  return_val.dptr  = NULL;
+  return_val.dsize = 0;
+
+  /* Initialize the gdbm_errno variable. */
+  gdbm_errno = GDBM_NO_ERROR;
+
+  /* Find the key and return a pointer to the data. */
+  elem_loc = _gdbm_findkey (dbf, key, &find_data, &hash_val);
+
+  /* Copy the data if the key was found.  */
+  if (elem_loc >= 0)
+    {
+      /* This is the item.  Return the associated data. */
+      return_val.dsize = dbf->bucket->h_table[elem_loc].data_size;
+      if (return_val.dsize == 0)
+	return_val.dptr = (char *) malloc (1);
+      else
+	return_val.dptr = (char *) malloc (return_val.dsize);
+      if (return_val.dptr == NULL) _gdbm_fatal (dbf, "malloc error");
+      bcopy (find_data, return_val.dptr, return_val.dsize);
+    }
+
+  /* Check for an error and return. */
+  if (return_val.dptr == NULL) gdbm_errno = GDBM_ITEM_NOT_FOUND;
+  return return_val;
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmopen.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmopen.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmopen.c	(revision 18906)
@@ -0,0 +1,439 @@
+/* gdbmopen.c - Open the dbm file and initialize data structures for use. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+/* Initialize dbm system.  FILE is a pointer to the file name.  If the file
+   has a size of zero bytes, a file initialization procedure is performed,
+   setting up the initial structure in the file.  BLOCK_SIZE is used during
+   initialization to determine the size of various constructs.  If the value
+   is less than 512, the file system blocksize is used, otherwise the value
+   of BLOCK_SIZE is used.  BLOCK_SIZE is ignored if the file has previously
+   initialized.  If FLAGS is set to GDBM_READ the user wants to just
+   read the database and any call to dbm_store or dbm_delete will fail. Many
+   readers can access the database at the same time.  If FLAGS is set to
+   GDBM_WRITE, the user wants both read and write access to the database and
+   requires exclusive access.  If FLAGS is GDBM_WRCREAT, the user wants
+   both read and write access to the database and if the database does not
+   exist, create a new one.  If FLAGS is GDBM_NEWDB, the user want a
+   new database created, regardless of whether one existed, and wants read
+   and write access to the new database.  Any error detected will cause a 
+   return value of null and an approprate value will be in gdbm_errno.  If
+   no errors occur, a pointer to the "gdbm file descriptor" will be
+   returned. */
+   
+
+gdbm_file_info *
+gdbm_open (file, block_size, flags, mode, fatal_func)
+     char *file;
+     int  block_size;
+     int  flags;
+     int  mode;
+     void (*fatal_func) ();
+{
+  gdbm_file_info *dbf;		/* The record to return. */
+  struct stat file_stat;	/* Space for the stat information. */
+  int         len;		/* Length of the file name. */
+  int         num_bytes;	/* Used in reading and writing. */
+  off_t       file_pos;		/* Used with seeks. */
+  int	      lock_val;         /* Returned by the flock call. */
+  int	      file_block_size;	/* Block size to use for a new file. */
+  int 	      index;		/* Used as a loop index. */
+  char        need_trunc;	/* Used with GDBM_NEWDB and locking to avoid
+				   truncating a file from under a reader. */
+
+  /* Initialize the gdbm_errno variable. */
+  gdbm_errno = GDBM_NO_ERROR;
+
+  /* Allocate new info structure. */
+  dbf = (gdbm_file_info *) malloc (sizeof (gdbm_file_info));
+  if (dbf == NULL)
+    {
+      gdbm_errno = GDBM_MALLOC_ERROR;
+      return NULL;
+    }
+
+  /* Initialize some fields for known values.  This is done so gdbm_close
+     will work if called before allocating some structures. */
+  dbf->dir  = NULL;
+  dbf->bucket = NULL;
+  dbf->header = NULL;
+  dbf->bucket_cache = NULL;
+  dbf->cache_size = 0;
+  
+  /* Save name of file. */
+  len = strlen (file);
+  dbf->name = (char *) malloc (len + 1);
+  if (dbf->name == NULL)
+    {
+      free (dbf);
+      gdbm_errno = GDBM_MALLOC_ERROR;
+      return NULL;
+    }
+  strcpy (dbf->name, file);
+
+  /* Initialize the fatal error routine. */
+  dbf->fatal_err = fatal_func;
+
+  dbf->fast_write = TRUE;	/* Default to setting fast_write. */
+  dbf->file_locking = TRUE;	/* Default to doing file locking. */
+  dbf->central_free = FALSE;	/* Default to not using central_free. */
+  dbf->coalesce_blocks = FALSE; /* Default to not coalescing blocks. */
+
+  /* GDBM_FAST used to determine whethere or not we set fast_write. */
+  if (flags & GDBM_SYNC)
+    {
+      /* If GDBM_SYNC has been requested, don't do fast_write. */
+      dbf->fast_write = FALSE;
+    }
+  if (flags & GDBM_NOLOCK)
+    {
+      dbf->file_locking = FALSE;
+    }
+
+  /* Open the file. */
+  need_trunc = FALSE;
+  switch (flags & GDBM_OPENMASK)
+    {
+      case GDBM_READER:
+	dbf->desc = open (dbf->name, O_RDONLY, 0);
+	break;
+
+      case GDBM_WRITER:
+	dbf->desc = open (dbf->name, O_RDWR, 0);
+	break;
+
+      case GDBM_NEWDB:
+	dbf->desc = open (dbf->name, O_RDWR|O_CREAT, mode);
+	need_trunc = TRUE;
+	break;
+
+      default:
+	dbf->desc = open (dbf->name, O_RDWR|O_CREAT, mode);
+	break;
+
+    }
+  if (dbf->desc < 0)
+    {
+      free (dbf->name);
+      free (dbf);
+      gdbm_errno = GDBM_FILE_OPEN_ERROR;
+      return NULL;
+    }
+
+  /* Get the status of the file. */
+  fstat (dbf->desc, &file_stat);
+
+  /* Lock the file in the approprate way. */
+  if ((flags & GDBM_OPENMASK) == GDBM_READER)
+    {
+      if (file_stat.st_size == 0)
+	{
+	  close (dbf->desc);
+	  free (dbf->name);
+	  free (dbf);
+	  gdbm_errno = GDBM_EMPTY_DATABASE;
+	  return NULL;
+	}
+      if (dbf->file_locking)
+	{
+          /* Sets lock_val to 0 for success.  See systems.h. */
+          READLOCK_FILE(dbf);
+	}
+    }
+  else if (dbf->file_locking)
+    {
+      /* Sets lock_val to 0 for success.  See systems.h. */
+      WRITELOCK_FILE(dbf);
+    }
+  if (dbf->file_locking && (lock_val != 0))
+    {
+      close (dbf->desc);
+      free (dbf->name);
+      free (dbf);
+      if ((flags & GDBM_OPENMASK) == GDBM_READER)
+	gdbm_errno = GDBM_CANT_BE_READER;
+      else
+	gdbm_errno = GDBM_CANT_BE_WRITER;
+      return NULL;
+    }
+
+  /* Record the kind of user. */
+  dbf->read_write = (flags & GDBM_OPENMASK);
+
+  /* If we do have a write lock and it was a GDBM_NEWDB, it is 
+     now time to truncate the file. */
+  if (need_trunc && file_stat.st_size != 0)
+    {
+      TRUNCATE (dbf);
+      fstat (dbf->desc, &file_stat);
+    }
+
+  /* Decide if this is a new file or an old file. */
+  if (file_stat.st_size == 0)
+    {
+
+      /* This is a new file.  Create an empty database.  */
+
+      /* Start with the blocksize. */
+      if (block_size < 512)
+	file_block_size = STATBLKSIZE;
+      else
+	file_block_size = block_size;
+
+      /* Get space for the file header. */
+      dbf->header = (gdbm_file_header *) malloc (file_block_size);
+      if (dbf->header == NULL)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_MALLOC_ERROR;
+	  return NULL;
+	}
+
+      /* Set the magic number and the block_size. */
+      dbf->header->header_magic = 0x13579ace;
+      dbf->header->block_size = file_block_size;
+     
+      /* Create the initial hash table directory.  */
+      dbf->header->dir_size = 8 * sizeof (off_t);
+      dbf->header->dir_bits = 3;
+      while (dbf->header->dir_size < dbf->header->block_size)
+	{
+	  dbf->header->dir_size <<= 1;
+	  dbf->header->dir_bits += 1;
+	}
+
+      /* Check for correct block_size. */
+      if (dbf->header->dir_size != dbf->header->block_size)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_BLOCK_SIZE_ERROR;
+	  return NULL;
+	}
+
+      /* Allocate the space for the directory. */
+      dbf->dir = (off_t *) malloc (dbf->header->dir_size);
+      if (dbf->dir == NULL)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_MALLOC_ERROR;
+	  return NULL;
+	}
+      dbf->header->dir = dbf->header->block_size;
+
+      /* Create the first and only hash bucket. */
+      dbf->header->bucket_elems =
+	(dbf->header->block_size - sizeof (hash_bucket))
+	/ sizeof (bucket_element) + 1;
+      dbf->header->bucket_size  = dbf->header->block_size;
+      dbf->bucket = (hash_bucket *) malloc (dbf->header->bucket_size);
+      if (dbf->bucket == NULL)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_MALLOC_ERROR;
+	  return NULL;
+	}
+      _gdbm_new_bucket (dbf, dbf->bucket, 0);
+      dbf->bucket->av_count = 1;
+      dbf->bucket->bucket_avail[0].av_adr = 3*dbf->header->block_size;
+      dbf->bucket->bucket_avail[0].av_size = dbf->header->block_size;
+
+      /* Set table entries to point to hash buckets. */
+      for (index = 0; index < dbf->header->dir_size / sizeof (off_t); index++)
+	dbf->dir[index] = 2*dbf->header->block_size;
+
+      /* Initialize the active avail block. */
+      dbf->header->avail.size
+	= ( (dbf->header->block_size - sizeof (gdbm_file_header))
+	 / sizeof (avail_elem)) + 1;
+      dbf->header->avail.count = 0;
+      dbf->header->avail.next_block = 0;
+      dbf->header->next_block  = 4*dbf->header->block_size;
+
+      /* Write initial configuration to the file. */
+      /* Block 0 is the file header and active avail block. */
+      num_bytes = write (dbf->desc, dbf->header, dbf->header->block_size);
+      if (num_bytes != dbf->header->block_size)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_FILE_WRITE_ERROR;
+	  return NULL;
+	}
+
+      /* Block 1 is the initial bucket directory. */
+      num_bytes = write (dbf->desc, dbf->dir, dbf->header->dir_size);
+      if (num_bytes != dbf->header->dir_size)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_FILE_WRITE_ERROR;
+	  return NULL;
+	}
+
+      /* Block 2 is the only bucket. */
+      num_bytes = write (dbf->desc, dbf->bucket, dbf->header->bucket_size);
+      if (num_bytes != dbf->header->bucket_size)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_FILE_WRITE_ERROR;
+	  return NULL;
+	}
+
+      /* Wait for initial configuration to be written to disk. */
+      fsync (dbf->desc);
+
+      free (dbf->bucket);
+    }
+  else
+    {
+      /* This is an old database.  Read in the information from the file
+	 header and initialize the hash directory. */
+
+      gdbm_file_header partial_header;  /* For the first part of it. */
+
+      /* Read the partial file header. */
+      num_bytes = read (dbf->desc, &partial_header, sizeof (gdbm_file_header));
+      if (num_bytes != sizeof (gdbm_file_header))
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_FILE_READ_ERROR;
+	  return NULL;
+	}
+
+      /* Is the magic number good? */
+      if (partial_header.header_magic != 0x13579ace)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_BAD_MAGIC_NUMBER;
+	  return NULL;
+	}
+
+      /* It is a good database, read the entire header. */
+      dbf->header = (gdbm_file_header *) malloc (partial_header.block_size);
+      if (dbf->header == NULL)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_MALLOC_ERROR;
+	  return NULL;
+	}
+      bcopy (&partial_header, dbf->header, sizeof (gdbm_file_header));
+      num_bytes = read (dbf->desc, &dbf->header->avail.av_table[1],
+			dbf->header->block_size-sizeof (gdbm_file_header));
+      if (num_bytes != dbf->header->block_size-sizeof (gdbm_file_header))
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_FILE_READ_ERROR;
+	  return NULL;
+	}
+	
+      /* Allocate space for the hash table directory.  */
+      dbf->dir = (off_t *) malloc (dbf->header->dir_size);
+      if (dbf->dir == NULL)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_MALLOC_ERROR;
+	  return NULL;
+	}
+
+      /* Read the hash table directory. */
+      file_pos = lseek (dbf->desc, dbf->header->dir, L_SET);
+      if (file_pos != dbf->header->dir)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_FILE_SEEK_ERROR;
+	  return NULL;
+	}
+
+      num_bytes = read (dbf->desc, dbf->dir, dbf->header->dir_size);
+      if (num_bytes != dbf->header->dir_size)
+	{
+	  gdbm_close (dbf);
+	  gdbm_errno = GDBM_FILE_READ_ERROR;
+	  return NULL;
+	}
+
+    }
+
+  /* Finish initializing dbf. */
+  dbf->last_read = -1;
+  dbf->bucket = NULL;
+  dbf->bucket_dir = 0;
+  dbf->cache_entry = NULL;
+  dbf->header_changed = FALSE;
+  dbf->directory_changed = FALSE;
+  dbf->bucket_changed = FALSE;
+  dbf->second_changed = FALSE;
+  
+  /* Everything is fine, return the pointer to the file
+     information structure.  */
+  return dbf;
+
+}
+
+/* initialize the bucket cache. */
+int
+_gdbm_init_cache(dbf, size)
+    gdbm_file_info *dbf;
+    int size;
+{
+register int index;
+
+  if (dbf->bucket_cache == NULL)
+    {
+      dbf->bucket_cache = (cache_elem *) malloc(sizeof(cache_elem) * size);
+      if(dbf->bucket_cache == NULL)
+        {
+          gdbm_errno = GDBM_MALLOC_ERROR;
+          return(-1);
+        }
+      dbf->cache_size = size;
+
+      for(index = 0; index < size; index++)
+        {
+          (dbf->bucket_cache[index]).ca_bucket
+            = (hash_bucket *) malloc (dbf->header->bucket_size);
+          if ((dbf->bucket_cache[index]).ca_bucket == NULL)
+	    {
+              gdbm_errno = GDBM_MALLOC_ERROR;
+	      return(-1);
+            }
+          (dbf->bucket_cache[index]).ca_adr = 0;
+          (dbf->bucket_cache[index]).ca_changed = FALSE;
+          (dbf->bucket_cache[index]).ca_data.hash_val = -1;
+          (dbf->bucket_cache[index]).ca_data.elem_loc = -1;
+          (dbf->bucket_cache[index]).ca_data.dptr = NULL;
+        }
+      dbf->bucket = dbf->bucket_cache[0].ca_bucket;
+      dbf->cache_entry = &dbf->bucket_cache[0];
+    }
+  return(0);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmreorg.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmreorg.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmreorg.c	(revision 18906)
@@ -0,0 +1,218 @@
+/* gdbmreorg.c - Reorganize the database file. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+#include "extern.h"
+
+#if !HAVE_RENAME
+
+/* Rename takes OLD_NAME and renames it as NEW_NAME.  If it can not rename
+   the file a non-zero value is returned.  OLD_NAME is guaranteed to
+   remain if it can't be renamed. It assumes NEW_NAME always exists (due
+   to being used in gdbm). */
+
+static int
+_gdbm_rename (old_name, new_name)
+     char* old_name;
+     char* new_name;
+{
+  if (unlink (new_name) != 0)   
+    return -1;
+
+  if (link (old_name, new_name) != 0)
+    return -1;
+  
+  unlink (old_name);
+  return 0;
+
+}
+
+#define rename _gdbm_rename
+#endif
+
+
+
+/* Reorganize the database.  This requires creating a new file and inserting
+   all the elements in the old file DBF into the new file.  The new file
+   is then renamed to the same name as the old file and DBF is updated to
+   contain all the correct information about the new file.  If an error
+   is detected, the return value is negative.  The value zero is returned
+   after a successful reorganization. */
+
+int
+gdbm_reorganize (dbf)
+     gdbm_file_info *dbf;
+
+{
+  gdbm_file_info *new_dbf;		/* The new file. */
+  char *new_name;			/* A temporary name. */
+  int  len;				/* Used in new_name construction. */
+  datum key, nextkey, data;		/* For the sequential sweep. */
+  struct stat fileinfo;			/* Information about the file. */
+  int  index;				/* Use in moving the bucket cache. */
+
+
+  /* Readers can not reorganize! */
+  if (dbf->read_write == GDBM_READER)
+    {
+      gdbm_errno = GDBM_READER_CANT_REORGANIZE;
+      return -1;
+    }
+  
+  /* Initialize the gdbm_errno variable. */
+  gdbm_errno = GDBM_NO_ERROR;
+
+  /* Construct new name for temporary file. */
+  len = strlen (dbf->name);
+  new_name = (char *) malloc (len + 3);
+  if (new_name == NULL)
+    {
+      gdbm_errno = GDBM_MALLOC_ERROR;
+      return -1;
+    }
+  strcpy (&new_name[0], dbf->name);
+  new_name[len+2] = 0;
+  new_name[len+1] = '#';
+  while ( (len > 0) && new_name[len-1] != '/')
+    {
+      new_name[len] = new_name[len-1];
+      len -= 1;
+    }
+  new_name[len] = '#';
+
+  /* Get the mode for the old file and open the new database. */
+  fstat (dbf->desc, &fileinfo);
+  new_dbf = gdbm_open (new_name, dbf->header->block_size, GDBM_WRCREAT,
+		       fileinfo.st_mode, dbf->fatal_err);
+
+  if (new_dbf == NULL)
+    {
+      free (new_name);
+      gdbm_errno = GDBM_REORGANIZE_FAILED;
+      return -1;
+    }
+
+  
+  /* For each item in the old database, add an entry in the new. */
+  key = gdbm_firstkey (dbf);
+
+  while (key.dptr != NULL)
+    {
+      data = gdbm_fetch (dbf, key);
+      if (data.dptr != NULL)
+ 	{
+	  /* Add the data to the new file. */
+	  if (gdbm_store (new_dbf, key, data, GDBM_INSERT) != 0)
+	    {
+	      gdbm_close (new_dbf);
+	      gdbm_errno = GDBM_REORGANIZE_FAILED;
+	      unlink (new_name);
+	      free (new_name);
+	      return -1;
+	    }
+ 	}
+      else
+ 	{
+	  /* ERROR! Abort and don't finish reorganize. */
+	  gdbm_close (new_dbf);
+	  gdbm_errno = GDBM_REORGANIZE_FAILED;
+	  unlink (new_name);
+	  free (new_name);
+	  return -1;
+ 	}
+      nextkey = gdbm_nextkey (dbf, key);
+      free (key.dptr);
+      free (data.dptr);
+      key = nextkey;
+    }
+
+  /* Write everything. */
+  _gdbm_end_update (new_dbf);
+  gdbm_sync (new_dbf);
+
+
+  /* Move the new file to old name. */
+
+  if (rename (new_name, dbf->name) != 0)
+    {
+      gdbm_errno = GDBM_REORGANIZE_FAILED;
+      gdbm_close (new_dbf);
+      free (new_name);
+      return -1;
+    }
+
+  /* Fix up DBF to have the correct information for the new file. */
+  if (dbf->file_locking)
+    {
+      UNLOCK_FILE(dbf);
+    }
+  close (dbf->desc);
+  free (dbf->header);
+  free (dbf->dir);
+
+  if (dbf->bucket_cache != NULL) {
+    for (index = 0; index < dbf->cache_size; index++) {
+      if (dbf->bucket_cache[index].ca_bucket != NULL)
+	free (dbf->bucket_cache[index].ca_bucket);
+      if (dbf->bucket_cache[index].ca_data.dptr != NULL)
+	free (dbf->bucket_cache[index].ca_data.dptr);
+    }
+    free (dbf->bucket_cache);
+  }
+
+  dbf->desc           = new_dbf->desc;
+  dbf->header         = new_dbf->header;
+  dbf->dir            = new_dbf->dir;
+  dbf->bucket         = new_dbf->bucket;
+  dbf->bucket_dir     = new_dbf->bucket_dir;
+  dbf->last_read      = new_dbf->last_read;
+  dbf->bucket_cache   = new_dbf->bucket_cache;
+  dbf->cache_size     = new_dbf->cache_size;
+  dbf->header_changed    = new_dbf->header_changed;
+  dbf->directory_changed = new_dbf->directory_changed;
+  dbf->bucket_changed    = new_dbf->bucket_changed;
+  dbf->second_changed    = new_dbf->second_changed;
+   
+  free (new_dbf->name);   
+  free (new_dbf);
+  free (new_name);
+
+  /* Make sure the new database is all on disk. */
+  fsync (dbf->desc);
+
+  /* Force the right stuff for a correct bucket cache. */
+  dbf->cache_entry    = &dbf->bucket_cache[0];
+  _gdbm_get_bucket (dbf, 0);
+
+  return 0;
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmseq.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmseq.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmseq.c	(revision 18906)
@@ -0,0 +1,146 @@
+/* gdbmseq.c - Routines to visit all keys.  Not in sorted order. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+/* Special extern for this file. */
+extern char *_gdbm_read_entry __P((gdbm_file_info *, int));
+
+
+/* Find and read the next entry in the hash structure for DBF starting
+   at ELEM_LOC of the current bucket and using RETURN_VAL as the place to
+   put the data that is found. */
+
+static void
+get_next_key (dbf, elem_loc, return_val)
+     gdbm_file_info *dbf;
+     int elem_loc;
+     datum *return_val;
+{
+  int   found;			/* Have we found the next key. */
+  char  *find_data;		/* Data pointer returned by find_key. */
+
+  /* Find the next key. */
+  found = FALSE;
+  while (!found)
+    {
+      /* Advance to the next location in the bucket. */
+      elem_loc++;
+      if (elem_loc == dbf->header->bucket_elems)
+	{
+	  /* We have finished the current bucket, get the next bucket.  */
+	  elem_loc = 0;
+
+	  /* Find the next bucket.  It is possible several entries in
+	     the bucket directory point to the same bucket. */
+	  while (dbf->bucket_dir < dbf->header->dir_size / sizeof (off_t)
+		 && dbf->cache_entry->ca_adr == dbf->dir[dbf->bucket_dir])
+	    dbf->bucket_dir++;
+
+	  /* Check to see if there was a next bucket. */
+	  if (dbf->bucket_dir < dbf->header->dir_size / sizeof (off_t))
+	    _gdbm_get_bucket (dbf, dbf->bucket_dir);	      
+	  else
+	    /* No next key, just return. */
+	    return ;
+	}
+      found = dbf->bucket->h_table[elem_loc].hash_value != -1;
+    }
+  
+  /* Found the next key, read it into return_val. */
+  find_data = _gdbm_read_entry (dbf, elem_loc);
+  return_val->dsize = dbf->bucket->h_table[elem_loc].key_size;
+  if (return_val->dsize == 0)
+    return_val->dptr = (char *) malloc (1);
+  else
+    return_val->dptr = (char *) malloc (return_val->dsize);
+  if (return_val->dptr == NULL) _gdbm_fatal (dbf, "malloc error");
+  bcopy (find_data, return_val->dptr, return_val->dsize);
+}
+
+
+/* Start the visit of all keys in the database.  This produces something in
+   hash order, not in any sorted order.  */
+
+datum
+gdbm_firstkey (dbf)
+     gdbm_file_info *dbf;
+{
+  datum return_val;		/* To return the first key. */
+
+  /* Set the default return value for not finding a first entry. */
+  return_val.dptr = NULL;
+
+  /* Initialize the gdbm_errno variable. */
+  gdbm_errno = GDBM_NO_ERROR;
+
+  /* Get the first bucket.  */
+  _gdbm_get_bucket (dbf, 0);
+
+  /* Look for first entry. */
+  get_next_key (dbf, -1, &return_val);
+
+  return return_val;
+}
+
+
+/* Continue visiting all keys.  The next key following KEY is returned. */
+
+datum
+gdbm_nextkey (dbf, key)
+     gdbm_file_info *dbf;
+     datum key;
+{
+  datum  return_val;		/* The return value. */
+  int    elem_loc;		/* The location in the bucket. */
+  char  *find_data;		/* Data pointer returned by _gdbm_findkey. */
+  int    hash_val;		/* Returned by _gdbm_findkey. */
+
+  /* Initialize the gdbm_errno variable. */
+  gdbm_errno = GDBM_NO_ERROR;
+
+  /* Set the default return value for no next entry. */
+  return_val.dptr = NULL;
+
+  /* Do we have a valid key? */
+  if (key.dptr == NULL) return return_val;
+
+  /* Find the key.  */
+  elem_loc = _gdbm_findkey (dbf, key, &find_data, &hash_val);
+  if (elem_loc == -1) return return_val;
+
+  /* Find the next key. */  
+  get_next_key (dbf, elem_loc, &return_val);
+
+  return return_val;
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmsetopt.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmsetopt.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmsetopt.c	(revision 18906)
@@ -0,0 +1,111 @@
+/* gdbmsetopt.c - set options pertaining to a GDBM descriptor. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1993, 1994  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the original author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+    The author of this file is:
+       e-mail:  downsj@downsj.com
+
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+/* operate on an already open descriptor. */
+
+/* ARGSUSED */
+int
+gdbm_setopt(dbf, optflag, optval, optlen)
+    gdbm_file_info *dbf;	/* descriptor to operate on. */
+    int optflag;		/* option to set. */
+    int *optval;		/* pointer to option value. */
+    int optlen;			/* size of optval. */
+{
+  switch(optflag)
+    {
+      case GDBM_CACHESIZE:
+        /* Optval will point to the new size of the cache. */
+        if (dbf->bucket_cache != NULL)
+          {
+            gdbm_errno = GDBM_OPT_ALREADY_SET;
+            return(-1);
+          }
+
+        return(_gdbm_init_cache(dbf, ((*optval) > 9) ? (*optval) : 10));
+
+      case GDBM_FASTMODE:
+      	/* Obsolete form of SYNCMODE. */
+	if ((*optval != TRUE) && (*optval != FALSE))
+	  {
+	    gdbm_errno = GDBM_OPT_ILLEGAL;
+	    return(-1);
+	  }
+
+	dbf->fast_write = *optval;
+	break;
+
+      case GDBM_SYNCMODE:
+      	/* Optval will point to either true or false. */
+	if ((*optval != TRUE) && (*optval != FALSE))
+	  {
+	    gdbm_errno = GDBM_OPT_ILLEGAL;
+	    return(-1);
+	  }
+
+	dbf->fast_write = !(*optval);
+	break;
+
+      case GDBM_CENTFREE:
+      	/* Optval will point to either true or false. */
+	if ((*optval != TRUE) && (*optval != FALSE))
+	  {
+	    gdbm_errno = GDBM_OPT_ILLEGAL;
+	    return(-1);
+	  }
+
+	dbf->fast_write = *optval;
+	break;
+
+      case GDBM_COALESCEBLKS:
+      	/* Optval will point to either true or false. */
+	if ((*optval != TRUE) && (*optval != FALSE))
+	  {
+	    gdbm_errno = GDBM_OPT_ILLEGAL;
+	    return(-1);
+	  }
+
+	dbf->fast_write = *optval;
+	break;
+
+      default:
+        gdbm_errno = GDBM_OPT_ILLEGAL;
+        return(-1);
+    }
+
+  return(0);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmstore.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmstore.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmstore.c	(revision 18906)
@@ -0,0 +1,170 @@
+/* gdbmstore.c - Add a new key/data pair to the database. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+
+/* Add a new element to the database.  CONTENT is keyed by KEY.  The
+   file on disk is updated to reflect the structure of the new database
+   before returning from this procedure.  The FLAGS define the action to
+   take when the KEY is already in the database.  The value GDBM_REPLACE
+   asks that the old data be replaced by the new CONTENT.  The value
+   GDBM_INSERT asks that an error be returned and no action taken.  A
+   return value of 0 means no errors.  A return value of -1 means that
+   the item was not stored in the data base because the caller was not an
+   official writer. A return value of 0 means that the item was not stored
+   because the argument FLAGS was GDBM_INSERT and the KEY was already in
+   the database. */
+
+int
+gdbm_store (dbf, key, content, flags)
+     gdbm_file_info *dbf;
+     datum key;
+     datum content;
+     int flags;
+{
+  int  new_hash_val;		/* The new hash value. */
+  int  elem_loc;		/* The location in hash bucket. */
+  off_t file_adr;		/* The address of new space in the file.  */
+  off_t file_pos;		/* The position after a lseek. */
+  int  num_bytes;		/* Used for error detection. */
+  off_t free_adr;		/* For keeping track of a freed section. */
+  int  free_size;
+  int   new_size;		/* Used in allocating space. */
+  char *temp;			/* Used in _gdbm_findkey call. */
+
+
+  /* First check to make sure this guy is a writer. */
+  if (dbf->read_write == GDBM_READER)
+    {
+      gdbm_errno = GDBM_READER_CANT_STORE;
+      return -1;
+    }
+
+  /* Check for illegal data values.  A NULL dptr field is illegal because
+     NULL dptr returned by a lookup procedure indicates an error. */
+  if ((key.dptr == NULL) || (content.dptr == NULL))
+    {
+      gdbm_errno = GDBM_ILLEGAL_DATA;
+      return -1;
+    }
+
+  /* Initialize the gdbm_errno variable. */
+  gdbm_errno = GDBM_NO_ERROR;
+
+  /* Look for the key in the file.
+     A side effect loads the correct bucket and calculates the hash value. */
+  elem_loc = _gdbm_findkey (dbf, key, &temp, &new_hash_val);
+
+  /* Initialize these. */
+  file_adr = 0;
+  new_size = key.dsize + content.dsize;
+
+  /* Did we find the item? */
+  if (elem_loc != -1)
+    {
+      if (flags == GDBM_REPLACE)
+	{
+	  /* Just replace the data. */
+	  free_adr = dbf->bucket->h_table[elem_loc].data_pointer;
+	  free_size = dbf->bucket->h_table[elem_loc].key_size
+	              + dbf->bucket->h_table[elem_loc].data_size;
+	  if (free_size != new_size)
+	    {
+	      _gdbm_free (dbf, free_adr, free_size);
+	    }
+	  else
+	    {
+	      /* Just reuse the same address! */
+	      file_adr = free_adr;
+	    }
+	}
+      else
+	{
+	  gdbm_errno = GDBM_CANNOT_REPLACE;
+	  return 1;
+	}
+    }
+
+
+  /* Get the file address for the new space.
+     (Current bucket's free space is first place to look.) */
+  if (file_adr == 0)
+    {
+      file_adr = _gdbm_alloc (dbf, new_size);
+    }
+
+  /* If this is a new entry in the bucket, we need to do special things. */
+  if (elem_loc == -1)
+    {
+      if (dbf->bucket->count == dbf->header->bucket_elems)
+	{
+	  /* Split the current bucket. */
+	  _gdbm_split_bucket (dbf, new_hash_val);
+	}
+      
+      /* Find space to insert into bucket and set elem_loc to that place. */
+      elem_loc = new_hash_val % dbf->header->bucket_elems;
+      while (dbf->bucket->h_table[elem_loc].hash_value != -1)
+	{  elem_loc = (elem_loc + 1) % dbf->header->bucket_elems; }
+
+      /* We now have another element in the bucket.  Add the new information.*/
+      dbf->bucket->count += 1;
+      dbf->bucket->h_table[elem_loc].hash_value = new_hash_val;
+      bcopy (key.dptr, dbf->bucket->h_table[elem_loc].key_start,
+	     (SMALL < key.dsize ? SMALL : key.dsize));
+    }
+
+
+  /* Update current bucket data pointer and sizes. */
+  dbf->bucket->h_table[elem_loc].data_pointer = file_adr;
+  dbf->bucket->h_table[elem_loc].key_size = key.dsize;
+  dbf->bucket->h_table[elem_loc].data_size = content.dsize;
+
+  /* Write the data to the file. */
+  file_pos = lseek (dbf->desc, file_adr, L_SET);
+  if (file_pos != file_adr) _gdbm_fatal (dbf, "lseek error");
+  num_bytes = write (dbf->desc, key.dptr, key.dsize);
+  if (num_bytes != key.dsize) _gdbm_fatal (dbf, "write error");
+  num_bytes = write (dbf->desc, content.dptr, content.dsize);
+  if (num_bytes != content.dsize) _gdbm_fatal (dbf, "write error");
+
+  /* Current bucket has changed. */
+  dbf->cache_entry->ca_changed = TRUE;
+  dbf->bucket_changed = TRUE;
+
+  /* Write everything that is needed to the disk. */
+  _gdbm_end_update (dbf);
+  return 0;
+  
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmsync.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmsync.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/gdbmsync.c	(revision 18906)
@@ -0,0 +1,49 @@
+/* gdbmsync.c - Sync the disk with the in memory state. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+/* Make sure the database is all on disk. */
+
+void
+gdbm_sync (dbf)
+     gdbm_file_info *dbf;
+{
+
+  /* Initialize the gdbm_errno variable. */
+  gdbm_errno = GDBM_NO_ERROR;
+
+  /* Do the sync on the file. */
+  fsync (dbf->desc);
+
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/getopt.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/getopt.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/getopt.c	(revision 18906)
@@ -0,0 +1,734 @@
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
+   before changing it!
+
+   Copyright (C) 1987, 88, 89, 90, 91, 92, 1993
+   	Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+
+/* NOTE!!!  AIX requires this to be the first thing in the file.
+   Do not put ANYTHING before it!  */
+#if !defined (__GNUC__) && defined (_AIX)
+ #pragma alloca
+#endif
+
+#include "autoconf.h"
+
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not __GNUC__ */
+#if defined (HAVE_ALLOCA_H) || (defined(sparc) && (defined(sun) || (!defined(USG) && !defined(SVR4) && !defined(__svr4__))))
+#include <alloca.h>
+#else
+#ifndef _AIX
+char *alloca ();
+#endif
+#endif /* alloca.h */
+#endif /* not __GNUC__ */
+
+#if !__STDC__ && !defined(const) && IN_GCC
+#define const
+#endif
+
+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.  */
+#ifndef _NO_PROTO
+#define _NO_PROTO
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef	__GNU_LIBRARY__
+#undef	alloca
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+   contain conflicting prototypes for getopt.  */
+#include <stdlib.h>
+#else	/* Not GNU C library.  */
+#define	__alloca	alloca
+#endif	/* GNU C library.  */
+
+/* If GETOPT_COMPAT is defined, `+' as well as `--' can introduce a
+   long-named option.  Because this is not POSIX.2 compliant, it is
+   being phased out.  */
+/* #define GETOPT_COMPAT */
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Setting the environment variable POSIXLY_CORRECT disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg = 0;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns EOF, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* XXX 1003.2 says this must be 1 before any call.  */
+int optind = 0;
+
+/* The next char to be scanned in the option-element
+   in which the last option character we returned was found.
+   This allows us to pick up the scan where we left off.
+
+   If this is zero, or a null string, it means resume the scan
+   by advancing to the next ARGV-element.  */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we scan,
+   so that eventually all the non-options are at the end.  This allows options
+   to be given in any order, even with programs that were not written to
+   expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were written
+   to expect options and other ARGV-elements in any order and that care about
+   the ordering of the two.  We describe each non-option ARGV-element
+   as if it were the argument of an option with character code 1.
+   Using `-' as the first character of the list of option characters
+   selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return EOF with `optind' != ARGC.  */
+
+static enum
+{
+  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+
+
+#ifdef	__GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+   because there are many ways it can cause trouble.
+   On some systems, it contains special magic macros that don't work
+   in GCC.  */
+#include <string.h>
+#define	my_index	strchr
+#define	my_bcopy(src, dst, n)	memcpy ((dst), (src), (n))
+#else
+
+/* Avoid depending on library functions or files
+   whose names are inconsistent.  */
+
+char *getenv ();
+
+static char *
+my_index (str, chr)
+     const char *str;
+     int chr;
+{
+  while (*str)
+    {
+      if (*str == chr)
+	return (char *) str;
+      str++;
+    }
+  return 0;
+}
+
+static void
+my_bcopy (from, to, size)
+     const char *from;
+     char *to;
+     int size;
+{
+  int i;
+  for (i = 0; i < size; i++)
+    to[i] = from[i];
+}
+#endif				/* GNU C library.  */
+
+
+/* Handle permutation of arguments.  */
+
+/* Describe the part of ARGV that contains non-options that have
+   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
+   `last_nonopt' is the index after the last of them.  */
+
+static int first_nonopt;
+static int last_nonopt;
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+static void
+exchange (argv)
+     char **argv;
+{
+  int nonopts_size = (last_nonopt - first_nonopt) * sizeof (char *);
+  char **temp = (char **) __alloca (nonopts_size);
+
+  /* Interchange the two blocks of data in ARGV.  */
+
+  my_bcopy ((char *) &argv[first_nonopt], (char *) temp, nonopts_size);
+  my_bcopy ((char *) &argv[last_nonopt], (char *) &argv[first_nonopt],
+	    (optind - last_nonopt) * sizeof (char *));
+  my_bcopy ((char *) temp,
+	    (char *) &argv[first_nonopt + optind - last_nonopt],
+	    nonopts_size);
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  first_nonopt += (optind - last_nonopt);
+  last_nonopt = optind;
+}
+
+
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns `EOF'.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int
+_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+     const struct option *longopts;
+     int *longind;
+     int long_only;
+{
+  int option_index;
+
+  optarg = 0;
+
+  /* Initialize the internal data when the first call is made.
+     Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  if (optind == 0)
+    {
+      first_nonopt = last_nonopt = optind = 1;
+
+      nextchar = NULL;
+
+      /* Determine how to handle the ordering of options and nonoptions.  */
+
+      if (optstring[0] == '-')
+	{
+	  ordering = RETURN_IN_ORDER;
+	  ++optstring;
+	}
+      else if (optstring[0] == '+')
+	{
+	  ordering = REQUIRE_ORDER;
+	  ++optstring;
+	}
+      else if (getenv ("POSIXLY_CORRECT") != NULL)
+	ordering = REQUIRE_ORDER;
+      else
+	ordering = PERMUTE;
+    }
+
+  if (nextchar == NULL || *nextchar == '\0')
+    {
+      if (ordering == PERMUTE)
+	{
+	  /* If we have just processed some options following some non-options,
+	     exchange them so that the options come first.  */
+
+	  if (first_nonopt != last_nonopt && last_nonopt != optind)
+	    exchange ((char **) argv);
+	  else if (last_nonopt != optind)
+	    first_nonopt = optind;
+
+	  /* Now skip any additional non-options
+	     and extend the range of non-options previously skipped.  */
+
+	  while (optind < argc
+		 && (argv[optind][0] != '-' || argv[optind][1] == '\0')
+#ifdef GETOPT_COMPAT
+		 && (longopts == NULL
+		     || argv[optind][0] != '+' || argv[optind][1] == '\0')
+#endif				/* GETOPT_COMPAT */
+		 )
+	    optind++;
+	  last_nonopt = optind;
+	}
+
+      /* Special ARGV-element `--' means premature end of options.
+	 Skip it like a null option,
+	 then exchange with previous non-options as if it were an option,
+	 then skip everything else like a non-option.  */
+
+      if (optind != argc && !strcmp (argv[optind], "--"))
+	{
+	  optind++;
+
+	  if (first_nonopt != last_nonopt && last_nonopt != optind)
+	    exchange ((char **) argv);
+	  else if (first_nonopt == last_nonopt)
+	    first_nonopt = optind;
+	  last_nonopt = argc;
+
+	  optind = argc;
+	}
+
+      /* If we have done all the ARGV-elements, stop the scan
+	 and back over any non-options that we skipped and permuted.  */
+
+      if (optind == argc)
+	{
+	  /* Set the next-arg-index to point at the non-options
+	     that we previously skipped, so the caller will digest them.  */
+	  if (first_nonopt != last_nonopt)
+	    optind = first_nonopt;
+	  return EOF;
+	}
+
+      /* If we have come to a non-option and did not permute it,
+	 either stop the scan or describe it to the caller and pass it by.  */
+
+      if ((argv[optind][0] != '-' || argv[optind][1] == '\0')
+#ifdef GETOPT_COMPAT
+	  && (longopts == NULL
+	      || argv[optind][0] != '+' || argv[optind][1] == '\0')
+#endif				/* GETOPT_COMPAT */
+	  )
+	{
+	  if (ordering == REQUIRE_ORDER)
+	    return EOF;
+	  optarg = argv[optind++];
+	  return 1;
+	}
+
+      /* We have found another option-ARGV-element.
+	 Start decoding its characters.  */
+
+      nextchar = (argv[optind] + 1
+		  + (longopts != NULL && argv[optind][1] == '-'));
+    }
+
+  if (longopts != NULL
+      && ((argv[optind][0] == '-'
+	   && (argv[optind][1] == '-' || long_only))
+#ifdef GETOPT_COMPAT
+	  || argv[optind][0] == '+'
+#endif				/* GETOPT_COMPAT */
+	  ))
+    {
+      const struct option *p;
+      char *s = nextchar;
+      int exact = 0;
+      int ambig = 0;
+      const struct option *pfound = NULL;
+      int indfound;
+
+      while (*s && *s != '=')
+	s++;
+
+      /* Test all options for either exact match or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name;
+	   p++, option_index++)
+	if (!strncmp (p->name, nextchar, s - nextchar))
+	  {
+	    if (s - nextchar == strlen (p->name))
+	      {
+		/* Exact match found.  */
+		pfound = p;
+		indfound = option_index;
+		exact = 1;
+		break;
+	      }
+	    else if (pfound == NULL)
+	      {
+		/* First nonexact match found.  */
+		pfound = p;
+		indfound = option_index;
+	      }
+	    else
+	      /* Second nonexact match found.  */
+	      ambig = 1;
+	  }
+
+      if (ambig && !exact)
+	{
+	  if (opterr)
+	    fprintf (stderr, "%s: option `%s' is ambiguous\n",
+		     argv[0], argv[optind]);
+	  nextchar += strlen (nextchar);
+	  optind++;
+	  return '?';
+	}
+
+      if (pfound != NULL)
+	{
+	  option_index = indfound;
+	  optind++;
+	  if (*s)
+	    {
+	      /* Don't test has_arg with >, because some C compilers don't
+		 allow it to be used on enums.  */
+	      if (pfound->has_arg)
+		optarg = s + 1;
+	      else
+		{
+		  if (opterr)
+		    {
+		      if (argv[optind - 1][1] == '-')
+			/* --option */
+			fprintf (stderr,
+				 "%s: option `--%s' doesn't allow an argument\n",
+				 argv[0], pfound->name);
+		      else
+			/* +option or -option */
+			fprintf (stderr,
+			     "%s: option `%c%s' doesn't allow an argument\n",
+			     argv[0], argv[optind - 1][0], pfound->name);
+		    }
+		  nextchar += strlen (nextchar);
+		  return '?';
+		}
+	    }
+	  else if (pfound->has_arg == 1)
+	    {
+	      if (optind < argc)
+		optarg = argv[optind++];
+	      else
+		{
+		  if (opterr)
+		    fprintf (stderr, "%s: option `%s' requires an argument\n",
+			     argv[0], argv[optind - 1]);
+		  nextchar += strlen (nextchar);
+		  return optstring[0] == ':' ? ':' : '?';
+		}
+	    }
+	  nextchar += strlen (nextchar);
+	  if (longind != NULL)
+	    *longind = option_index;
+	  if (pfound->flag)
+	    {
+	      *(pfound->flag) = pfound->val;
+	      return 0;
+	    }
+	  return pfound->val;
+	}
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+	 or the option starts with '--' or is not a valid short
+	 option, then it's an error.
+	 Otherwise interpret it as a short option.  */
+      if (!long_only || argv[optind][1] == '-'
+#ifdef GETOPT_COMPAT
+	  || argv[optind][0] == '+'
+#endif				/* GETOPT_COMPAT */
+	  || my_index (optstring, *nextchar) == NULL)
+	{
+	  if (opterr)
+	    {
+	      if (argv[optind][1] == '-')
+		/* --option */
+		fprintf (stderr, "%s: unrecognized option `--%s'\n",
+			 argv[0], nextchar);
+	      else
+		/* +option or -option */
+		fprintf (stderr, "%s: unrecognized option `%c%s'\n",
+			 argv[0], argv[optind][0], nextchar);
+	    }
+	  nextchar = (char *) "";
+	  optind++;
+	  return '?';
+	}
+    }
+
+  /* Look at and handle the next option-character.  */
+
+  {
+    char c = *nextchar++;
+    char *temp = my_index (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*nextchar == '\0')
+      ++optind;
+
+    if (temp == NULL || c == ':')
+      {
+	if (opterr)
+	  {
+#if 0
+	    if (c < 040 || c >= 0177)
+	      fprintf (stderr, "%s: unrecognized option, character code 0%o\n",
+		       argv[0], c);
+	    else
+	      fprintf (stderr, "%s: unrecognized option `-%c'\n", argv[0], c);
+#else
+	    /* 1003.2 specifies the format of this message.  */
+	    fprintf (stderr, "%s: illegal option -- %c\n", argv[0], c);
+#endif
+	  }
+	optopt = c;
+	return '?';
+      }
+    if (temp[1] == ':')
+      {
+	if (temp[2] == ':')
+	  {
+	    /* This is an option that accepts an argument optionally.  */
+	    if (*nextchar != '\0')
+	      {
+		optarg = nextchar;
+		optind++;
+	      }
+	    else
+	      optarg = 0;
+	    nextchar = NULL;
+	  }
+	else
+	  {
+	    /* This is an option that requires an argument.  */
+	    if (*nextchar != '\0')
+	      {
+		optarg = nextchar;
+		/* If we end this ARGV-element by taking the rest as an arg,
+		   we must advance to the next element now.  */
+		optind++;
+	      }
+	    else if (optind == argc)
+	      {
+		if (opterr)
+		  {
+#if 0
+		    fprintf (stderr, "%s: option `-%c' requires an argument\n",
+			     argv[0], c);
+#else
+		    /* 1003.2 specifies the format of this message.  */
+		    fprintf (stderr, "%s: option requires an argument -- %c\n",
+			     argv[0], c);
+#endif
+		  }
+		optopt = c;
+		if (optstring[0] == ':')
+		  c = ':';
+		else
+		  c = '?';
+	      }
+	    else
+	      /* We already incremented `optind' once;
+		 increment it again when taking next ARGV-elt as argument.  */
+	      optarg = argv[optind++];
+	    nextchar = NULL;
+	  }
+      }
+    return c;
+  }
+}
+
+int
+getopt (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  return _getopt_internal (argc, argv, optstring,
+			   (const struct option *) 0,
+			   (int *) 0,
+			   0);
+}
+
+#endif	/* _LIBC or not __GNU_LIBRARY__.  */
+
+
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == EOF)
+	break;
+
+      switch (c)
+	{
+	case '0':
+	case '1':
+	case '2':
+	case '3':
+	case '4':
+	case '5':
+	case '6':
+	case '7':
+	case '8':
+	case '9':
+	  if (digit_optind != 0 && digit_optind != this_option_optind)
+	    printf ("digits occur in two different argv-elements.\n");
+	  digit_optind = this_option_optind;
+	  printf ("option %c\n", c);
+	  break;
+
+	case 'a':
+	  printf ("option a\n");
+	  break;
+
+	case 'b':
+	  printf ("option b\n");
+	  break;
+
+	case 'c':
+	  printf ("option c with value `%s'\n", optarg);
+	  break;
+
+	case '?':
+	  break;
+
+	default:
+	  printf ("?? getopt returned character code 0%o ??\n", c);
+	}
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+	printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/getopt.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/getopt.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/getopt.h	(revision 18906)
@@ -0,0 +1,129 @@
+/* Declarations for getopt.
+   Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#ifndef _GETOPT_H
+#define _GETOPT_H 1
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns EOF, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument		(or 0) if the option does not take an argument,
+   required_argument	(or 1) if the option requires an argument,
+   optional_argument 	(or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+#if	__STDC__
+  const char *name;
+#else
+  char *name;
+#endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+#define	no_argument		0
+#define required_argument	1
+#define optional_argument	2
+
+#if __STDC__
+#if defined(__GNU_LIBRARY__)
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int argc, char *const *argv, const char *shortopts);
+#else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+#endif /* not __GNU_LIBRARY__ */
+extern int getopt_long (int argc, char *const *argv, const char *shortopts,
+		        const struct option *longopts, int *longind);
+extern int getopt_long_only (int argc, char *const *argv,
+			     const char *shortopts,
+		             const struct option *longopts, int *longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int argc, char *const *argv,
+			     const char *shortopts,
+		             const struct option *longopts, int *longind,
+			     int long_only);
+#else /* not __STDC__ */
+extern int getopt ();
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+#endif /* not __STDC__ */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif /* _GETOPT_H */
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/global.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/global.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/global.c	(revision 18906)
@@ -0,0 +1,46 @@
+/* global.c - The external variables needed for "original" interface and
+   error messages. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+
+
+/* The global variables used for the "original" interface. */
+gdbm_file_info  *_gdbm_file = NULL;
+
+/* Memory for return data for the "original" interface. */
+datum _gdbm_memory = {NULL, 0};	/* Used by firstkey and nextkey. */
+char *_gdbm_fetch_val = NULL;	/* Used by fetch. */
+
+/* The dbm error number is placed in the variable GDBM_ERRNO. */
+gdbm_error gdbm_errno = GDBM_NO_ERROR;
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/hash.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/hash.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/hash.c	(revision 18906)
@@ -0,0 +1,58 @@
+/* hash.c - The gdbm hash function. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+
+/* This hash function computes a 31 bit value.  The value is used to index
+   the hash directory using the top n bits.  It is also used in a hash bucket
+   to find the home position of the element by taking the value modulo the
+   bucket hash table size. */
+
+int
+_gdbm_hash (key)
+     datum key;
+{
+  unsigned int value;	/* Used to compute the hash value.  */
+  int   index;		/* Used to cycle through random values. */
+
+
+  /* Set the initial value from key. */
+  value = 0x238F13AF * key.dsize;
+  for (index = 0; index < key.dsize; index++)
+    value = (value + (key.dptr[index] << (index*5 % 24))) & 0x7FFFFFFF;
+
+  value = (1103515243 * value + 12345) & 0x7FFFFFFF;  
+
+  /* Return the value. */
+  return((int) value);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/install-sh
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/install-sh	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/install-sh	(revision 18906)
@@ -0,0 +1,250 @@
+#! /bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission.  M.I.T. makes no representations about the
+# suitability of this software for any purpose.  It is provided "as is"
+# without express or implied warranty.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/lib/libgdbm.lai
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/lib/libgdbm.lai	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/lib/libgdbm.lai	(revision 18906)
@@ -0,0 +1,32 @@
+# libgdbm.la - a libtool library file
+# Generated by ltmain.sh - GNU libtool 1.4.2 (1.922.2.53 2001/09/11 03:18:52)
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libgdbm.a'
+
+# Libraries that this one depends upon.
+dependency_libs=''
+
+# Version information for libgdbm.
+current=3
+age=0
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/lib/libgdbm_compat.lai
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/lib/libgdbm_compat.lai	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/lib/libgdbm_compat.lai	(revision 18906)
@@ -0,0 +1,32 @@
+# libgdbm_compat.la - a libtool library file
+# Generated by ltmain.sh - GNU libtool 1.4.2 (1.922.2.53 2001/09/11 03:18:52)
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libgdbm_compat.a'
+
+# Libraries that this one depends upon.
+dependency_libs=''
+
+# Version information for libgdbm_compat.
+current=3
+age=0
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/libtool
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/libtool	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/libtool	(revision 18906)
@@ -0,0 +1,5270 @@
+#! /bin/sh
+
+# libtool - Provide generalized library-building support services.
+# Generated automatically by  (GNU  )
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host rata.cs.waikato.ac.nz:
+
+# Shell to use when invoking shell scripts.
+SHELL="/bin/sh"
+
+# Whether or not to build shared libraries.
+build_libtool_libs=no
+
+# Whether or not to build static libraries.
+build_old_libs=yes
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=yes
+
+# Whether or not to optimize for fast installation.
+fast_install=needless
+
+# The host system.
+host_alias=
+host=i386-apple-darwin9.2.1
+
+# An echo program that does not interpret backslashes.
+echo="/bin/echo"
+
+# The archiver.
+AR="ar"
+AR_FLAGS="cru"
+
+# The default C compiler.
+CC="gcc"
+
+# Is the compiler the GNU C compiler?
+with_gcc=yes
+
+# The linker used to build libraries.
+LD="/usr/libexec/gcc/i686-apple-darwin9/4.0.1/ld"
+
+# Whether we need hard or soft links.
+LN_S="ln -s"
+
+# A BSD-compatible nm program.
+NM="/usr/bin/nm -p"
+
+# A symbol stripping program
+STRIP=strip
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=file
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="dlltool"
+
+# Used on cygwin: object dumper.
+OBJDUMP="objdump"
+
+# Used on cygwin: assembler.
+AS="as"
+
+# The name of the directory that contains temporary libtool files.
+objdir=.libs
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Object file suffix (normally "o").
+objext="o"
+
+# Old archive suffix (normally "a").
+libext="a"
+
+# Executable file suffix (normally "").
+exeext=""
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fno-common"
+pic_mode=default
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Can we write directly to a .lo ?
+compiler_o_lo="yes"
+
+# Must we lock files when doing compilation ?
+need_locks="no"
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=no
+
+# Do we need a version for libraries?
+need_version=no
+
+# Whether dlopen is supported.
+dlopen_support=unknown
+
+# Whether dlopen of programs is supported.
+dlopen_self=unknown
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=unknown
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=""
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=" -fno-builtin -fno-rtti -fno-exceptions"
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=""
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="-all_load \$convenience"
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=""
+
+# Library versioning type.
+version_type=darwin
+
+# Format of library name prefix.
+libname_spec="lib\$name"
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec="\${libname}\${release}\${versuffix}.\$(test .\$module = .yes && echo so || echo dylib) \${libname}\${release}\${major}.\$(test .\$module = .yes && echo so || echo dylib) \${libname}.\$(test .\$module = .yes && echo so || echo dylib)"
+
+# The coded name of the library, if different from the real name.
+soname_spec="\${libname}\${release}\${major}.\$(test .\$module = .yes && echo so || echo dylib)"
+
+# Commands used to build and install an old-style archive.
+RANLIB="ranlib"
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
+old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib"
+old_postuninstall_cmds=""
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build and install a shared archive.
+archive_cmds="\$nonopt \$(test \\\"x\$module\\\" = xyes && echo -bundle || echo -dynamiclib) \$allow_undefined_flag -o \$lib \$libobjs \$deplibs\$linker_flags -install_name \$rpath/\$soname \$verstring"
+archive_expsym_cmds=""
+postinstall_cmds=""
+postuninstall_cmds=""
+
+# Commands to strip libraries.
+old_striplib=""
+striplib=""
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method="file_magic Mach-O dynamically linked shared library"
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd="/usr/bin/file -L"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag="-flat_namespace -undefined suppress"
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=""
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=""
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=""
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="sed -n -e 's/^.*[ 	]\\([BCDEGRST][BCDEGRST]*\\)[ 	][ 	]*\\(_\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'"
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern char \\1;/p'"
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'"
+
+# This is the shared library runtime path variable.
+runpath_var=
+
+# This is the shared library path variable.
+shlibpath_var=DYLD_LIBRARY_PATH
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=yes
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=unsupported
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=no
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist.
+hardcode_libdir_flag_spec=""
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=yes
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=no
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=no
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="PATH DYLD_LIBRARY_PATH  GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=unknown
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
+# Fix the shell variable $srcfile for the compiler.
+fix_srcfile_path=""
+
+# Set to yes if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | sed 's/.* //' | sort | uniq > \$export_symbols"
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=""
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# ### END LIBTOOL CONFIG
+
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | sed 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.4.2
+TIMESTAMP=" (1.922.2.53 2001/09/11 03:18:52)"
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+SP2NL='tr \040 \012'
+NL2SP='tr \015\012 \040\040'
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS=" 	"}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  echo "$modename: not configured to build any kind of library" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+# Parse our command line options once, thoroughly.
+while test $# -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    exit 0
+    ;;
+
+  --config)
+    sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
+    exit 0
+    ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+    exit 0
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --quiet | --silent)
+    show=:
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    case $nonopt in
+    *cc | *++ | gcc* | *-gcc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    prev=
+    lastarg=
+    srcfile="$nonopt"
+    suppress_output=
+
+    user_target=no
+    for arg
+    do
+      case $prev in
+      "") ;;
+      xcompiler)
+	# Aesthetically quote the previous argument.
+	prev=
+	lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+
+	case $arg in
+	# Double-quote args containing other shell metacharacters.
+	# Many Bourne shells cannot handle close brackets correctly
+	# in scan sets, so we specify it separately.
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+
+	# Add the previous argument to base_compile.
+	if test -z "$base_compile"; then
+	  base_compile="$lastarg"
+	else
+	  base_compile="$base_compile $lastarg"
+	fi
+	continue
+	;;
+      esac
+
+      # Accept any command-line options.
+      case $arg in
+      -o)
+	if test "$user_target" != "no"; then
+	  $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	  exit 1
+	fi
+	user_target=next
+	;;
+
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	lastarg=
+	save_ifs="$IFS"; IFS=','
+	for arg in $args; do
+	  IFS="$save_ifs"
+
+	  # Double-quote args containing other shell metacharacters.
+	  # Many Bourne shells cannot handle close brackets correctly
+	  # in scan sets, so we specify it separately.
+	  case $arg in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    arg="\"$arg\""
+	    ;;
+	  esac
+	  lastarg="$lastarg $arg"
+	done
+	IFS="$save_ifs"
+	lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	# Add the arguments to base_compile.
+	if test -z "$base_compile"; then
+	  base_compile="$lastarg"
+	else
+	  base_compile="$base_compile $lastarg"
+	fi
+	continue
+	;;
+      esac
+
+      case $user_target in
+      next)
+	# The next one is the -o target name
+	user_target=yes
+	continue
+	;;
+      yes)
+	# We got the output file
+	user_target=set
+	libobj="$arg"
+	continue
+	;;
+      esac
+
+      # Accept the current argument as the source file.
+      lastarg="$srcfile"
+      srcfile="$arg"
+
+      # Aesthetically quote the previous argument.
+
+      # Backslashify any backslashes, double quotes, and dollar signs.
+      # These are the only characters that are still specially
+      # interpreted inside of double-quoted scrings.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      case $lastarg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      # Add the previous argument to base_compile.
+      if test -z "$base_compile"; then
+	base_compile="$lastarg"
+      else
+	base_compile="$base_compile $lastarg"
+      fi
+    done
+
+    case $user_target in
+    set)
+      ;;
+    no)
+      # Get the name of the library object.
+      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    *)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSfmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $libobj"
+    else
+      removelist="$libobj"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit 1" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit 1" 1 2 15
+    else
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$0" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+      echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	# All platforms use -DPIC, to notify preprocessed assembler code.
+	command="$base_compile $srcfile $pic_flag -DPIC"
+      else
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      fi
+      if test "$build_old_libs" = yes; then
+	lo_libobj="$libobj"
+	dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$dir" = "X$libobj"; then
+	  dir="$objdir"
+	else
+	  dir="$dir/$objdir"
+	fi
+	libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+
+	if test -d "$dir"; then
+	  $show "$rm $libobj"
+	  $run $rm $libobj
+	else
+	  $show "$mkdir $dir"
+	  $run $mkdir $dir
+	  status=$?
+	  if test $status -ne 0 && test ! -d $dir; then
+	    exit $status
+	  fi
+	fi
+      fi
+      if test "$compiler_o_lo" = yes; then
+	output_obj="$libobj"
+	command="$command -o $output_obj"
+      elif test "$compiler_c_o" = yes; then
+	output_obj="$obj"
+	command="$command -o $output_obj"
+      fi
+
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+	echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test x"$output_obj" != x"$libobj"; then
+	$show "$mv $output_obj $libobj"
+	if $run $mv $output_obj $libobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # If we have no pic_flag, then copy the object into place and finish.
+      if (test -z "$pic_flag" || test "$pic_mode" != default) &&
+	 test "$build_old_libs" = yes; then
+	# Rename the .lo from within objdir to obj
+	if test -f $obj; then
+	  $show $rm $obj
+	  $run $rm $obj
+	fi
+
+	$show "$mv $libobj $obj"
+	if $run $mv $libobj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+
+	xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$xdir" = "X$obj"; then
+	  xdir="."
+	else
+	  xdir="$xdir"
+	fi
+	baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
+	libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+	# Now arrange that obj and lo_libobj become the same file
+	$show "(cd $xdir && $LN_S $baseobj $libobj)"
+	if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
+	  # Unlock the critical section if it was locked
+	  if test "$need_locks" != no; then
+	    $run $rm "$lockfile"
+	  fi
+	  exit 0
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Allow error messages only from the first compilation.
+      suppress_output=' >/dev/null 2>&1'
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      else
+	# All platforms use -DPIC, to notify preprocessed assembler code.
+	command="$base_compile $srcfile $pic_flag -DPIC"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+	output_obj="$obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+	echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+
+      # Just move the object if needed
+      if test x"$output_obj" != x"$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Create an invalid libtool object if no PIC, so that we do not
+      # accidentally link it into a program.
+      if test "$build_libtool_libs" != yes; then
+	$show "echo timestamp > $libobj"
+	$run eval "echo timestamp > \$libobj" || exit $?
+      else
+	# Move the .lo from within objdir
+	$show "$mv $libobj $lo_libobj"
+	if $run $mv $libobj $lo_libobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+    fi
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit 0
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invokation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test $# -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit 1
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit 1
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n $prev
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit 1
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit 1
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	 elif test "X$arg" = "X-lc_r"; then
+	  case $host in
+	  *-*-openbsd*)
+	    # Do not include libc_r directly, use -pthread flag.
+	    continue
+	    ;;
+	  esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit 1
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.lo | *.$objext)
+	# A library or standard object.
+	if test "$prev" = dlfiles; then
+	  # This file was specified with -dlopen.
+	  if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+	    dlfiles="$dlfiles $arg"
+	    prev=
+	    continue
+	  else
+	    # If libtool objects are unsupported, then we need to preload.
+	    prev=dlprefiles
+	  fi
+	fi
+
+	if test "$prev" = dlprefiles; then
+	  # Preload the old-style object.
+	  dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
+	  prev=
+	else
+	  case $arg in
+	  *.lo) libobjs="$libobjs $arg" ;;
+	  *) objs="$objs $arg" ;;
+	  esac
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d $output_objdir; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test $status -ne 0 && test ! -d $output_objdir; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      case "$libs " in
+      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+      esac
+      libs="$libs $deplib"
+    done
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit 1
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test $linkmode = prog; then
+	# Determine which files to process
+	case $pass in
+	dlopen)
+	  libs="$dlfiles"
+	  save_deplibs="$deplibs" # Collect dlpreopened libraries
+	  deplibs=
+	  ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-l*)
+	  if test $linkmode = oldlib && test $linkmode = obj; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
+	    continue
+	  fi
+	  if test $pass = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    # Search the libtool library
+	    lib="$searchdir/lib${name}.la"
+	    if test -f "$lib"; then
+	      found=yes
+	      break
+	    fi
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test $pass = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test $pass = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test $pass = scan; then
+	      deplibs="$deplib $deplibs"
+	      newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test $pass = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test $pass = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    if test "$deplibs_check_method" != pass_all; then
+	      echo
+	      echo "*** Warning: This library needs some functionality provided by $deplib."
+	      echo "*** I have the capability to make that library automatically link in when"
+	      echo "*** you link to this library.  But I can only do this if you have a"
+	      echo "*** shared version of the library, which you do not appear to have."
+	    else
+	      echo
+	      echo "*** Warning: Linking the shared library $output against the"
+	      echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test $pass != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	    # If there is no dlopen support or we're linking statically,
+	    # we need to preload.
+	    newdlprefiles="$newdlprefiles $deplib"
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    newdlfiles="$newdlfiles $deplib"
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test $found = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit 1
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit 1
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variable installed.
+	installed=yes
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test $linkmode = oldlib && test $linkmode = obj; }; then
+	   # Add dl[pre]opened files of deplib
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test $pass = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit 1
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test $linkmode != prog && test $linkmode != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit 1
+	  fi
+	  continue
+	fi # $pass = conv
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit 1
+	fi
+
+	# This library was specified with -dlopen.
+	if test $pass = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit 1
+	  fi
+	  if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.
+	    dlprefiles="$dlprefiles $lib"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	else
+	  dir="$ladir/$objdir"
+	  absdir="$abs_ladir/$objdir"
+	  # Remove this search path later
+	  notinst_path="$notinst_path $abs_ladir"
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test $pass = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit 1
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test $linkmode = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs"
+	  fi
+	  continue
+	fi
+
+	if test $linkmode = prog && test $pass != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test $linkalldeplibs = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    case "$tmp_libs " in
+	    *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	    esac
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  # Link against this shared library
+
+	  if test "$linkmode,$pass" = "prog,link" ||
+	   { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	    if test $linkmode = prog; then
+	      # We need to hardcode the library path
+	      if test -n "$shlibpath_var"; then
+		# Make sure the rpath contains only unique directories.
+		case "$temp_rpath " in
+		*" $dir "*) ;;
+		*" $absdir "*) ;;
+		*) temp_rpath="$temp_rpath $dir" ;;
+		esac
+	      fi
+	    fi
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`echo $soroot | sed -e 's/^.*\///'`
+	    newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      eval cmds=\"$extract_expsyms_cmds\"
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      eval cmds=\"$old_archive_from_expsyms_cmds\"
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n $old_archive_from_expsyms_cmds
+
+	  if test $linkmode = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit 1
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test $linkmode = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test $linkmode = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    fi
+
+	    if test $linkmode = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test $linkmode = prog; then
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+
+	  # Try to link the static library
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    echo
+	    echo "*** Warning: This library needs some functionality provided by $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      echo "*** Therefore, libtool will create a static module, that should work "
+	      echo "*** as long as the dlopening application is linked with the -dlopen flag."
+	      if test -z "$global_symbol_pipe"; then
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test $linkmode = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
+	       test $link_static = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    case "$tmp_libs " in
+	    *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	    esac
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test $link_all_deplibs != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="-L$absdir/$objdir"
+		else
+		  eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit 1
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="-L$absdir"
+		fi
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$deplibs $path" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test $pass = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test $pass != dlopen; then
+	test $pass != scan && dependency_libs="$newdependency_libs"
+	if test $pass != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    *)
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      if test "$pass" = "conv" &&
+       { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
+	libs="$deplibs" # reset libs
+	deplibs=
+      fi
+    done # for pass
+    if test $linkmode = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit 1
+	else
+	  echo
+	  echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test $# -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  libext=al
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	current="$2"
+	revision="$3"
+	age="$4"
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	case $revision in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	case $age in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	if test $age -gt $current; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix)
+	  major=`expr $current - $age + 1`
+	  verstring="sgi$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test $loop != 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="sgi$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test $loop != 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  verstring="0.0"
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=""
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs.
+	$show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
+	$run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
+	deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
+	dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test $build_libtool_need_lc = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behaviour.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $CC -o conftest conftest.c $deplibs
+	  if test $? -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+	      if test -n "$name" && test "$name" != "0"; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		set dummy $deplib_matches
+		deplib_match=$2
+		if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		  newdeplibs="$newdeplibs $i"
+		else
+		  droppeddeps=yes
+		  echo
+		  echo "*** Warning: This library needs some functionality provided by $i."
+		  echo "*** I have the capability to make that library automatically link in when"
+		  echo "*** you link to this library.  But I can only do this if you have a"
+		  echo "*** shared version of the library, which you do not appear to have."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occured in the first compile.  Let's try to salvage the situation:
+	    # Compile a seperate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	     # If $name is empty we are operating on a -L argument.
+	      if test -n "$name" && test "$name" != "0"; then
+		$rm conftest
+		$CC -o conftest conftest.c $i
+		# Did it work?
+		if test $? -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    echo "*** Warning: This library needs some functionality provided by $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which you do not appear to have."
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "***  make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      libname=`eval \\$echo \"$libname_spec\"`
+	      for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		    potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		    for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | sed 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | sed 10q \
+			 | egrep "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		    done
+	      done
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		echo "*** Warning: This library needs some functionality provided by $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have."
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      libname=`eval \\$echo \"$libname_spec\"`
+	      for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		for potent_lib in $potential_libs; do
+		  if eval echo \"$potent_lib\" 2>/dev/null \
+		      | sed 10q \
+		      | egrep "$match_pattern_regex" > /dev/null; then
+		    newdeplibs="$newdeplibs $a_deplib"
+		    a_deplib=""
+		    break 2
+		  fi
+		done
+	      done
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		echo "*** Warning: This library needs some functionality provided by $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have."
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	       -e 's/ -[LR][^ ]*//g' -e 's/[ 	]//g' |
+	     grep . >/dev/null; then
+	    echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test $allow_undefined = no; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test $hardcode_into_libs = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	test -z "$dlname" && dlname=$soname
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Ensure that we have .o objects for linkers which dislike .lo
+	# (e.g. aix) in case we are running --disable-static
+	for obj in $libobjs; do
+	  xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$obj"; then
+	    xdir="."
+	  else
+	    xdir="$xdir"
+	  fi
+	  baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	  oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+	  if test ! -f $xdir/$oldobj; then
+	    $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+	    $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
+	  fi
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    eval cmds=\"$export_symbols_cmds\"
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      $show "$cmd"
+	      $run eval "$cmd" || exit $?
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "mkdir $gentop"
+	    $run mkdir "$gentop"
+	    status=$?
+	    if test $status -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	    generated="$generated $gentop"
+
+	    for xlib in $convenience; do
+	      # Extract the objects.
+	      case $xlib in
+	      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	      *) xabs=`pwd`"/$xlib" ;;
+	      esac
+	      xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	      xdir="$gentop/$xlib"
+
+	      $show "${rm}r $xdir"
+	      $run ${rm}r "$xdir"
+	      $show "mkdir $xdir"
+	      $run mkdir "$xdir"
+	      status=$?
+	      if test $status -ne 0 && test ! -d "$xdir"; then
+		exit $status
+	      fi
+	      $show "(cd $xdir && $AR x $xabs)"
+	      $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	      libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+	    done
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval cmds=\"$archive_expsym_cmds\"
+	else
+	  eval cmds=\"$archive_cmds\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit 0
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit 1
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  $show "${rm}r $gentop"
+	  $run ${rm}r "$gentop"
+	  $show "mkdir $gentop"
+	  $run mkdir "$gentop"
+	  status=$?
+	  if test $status -ne 0 && test ! -d "$gentop"; then
+	    exit $status
+	  fi
+	  generated="$generated $gentop"
+
+	  for xlib in $convenience; do
+	    # Extract the objects.
+	    case $xlib in
+	    [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	    *) xabs=`pwd`"/$xlib" ;;
+	    esac
+	    xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	    xdir="$gentop/$xlib"
+
+	    $show "${rm}r $xdir"
+	    $run ${rm}r "$xdir"
+	    $show "mkdir $xdir"
+	    $run mkdir "$xdir"
+	    status=$?
+	    if test $status -ne 0 && test ! -d "$xdir"; then
+	      exit $status
+	    fi
+	    $show "(cd $xdir && $AR x $xabs)"
+	    $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	    reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+	  done
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      eval cmds=\"$reload_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit 0
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	$show "echo timestamp > $libobj"
+	$run eval "echo timestamp > $libobj" || exit $?
+	exit 0
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	eval cmds=\"$reload_cmds\"
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      else
+	# Just create a symlink.
+	$show $rm $libobj
+	$run $rm $libobj
+	xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$xdir" = "X$libobj"; then
+	  xdir="."
+	else
+	  xdir="$xdir"
+	fi
+	baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+	oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+	$show "(cd $xdir && $LN_S $oldobj $baseobj)"
+	$run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit 0
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$output.exp"
+	      $run $rm $export_symbols
+	      $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+	      $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`echo "$arg" | sed -e 's%^.*/%%'`
+	    $run eval 'echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DPIC";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit 1
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test $need_relink = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit 0
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="cd `pwd`; $relink_command"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+	case $0 in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$0 --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*) exeext=.exe ;;
+	  *) exeext= ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit 1" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# win32 systems need to use the prog path for dll
+	# lookup to work
+	*-*-cygwin* | *-*-pw32*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      # Export the path to the program.
+      PATH=\"\$progdir:\$PATH\"
+      export PATH
+
+      exec \$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit 0
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	$show "${rm}r $gentop"
+	$run ${rm}r "$gentop"
+	$show "mkdir $gentop"
+	$run mkdir "$gentop"
+	status=$?
+	if test $status -ne 0 && test ! -d "$gentop"; then
+	  exit $status
+	fi
+	generated="$generated $gentop"
+
+	# Add in members from convenience archives.
+	for xlib in $addlibs; do
+	  # Extract the objects.
+	  case $xlib in
+	  [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	  *) xabs=`pwd`"/$xlib" ;;
+	  esac
+	  xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	  xdir="$gentop/$xlib"
+
+	  $show "${rm}r $xdir"
+	  $run ${rm}r "$xdir"
+	  $show "mkdir $xdir"
+	  $run mkdir "$xdir"
+	  status=$?
+	  if test $status -ne 0 && test ! -d "$xdir"; then
+	    exit $status
+	  fi
+	  $show "(cd $xdir && $AR x $xabs)"
+	  $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	  oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+	done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+	eval cmds=\"$old_archive_from_new_cmds\"
+      else
+	# Ensure that we have .o objects in place in case we decided
+	# not to build a shared library, and have fallen back to building
+	# static libs even though --disable-static was passed!
+	for oldobj in $oldobjs; do
+	  if test ! -f $oldobj; then
+	    xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$oldobj"; then
+	      xdir="."
+	    else
+	      xdir="$xdir"
+	    fi
+	    baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+	    obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+	    $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+	    $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
+	  fi
+	done
+
+	eval cmds=\"$old_archive_cmds\"
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit 1
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit 1
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit 1
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test $need_relink = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit 0
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test $# -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    continue
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test $# -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  eval cmds=\"$postinstall_cmds\"
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit 0
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Do a test to see if this is really a libtool program.
+	if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
+	    exit 1
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+	      else
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`echo $destfile | sed -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      eval cmds=\"$old_postinstall_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $0 --finish$current_libdirs'
+    else
+      exit 0
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  eval cmds=\"$finish_cmds\"
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = ":" && exit 0
+
+    echo "----------------------------------------------------------------------"
+    echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      echo "   $libdir"
+    done
+    echo
+    echo "If you ever happen to want to link against installed libraries"
+    echo "in a given directory, LIBDIR, you must either use libtool, and"
+    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    echo
+    echo "See any operating system documentation about shared libraries for"
+    echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    echo "----------------------------------------------------------------------"
+    exit 0
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit 1
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit 1
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved enviroment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd='"$cmd"$args'
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit 0
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    rmdirs=
+
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$objdir"
+      else
+	objdir="$dir/$objdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test $mode = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test $mode = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test $mode = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      eval cmds=\"$postuninstall_cmds\"
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test $? != 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      eval cmds=\"$old_postuninstall_cmds\"
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test $? != 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	if test "$build_old_libs" = yes; then
+	  oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
+	  rmfiles="$rmfiles $dir/$oldobj"
+	fi
+	;;
+
+      *)
+	# Do a test to see if this is a libtool program.
+	if test $mode = clean &&
+	   (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  relink_command=
+	  . $dir/$file
+
+	  rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	  if test "$fast_install" = yes && test -n "$relink_command"; then
+	    rmfiles="$rmfiles $objdir/lt-$name"
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit 1
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE."
+  exit 0
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+  ;;
+esac
+
+echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/ltmain.sh
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/ltmain.sh	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/ltmain.sh	(revision 18906)
@@ -0,0 +1,4984 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | sed 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.4.2
+TIMESTAMP=" (1.922.2.53 2001/09/11 03:18:52)"
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+SP2NL='tr \040 \012'
+NL2SP='tr \015\012 \040\040'
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS=" 	"}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  echo "$modename: not configured to build any kind of library" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+# Parse our command line options once, thoroughly.
+while test $# -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    exit 0
+    ;;
+
+  --config)
+    sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
+    exit 0
+    ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+    exit 0
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --quiet | --silent)
+    show=:
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    case $nonopt in
+    *cc | *++ | gcc* | *-gcc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    prev=
+    lastarg=
+    srcfile="$nonopt"
+    suppress_output=
+
+    user_target=no
+    for arg
+    do
+      case $prev in
+      "") ;;
+      xcompiler)
+	# Aesthetically quote the previous argument.
+	prev=
+	lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+
+	case $arg in
+	# Double-quote args containing other shell metacharacters.
+	# Many Bourne shells cannot handle close brackets correctly
+	# in scan sets, so we specify it separately.
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+
+	# Add the previous argument to base_compile.
+	if test -z "$base_compile"; then
+	  base_compile="$lastarg"
+	else
+	  base_compile="$base_compile $lastarg"
+	fi
+	continue
+	;;
+      esac
+
+      # Accept any command-line options.
+      case $arg in
+      -o)
+	if test "$user_target" != "no"; then
+	  $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	  exit 1
+	fi
+	user_target=next
+	;;
+
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	lastarg=
+	save_ifs="$IFS"; IFS=','
+	for arg in $args; do
+	  IFS="$save_ifs"
+
+	  # Double-quote args containing other shell metacharacters.
+	  # Many Bourne shells cannot handle close brackets correctly
+	  # in scan sets, so we specify it separately.
+	  case $arg in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    arg="\"$arg\""
+	    ;;
+	  esac
+	  lastarg="$lastarg $arg"
+	done
+	IFS="$save_ifs"
+	lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	# Add the arguments to base_compile.
+	if test -z "$base_compile"; then
+	  base_compile="$lastarg"
+	else
+	  base_compile="$base_compile $lastarg"
+	fi
+	continue
+	;;
+      esac
+
+      case $user_target in
+      next)
+	# The next one is the -o target name
+	user_target=yes
+	continue
+	;;
+      yes)
+	# We got the output file
+	user_target=set
+	libobj="$arg"
+	continue
+	;;
+      esac
+
+      # Accept the current argument as the source file.
+      lastarg="$srcfile"
+      srcfile="$arg"
+
+      # Aesthetically quote the previous argument.
+
+      # Backslashify any backslashes, double quotes, and dollar signs.
+      # These are the only characters that are still specially
+      # interpreted inside of double-quoted scrings.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      case $lastarg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      # Add the previous argument to base_compile.
+      if test -z "$base_compile"; then
+	base_compile="$lastarg"
+      else
+	base_compile="$base_compile $lastarg"
+      fi
+    done
+
+    case $user_target in
+    set)
+      ;;
+    no)
+      # Get the name of the library object.
+      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    *)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSfmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $libobj"
+    else
+      removelist="$libobj"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit 1" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit 1" 1 2 15
+    else
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$0" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+      echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	# All platforms use -DPIC, to notify preprocessed assembler code.
+	command="$base_compile $srcfile $pic_flag -DPIC"
+      else
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      fi
+      if test "$build_old_libs" = yes; then
+	lo_libobj="$libobj"
+	dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$dir" = "X$libobj"; then
+	  dir="$objdir"
+	else
+	  dir="$dir/$objdir"
+	fi
+	libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+
+	if test -d "$dir"; then
+	  $show "$rm $libobj"
+	  $run $rm $libobj
+	else
+	  $show "$mkdir $dir"
+	  $run $mkdir $dir
+	  status=$?
+	  if test $status -ne 0 && test ! -d $dir; then
+	    exit $status
+	  fi
+	fi
+      fi
+      if test "$compiler_o_lo" = yes; then
+	output_obj="$libobj"
+	command="$command -o $output_obj"
+      elif test "$compiler_c_o" = yes; then
+	output_obj="$obj"
+	command="$command -o $output_obj"
+      fi
+
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+	echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test x"$output_obj" != x"$libobj"; then
+	$show "$mv $output_obj $libobj"
+	if $run $mv $output_obj $libobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # If we have no pic_flag, then copy the object into place and finish.
+      if (test -z "$pic_flag" || test "$pic_mode" != default) &&
+	 test "$build_old_libs" = yes; then
+	# Rename the .lo from within objdir to obj
+	if test -f $obj; then
+	  $show $rm $obj
+	  $run $rm $obj
+	fi
+
+	$show "$mv $libobj $obj"
+	if $run $mv $libobj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+
+	xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$xdir" = "X$obj"; then
+	  xdir="."
+	else
+	  xdir="$xdir"
+	fi
+	baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
+	libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+	# Now arrange that obj and lo_libobj become the same file
+	$show "(cd $xdir && $LN_S $baseobj $libobj)"
+	if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
+	  # Unlock the critical section if it was locked
+	  if test "$need_locks" != no; then
+	    $run $rm "$lockfile"
+	  fi
+	  exit 0
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Allow error messages only from the first compilation.
+      suppress_output=' >/dev/null 2>&1'
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      else
+	# All platforms use -DPIC, to notify preprocessed assembler code.
+	command="$base_compile $srcfile $pic_flag -DPIC"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+	output_obj="$obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+	echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+
+      # Just move the object if needed
+      if test x"$output_obj" != x"$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Create an invalid libtool object if no PIC, so that we do not
+      # accidentally link it into a program.
+      if test "$build_libtool_libs" != yes; then
+	$show "echo timestamp > $libobj"
+	$run eval "echo timestamp > \$libobj" || exit $?
+      else
+	# Move the .lo from within objdir
+	$show "$mv $libobj $lo_libobj"
+	if $run $mv $libobj $lo_libobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+    fi
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit 0
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invokation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test $# -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit 1
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit 1
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n $prev
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit 1
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit 1
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	 elif test "X$arg" = "X-lc_r"; then
+	  case $host in
+	  *-*-openbsd*)
+	    # Do not include libc_r directly, use -pthread flag.
+	    continue
+	    ;;
+	  esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit 1
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.lo | *.$objext)
+	# A library or standard object.
+	if test "$prev" = dlfiles; then
+	  # This file was specified with -dlopen.
+	  if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+	    dlfiles="$dlfiles $arg"
+	    prev=
+	    continue
+	  else
+	    # If libtool objects are unsupported, then we need to preload.
+	    prev=dlprefiles
+	  fi
+	fi
+
+	if test "$prev" = dlprefiles; then
+	  # Preload the old-style object.
+	  dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
+	  prev=
+	else
+	  case $arg in
+	  *.lo) libobjs="$libobjs $arg" ;;
+	  *) objs="$objs $arg" ;;
+	  esac
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d $output_objdir; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test $status -ne 0 && test ! -d $output_objdir; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      case "$libs " in
+      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+      esac
+      libs="$libs $deplib"
+    done
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit 1
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test $linkmode = prog; then
+	# Determine which files to process
+	case $pass in
+	dlopen)
+	  libs="$dlfiles"
+	  save_deplibs="$deplibs" # Collect dlpreopened libraries
+	  deplibs=
+	  ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-l*)
+	  if test $linkmode = oldlib && test $linkmode = obj; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
+	    continue
+	  fi
+	  if test $pass = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    # Search the libtool library
+	    lib="$searchdir/lib${name}.la"
+	    if test -f "$lib"; then
+	      found=yes
+	      break
+	    fi
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test $pass = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test $pass = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test $pass = scan; then
+	      deplibs="$deplib $deplibs"
+	      newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test $pass = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test $pass = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    if test "$deplibs_check_method" != pass_all; then
+	      echo
+	      echo "*** Warning: This library needs some functionality provided by $deplib."
+	      echo "*** I have the capability to make that library automatically link in when"
+	      echo "*** you link to this library.  But I can only do this if you have a"
+	      echo "*** shared version of the library, which you do not appear to have."
+	    else
+	      echo
+	      echo "*** Warning: Linking the shared library $output against the"
+	      echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test $pass != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	    # If there is no dlopen support or we're linking statically,
+	    # we need to preload.
+	    newdlprefiles="$newdlprefiles $deplib"
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    newdlfiles="$newdlfiles $deplib"
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test $found = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit 1
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit 1
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variable installed.
+	installed=yes
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test $linkmode = oldlib && test $linkmode = obj; }; then
+	   # Add dl[pre]opened files of deplib
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test $pass = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit 1
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test $linkmode != prog && test $linkmode != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit 1
+	  fi
+	  continue
+	fi # $pass = conv
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit 1
+	fi
+
+	# This library was specified with -dlopen.
+	if test $pass = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit 1
+	  fi
+	  if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.
+	    dlprefiles="$dlprefiles $lib"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	else
+	  dir="$ladir/$objdir"
+	  absdir="$abs_ladir/$objdir"
+	  # Remove this search path later
+	  notinst_path="$notinst_path $abs_ladir"
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test $pass = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit 1
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test $linkmode = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs"
+	  fi
+	  continue
+	fi
+
+	if test $linkmode = prog && test $pass != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test $linkalldeplibs = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    case "$tmp_libs " in
+	    *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	    esac
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  # Link against this shared library
+
+	  if test "$linkmode,$pass" = "prog,link" ||
+	   { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	    if test $linkmode = prog; then
+	      # We need to hardcode the library path
+	      if test -n "$shlibpath_var"; then
+		# Make sure the rpath contains only unique directories.
+		case "$temp_rpath " in
+		*" $dir "*) ;;
+		*" $absdir "*) ;;
+		*) temp_rpath="$temp_rpath $dir" ;;
+		esac
+	      fi
+	    fi
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`echo $soroot | sed -e 's/^.*\///'`
+	    newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      eval cmds=\"$extract_expsyms_cmds\"
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      eval cmds=\"$old_archive_from_expsyms_cmds\"
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n $old_archive_from_expsyms_cmds
+
+	  if test $linkmode = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit 1
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test $linkmode = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test $linkmode = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    fi
+
+	    if test $linkmode = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test $linkmode = prog; then
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+
+	  # Try to link the static library
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    echo
+	    echo "*** Warning: This library needs some functionality provided by $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      echo "*** Therefore, libtool will create a static module, that should work "
+	      echo "*** as long as the dlopening application is linked with the -dlopen flag."
+	      if test -z "$global_symbol_pipe"; then
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test $linkmode = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
+	       test $link_static = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    case "$tmp_libs " in
+	    *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	    esac
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test $link_all_deplibs != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="-L$absdir/$objdir"
+		else
+		  eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit 1
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="-L$absdir"
+		fi
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$deplibs $path" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test $pass = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test $pass != dlopen; then
+	test $pass != scan && dependency_libs="$newdependency_libs"
+	if test $pass != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    *)
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      if test "$pass" = "conv" &&
+       { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
+	libs="$deplibs" # reset libs
+	deplibs=
+      fi
+    done # for pass
+    if test $linkmode = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit 1
+	else
+	  echo
+	  echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test $# -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  libext=al
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	current="$2"
+	revision="$3"
+	age="$4"
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	case $revision in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	case $age in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	if test $age -gt $current; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix)
+	  major=`expr $current - $age + 1`
+	  verstring="sgi$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test $loop != 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="sgi$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test $loop != 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  verstring="0.0"
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=""
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs.
+	$show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
+	$run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
+	deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
+	dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test $build_libtool_need_lc = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behaviour.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $CC -o conftest conftest.c $deplibs
+	  if test $? -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+	      if test -n "$name" && test "$name" != "0"; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		set dummy $deplib_matches
+		deplib_match=$2
+		if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		  newdeplibs="$newdeplibs $i"
+		else
+		  droppeddeps=yes
+		  echo
+		  echo "*** Warning: This library needs some functionality provided by $i."
+		  echo "*** I have the capability to make that library automatically link in when"
+		  echo "*** you link to this library.  But I can only do this if you have a"
+		  echo "*** shared version of the library, which you do not appear to have."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occured in the first compile.  Let's try to salvage the situation:
+	    # Compile a seperate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	     # If $name is empty we are operating on a -L argument.
+	      if test -n "$name" && test "$name" != "0"; then
+		$rm conftest
+		$CC -o conftest conftest.c $i
+		# Did it work?
+		if test $? -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    echo "*** Warning: This library needs some functionality provided by $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which you do not appear to have."
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "***  make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      libname=`eval \\$echo \"$libname_spec\"`
+	      for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		    potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		    for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | sed 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | sed 10q \
+			 | egrep "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		    done
+	      done
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		echo "*** Warning: This library needs some functionality provided by $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have."
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      libname=`eval \\$echo \"$libname_spec\"`
+	      for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		for potent_lib in $potential_libs; do
+		  if eval echo \"$potent_lib\" 2>/dev/null \
+		      | sed 10q \
+		      | egrep "$match_pattern_regex" > /dev/null; then
+		    newdeplibs="$newdeplibs $a_deplib"
+		    a_deplib=""
+		    break 2
+		  fi
+		done
+	      done
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		echo "*** Warning: This library needs some functionality provided by $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have."
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	       -e 's/ -[LR][^ ]*//g' -e 's/[ 	]//g' |
+	     grep . >/dev/null; then
+	    echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test $allow_undefined = no; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test $hardcode_into_libs = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	test -z "$dlname" && dlname=$soname
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Ensure that we have .o objects for linkers which dislike .lo
+	# (e.g. aix) in case we are running --disable-static
+	for obj in $libobjs; do
+	  xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$obj"; then
+	    xdir="."
+	  else
+	    xdir="$xdir"
+	  fi
+	  baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	  oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+	  if test ! -f $xdir/$oldobj; then
+	    $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+	    $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
+	  fi
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    eval cmds=\"$export_symbols_cmds\"
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      $show "$cmd"
+	      $run eval "$cmd" || exit $?
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "mkdir $gentop"
+	    $run mkdir "$gentop"
+	    status=$?
+	    if test $status -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	    generated="$generated $gentop"
+
+	    for xlib in $convenience; do
+	      # Extract the objects.
+	      case $xlib in
+	      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	      *) xabs=`pwd`"/$xlib" ;;
+	      esac
+	      xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	      xdir="$gentop/$xlib"
+
+	      $show "${rm}r $xdir"
+	      $run ${rm}r "$xdir"
+	      $show "mkdir $xdir"
+	      $run mkdir "$xdir"
+	      status=$?
+	      if test $status -ne 0 && test ! -d "$xdir"; then
+		exit $status
+	      fi
+	      $show "(cd $xdir && $AR x $xabs)"
+	      $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	      libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+	    done
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval cmds=\"$archive_expsym_cmds\"
+	else
+	  eval cmds=\"$archive_cmds\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit 0
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit 1
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  $show "${rm}r $gentop"
+	  $run ${rm}r "$gentop"
+	  $show "mkdir $gentop"
+	  $run mkdir "$gentop"
+	  status=$?
+	  if test $status -ne 0 && test ! -d "$gentop"; then
+	    exit $status
+	  fi
+	  generated="$generated $gentop"
+
+	  for xlib in $convenience; do
+	    # Extract the objects.
+	    case $xlib in
+	    [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	    *) xabs=`pwd`"/$xlib" ;;
+	    esac
+	    xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	    xdir="$gentop/$xlib"
+
+	    $show "${rm}r $xdir"
+	    $run ${rm}r "$xdir"
+	    $show "mkdir $xdir"
+	    $run mkdir "$xdir"
+	    status=$?
+	    if test $status -ne 0 && test ! -d "$xdir"; then
+	      exit $status
+	    fi
+	    $show "(cd $xdir && $AR x $xabs)"
+	    $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	    reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+	  done
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      eval cmds=\"$reload_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit 0
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	$show "echo timestamp > $libobj"
+	$run eval "echo timestamp > $libobj" || exit $?
+	exit 0
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	eval cmds=\"$reload_cmds\"
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      else
+	# Just create a symlink.
+	$show $rm $libobj
+	$run $rm $libobj
+	xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$xdir" = "X$libobj"; then
+	  xdir="."
+	else
+	  xdir="$xdir"
+	fi
+	baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+	oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+	$show "(cd $xdir && $LN_S $oldobj $baseobj)"
+	$run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit 0
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$output.exp"
+	      $run $rm $export_symbols
+	      $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+	      $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`echo "$arg" | sed -e 's%^.*/%%'`
+	    $run eval 'echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DPIC";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit 1
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test $need_relink = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit 0
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="cd `pwd`; $relink_command"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+	case $0 in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$0 --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*) exeext=.exe ;;
+	  *) exeext= ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit 1" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# win32 systems need to use the prog path for dll
+	# lookup to work
+	*-*-cygwin* | *-*-pw32*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      # Export the path to the program.
+      PATH=\"\$progdir:\$PATH\"
+      export PATH
+
+      exec \$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit 0
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	$show "${rm}r $gentop"
+	$run ${rm}r "$gentop"
+	$show "mkdir $gentop"
+	$run mkdir "$gentop"
+	status=$?
+	if test $status -ne 0 && test ! -d "$gentop"; then
+	  exit $status
+	fi
+	generated="$generated $gentop"
+
+	# Add in members from convenience archives.
+	for xlib in $addlibs; do
+	  # Extract the objects.
+	  case $xlib in
+	  [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	  *) xabs=`pwd`"/$xlib" ;;
+	  esac
+	  xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	  xdir="$gentop/$xlib"
+
+	  $show "${rm}r $xdir"
+	  $run ${rm}r "$xdir"
+	  $show "mkdir $xdir"
+	  $run mkdir "$xdir"
+	  status=$?
+	  if test $status -ne 0 && test ! -d "$xdir"; then
+	    exit $status
+	  fi
+	  $show "(cd $xdir && $AR x $xabs)"
+	  $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	  oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+	done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+	eval cmds=\"$old_archive_from_new_cmds\"
+      else
+	# Ensure that we have .o objects in place in case we decided
+	# not to build a shared library, and have fallen back to building
+	# static libs even though --disable-static was passed!
+	for oldobj in $oldobjs; do
+	  if test ! -f $oldobj; then
+	    xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$oldobj"; then
+	      xdir="."
+	    else
+	      xdir="$xdir"
+	    fi
+	    baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+	    obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+	    $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+	    $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
+	  fi
+	done
+
+	eval cmds=\"$old_archive_cmds\"
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit 1
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit 1
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit 1
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test $need_relink = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit 0
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test $# -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    continue
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test $# -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  eval cmds=\"$postinstall_cmds\"
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit 0
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Do a test to see if this is really a libtool program.
+	if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
+	    exit 1
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+	      else
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`echo $destfile | sed -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      eval cmds=\"$old_postinstall_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $0 --finish$current_libdirs'
+    else
+      exit 0
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  eval cmds=\"$finish_cmds\"
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = ":" && exit 0
+
+    echo "----------------------------------------------------------------------"
+    echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      echo "   $libdir"
+    done
+    echo
+    echo "If you ever happen to want to link against installed libraries"
+    echo "in a given directory, LIBDIR, you must either use libtool, and"
+    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    echo
+    echo "See any operating system documentation about shared libraries for"
+    echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    echo "----------------------------------------------------------------------"
+    exit 0
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit 1
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit 1
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved enviroment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd='"$cmd"$args'
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit 0
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    rmdirs=
+
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$objdir"
+      else
+	objdir="$dir/$objdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test $mode = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test $mode = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test $mode = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      eval cmds=\"$postuninstall_cmds\"
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test $? != 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      eval cmds=\"$old_postuninstall_cmds\"
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test $? != 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	if test "$build_old_libs" = yes; then
+	  oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
+	  rmfiles="$rmfiles $dir/$oldobj"
+	fi
+	;;
+
+      *)
+	# Do a test to see if this is a libtool program.
+	if test $mode = clean &&
+	   (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  relink_command=
+	  . $dir/$file
+
+	  rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	  if test "$fast_install" = yes && test -n "$relink_command"; then
+	    rmfiles="$rmfiles $objdir/lt-$name"
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit 1
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE."
+  exit 0
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+  ;;
+esac
+
+echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/mkinstalldirs
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/mkinstalldirs	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/mkinstalldirs	(revision 18906)
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Make directory hierarchy. 
+# Written by Noah Friedman <friedman@prep.ai.mit.edu>
+# Public domain.
+
+defaultIFS=' 	
+'
+IFS="${IFS-${defaultIFS}}"
+
+errstatus=0
+
+for file in ${1+"$@"} ; do 
+   oIFS="${IFS}"
+   # Some sh's can't handle IFS=/ for some reason.
+   IFS='%'
+   set - `echo ${file} | sed -e 's@/@%@g' -e 's@^%@/@'`
+   IFS="${oIFS}"
+
+   pathcomp=''
+
+   for d in ${1+"$@"} ; do
+     pathcomp="${pathcomp}${d}"
+
+     if test ! -d "${pathcomp}"; then
+        echo "mkdir $pathcomp" 1>&2
+        mkdir "${pathcomp}" || errstatus=$?
+     fi
+
+     pathcomp="${pathcomp}/"
+   done
+done
+
+exit $errstatus
+
+# eof
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/ndbm.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/ndbm.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/ndbm.h	(revision 18906)
@@ -0,0 +1,71 @@
+/* ndbm.h  -  The include file for ndbm users.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+/* Parameters to dbm_store for simple insertion or replacement. */
+#define  DBM_INSERT  0
+#define  DBM_REPLACE 1
+
+
+/* The data and key structure.  This structure is defined for compatibility. */
+typedef struct {
+	char *dptr;
+	int   dsize;
+      } datum;
+
+
+/* The file information header. This is good enough for most applications. */
+typedef struct {int dummy[10];} DBM;
+
+
+/* These are the routines (with some macros defining them!) */
+
+extern DBM 	*dbm_open ();
+
+extern void	 dbm_close ();
+
+extern datum	 dbm_fetch ();
+
+extern int	 dbm_store ();
+
+extern int	 dbm_delete ();
+
+extern int	 dbm_delete ();
+
+extern datum	 dbm_firstkey ();
+
+extern datum	 dbm_nextkey ();
+
+#define		 dbm_error(dbf)  (0)
+
+#define		 dbm_clearerr(dbf)
+
+extern int	 dbm_dirfno ();
+
+extern int	 dbm_pagfno ();
+
+extern int	 dbm_rdonly ();
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/proto.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/proto.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/proto.h	(revision 18906)
@@ -0,0 +1,75 @@
+/* proto.h - The prototypes for the dbm routines. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+
+*************************************************************************/
+
+
+#ifndef __P
+#ifdef __STDC__
+#define __P(args) args
+#else
+#define __P(args) ()
+#endif
+#endif
+
+/* From bucket.c */
+void _gdbm_new_bucket    __P((gdbm_file_info *, hash_bucket *, int));
+void _gdbm_get_bucket    __P((gdbm_file_info *, int));
+void _gdbm_split_bucket  __P((gdbm_file_info *, int));
+void _gdbm_write_bucket  __P((gdbm_file_info *, cache_elem *));
+
+/* From falloc.c */
+off_t _gdbm_alloc       __P((gdbm_file_info *, int));
+void _gdbm_free         __P((gdbm_file_info *, off_t, int));
+int  _gdbm_put_av_elem  __P((avail_elem, avail_elem [], int *, int));
+
+/* From findkey.c */
+char *_gdbm_read_entry  __P((gdbm_file_info *, int));
+int _gdbm_findkey       __P((gdbm_file_info *, datum, char **, int *));
+
+/* From hash.c */
+int _gdbm_hash __P((datum));
+
+/* From update.c */
+void _gdbm_end_update   __P((gdbm_file_info *));
+void _gdbm_fatal         __P((gdbm_file_info *, char *));
+
+/* From gdbmopen.c */
+int _gdbm_init_cache	__P((gdbm_file_info *, int));
+
+/* The user callable routines.... */
+void  gdbm_close	  __P((gdbm_file_info *));
+int   gdbm_delete	  __P((gdbm_file_info *, datum));
+datum gdbm_fetch	  __P((gdbm_file_info *, datum));
+gdbm_file_info *gdbm_open __P((char *, int, int, int, void (*) (void)));
+int   gdbm_reorganize	  __P((gdbm_file_info *));
+datum gdbm_firstkey       __P((gdbm_file_info *));
+datum gdbm_nextkey        __P((gdbm_file_info *, datum));
+int   gdbm_store          __P((gdbm_file_info *, datum, datum, int));
+int   gdbm_exists	  __P((gdbm_file_info *, datum));
+void  gdbm_sync		  __P((gdbm_file_info *));
+int   gdbm_setopt	  __P((gdbm_file_info *, int, int *, int));
+int   gdbm_fdesc	  __P((gdbm_file_info *));
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/seq.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/seq.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/seq.c	(revision 18906)
@@ -0,0 +1,75 @@
+/* seq.c - This is the sequential visit of the database.  This defines two
+   user-visable routines that are used together. This is the DBM interface. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+/* Start the visit of all keys in the database.  This produces something in
+   hash order, not in any sorted order.  */
+
+datum
+firstkey ()
+{
+  datum ret_val;
+
+  /* Free previous dynamic memory, do actual call, and save pointer to new
+     memory. */
+  ret_val = gdbm_firstkey (_gdbm_file);
+  if (_gdbm_memory.dptr != NULL) free (_gdbm_memory.dptr);
+  _gdbm_memory = ret_val;
+
+  /* Return the new value. */
+  return ret_val;
+}
+
+
+/* Continue visiting all keys.  The next key following KEY is returned. */
+
+datum
+nextkey (key)
+     datum key;
+{
+  datum ret_val;
+
+  /* Make sure we have a valid key. */
+  if (key.dptr == NULL)
+    return key;
+
+  /* Call gdbm nextkey with supplied value. After that, free the old value. */
+  ret_val = gdbm_nextkey (_gdbm_file, key);
+  if (_gdbm_memory.dptr != NULL) free (_gdbm_memory.dptr);
+  _gdbm_memory = ret_val;
+
+  /* Return the new value. */
+  return ret_val;
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/store.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/store.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/store.c	(revision 18906)
@@ -0,0 +1,47 @@
+/* store.c - Add a new key/data pair to the database. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "extern.h"
+
+
+/* Add a new element to the database.  CONTENT is keyed by KEY.  The file on
+   disk is updated to reflect the structure of the new database before
+   returning from this procedure.  */
+
+int
+store (key, content)
+     datum key;
+     datum content;
+{
+  return gdbm_store (_gdbm_file, key, content, GDBM_REPLACE);
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/systems.h
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/systems.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/systems.h	(revision 18906)
@@ -0,0 +1,148 @@
+/* systems.h - Most of the system dependant code and defines are here. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* Include all system headers first. */
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#include <stdio.h>
+#if HAVE_SYS_FILE_H
+#include <sys/file.h>
+#endif
+#include <sys/stat.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#ifndef SEEK_SET
+#define SEEK_SET        0
+#endif
+
+#ifndef L_SET
+#define L_SET SEEK_SET
+#endif
+
+/* Do we have flock?  (BSD...) */
+
+#if HAVE_FLOCK
+
+#ifndef LOCK_SH
+#define LOCK_SH	1
+#endif
+
+#ifndef LOCK_EX
+#define LOCK_EX	2
+#endif
+
+#ifndef LOCK_NB
+#define LOCK_NB 4
+#endif
+
+#ifndef LOCK_UN
+#define LOCK_UN 8
+#endif
+
+#define UNLOCK_FILE(dbf) flock (dbf->desc, LOCK_UN)
+#define READLOCK_FILE(dbf) lock_val = flock (dbf->desc, LOCK_SH + LOCK_NB)
+#define WRITELOCK_FILE(dbf) lock_val = flock (dbf->desc, LOCK_EX + LOCK_NB)
+
+#else
+
+/* Assume it is done like System V. */
+
+#define UNLOCK_FILE(dbf) \
+	{					\
+	  struct flock flock;			\
+	  flock.l_type = F_UNLCK;		\
+	  flock.l_whence = SEEK_SET;		\
+	  flock.l_start = flock.l_len = 0L;	\
+	  fcntl (dbf->desc, F_SETLK, &flock);	\
+	}
+#define READLOCK_FILE(dbf) \
+	{					\
+	  struct flock flock;			\
+	  flock.l_type = F_RDLCK;		\
+	  flock.l_whence = SEEK_SET;			\
+	  flock.l_start = flock.l_len = 0L;	\
+	  lock_val = fcntl (dbf->desc, F_SETLK, &flock);	\
+	}
+#define WRITELOCK_FILE(dbf) \
+	{					\
+	  struct flock flock;			\
+	  flock.l_type = F_WRLCK;		\
+	  flock.l_whence = SEEK_SET;			\
+	  flock.l_start = flock.l_len = 0L;	\
+	  lock_val = fcntl (dbf->desc, F_SETLK, &flock);	\
+	}
+#endif
+
+/* Do we have bcopy?  */
+#if !HAVE_BCOPY
+#if HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#define bcmp(d1, d2, n)	memcmp(d1, d2, n)
+#define bcopy(d1, d2, n) memcpy(d2, d1, n)
+#endif
+
+/* Do we have fsync? */
+#if !HAVE_FSYNC
+#define fsync(f) {sync(); sync();}
+#endif
+
+/* Default block size.  Some systems do not have blocksize in their
+   stat record. This code uses the BSD blocksize from stat. */
+
+#if HAVE_STRUCT_STAT_ST_BLKSIZE
+#define STATBLKSIZE file_stat.st_blksize
+#else
+#define STATBLKSIZE 1024
+#endif
+
+/* Do we have ftruncate? */
+#if HAVE_FTRUNCATE
+#define TRUNCATE(dbf) ftruncate (dbf->desc, 0)
+#else
+#define TRUNCATE(dbf) close( open (dbf->name, O_RDWR|O_TRUNC, mode));
+#endif
+
+#ifndef STDERR_FILENO
+#define STDERR_FILENO 2
+#endif
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/testdbm.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/testdbm.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/testdbm.c	(revision 18906)
@@ -0,0 +1,218 @@
+/* testdbm.c - Driver program to test the dbm interface routines. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include <stdio.h>
+#include <sys/types.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_SYS_FILE_H
+#include <sys/file.h>
+#endif
+#include <sys/stat.h>
+
+#define TRUE  1
+#define FALSE 0
+
+typedef struct {
+  char *dptr;
+  int   dsize;
+} datum;
+
+extern datum fetch ();
+extern datum firstkey ();
+extern datum nextkey ();
+
+/* The test program allows one to call all the routines plus the hash function.
+   The commands are single letter commands.  The user is prompted for all other
+   information.  The commands are q (quit), f (fetch), s (store), d (delete),
+   1 (firstkey), n (nextkey) and h (hash function). */
+
+int
+main (argc, argv)
+     int argc;
+     char *argv[];
+{
+
+  char  cmd_ch;
+
+  datum key_data;
+  datum data_data;
+  datum return_data;
+
+  char key_line[500];
+  char data_line[1000];
+
+  char done = FALSE;
+  char sys[255];
+
+  char *file_name;
+
+  /* Argument checking. */
+  if (argc > 2)
+    {
+      printf ("Usage: %s [dbm-file] \n",argv[0]);
+      exit (2);
+    }
+
+  if (argc > 1)
+    {
+      file_name = argv[1];
+    }
+  else
+    {
+      file_name = "junkdbm";
+    }
+
+  /* Initialize */
+  data_data.dptr = data_line;
+
+  if (dbminit (file_name) != 0)
+    {
+      sprintf (sys,"touch %s.pag %s.dir", file_name, file_name);
+      system (sys);
+      if (dbminit (file_name) != 0)
+	{
+	  printf ("dbminit failed.\n");
+	  exit (2);
+	}
+    }
+
+  /* Welcome message. */
+  printf ("\nWelcome to the dbm test program.  Type ? for help.\n\n");
+  
+  while (!done)
+    {
+      printf ("com -> ");
+      cmd_ch = getchar ();
+      while (getchar () != '\n') /* Do nothing. */;
+      switch (cmd_ch)
+	{
+	case 'q':
+	  done = TRUE;
+	  break;
+
+	case 'f':
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  return_data = fetch (key_data);
+	  if (return_data.dptr != NULL)
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	  else
+	    printf ("No such item found.\n\n");
+	  break;
+
+	case 's':
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  printf ("data -> ");
+	  gets (data_line);
+	  data_data.dsize = strlen (data_line)+1;
+	  if (store (key_data, data_data) != 0)
+	    printf ("Item not inserted. \n");
+	  printf ("\n");
+	  break;
+
+	case 'd':
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  if (delete (key_data) != 0)
+	    printf ("Item not found or deleted\n");
+	  printf ("\n");
+	  break;
+
+	case '1':
+	  key_data = firstkey ();
+	  if (key_data.dptr != NULL)
+	    {
+	      return_data = fetch (key_data);
+	      printf ("key  is ->%s\n", key_data.dptr);
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	    }
+	  else
+	    printf ("No such item found.\n\n");
+	  break;
+
+
+	case '2':
+	  key_data = nextkey (key_data);
+	  if (key_data.dptr != NULL)
+	    {
+	      return_data = fetch (key_data);
+	      printf ("key  is ->%s\n", key_data.dptr);
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	    }
+	  else
+	    printf ("No such item found.\n\n");
+	  break;
+
+	case 'c':
+	  {
+	    int temp;
+	    temp = 0;
+	    return_data = firstkey ();
+	    while (return_data.dptr != NULL)
+	      {
+		temp++;
+		return_data = nextkey (return_data);
+	      }
+	    printf ("There are %d items in the database.\n\n", temp);
+	  }
+	  break;
+
+	case '?':
+	  printf ("c - count elements\n");
+	  printf ("d - delete\n");
+	  printf ("f - fetch\n");
+	  printf ("q - quit\n");
+	  printf ("s - store\n");
+	  printf ("1 - firstkey\n");
+	  printf ("2 - nextkey on last return value\n\n");
+	  break;
+
+	default:
+	  printf ("What? \n\n");
+	  break;
+
+	}
+    }
+
+  /* Quit normally. */
+  exit (0);
+
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/testgdbm.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/testgdbm.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/testgdbm.c	(revision 18906)
@@ -0,0 +1,508 @@
+/* testgdbm.c - Driver program to test the database routines and to
+   help debug gdbm.  Uses inside information to show "system" information */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+#include "gdbmerrno.h"
+#include "extern.h"
+
+#include "getopt.h"
+
+extern const char * gdbm_version;
+
+extern const char *gdbm_strerror __P((gdbm_error));
+
+gdbm_file_info *gdbm_file;
+
+/* Debug procedure to print the contents of the current hash bucket. */
+void
+print_bucket (bucket, mesg)
+     hash_bucket *bucket;
+     char *mesg;
+{
+  int  index;
+
+  printf ("******* %s **********\n\nbits = %d\ncount= %d\nHash Table:\n",
+	 mesg, bucket->bucket_bits, bucket->count);
+  printf ("     #    hash value     key size    data size     data adr  home\n");
+  for (index = 0; index < gdbm_file->header->bucket_elems; index++)
+    printf ("  %4d  %12x  %11d  %11d  %11d %5d\n", index,
+	   bucket->h_table[index].hash_value,
+	   bucket->h_table[index].key_size,
+	   bucket->h_table[index].data_size,
+	   bucket->h_table[index].data_pointer,
+	   bucket->h_table[index].hash_value % gdbm_file->header->bucket_elems);
+
+  printf ("\nAvail count = %1d\n", bucket->av_count);
+  printf ("Avail  adr     size\n");
+  for (index = 0; index < bucket->av_count; index++)
+    printf ("%9d%9d\n", bucket->bucket_avail[index].av_adr,
+	                bucket->bucket_avail[index].av_size);
+}
+
+
+void
+_gdbm_print_avail_list (dbf)
+     gdbm_file_info *dbf;
+{
+  int temp;
+  int size;
+  avail_block *av_stk;
+ 
+  /* Print the the header avail block.  */
+  printf ("\nheader block\nsize  = %d\ncount = %d\n",
+	  dbf->header->avail.size, dbf->header->avail.count);
+  for (temp = 0; temp < dbf->header->avail.count; temp++)
+    {
+      printf ("  %15d   %10d \n", dbf->header->avail.av_table[temp].av_size,
+	      dbf->header->avail.av_table[temp].av_adr);
+    }
+
+  /* Initialize the variables for a pass throught the avail stack. */
+  temp = dbf->header->avail.next_block;
+  size = ( ( (dbf->header->avail.size * sizeof (avail_elem)) >> 1)
+	  + sizeof (avail_block));
+  av_stk = (avail_block *) malloc (size);
+  if (av_stk == NULL)
+    {
+      printf("Out of memory\n");
+      exit (2);
+    }
+
+  /* Print the stack. */
+  while (FALSE)
+    {
+      lseek (dbf->desc, temp, L_SET);
+      read  (dbf->desc, av_stk, size);
+
+      /* Print the block! */
+      printf ("\nblock = %d\nsize  = %d\ncount = %d\n", temp,
+	      av_stk->size, av_stk->count);
+      for (temp = 0; temp < av_stk->count; temp++)
+	{
+	  printf ("  %15d   %10d \n", av_stk->av_table[temp].av_size,
+	    av_stk->av_table[temp].av_adr);
+	}
+      temp = av_stk->next_block;
+    }
+}
+
+void
+_gdbm_print_bucket_cache (dbf)
+     gdbm_file_info *dbf;
+{
+  register int index;
+  char changed;
+ 
+  if (dbf->bucket_cache != NULL) {
+    printf(
+      "Bucket Cache (size %d):\n  Index:  Address  Changed  Data_Hash \n",
+      dbf->cache_size);
+    for (index=0; index < dbf->cache_size; index++) {
+      changed = dbf->bucket_cache[index].ca_changed;
+      printf ("  %5d:  %7d  %7s  %x\n",
+	      index,
+	      dbf->bucket_cache[index].ca_adr,
+	      (changed ? "True" : "False"),
+	      dbf->bucket_cache[index].ca_data.hash_val);
+    }
+  } else
+    printf("Bucket cache has not been initialized.\n");
+}
+
+void
+usage (s)
+     char *s;
+{
+  printf(
+      "Usage: %s [-r or -ns] [-b block-size] [-c cache-size] [-g gdbm-file]\n",
+      s);
+  exit (2);
+}
+
+
+/* The test program allows one to call all the routines plus the hash function.
+   The commands are single letter commands.  The user is prompted for all other
+   information.  See the help command (?) for a list of all commands. */
+
+int
+main (argc, argv)
+     int argc;
+     char *argv[];
+
+{
+
+  char  cmd_ch;
+
+  datum key_data;
+  datum data_data;
+  datum return_data;
+
+  char key_line[500];
+  char data_line[1000];
+
+  char done = FALSE;
+  int  opt;
+  char reader = FALSE;
+  char newdb = FALSE;
+  int  fast  = 0;
+
+  int  cache_size = DEFAULT_CACHESIZE;
+  int  block_size = 0;
+
+  char *file_name = NULL;
+
+
+  /* Argument checking. */
+  opterr = 0;
+  while ((opt = getopt (argc, argv, "srnc:b:g:")) != -1)
+    switch (opt) {
+    case 's':  fast = GDBM_SYNC;
+               if (reader) usage (argv[0]);
+               break;
+    case 'r':  reader = TRUE;
+               if (newdb) usage (argv[0]);
+               break;
+    case 'n':  newdb = TRUE;
+               if (reader) usage (argv[0]);
+               break;
+    case 'c':  cache_size = atoi(optarg);
+    	       break;
+    case 'b':  block_size = atoi(optarg);
+               break;
+    case 'g':  file_name = optarg;
+               break;
+    default:  usage(argv[0]);
+    }
+
+  if(file_name == NULL) 
+    file_name = "junk.gdbm";
+
+  /* Initialize variables. */
+  key_data.dptr = NULL;
+  data_data.dptr = data_line;
+
+  if (reader)
+    {
+      gdbm_file = gdbm_open (file_name, block_size, GDBM_READER, 00664, NULL);
+    }
+  else if (newdb)
+    {
+      gdbm_file =
+    	gdbm_open (file_name, block_size, GDBM_NEWDB | fast, 00664, NULL);
+    }
+  else
+    {
+      gdbm_file =
+    	gdbm_open (file_name, block_size, GDBM_WRCREAT | fast, 00664, NULL);
+    }
+  if (gdbm_file == NULL)
+    {
+      printf("gdbm_open failed, %s\n", gdbm_strerror(gdbm_errno));
+      exit (2);
+    }
+
+  if (gdbm_setopt(gdbm_file, GDBM_CACHESIZE, &cache_size, sizeof(int)) == -1)
+    {
+      printf("gdbm_setopt failed, %s\n", gdbm_strerror(gdbm_errno));
+      exit(2);
+    }
+
+  /* Welcome message. */
+  printf ("\nWelcome to the gdbm test program.  Type ? for help.\n\n");
+  
+  while (!done)
+    {
+      printf ("com -> ");
+      cmd_ch = getchar ();
+      if (cmd_ch != '\n')
+	{
+	  char temp;
+	  do
+	      temp = getchar ();
+	  while (temp != '\n' && temp != EOF);
+	}
+      if (cmd_ch == EOF) cmd_ch = 'q';
+      switch (cmd_ch)
+	{
+	
+	/* Standard cases found in all test{dbm,ndbm,gdbm} programs. */
+	case '\n':
+	  printf ("\n");
+	  break;
+
+	case 'c':
+	  {
+	    int temp;
+	    temp = 0;
+	    if (key_data.dptr != NULL) free (key_data.dptr);
+	    return_data = gdbm_firstkey (gdbm_file);
+	    while (return_data.dptr != NULL)
+	      {
+		temp++;
+		key_data = return_data;
+		return_data = gdbm_nextkey (gdbm_file, key_data);
+		free (key_data.dptr);
+	      }
+	    printf ("There are %d items in the database.\n\n", temp);
+	    key_data.dptr = NULL;
+	  }
+	  break;
+
+	case 'd':
+	  if (key_data.dptr != NULL) free (key_data.dptr);
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  if (gdbm_delete (gdbm_file, key_data) != 0)
+	    printf ("Item not found or deleted\n");
+	  printf ("\n");
+	  key_data.dptr = NULL;
+	  break;
+
+	case 'f':
+	  if (key_data.dptr != NULL) free (key_data.dptr);
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  return_data = gdbm_fetch (gdbm_file, key_data);
+	  if (return_data.dptr != NULL)
+	    {
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	      free (return_data.dptr);
+	    }
+	  else
+	    printf ("No such item found.\n\n");
+	  key_data.dptr = NULL;
+	  break;
+
+	case 'n':
+	  if (key_data.dptr != NULL) free (key_data.dptr);
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  return_data = gdbm_nextkey (gdbm_file, key_data);
+	  if (return_data.dptr != NULL)
+	    {
+	      key_data = return_data;
+	      printf ("key is  ->%s\n", key_data.dptr);
+	      return_data = gdbm_fetch (gdbm_file, key_data);
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	      free (return_data.dptr);
+	    }
+	  else
+	    {
+	      printf ("No such item found.\n\n");
+	      key_data.dptr = NULL;
+	    }
+	  break;
+
+	case 'q':
+	  done = TRUE;
+	  break;
+
+	case 's':
+	  if (key_data.dptr != NULL) free (key_data.dptr);
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  printf ("data -> ");
+	  gets (data_line);
+	  data_data.dsize = strlen (data_line)+1;
+	  if (gdbm_store (gdbm_file, key_data, data_data, GDBM_REPLACE) != 0)
+	    printf ("Item not inserted. \n");
+	  printf ("\n");
+	  key_data.dptr = NULL;
+	  break;
+
+	case '1':
+	  if (key_data.dptr != NULL) free (key_data.dptr);
+	  key_data = gdbm_firstkey (gdbm_file);
+	  if (key_data.dptr != NULL)
+	    {
+	      printf ("key is  ->%s\n", key_data.dptr);
+	      return_data = gdbm_fetch (gdbm_file, key_data);
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	      free (return_data.dptr);
+	    }
+	  else
+	    printf ("No such item found.\n\n");
+	  break;
+
+	case '2':
+	  return_data = gdbm_nextkey (gdbm_file, key_data);
+	  if (return_data.dptr != NULL)
+	    {
+	      free (key_data.dptr);
+	      key_data = return_data;
+	      printf ("key is  ->%s\n", key_data.dptr);
+	      return_data = gdbm_fetch (gdbm_file, key_data);
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	      free (return_data.dptr);
+	    }
+	  else
+	    printf ("No such item found.\n\n");
+	  break;
+
+
+	/* Special cases for the testgdbm program. */
+	case 'r':
+	  {
+	    if (gdbm_reorganize (gdbm_file))
+	      printf ("Reorganization failed. \n\n");
+	    else
+	      printf ("Reorganization succeeded. \n\n");
+	  }
+	  break;
+
+	case 'A':
+	  _gdbm_print_avail_list (gdbm_file);
+	  printf ("\n");
+	  break;
+
+	case 'B':
+	  {
+	    int temp;
+	    char number[80];
+
+	    printf ("bucket? ");
+	    gets (number);
+	    sscanf (number,"%d",&temp);
+
+	    if (temp >= gdbm_file->header->dir_size /4)
+	      {
+		printf ("Not a bucket. \n\n");
+		break;
+	      }
+	    _gdbm_get_bucket (gdbm_file, temp);
+	  }
+	  printf ("Your bucket is now ");
+
+	case 'C':
+	  print_bucket (gdbm_file->bucket, "Current bucket");
+	  printf ("\n current directory entry = %d.\n", gdbm_file->bucket_dir);
+	  printf (" current bucket address  = %d.\n\n",
+		  gdbm_file->cache_entry->ca_adr);
+	  break;
+
+	case 'D':
+	  printf ("Hash table directory.\n");
+	  printf ("  Size =  %d.  Bits = %d. \n\n",gdbm_file->header->dir_size,
+		  gdbm_file->header->dir_bits);
+	  {
+	    int temp;
+
+	    for (temp = 0; temp < gdbm_file->header->dir_size / 4; temp++)
+	      {
+		printf ("  %10d:  %12d\n", temp, gdbm_file->dir[temp]);
+		if ( (temp+1) % 20 == 0 && isatty (0))
+		  {
+		    printf ("*** CR to continue: ");
+		    while (getchar () != '\n') /* Do nothing. */;
+		  }
+	      }
+	  }
+	  printf ("\n");
+	  break;
+
+	case 'F':
+	  {
+	    printf ("\nFile Header: \n\n");
+	    printf ("  table        = %d\n", gdbm_file->header->dir);
+	    printf ("  table size   = %d\n", gdbm_file->header->dir_size);
+	    printf ("  table bits   = %d\n", gdbm_file->header->dir_bits);
+	    printf ("  block size   = %d\n", gdbm_file->header->block_size);
+	    printf ("  bucket elems = %d\n", gdbm_file->header->bucket_elems);
+	    printf ("  bucket size  = %d\n", gdbm_file->header->bucket_size);
+	    printf ("  header magic = %x\n", gdbm_file->header->header_magic);
+	    printf ("  next block   = %d\n", gdbm_file->header->next_block);
+	    printf ("  avail size   = %d\n", gdbm_file->header->avail.size);
+	    printf ("  avail count  = %d\n", gdbm_file->header->avail.count);
+	    printf ("  avail nx blk = %d\n", gdbm_file->header->avail.next_block);
+	    printf ("\n");
+	  }
+	  break;
+
+        case 'H':
+	  if (key_data.dptr != NULL) free (key_data.dptr);
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  printf ("hash value = %x. \n\n", _gdbm_hash (key_data));
+	  key_data.dptr = NULL;
+	  break;
+
+	case 'K':
+	  _gdbm_print_bucket_cache (gdbm_file);
+	  break;
+
+	case 'V':
+	  printf ("%s\n\n", gdbm_version);
+	  break;
+
+	case '?':
+	  printf ("c - count (number of entries)\n");
+	  printf ("d - delete\n");
+	  printf ("f - fetch\n");
+	  printf ("n - nextkey\n");
+	  printf ("q - quit\n");
+	  printf ("s - store\n");
+	  printf ("1 - firstkey\n");
+	  printf ("2 - nextkey on last key (from n, 1 or 2)\n\n");
+
+	  printf ("r - reorganize\n");
+	  printf ("A - print avail list\n");
+	  printf ("B - get and print current bucket n\n");
+	  printf ("C - print current bucket\n");
+	  printf ("D - print hash directory\n");
+	  printf ("F - print file header\n");
+	  printf ("H - hash value of key\n");
+	  printf ("K - print the bucket cache\n");
+	  printf ("V - print version of gdbm\n");
+	  break;
+
+	default:
+	  printf ("What? \n\n");
+	  break;
+
+	}
+    }
+
+  /* Quit normally. */
+  exit (0);
+
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/testndbm.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/testndbm.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/testndbm.c	(revision 18906)
@@ -0,0 +1,216 @@
+/* testndbm.c - Driver program to test the ndbm interface routines. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include <stdio.h>
+#include <sys/types.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_FILE_H
+#include <sys/file.h>
+#endif
+#include <sys/stat.h>
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef GNU
+#include "ndbm.h"
+#else
+#include <ndbm.h>
+#endif
+
+#define TRUE  1
+#define FALSE 0
+
+
+/* The test program allows one to call all the routines plus the hash function.
+   The commands are single letter commands.  The user is prompted for all other
+   information.  The commands are q (quit), f (fetch), s (store), d (delete),
+   1 (firstkey), n (nextkey) and h (hash function). */
+
+int
+main (argc, argv)
+     int argc;
+     char *argv[];
+{
+
+  char  cmd_ch;
+
+  datum key_data;
+  datum data_data;
+  datum return_data;
+
+  char key_line[500];
+  char data_line[1000];
+
+  DBM *dbm_file;
+
+  char done = FALSE;
+
+  char *file_name;
+
+  /* Argument checking. */
+  if (argc > 2)
+    {
+      printf ("Usage: %s [dbm-file] \n",argv[0]);
+      exit (2);
+    }
+
+  if (argc > 1)
+    {
+      file_name = argv[1];
+    }
+  else
+    {
+      file_name = "junkndbm";
+    }
+
+  /* Initialize. */
+  data_data.dptr = data_line;
+
+  dbm_file = dbm_open (file_name, O_RDWR|O_CREAT, 00664);
+  if (dbm_file == NULL)
+    {
+      printf ("dbm_open failed.\n");
+      exit (2);
+    }
+
+  /* Welcome message. */
+  printf ("\nWelcome to the gndbm test program.  Type ? for help.\n\n");
+  
+  while (!done)
+    {
+      printf ("com -> ");
+      cmd_ch = getchar ();
+      while (getchar () != '\n') /* Do nothing. */;
+      switch (cmd_ch)
+	{
+	case 'q':
+	  done = TRUE;
+	  break;
+
+	case 'f':
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  return_data = dbm_fetch (dbm_file, key_data);
+	  if (return_data.dptr != NULL)
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	  else
+	    printf ("No such item found.\n\n");
+	  break;
+
+	case 's':
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  printf ("data -> ");
+	  gets (data_line);
+	  data_data.dsize = strlen (data_line)+1;
+	  if (dbm_store (dbm_file, key_data, data_data, DBM_REPLACE) != 0)
+	    printf ("Item not inserted. \n");
+	  printf ("\n");
+	  break;
+
+	case 'd':
+	  printf ("key -> ");
+	  gets (key_line);
+	  key_data.dptr = key_line;
+	  key_data.dsize = strlen (key_line)+1;
+	  if (dbm_delete (dbm_file, key_data) != 0)
+	    printf ("Item not found or deleted\n");
+	  printf ("\n");
+	  break;
+
+	case '1':
+	  key_data = dbm_firstkey (dbm_file);
+	  if (key_data.dptr != NULL)
+	    {
+	      return_data = dbm_fetch (dbm_file, key_data);
+	      printf ("key is ->%s\n", key_data.dptr);
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	    }
+	  else
+	    printf ("No such item found.\n\n");
+	  break;
+
+
+	case '2':
+	  key_data = dbm_nextkey (dbm_file);
+	  if (key_data.dptr != NULL)
+	    {
+	      return_data = dbm_fetch (dbm_file, key_data);
+	      printf ("key is ->%s\n", key_data.dptr);
+	      printf ("data is ->%s\n\n", return_data.dptr);
+	    }
+	  else
+	    printf ("No such item found.\n\n");
+	  break;
+
+	case 'c':
+	  {
+	    int temp;
+	    temp = 0;
+	    return_data = dbm_firstkey (dbm_file);
+	    while (return_data.dptr != NULL)
+	      {
+		temp++;
+		return_data = dbm_nextkey (dbm_file);
+	      }
+	    printf ("There are %d items in the database.\n\n", temp);
+	  }
+	  break;
+
+	case '?':
+	  printf ("c - count elements\n");
+	  printf ("d - delete\n");
+	  printf ("f - fetch\n");
+	  printf ("q - quit\n");
+	  printf ("s - store\n");
+	  printf ("1 - firstkey\n");
+	  printf ("2 - nextkey on last return value\n\n");
+	  break;
+
+	default:
+	  printf ("What? \n\n");
+	  break;
+
+	}
+    }
+
+  /* Quit normally. */
+  dbm_close (dbm_file);
+  exit (0);
+
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/update.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/update.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/update.c	(revision 18906)
@@ -0,0 +1,132 @@
+/* update.c - The routines for updating the file to a consistent state. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+
+/* include system configuration before all else. */
+#include "autoconf.h"
+
+#include "gdbmdefs.h"
+
+static void write_header __P((gdbm_file_info *));
+
+/* This procedure writes the header back to the file described by DBF. */
+
+static void
+write_header (dbf)
+     gdbm_file_info *dbf;
+{
+  int  num_bytes;	/* Return value for write. */
+  off_t file_pos;	/* Return value for lseek. */
+
+  file_pos = lseek (dbf->desc, 0L, L_SET);
+  if (file_pos != 0) _gdbm_fatal (dbf, "lseek error");
+  num_bytes = write (dbf->desc, dbf->header, dbf->header->block_size);
+  if (num_bytes != dbf->header->block_size)
+    _gdbm_fatal (dbf, "write error");
+
+  /* Wait for all output to be done. */
+  if (!dbf->fast_write)
+    fsync (dbf->desc);
+}
+
+
+/* After all changes have been made in memory, we now write them
+   all to disk. */
+void
+_gdbm_end_update (dbf)
+     gdbm_file_info *dbf;
+{
+  int  num_bytes;	/* Return value for write. */
+  off_t file_pos;	/* Return value for lseek. */
+  
+  
+  /* Write the current bucket. */
+  if (dbf->bucket_changed && (dbf->cache_entry != NULL))
+    {
+      _gdbm_write_bucket (dbf, dbf->cache_entry);
+      dbf->bucket_changed = FALSE;
+    }
+
+  /* Write the other changed buckets if there are any. */
+  if (dbf->second_changed)
+    {
+      if(dbf->bucket_cache != NULL)
+        {
+          register int index;
+
+          for (index = 0; index < dbf->cache_size; index++)
+	    {
+	      if (dbf->bucket_cache[index].ca_changed)
+	        _gdbm_write_bucket (dbf, &dbf->bucket_cache[index]);
+            }
+        }
+      dbf->second_changed = FALSE;
+    }
+  
+  /* Write the directory. */
+  if (dbf->directory_changed)
+    {
+      file_pos = lseek (dbf->desc, dbf->header->dir, L_SET);
+      if (file_pos != dbf->header->dir) _gdbm_fatal (dbf, "lseek error");
+      num_bytes = write (dbf->desc, dbf->dir, dbf->header->dir_size);
+      if (num_bytes != dbf->header->dir_size)
+	_gdbm_fatal (dbf, "write error");
+      dbf->directory_changed = FALSE;
+      if (!dbf->header_changed && !dbf->fast_write)
+	fsync (dbf->desc);
+    }
+
+  /* Final write of the header. */
+  if (dbf->header_changed)
+    {
+      write_header (dbf);
+      dbf->header_changed = FALSE;
+    }
+}
+
+
+/* If a fatal error is detected, come here and exit. VAL tells which fatal
+   error occured. */
+
+void
+_gdbm_fatal (dbf, val)
+     gdbm_file_info *dbf;
+     char *val;
+{
+  if ((dbf != NULL) && (dbf->fatal_err != NULL))
+    (*dbf->fatal_err) (val);
+  else
+    {
+      write (STDERR_FILENO, "gdbm fatal: ", 12);
+      if (val != NULL)
+	write (STDERR_FILENO, val, strlen(val));
+      write (STDERR_FILENO, "\n", 1);
+    }
+  exit (1);
+  /* NOTREACHED */
+}
Index: /branches/rk-oran/shared/mac/gdbm-1.8.3/version.c
===================================================================
--- /branches/rk-oran/shared/mac/gdbm-1.8.3/version.c	(revision 18906)
+++ /branches/rk-oran/shared/mac/gdbm-1.8.3/version.c	(revision 18906)
@@ -0,0 +1,36 @@
+/* version.c - This is file contains the version number for gdbm source. */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+#include "autoconf.h"
+
+/* Keep a string with the version number in it! */
+const char * gdbm_version = "GDBM version 1.8.3. 10/15/2002"
+#if defined(__STDC__) && defined(__DATE__) && defined(__TIME__)
+		" (built " __DATE__ " " __TIME__ ")"
+#endif
+		;
Index: /branches/rk-oran/shared/mac/intel/gdbm/gdbm.h
===================================================================
--- /branches/rk-oran/shared/mac/intel/gdbm/gdbm.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/intel/gdbm/gdbm.h	(revision 18906)
@@ -0,0 +1,139 @@
+/* gdbm.h  -  The include file for dbm users.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+/* Protection for multiple includes. */
+#ifndef _GDBM_H_
+#define _GDBM_H_
+
+/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who
+   can create the database. */
+#define  GDBM_READER  0		/* A reader. */
+#define  GDBM_WRITER  1		/* A writer. */
+#define  GDBM_WRCREAT 2		/* A writer.  Create the db if needed. */
+#define  GDBM_NEWDB   3		/* A writer.  Always create a new db. */
+#define  GDBM_FAST    0x10	/* Write fast! => No fsyncs.  OBSOLETE. */
+#define  GDBM_SYNC    0x20	/* Sync operations to the disk. */
+#define  GDBM_NOLOCK  0x40	/* Don't do file locking operations. */
+
+/* Parameters to gdbm_store for simple insertion or replacement in the
+   case that the key is already in the database. */
+#define  GDBM_INSERT  0		/* Never replace old data with new. */
+#define  GDBM_REPLACE 1		/* Always replace old data with new. */
+
+/* Parameters to gdbm_setopt, specifing the type of operation to perform. */
+#define  GDBM_CACHESIZE 1       /* Set the cache size. */
+#define  GDBM_FASTMODE  2       /* Toggle fast mode.  OBSOLETE. */
+#define  GDBM_SYNCMODE	3	/* Turn on or off sync operations. */
+#define  GDBM_CENTFREE  4	/* Keep all free blocks in the header. */
+#define  GDBM_COALESCEBLKS 5	/* Attempt to coalesce free blocks. */
+
+/* The data and key structure.  This structure is defined for compatibility. */
+typedef struct {
+	char *dptr;
+	int   dsize;
+      } datum;
+
+
+/* The file information header. This is good enough for most applications. */
+typedef struct {int dummy[10];} *GDBM_FILE;
+
+/* Determine if the C(++) compiler requires complete function prototype  */
+#ifndef __P
+#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
+#define __P(x) x
+#else
+#define __P(x) ()
+#endif
+#endif
+
+/* External variable, the gdbm build release string. */
+extern char *gdbm_version;	
+
+
+/* GDBM C++ support */
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/* These are the routines! */
+
+extern GDBM_FILE gdbm_open __P((char *, int, int, int, void (*)()));
+extern void gdbm_close __P((GDBM_FILE));
+extern int gdbm_store __P((GDBM_FILE, datum, datum, int));
+extern datum gdbm_fetch __P((GDBM_FILE, datum));
+extern int gdbm_delete __P((GDBM_FILE, datum));
+extern datum gdbm_firstkey __P((GDBM_FILE));
+extern datum gdbm_nextkey __P((GDBM_FILE, datum));
+extern int gdbm_reorganize __P((GDBM_FILE));
+extern void gdbm_sync __P((GDBM_FILE));
+extern int gdbm_exists __P((GDBM_FILE, datum));
+extern int gdbm_setopt __P((GDBM_FILE, int, int *, int));
+extern int gdbm_fdesc __P((GDBM_FILE));
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#define	GDBM_NO_ERROR		0
+#define	GDBM_MALLOC_ERROR	1
+#define	GDBM_BLOCK_SIZE_ERROR	2
+#define	GDBM_FILE_OPEN_ERROR	3
+#define	GDBM_FILE_WRITE_ERROR	4
+#define	GDBM_FILE_SEEK_ERROR	5
+#define	GDBM_FILE_READ_ERROR	6
+#define	GDBM_BAD_MAGIC_NUMBER	7
+#define	GDBM_EMPTY_DATABASE	8
+#define	GDBM_CANT_BE_READER	9
+#define	GDBM_CANT_BE_WRITER	10
+#define	GDBM_READER_CANT_DELETE	11
+#define	GDBM_READER_CANT_STORE	12
+#define	GDBM_READER_CANT_REORGANIZE	13
+#define	GDBM_UNKNOWN_UPDATE	14
+#define	GDBM_ITEM_NOT_FOUND	15
+#define	GDBM_REORGANIZE_FAILED	16
+#define	GDBM_CANNOT_REPLACE	17
+#define	GDBM_ILLEGAL_DATA	18
+#define	GDBM_OPT_ALREADY_SET	19
+#define	GDBM_OPT_ILLEGAL	20
+typedef int gdbm_error;		/* For compatibilities sake. */
+extern gdbm_error gdbm_errno;
+
+/* extra prototypes */
+
+/* GDBM C++ support */
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+extern char *gdbm_strerror __P((gdbm_error));
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif
Index: /branches/rk-oran/shared/mac/ppc/gdbm/gdbm.h
===================================================================
--- /branches/rk-oran/shared/mac/ppc/gdbm/gdbm.h	(revision 18906)
+++ /branches/rk-oran/shared/mac/ppc/gdbm/gdbm.h	(revision 18906)
@@ -0,0 +1,139 @@
+/* gdbm.h  -  The include file for dbm users.  */
+
+/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
+    Copyright (C) 1990, 1991, 1993  Free Software Foundation, Inc.
+
+    GDBM is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    GDBM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with GDBM; see the file COPYING.  If not, write to
+    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    You may contact the author by:
+       e-mail:  phil@cs.wwu.edu
+      us-mail:  Philip A. Nelson
+                Computer Science Department
+                Western Washington University
+                Bellingham, WA 98226
+       
+*************************************************************************/
+
+/* Protection for multiple includes. */
+#ifndef _GDBM_H_
+#define _GDBM_H_
+
+/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who
+   can create the database. */
+#define  GDBM_READER  0		/* A reader. */
+#define  GDBM_WRITER  1		/* A writer. */
+#define  GDBM_WRCREAT 2		/* A writer.  Create the db if needed. */
+#define  GDBM_NEWDB   3		/* A writer.  Always create a new db. */
+#define  GDBM_FAST    0x10	/* Write fast! => No fsyncs.  OBSOLETE. */
+#define  GDBM_SYNC    0x20	/* Sync operations to the disk. */
+#define  GDBM_NOLOCK  0x40	/* Don't do file locking operations. */
+
+/* Parameters to gdbm_store for simple insertion or replacement in the
+   case that the key is already in the database. */
+#define  GDBM_INSERT  0		/* Never replace old data with new. */
+#define  GDBM_REPLACE 1		/* Always replace old data with new. */
+
+/* Parameters to gdbm_setopt, specifing the type of operation to perform. */
+#define  GDBM_CACHESIZE 1       /* Set the cache size. */
+#define  GDBM_FASTMODE  2       /* Toggle fast mode.  OBSOLETE. */
+#define  GDBM_SYNCMODE	3	/* Turn on or off sync operations. */
+#define  GDBM_CENTFREE  4	/* Keep all free blocks in the header. */
+#define  GDBM_COALESCEBLKS 5	/* Attempt to coalesce free blocks. */
+
+/* The data and key structure.  This structure is defined for compatibility. */
+typedef struct {
+	char *dptr;
+	int   dsize;
+      } datum;
+
+
+/* The file information header. This is good enough for most applications. */
+typedef struct {int dummy[10];} *GDBM_FILE;
+
+/* Determine if the C(++) compiler requires complete function prototype  */
+#ifndef __P
+#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
+#define __P(x) x
+#else
+#define __P(x) ()
+#endif
+#endif
+
+/* External variable, the gdbm build release string. */
+extern char *gdbm_version;	
+
+
+/* GDBM C++ support */
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/* These are the routines! */
+
+extern GDBM_FILE gdbm_open __P((char *, int, int, int, void (*)()));
+extern void gdbm_close __P((GDBM_FILE));
+extern int gdbm_store __P((GDBM_FILE, datum, datum, int));
+extern datum gdbm_fetch __P((GDBM_FILE, datum));
+extern int gdbm_delete __P((GDBM_FILE, datum));
+extern datum gdbm_firstkey __P((GDBM_FILE));
+extern datum gdbm_nextkey __P((GDBM_FILE, datum));
+extern int gdbm_reorganize __P((GDBM_FILE));
+extern void gdbm_sync __P((GDBM_FILE));
+extern int gdbm_exists __P((GDBM_FILE, datum));
+extern int gdbm_setopt __P((GDBM_FILE, int, int *, int));
+extern int gdbm_fdesc __P((GDBM_FILE));
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#define	GDBM_NO_ERROR		0
+#define	GDBM_MALLOC_ERROR	1
+#define	GDBM_BLOCK_SIZE_ERROR	2
+#define	GDBM_FILE_OPEN_ERROR	3
+#define	GDBM_FILE_WRITE_ERROR	4
+#define	GDBM_FILE_SEEK_ERROR	5
+#define	GDBM_FILE_READ_ERROR	6
+#define	GDBM_BAD_MAGIC_NUMBER	7
+#define	GDBM_EMPTY_DATABASE	8
+#define	GDBM_CANT_BE_READER	9
+#define	GDBM_CANT_BE_WRITER	10
+#define	GDBM_READER_CANT_DELETE	11
+#define	GDBM_READER_CANT_STORE	12
+#define	GDBM_READER_CANT_REORGANIZE	13
+#define	GDBM_UNKNOWN_UPDATE	14
+#define	GDBM_ITEM_NOT_FOUND	15
+#define	GDBM_REORGANIZE_FAILED	16
+#define	GDBM_CANNOT_REPLACE	17
+#define	GDBM_ILLEGAL_DATA	18
+#define	GDBM_OPT_ALREADY_SET	19
+#define	GDBM_OPT_ILLEGAL	20
+typedef int gdbm_error;		/* For compatibilities sake. */
+extern gdbm_error gdbm_errno;
+
+/* extra prototypes */
+
+/* GDBM C++ support */
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+extern char *gdbm_strerror __P((gdbm_error));
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif
Index: /branches/rk-oran/shared/resources/Uninstall.txt
===================================================================
--- /branches/rk-oran/shared/resources/Uninstall.txt	(revision 18906)
+++ /branches/rk-oran/shared/resources/Uninstall.txt	(revision 18906)
@@ -0,0 +1,11 @@
+The uninstaller is still under development.
+
+To uninstall Greenstone, follow these instructions:
+
+	* Back up your collections from the "collect" subfolder of the
+	  folder you installed Greenstone to
+	* Back up any other files from you wish to keep from the
+	  folder you installed Greenstone to
+	* Remove the entire folder you installed Greenstone to
+	* Remove the Start Menu shortcuts
+		(right-click on Greenstone in Start Menu, click delete)
Index: /branches/rk-oran/shared/uninstaller/Uninstall.bat
===================================================================
--- /branches/rk-oran/shared/uninstaller/Uninstall.bat	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/Uninstall.bat	(revision 18906)
@@ -0,0 +1,30 @@
+@echo off
+CD /D "%~dp0"
+if exist .\bin\windows\search4j.exe .\bin\windows\search4j.exe -p .\packages\jre -l .\uninst.jar
+
+if exist .\gs2build\bin\windows\search4j.exe .\gs2build\bin\windows\search4j.exe -p .\packages\jre -l .\uninst.jar
+
+
+if exist uninst.flag (
+
+	rd /s /q .\packages\jre
+	rmdir packages
+	
+	if exist .\bin\windows\search4j.exe (
+		del .\bin\windows\search4j.exe
+		rmdir bin\windows
+	)
+	if exist .\bin\search4j.exe del .\bin\search4j.exe
+	rmdir bin
+		
+	del uninst.jar
+	del uninst.flag
+	del Uninstall.*
+	
+	if NOT EXIST *.* (
+		set GSDEL=%CD%
+		cd ..
+		rmdir %GSDEL%
+	)
+	
+)
Index: /branches/rk-oran/shared/uninstaller/Uninstall.sh
===================================================================
--- /branches/rk-oran/shared/uninstaller/Uninstall.sh	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/Uninstall.sh	(revision 18906)
@@ -0,0 +1,40 @@
+if [ -f "setup.bash" ]; then
+	#This is Greenstone 2
+	. ./setup.bash > /dev/null
+	SEARCH4J_EXECUTABLE=$GSDLHOME/bin/$GSDLOS/search4j
+
+elif [ -f "gs2build/setup.bash" ]; then
+	#This is Greenstone 3
+	. ./gs2build/setup.bash > /dev/null
+	SEARCH4J_EXECUTABLE=./bin/search4j
+
+else
+	echo "Couldn't find setup.bash. This copy of Greenstone appears to be corrupt."
+	echo "To manually uninstall, please delete the entire Greenstone home folder."
+	exit
+fi
+
+if [ $GSDLOS = linux ]; then
+	"$SEARCH4J_EXECUTABLE" -p ./packages/jre -l ./uninst.jar
+elif [ $GSDLOS = darwin ]; then
+	"$SEARCH4J_EXECUTABLE" -p /System/Library/Frameworks/JavaVM.framework/Home -l ./uninst.jar
+fi
+
+if [ -e "uninst.flag" ]; then
+
+	rm -rf packages/jre &> /dev/null
+	rmdir packages &> /dev/null
+	
+	rm -rf bin &> /dev/null
+		
+	rm uninst.jar &> /dev/null
+	rm uninst.flag &> /dev/null
+	rm Uninstall.* &> /dev/null
+	
+	CONTENTS=`ls`
+	if [ -z "$CONTENTS" ]; then
+		GSDEL=`pwd`
+		cd ..
+		rmdir $GSDEL &> /dev/null
+	fi
+fi
Index: /branches/rk-oran/shared/uninstaller/Uninstaller.java
===================================================================
--- /branches/rk-oran/shared/uninstaller/Uninstaller.java	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/Uninstaller.java	(revision 18906)
@@ -0,0 +1,607 @@
+import java.util.ResourceBundle;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JButton;
+import javax.swing.BoxLayout;
+import javax.swing.JTextArea;
+import javax.swing.JScrollPane;
+import javax.swing.border.EmptyBorder;
+import javax.swing.JOptionPane;
+import javax.swing.Box;
+import javax.swing.JDialog;
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+
+import java.io.File;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import java.util.ArrayList;
+
+import javax.swing.SwingUtilities;
+
+import java.util.Enumeration;
+import java.awt.Font;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.UIManager;
+
+
+
+public class Uninstaller {
+
+	public static int SCREEN_WIDTH = 600;
+	public static int SCREEN_HEIGHT = 450;
+
+	public static final ResourceBundle bundle = ResourceBundle.getBundle("resources.LanguagePack");
+
+	public static final File gs2InstallProps = new File("etc/installation.properties");
+	public static final File gs3InstallProps = new File("installation.properties");
+
+	boolean keepCollections = true;
+	//boolean keepModifiedFiles = false;
+	boolean ignoreReadOnlys = false;
+
+	JFrame frame;
+	JCheckBox keepCollectionsCheckbox;
+	//JCheckBox keepModifiedFilesCheckbox;
+
+	//panels
+	JPanel progressPanel;
+	JPanel introPanel;
+
+	//toolbars	
+	JPanel initialToolbar;
+	JPanel finishToolbar;
+
+
+	JScrollPane logPane;
+	FollowingJTextArea log;
+	JButton uninstallButton;
+	JButton finishButton;
+
+	boolean confirmationGiven = false;
+	Thread mainThread = null;
+	
+	public static void main( String[] args ) {
+		(new Uninstaller()).go();
+	}
+
+	public void go() {
+
+		//set font
+		String new_default_font_str = null;
+		if ( System.getProperty("os.name").equals("Linux") ) {
+			new_default_font_str = "Bitstream Cyberbit";
+		} else if ( System.getProperty("os.name").startsWith("Windows") ) {
+			new_default_font_str = "Arial Unicode MS";
+		}
+
+		if ( new_default_font_str != null ) {
+
+			FontUIResource default_font = new FontUIResource(new_default_font_str, Font.PLAIN, 12);
+			Enumeration keys = UIManager.getDefaults().keys();
+			while (keys.hasMoreElements()) {
+				Object key = keys.nextElement();
+				Object value = UIManager.get(key);
+				if (value instanceof FontUIResource) {
+					UIManager.put(key, default_font);
+				}
+			}
+
+		}
+
+
+		mainThread = Thread.currentThread();
+
+		frame =  new JFrame();
+		frame.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
+		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+		frame.setLocation(screenSize.width/2 - frame.getWidth()/2, screenSize.height/2 - frame.getHeight()/2);
+
+		//The panel to introduce and ask for options
+		introPanel = new JPanel(new BorderLayout());
+		JPanel innerPanel = new JPanel();
+		innerPanel.setLayout( new BoxLayout(innerPanel,BoxLayout.Y_AXIS) );
+		innerPanel.setBorder( new EmptyBorder(10, 10, 5, 10) );
+		introPanel.add( BorderLayout.WEST, innerPanel );
+
+		//The panel to be displayed while the uninstall is happening
+		progressPanel = new JPanel(new BorderLayout());
+		log = new FollowingJTextArea();
+		log.setEditable(false);
+		logPane = new JScrollPane(log);
+		logPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+		logPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+		progressPanel.add( BorderLayout.NORTH, new JLabel("Progress") );
+		progressPanel.add( BorderLayout.CENTER, logPane );
+
+		//initial toolbar
+		initialToolbar = new JPanel();
+		uninstallButton = new JButton(bundle.getString("uninstaller.uninstall"));
+		uninstallButton.addActionListener( new StartUninstallListener() );
+		JButton cancelButton = new JButton(bundle.getString("uninstaller.cancel"));
+		cancelButton.addActionListener( new CancelListener() );
+		initialToolbar.add(uninstallButton);
+		initialToolbar.add(cancelButton);
+
+		//finish toolbar
+		finishToolbar = new JPanel();
+		finishButton = new JButton(bundle.getString("uninstaller.finish"));
+		finishButton.addActionListener( new FinishListener() );
+		finishButton.setEnabled( false );
+		finishToolbar.add( finishButton );
+
+
+		String pwd = (new File(".")).getAbsolutePath();
+		if ( pwd.endsWith("/.") ) {
+			pwd = pwd.substring( 0, pwd.length()-2 );
+		}
+
+		JLabel l;		
+
+		l = new JLabel(bundle.getString("uninstaller.will.uninstall.from"));
+		innerPanel.add( l );
+		innerPanel.add( Box.createRigidArea(new Dimension(5,5)) );
+
+		l = new JLabel("  " + pwd);
+		l.setFont( new Font( "Monospaced", Font.BOLD, 14 ) );
+		innerPanel.add( l );
+		innerPanel.add( Box.createRigidArea(new Dimension(5,20)) );
+
+		l = new JLabel(bundle.getString("uninstaller.uninstall.options"));
+		innerPanel.add( l );
+
+		keepCollectionsCheckbox = new JCheckBox(bundle.getString("uninstaller.keep.collections"));
+		keepCollectionsCheckbox.setSelected(true);
+		innerPanel.add( keepCollectionsCheckbox );
+
+		//keepModifiedFilesCheckbox = new JCheckBox("Keep Modified Files");
+		//innerPanel.add( keepModifiedFilesCheckbox );
+
+		frame.setTitle( bundle.getString("uninstaller.greenstone.uninstaller") );
+		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+		//the initial screen
+		frame.getContentPane().add( BorderLayout.CENTER, introPanel );
+		frame.getContentPane().add( BorderLayout.SOUTH, initialToolbar );
+
+		frame.setVisible(true);
+		
+		boolean ready = precheck();
+		if ( !ready ) {
+			System.exit(0);
+		}
+
+		//block and wait for signal to do the uninstall
+		do {
+			try {
+				Thread.sleep( Long.MAX_VALUE );
+			} catch ( InterruptedException ie ) {
+			}
+		} while ( !confirmationGiven );
+
+		doUninstall();
+		finishButton.setEnabled( true );
+
+	}
+
+	class CancelListener implements ActionListener {
+		public void actionPerformed( ActionEvent e ) {
+			System.exit(0);
+		}
+	}
+
+	class FinishListener implements ActionListener {
+		public void actionPerformed( ActionEvent e ) {
+			System.exit(0);
+		}
+	}
+
+	class StartUninstallListener implements ActionListener {
+		public void actionPerformed( ActionEvent e ) {
+
+			//The dialog to ask "are you sure"
+			Object[] options = { bundle.getString("uninstaller.uninstall"), bundle.getString("uninstaller.cancel") };
+			int n = JOptionPane.showOptionDialog(
+				frame,
+				bundle.getString("uninstaller.are.you.sure"),
+				bundle.getString("uninstaller.confirmation"),
+			    JOptionPane.YES_NO_CANCEL_OPTION,
+			    JOptionPane.QUESTION_MESSAGE,
+			    null,
+			    options,
+			    options[0]
+			);
+			if ( n == 1 ) {
+				return;
+			}
+
+			keepCollections = keepCollectionsCheckbox.isSelected();
+			//keepModifiedFiles = keepModifiedFilesCheckbox.isSelected();
+
+			//confirm delete of collections
+			if ( !keepCollections ) {
+				options[0] = bundle.getString("uninstaller.continue");
+				options[1] = bundle.getString("uninstaller.cancel");
+				n = JOptionPane.showOptionDialog(
+					frame,
+					bundle.getString("uninstaller.are.you.sure.collections"),
+					bundle.getString("uninstaller.confirmation"),
+				    JOptionPane.YES_NO_CANCEL_OPTION,
+				    JOptionPane.WARNING_MESSAGE,
+				    null,
+				    options,
+				    options[0]
+				);
+				if ( n == 1 ) {
+					return;
+				}
+			}
+
+			
+			introPanel.setVisible( false );
+			frame.getContentPane().remove(introPanel);
+			frame.getContentPane().add( BorderLayout.CENTER, progressPanel );
+
+			initialToolbar.setVisible( false );
+			frame.getContentPane().remove( initialToolbar );
+			frame.getContentPane().add( BorderLayout.SOUTH, finishToolbar);
+
+			confirmationGiven = true;
+			mainThread.interrupt();
+		}
+	}
+
+	/**
+	 * Do some checks
+	 */
+	public boolean precheck() {
+
+		if ( !gs2InstallProps.exists() && !gs3InstallProps.exists() ) {
+			log( bundle.getString("uninstaller.error.couldnt.find.install.props") + "\n" );
+			JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.error.couldnt.find.install.props"), bundle.getString("uninstaller.error"), 0);
+			return false;
+		}
+		return true;
+				
+	}
+
+	public void log( String s ) {
+		SwingUtilities.invokeLater( new LogAppender( s ) );
+		//log.append( s );
+		
+	}
+
+	/**
+	 * Does the uninstall
+	 */
+	public void doUninstall() {
+
+		File startMenuPath = null;
+
+		//delete the start menu group if present
+
+		if ( gs2InstallProps.exists() ) {
+			String smp = null;
+			try {
+				smp = getPropertyValue( "installed.startmenu.path", gs2InstallProps );
+			} catch ( Exception e ) {
+				System.err.println( e.getMessage() );
+			}
+			if ( smp != null ) {
+				startMenuPath = new File( smp );
+			}
+		} else if ( gs3InstallProps.exists() ) {
+			String smp = null;
+			try {
+				smp = getPropertyValue( "installed.startmenu.path", gs3InstallProps );
+			} catch ( Exception e ) {
+				System.err.println( e.getMessage() );
+			}
+			if ( smp != null ) {
+				startMenuPath = new File( smp );
+			}
+		}
+
+		if ( startMenuPath == null ) {
+
+			log( bundle.getString("uninstaller.info.no.startmenu") + "\n" );
+
+		} else {
+			log( "StartMenu Path: " + startMenuPath.getAbsolutePath() + "\n" );
+
+			try {
+				recursiveDelete( startMenuPath, null );
+			} catch ( CancelledException ce ) {
+				log( bundle.getString("uninstaller.cancelled") + "\n" );
+				changeToFinishToolbar();
+				JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.cancelled"), bundle.getString("uninstaller.complete"), 1);
+				return;
+			}
+		}
+
+		//delete the files
+		try {
+			ArrayList exceptions = new ArrayList();
+
+			//never delete the things we are currently running
+			exceptions.add( new File("bin/search4j.exe") );
+			exceptions.add( new File("bin/search4j") );
+
+			exceptions.add( new File("bin/windows/search4j.exe") );
+			exceptions.add( new File("bin/linux/search4j") );
+			exceptions.add( new File("bin/darwin/search4j") );
+
+			exceptions.add( new File("packages/jre") );
+			exceptions.add( new File("uninst.jar") );
+			exceptions.add( new File("Uninstall.bat") );
+			exceptions.add( new File("Uninstall.sh") );
+
+			if ( keepCollections ) {
+				exceptions.add( new File("web/sites/localsite/collect") );
+				exceptions.add( new File("collect") );
+			}
+
+
+			File cd = null;
+			try {
+				cd = new File( new File(".").getCanonicalPath() );
+			} catch ( Exception e ) {
+				JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.failed.to.figure.cd"), bundle.getString("uninstaller.error") , 0);
+				System.exit(0);
+			}
+			
+			File[] ex = new File[exceptions.size()];
+			for ( int i=0; i<exceptions.size(); i++ ) {
+				ex[i] = (File)exceptions.get(i);
+			}
+			
+			recursiveDelete( cd , ex );
+		} catch ( CancelledException ce ) {
+			log( bundle.getString("uninstaller.cancelled") + "\n" );
+			JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.cancelled"), bundle.getString("uninstaller.complete"), 1);
+			changeToFinishToolbar();
+			return;
+		}
+
+		//create the flag file to indicate the uninstaller wants jre and uninst.jar to be deleted
+		try {
+			(new File("uninst.flag")).createNewFile();
+		} catch (Exception e) {
+			log( bundle.getString("uninstaller.couldnt-create-flagfile") + "\n" );
+		}
+
+		changeToFinishToolbar();
+		log( bundle.getString("uninstaller.finished") );
+		JOptionPane.showMessageDialog(frame, bundle.getString("uninstaller.finished"), bundle.getString("uninstaller.complete"), 1);
+	}
+
+	class LogAppender implements Runnable {
+		String s;
+
+		public LogAppender( String s ) {
+			this.s = s;
+		}
+
+		public void run() {
+			log.append( s );
+		}
+
+	}
+
+	public String getPropertyValue( String propertyName, File file ) throws Exception {
+
+		String regex = "^" + propertyName.replaceAll("\\.","\\\\.") + "[:=]\\s*(.*)$";
+		Pattern wantedLine = Pattern.compile( regex );
+		BufferedReader in = null;
+		try {
+			in = new BufferedReader(new FileReader( file ));
+		} catch ( Exception e ) {
+			throw new Exception( "Error - couldn't open the properties file " + file );
+		}
+
+		String line, value = null;
+
+		try {
+			boolean found = false;
+			while ( (line = in.readLine()) != null && !found ) {
+
+				Matcher matcher = wantedLine.matcher( line );
+				if ( matcher.matches() ) {
+					//found the property
+					//System.err.println( "found the property" );
+					value = matcher.group(1);
+					value = value.replaceAll( "#.*", "" ).trim();
+					return value;
+				}
+
+			}
+
+			//close the input stream
+			//System.err.println( "close the input stream" );
+			in.close();
+
+		} catch ( Exception e ) {
+			throw new Exception( "Error - couldn't read from the properties file" );
+		}
+		return null;
+
+	}
+
+	public void recursiveDelete( File f, File[] exceptions ) throws CancelledException {
+
+		//log.append( "Processing: " + f.getAbsolutePath() + "\n" );
+
+		// Make sure the file or directory exists
+		if (!f.exists()) {
+			log( Strings.replaceAll( bundle.getString("uninstaller.warning.nonexistent"), "{file}", f.getAbsolutePath() ) + "\n" );
+			return;
+		}
+
+		// if this is an exception, return
+		if ( exceptions != null ) {
+			for ( int i=0; i<exceptions.length; i++ ) {
+				//System.out.println( "Comparing '" + f.getAbsolutePath() + "' with '" + exceptions[i].getAbsolutePath() + "'" );
+				try {
+					if ( f.equals( exceptions[i] ) || f.getCanonicalPath().equals(exceptions[i].getCanonicalPath()) ) {
+						log( Strings.replaceAll( bundle.getString("uninstaller.info.skipping"), "{file}", f.getAbsolutePath() ) + "\n" );
+						return;
+					}
+				} catch ( Exception e ) {
+					System.err.println("ERROR: Failed to resolve a path");
+					return;
+				}
+			}
+		}
+
+		//check existance
+		if ( !f.exists() ) {
+			log( Strings.replaceAll( bundle.getString("uninstaller.error.nonexistent"), "{file}", f.getAbsolutePath() ) + "\n" );
+			return;
+		}
+
+		//if it is a directory, recurse
+		if (f.isDirectory()) {
+			File[] files = f.listFiles();
+			if ( files != null && files.length > 0) {
+				for ( int i=0; i<files.length; i++ ) {
+					try {
+						recursiveDelete( files[i], exceptions );
+					} catch ( CancelledException ce ) {
+						throw new CancelledException();
+					}
+				}
+			}
+		}
+
+		//if this is now an empty directory, or a file, delete it
+		boolean doDelete = true;
+		if ( f.isDirectory() ) {
+			File[] files = f.listFiles();
+			doDelete = ( files == null || files.length == 0 );
+		}
+		
+		if ( doDelete ) {
+
+			Object[] options = null;
+			int n = 0;
+			log( Strings.replaceAll( bundle.getString("uninstaller.deleting"), "{file}", f.getAbsolutePath() ) + "\n" );
+
+			if ( !f.delete() ) {
+				log( "*********\n" + Strings.replaceAll( bundle.getString("uninstaller.warning.couldnt.delete"), "{file}", f.getAbsolutePath() ) + "\n*********\n" );
+				return;
+			}
+		}
+
+	}
+
+	class CancelledException extends Exception {}
+
+	public void changeToFinishToolbar() {
+		initialToolbar.setVisible(false);
+		frame.getContentPane().remove(initialToolbar);
+		frame.getContentPane().add( BorderLayout.SOUTH, finishToolbar );
+		finishToolbar.setVisible(true);
+	}
+
+}
+
+class Strings {
+	static String replaceAll( String s, String nugget, String replacement ) {
+		StringBuffer string = new StringBuffer(s);
+		StringBuffer r = new StringBuffer();
+
+		int io = 0;
+		while ( (io=string.toString().indexOf(nugget)) != -1 ) {
+			r.append( string.toString().substring( 0, io ) );
+			r.append( replacement );
+			string.delete( 0, io + nugget.length() );
+		}
+		r.append( string.toString() );
+		return r.toString();
+	}
+}
+
+class FollowingJTextArea extends JTextArea {
+
+    private boolean follow = true;
+
+    public FollowingJTextArea() {
+        jInit();
+    }
+
+
+    private void jInit(){
+        final JPopupMenu popUp = getPopupMenu();
+        this.add(popUp);
+        this.addMouseListener(new MouseAdapter(){
+            public void mouseClicked(MouseEvent e) {
+                if (e.getButton() == e.BUTTON3) {
+                    popUp.show(FollowingJTextArea.this,e.getX(),e.getY());
+                }
+            }
+        });
+    }
+
+    public boolean isFollow() {
+        return follow;
+    }
+    public void setFollow(boolean follow) {
+        this.follow = follow;
+    }
+
+    private void scrollToEnd(){
+        setCaretPosition(getDocument().getLength());
+    }
+    private void toggleFollow(){
+        setFollow(!isFollow());
+    }
+
+    /**
+     * Appends the given text to the end of the document.
+     *
+     * @param str the text to insert
+     * @todo Implement this javax.swing.JTextArea method
+     */
+    public void append(String str) {
+        super.append(str);
+        if(follow)scrollToEnd();
+    }
+    private JPopupMenu getPopupMenu() {
+        JPopupMenu contextMenu = new JPopupMenu("Options");
+
+        JMenuItem toggleFollowMenu = new JMenuItem("Toggle Follow");
+        toggleFollowMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                toggleFollow();
+            }
+        });
+        contextMenu.add(toggleFollowMenu);
+
+        JMenuItem jumpToEndMenu = new JMenuItem("Jump To End");
+        jumpToEndMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setCaretPosition(getDocument().getLength());
+            }
+        });
+        contextMenu.add(toggleFollowMenu);
+
+        JMenuItem clearTextMenu = new JMenuItem("Clear Text");
+        clearTextMenu.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                setText("");
+            }
+        });
+        contextMenu.add(clearTextMenu);
+        return contextMenu;
+    }
+}
Index: /branches/rk-oran/shared/uninstaller/compile.bat
===================================================================
--- /branches/rk-oran/shared/uninstaller/compile.bat	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/compile.bat	(revision 18906)
@@ -0,0 +1,15 @@
+rm -rf resources
+mkdir resources
+cp ../language-strings/*.properties resources
+
+javac Uninstaller.java
+jar -cmf manifest.mf gsdl-template/uninst.jar *.class resources
+
+
+cp Uninstall.bat gsdl-template
+cp Uninstall.sh gsdl-template
+rm *.class
+
+rm -rf gsdl startmenu
+cp -r gsdl-template gsdl
+cp -r startmenu-template startmenu
Index: /branches/rk-oran/shared/uninstaller/compile.sh
===================================================================
--- /branches/rk-oran/shared/uninstaller/compile.sh	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/compile.sh	(revision 18906)
@@ -0,0 +1,23 @@
+rk_home=$1
+if [ "$rk_home" = "" ]; then
+	echo "usage: ./compile.sh <rk_home>"
+	exit
+fi
+
+#setup language string bundle
+rm -rf resources
+mkdir resources
+cp $rk_home/language-strings/*.properties resources
+
+#java compile
+javac Uninstaller.java
+jar -cmf manifest.mf gsdl-template/uninst.jar *.class resources
+
+#setup a fake greenstone installation
+cp Uninstall.bat gsdl-template
+cp Uninstall.sh gsdl-template
+rm *.class
+
+rm -rf gsdl startmenu
+cp -r gsdl-template gsdl
+cp -r startmenu-template startmenu
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/build.properties
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/build.properties	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/build.properties	(revision 18906)
@@ -0,0 +1,1 @@
+lines
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/build.xml
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/build.xml	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/build.xml	(revision 18906)
@@ -0,0 +1,1 @@
+lines
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/collect/demo/demo.cfg
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/collect/demo/demo.cfg	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/collect/demo/demo.cfg	(revision 18906)
@@ -0,0 +1,1 @@
+demo
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/etc/main.cfg
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/etc/main.cfg	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/etc/main.cfg	(revision 18906)
@@ -0,0 +1,1 @@
+test
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/installation.properties
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/installation.properties	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/installation.properties	(revision 18906)
@@ -0,0 +1,1 @@
+startmenu.path:/home/oranfry/release-kits/wirk3/uninstaller/startmenu/Greenstone 2.81
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/setup.bash
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/setup.bash	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/setup.bash	(revision 18906)
@@ -0,0 +1,240 @@
+# if this file is executed, /bin/sh is used, as we don't start with #!
+# this should work under ash, bash, zsh, ksh, sh style shells.
+gsdllang=en
+# encoding inputs and outputs
+gsdltoenc=""
+gsdlfromenc=""
+
+# see if the shell has any language environment variables set
+# see locale(7) manpage for this ordering.
+if test ! -z "$LC_ALL" ; then
+  gsdllang="$LC_ALL"
+elif test ! -z "$LANG"; then
+  gsdllang="$LANG"
+fi
+
+
+# note... all our output strings have the charset hard-coded, but
+# people may be using a different encoding in their terminal. LANG
+# strings look like "en_NZ.UTF-8".
+
+# Determine the requested output encoding
+case $gsdllang in
+  *.*)
+    gsdltoenc=`echo $gsdllang | sed 's/.*\.//'`
+    ;;
+esac
+
+# Our french and spanish strings are currently in iso-8859-1 encoding.
+case $gsdllang in
+  fr*|FR*)
+    gsdllang=fr
+    gsdlfromenc="iso-8859-1"
+  ;;
+  es*|ES*)
+    gsdllang=es
+    gsdlfromenc="iso-8859-1"
+  ;;
+  ru*|RU*)
+    gsdllang=ru
+    gsdlfromenc="koi8r"
+  ;;
+  *) # default
+    gsdllang=en
+    gsdlfromenc="iso-8859-1"
+  ;;
+esac  
+
+# "iconv" is the program for converting text between encodings.
+gsdliconv=`which iconv 2>/dev/null`
+if test $? -ne 0 || test ! -x "$gsdliconv" || test -z "$gsdlfromenc" || test -z "$gsdltoenc"; then
+# we can't convert encodings from some reason
+  gsdliconv="cat"
+else
+# add the encodings
+  gsdliconv="$gsdliconv -f $gsdlfromenc -t $gsdltoenc"
+fi
+
+# make sure we are sourced, and not run
+
+if test "$0" != "`echo $0 | sed s/setup\.bash//`" ; then
+# if $0 contains "setup.bash" we've been run... $0 is shellname if sourced.
+# One exception is zsh has an option to set it temporarily to the script name
+  if test -z "$ZSH_NAME" ; then
+  # we aren't using zsh
+  gsdl_not_sourced=true
+  fi
+fi
+
+if test -n "$gsdl_not_sourced" ; then
+  case "$gsdllang" in
+ "es")
+eval $gsdliconv <<EOF
+      Error: Asegï¿œrese de compilar este guiï¿œn, no de ejecutarlo. P. ej.:
+         $ source setup.bash
+      o
+         $ . ./setup.bash
+      no
+         $ ./setup.bash
+EOF
+  ;;
+  "fr")
+eval $gsdliconv <<EOF
+      Erreur: Assurez-vous de "sourcer" le script, plutï¿œt que de l'exï¿œcuter. Ex:
+         $ source setup.bash
+      ou
+         $ . ./setup.bash
+      pas
+         $ ./setup.bash
+EOF
+  ;;
+  "ru")
+eval $gsdliconv <<EOF
+      ï¿œï¿œï¿œï¿œï¿œï¿œ: ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œ. ï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œ.
+      ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ:
+         $ source setup.bash
+      ï¿œï¿œï¿œ
+         $ . ./setup.bash
+      ï¿œï¿œï¿œ
+         $ ./setup.bash
+EOF
+  ;;
+  *)
+eval $gsdliconv <<EOF
+	Error: Make sure you source this script, not execute it. Eg:
+		$ source setup.bash
+	or
+		$ . ./setup.bash
+	not
+		$ ./setup.bash
+EOF
+  ;;
+  esac
+elif test -n "$GSDLHOME" ; then
+  case "$gsdllang" in
+  "es")
+    echo 'ï¿œSu ambiente ya estï¿œ listo para Greenstone!' | eval $gsdliconv
+  ;;
+  "fr")
+    echo 'Votre environnement est dï¿œjï¿œ prï¿œparï¿œ pour Greenstone!' | eval $gsdliconv
+ ;;
+  "ru")
+    echo 'ï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œ Greenstone!' | eval $gsdliconv
+  ;;
+  *)
+    echo 'Your environment is already set up for Greenstone!'
+  ;;
+  esac
+elif test ! -f setup.bash ; then
+  case "$gsdllang" in
+    "es")
+eval $gsdliconv <<EOF
+Usted debe compilar el guiï¿œn desde el interior del directorio de inicio
+de Greenstone.
+EOF
+  ;;
+  "fr")
+echo 'Vous devez trouver la source du script dans le rï¿œpertoire de base de Greenstone' | eval $gsdliconv
+  ;;
+  "ru")
+eval $gsdliconv <<EOF
+ï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ Greenstone
+EOF
+  ;;
+  *)
+    echo 'You must source the script from within the Greenstone home directory'
+  ;;
+  esac
+else
+  GSDLHOME=`pwd`
+  export GSDLHOME
+  GSDLOS=`uname -s | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  # check for running bash under cygwin
+  if test "`echo $GSDLOS | sed 's/cygwin//'`" != "$GSDLOS" ;
+  then
+    GSDLOS=windows
+  fi
+  export GSDLOS
+
+  PATH=$PATH:$GSDLHOME/bin/script:$GSDLHOME/bin/$GSDLOS
+  export PATH
+
+  
+  
+  # Override Imagemagick and Ghostscript paths to the bundled applications shipped with greenstone if they exists otherwise use default environment variables.
+
+if test -d $GSDLHOME/bin/$GSDLOS/imagemagick ; then
+	PATH="$GSDLHOME/bin/$GSDLOS/imagemagick/bin:$PATH"
+	export PATH
+  
+	MAGICK_HOME="$GSDLHOME/bin/$GSDLOS/imagemagick"
+	export MAGICK_HOME
+  
+		if test "$GSDLOS" = "linux" ; then
+			LD_LIBRARY_PATH="$GSDLHOME/bin/$GSDLOS/imagemagick/lib:$LD_LIBRARY_PATH"
+			export LD_LIBRARY_PATH
+		
+		elif test "$GSDLOS" = "darwin" ; then
+			DYLD_LIBRARY_PATH="$GSDLHOME/bin/$GSDLOS/imagemagick/lib:$DYLD_LIBRARY_PATH"
+			export DYLD_LIBRARY_PATH
+		fi
+fi
+
+
+  # Note: Ghostscript is only bundled with Greenstone on Mac and Windows, not on Linux. The code below should be used only for the Darwin platform
+  # for Windows please see setup.bat
+if test -d $GSDLHOME/bin/$GSDLOS/ghostscript ; then
+	PATH="$GSDLHOME/bin/$GSDLOS/ghostscript/bin":"$PATH"
+	export PATH
+  
+	GS_LIB="$GSDLHOME/bin/$GSDLOS/ghostscript/share/ghostscript/8.63/lib"
+	export GS_LIB
+
+	GS_FONTPATH="$GSDLHOME/bin/$GSDLOS/ghostscript/share/ghostscript/8.63/Resource/Font"
+	export GS_FONTPATH
+fi
+  
+  
+  
+  MANPATH=$MANPATH:$GSDLHOME/packages/mg/man
+  export MANPATH
+  case "$gsdllang" in
+    "es")
+      echo 'Su ambiente ha sido configurado para correr los programas Greenstone.' | eval $gsdliconv
+    ;;
+    "fr")
+      echo 'Votre environnement a ï¿œtï¿œ configuï¿œre avec succï¿œs pour exï¿œcuter Greenstone' | eval $gsdliconv
+    ;;
+    "ru")
+eval $gsdliconv <<EOF
+ï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ, ï¿œï¿œï¿œï¿œï¿œ ï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œï¿œ Greenstone
+EOF
+    ;;
+    *)
+      echo 'Your environment has successfully been set up to run Greenstone'
+    ;;
+  esac
+fi
+unset gsdl_not_sourced
+unset gsdliconv
+unset gsdlfromenc
+unset gsdltoenc
+
+if test -e ext ; then
+  for gsdl_ext in ext/* ; do
+    cd $gsdl_ext > /dev/null
+    if test -e setup.bash ; then 
+      . ./setup.bash 
+    fi 
+    cd ../..  
+  done
+fi
+
+if test -e local ; then
+  PATH=$GSDLHOME/local/bin:$PATH
+  export PATH
+  LD_LIBRARY_PATH=$GSDLHOME/local/lib:$LD_LIBRARY_PATH
+  export LD_LIBRARY_PATH
+fi
+
+
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/test2.txt
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/test2.txt	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/test2.txt	(revision 18906)
@@ -0,0 +1,1 @@
+test
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/web/sites/localsite/collect/demo/index.db
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/web/sites/localsite/collect/demo/index.db	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/web/sites/localsite/collect/demo/index.db	(revision 18906)
@@ -0,0 +1,1 @@
+test
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/web/sites/localsite/test.txt
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/web/sites/localsite/test.txt	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/web/sites/localsite/test.txt	(revision 18906)
@@ -0,0 +1,1 @@
+test
Index: /branches/rk-oran/shared/uninstaller/gsdl-template/web/test.txt
===================================================================
--- /branches/rk-oran/shared/uninstaller/gsdl-template/web/test.txt	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/gsdl-template/web/test.txt	(revision 18906)
@@ -0,0 +1,1 @@
+test
Index: /branches/rk-oran/shared/uninstaller/manifest.mf
===================================================================
--- /branches/rk-oran/shared/uninstaller/manifest.mf	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/manifest.mf	(revision 18906)
@@ -0,0 +1,1 @@
+Main-Class: Uninstaller
Index: /branches/rk-oran/shared/uninstaller/startmenu-template/Adobe Photoshop/Photoshop.lnk
===================================================================
--- /branches/rk-oran/shared/uninstaller/startmenu-template/Adobe Photoshop/Photoshop.lnk	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/startmenu-template/Adobe Photoshop/Photoshop.lnk	(revision 18906)
@@ -0,0 +1,1 @@
+ps
Index: /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/GEMS.lnk
===================================================================
--- /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/GEMS.lnk	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/GEMS.lnk	(revision 18906)
@@ -0,0 +1,1 @@
+test
Index: /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/GLI.lnk
===================================================================
--- /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/GLI.lnk	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/GLI.lnk	(revision 18906)
@@ -0,0 +1,1 @@
+GLI
Index: /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/Server.lnk
===================================================================
--- /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/Server.lnk	(revision 18906)
+++ /branches/rk-oran/shared/uninstaller/startmenu-template/Greenstone 2.81/Server.lnk	(revision 18906)
@@ -0,0 +1,1 @@
+Server
Index: /branches/rk-oran/shared/windows/Greenstone Wiki.url
===================================================================
--- /branches/rk-oran/shared/windows/Greenstone Wiki.url	(revision 18906)
+++ /branches/rk-oran/shared/windows/Greenstone Wiki.url	(revision 18906)
@@ -0,0 +1,5 @@
+[InternetShortcut]
+URL=http://wiki.greenstone.org/
+IDList=
+[{000214A0-0000-0000-C000-000000000046}]
+Prop3=19,2
Index: /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/JNLP-1.5.dtd
===================================================================
--- /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/JNLP-1.5.dtd	(revision 18906)
+++ /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/JNLP-1.5.dtd	(revision 18906)
@@ -0,0 +1,472 @@
+<!--
+<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Discriptor 1.5//EN" "http://java.sun.com/dtd/JNLP-1.5.dtd">
+-->
+<!ELEMENT jnlp (information+, security?, resources*, 
+ (application-desc | applet-desc | component-desc |
+ installer-desc))>
+<!--
+The spec attribute of the jnlp element specifies what
+versions of the JNLP specification a particular JNLP file
+works with. The default value is "1.0+".
+-->
+<!ATTLIST jnlp spec CDATA #IMPLIED>
+<!--
+The version attribute of the jnlp element specifies the
+version of the application being launched, as well as the
+version of the JNLP file itself.
+-->
+<!ATTLIST jnlp version CDATA #IMPLIED>
+<!--
+The codebase attribute of the jnlp element specifies the
+codebase for the application. This is also used as the base
+URL for all relative URLs in href attributes.
+-->
+<!ATTLIST jnlp codebase CDATA #IMPLIED>
+<!--
+The href attribute of the jnlp element contains the location
+of the JNLP file as a URL.
+-->
+<!ATTLIST jnlp href CDATA #IMPLIED>
+<!--
+The information element contains various descriptive
+information about the application being launched.
+-->
+<!ELEMENT information (title?, vendor?, homepage?,
+description*, icon*,offline-allowed?, shortcut?,
+association?, related-content*)>
+<!--
+The os attribute of the information element specifies for
+which operating system this element should be considered.
+-->
+<!ATTLIST information os CDATA #IMPLIED>
+<!--
+The arch attribute of the information element specifies for
+what architecure this element should be considered.
+-->
+<!ATTLIST information arch CDATA #IMPLIED>
+<!--
+The platform attribute of the information element specifies
+for what platform this element should be considered.
+-->
+<!ATTLIST information platform CDATA #IMPLIED>
+<!--
+The locale attribute of the information element specifies the
+locale for which this information element should be used.
+-->
+<!ATTLIST information locale CDATA #IMPLIED>
+<!--
+The title element contains the name of the application.
+-->
+<!ELEMENT title (#PCDATA)>
+<!--
+The vendor element contains the name of the vendor.
+-->
+<!ELEMENT vendor (#PCDATA)>
+<!--
+The homepage element contains a href to the homepage for the
+application.
+-->
+<!ELEMENT homepage EMPTY>
+<!--
+The href attribute of the homepage element specifies the URL
+for the homepage.
+-->
+<!ATTLIST homepage href CDATA #REQUIRED>
+<!--
+The description element contains a description of the
+application.
+-->
+<!ELEMENT description (#PCDATA)>
+<!--
+The kind attribute for the description element indicates the
+use of a description element. The values are: i) one-line,
+for a one-line description, ii) short, for a one paragraph
+description, and iii) tooltip, for a tool-tip description.
+Longer descriptions should be put on a separate web page and
+referred to using the homepage element.
+-->
+<!ATTLIST description kind (one-line | short | tooltip)
+#IMPLIED>
+<!--
+The icon element describes an image for an application.
+-->
+<!ELEMENT icon EMPTY>
+<!--
+The href attribute of an icon contains a URL to a location on
+the web containing an image file for an icon.
+-->
+<!ATTLIST icon href CDATA #REQUIRED>
+<!--
+The version attribute of an icon contains a string describing
+the version of the image that is requested.
+-->
+<!ATTLIST icon version CDATA #IMPLIED>
+<!--
+The width attribute of the icon element describes the width
+of the icon in pixels.
+-->
+<!ATTLIST icon width CDATA #IMPLIED>
+<!--
+The height attribute of the icon element describes the height
+of the icon in pixels.
+-->
+<!ATTLIST icon height CDATA #IMPLIED>
+<!--
+The kind attribute of the icon element describes the use of
+the icon.
+-->
+<!ATTLIST icon kind CDATA #IMPLIED>
+<!--
+The depth attribute of the icon element describes the color
+depth of the image in bits-per-pixel. Common values will be
+8, 16, or 24.
+-->
+<!ATTLIST icon depth CDATA #IMPLIED>
+<!--
+The size attribute of an icon element indicates the size of
+an icon file in bytes.
+-->
+<!ATTLIST icon size CDATA #IMPLIED>
+<!--
+The offline-allowed element indicates if the application can
+be launched offline. Default value (i.e., if the element is
+not specified) is online.
+-->
+<!ELEMENT offline-allowed EMPTY>
+<!--
+The security element describes the security requirements of
+the application.
+-->
+<!ELEMENT security (all-permissions?,
+j2ee-application-client-permissions?)>
+<!--
+The all-permissions element indicates that the application
+needs full access the the local system and network.
+-->
+<!ELEMENT all-permissions EMPTY>
+<!--
+The j2ee-application-client-permissions element indicates
+that the application needs the set of permissions defined for
+a J2EE application client.
+-->
+<!ELEMENT j2ee-application-client-permissions EMPTY>
+<!--
+The resources element contains an ordered set of resources
+that constitutes an application.
+-->
+<!ELEMENT resources (j2se | jar | nativelib | extension |
+property | package)*>
+<!--
+The os attribute of the resources element specifies for which
+operating system this element should be considered.
+-->
+<!ATTLIST resources os CDATA #IMPLIED>
+<!--
+The arch attribute of the resources element specifies for
+what platform this element should be considered.
+-->
+<!ATTLIST resources arch CDATA #IMPLIED>
+<!--
+The locale attribute of the resources element specifies for
+which locales this element should be considered.
+-->
+<!ATTLIST resources locale CDATA #IMPLIED>
+<!--
+The j2se element describes a supported JRE version and an
+optional resources element to be used by the particular JRE.
+-->
+<!ELEMENT j2se (resources*)>
+<!--
+The version attribute of the j2se element describes the
+versions of the JRE that this application is supported on.
+-->
+<!ATTLIST j2se version CDATA #REQUIRED>
+<!--
+The href attribute of the j2se element specifies the location
+where the JRE should be downloaded from.
+-->
+<!ATTLIST j2se href CDATA #IMPLIED>
+<!--
+The initial-heap-size attribute of the j2se element specifies
+the initial size of the object heap.
+-->
+<!ATTLIST j2se initial-heap-size CDATA #IMPLIED>
+<!--
+The max-heap-size attribute of the j2se element specifies the
+preferred maximum size of the object heap.
+-->
+<!ATTLIST j2se max-heap-size CDATA #IMPLIED>
+<!--
+The java-vm-args attribute of the j2se element specifies a
+preferred set of virtual machine arguments to use when
+launching java.
+-->
+<!ATTLIST j2se java-vm-args CDATA #IMPLIED>
+<!--
+The jar element describes a jar file resource.
+-->
+<!ELEMENT jar EMPTY>
+<!--
+The href attribute of the jar element contains the location
+of a jar file as a URL.
+-->
+<!ATTLIST jar href CDATA #REQUIRED>
+<!--
+The version attribute of a jar element describes the version
+of a particular JAR file that is requested.
+-->
+<!ATTLIST jar version CDATA #IMPLIED>
+<!--
+The main attribute of a jar element indicates whether this
+element contains the main class.
+-->
+<!ATTLIST jar main (true|false) "false">
+<!--
+The download attribute of a jar element indicates if this
+element must be downloaded before an application is launched
+(eager), or not (lazy).
+-->
+<!ATTLIST jar download (eager | lazy) "eager">
+<!--
+The size attribute of a jar element indicates the size of a
+JAR file in bytes.
+-->
+<!ATTLIST jar size CDATA #IMPLIED>
+<!--
+The part attribute of a jar element describes the name of the
+group it belongs too.
+-->
+<!ATTLIST jar part CDATA #IMPLIED>
+<!--
+The nativelib element describes a resource containing native
+files.
+-->
+<!ELEMENT nativelib EMPTY>
+<!--
+The href attribute of a nativelib element contains the
+location of a nativelib file as a URL.
+-->
+<!ATTLIST nativelib href CDATA #REQUIRED>
+<!--
+The version attribute of a nativelib element describes the
+version of a particular nativelib file that is requested.
+-->
+<!ATTLIST nativelib version CDATA #IMPLIED>
+<!--
+The download attribute of a nativelib element indicates if
+this element must be downloaded before an application is
+launched (eager), or not (lazy).
+-->
+<!ATTLIST nativelib download (eager | lazy) "eager">
+<!--
+The size attribute of a nativelib element indicates the size
+of a nativelib file in bytes.
+-->
+<!ATTLIST nativelib size CDATA #IMPLIED>
+<!--
+The part attribute of a nativelib element describes the name
+of the part it belongs to.
+-->
+<!ATTLIST nativelib part CDATA #IMPLIED>
+<!--
+The extension element describes an extension that is required
+in order to run the application.
+-->
+<!ELEMENT extension (ext-download*)>
+<!--
+The version attribute of an extension element specifies the
+version of the extension requested.
+-->
+<!ATTLIST extension version CDATA #IMPLIED>
+<!--
+The name attribute of an extension element specifies the name
+of the extension.
+-->
+<!ATTLIST extension name CDATA #IMPLIED>
+<!--
+The href attribute of an extension element specifies the
+location of the extension.
+-->
+<!ATTLIST extension href CDATA #REQUIRED>
+<!--
+The ext-download element defines how parts of the extension
+are downloaded.
+-->
+<!ELEMENT ext-download EMPTY>
+<!--
+The ext-part attribute of an ext-download element describes
+the name of a part in the extension.
+-->
+<!ATTLIST ext-download ext-part CDATA #REQUIRED>
+<!--
+The download attribute of an ext-download element describes
+if the resource may be lazily downloaded.
+-->
+<!ATTLIST ext-download download (lazy|eager) "eager">
+<!--
+The part attribute of an ext-download element describes the
+name of the part it belongs to in the current JNLP file.
+-->
+<!ATTLIST ext-download part CDATA #IMPLIED>
+<!--
+The property element describes a name/value pair that is
+available to the launched application as a system property.
+-->
+<!ELEMENT property EMPTY>
+<!--
+The name attribute of the property element describes the name
+of a system property.
+-->
+<!ATTLIST property name CDATA #REQUIRED>
+<!--
+The value element describes the value of a system property.
+-->
+<!ATTLIST property value CDATA #REQUIRED>
+<!--
+The package element defines a relationship between a Java
+package or class name and a part.
+-->
+<!ELEMENT package EMPTY>
+<!--
+The name attribute of the package element describes the name
+of a package or class.
+-->
+<!ATTLIST package name CDATA #REQUIRED>
+<!--
+The part attribute of the package element describes the part
+that contains the specified package or class.
+-->
+<!ATTLIST package part CDATA #REQUIRED>
+<!--
+The recursive attribute of the package element indicates if
+all sub-packages of this particular package is also included.
+-->
+<!ATTLIST package recursive (true|false) "false">
+<!--
+The application-desc element describes how to launch a
+Java-based application. It contains information about the
+main class and arguments.
+-->
+<!ELEMENT application-desc (argument*)>
+<!--
+The main-class attribute of the application-desc element
+describes the main class of an application.
+-->
+<!ATTLIST application-desc main-class CDATA #IMPLIED>
+<!--
+The argument elements describe the ordered set of arguments
+to an application. These arguments will be passed into the
+main method of the application's main class.
+-->
+<!ELEMENT argument (#PCDATA)>
+<!--
+The applet-desc element describes how to launch a Java
+Technology-based Applet. It contains information about, e.g.,
+the main class, size, and parameters.
+-->
+<!ELEMENT applet-desc (param*)>
+<!--
+The documentbase attribute of the applet-desc element
+describes the documentbase for the applet as a URL.
+-->
+<!ATTLIST applet-desc documentbase CDATA #IMPLIED>
+<!--
+The main-class attribute of the applet-desc element describes
+the name of the main Applet class.
+-->
+<!ATTLIST applet-desc main-class CDATA #REQUIRED>
+<!--
+The name attribute of the applet-desc element describes the
+name of the Applet.
+-->
+<!ATTLIST applet-desc name CDATA #REQUIRED>
+<!--
+The width attribute of the applet-desc element describes the
+width of the Applet in pixels.
+-->
+<!ATTLIST applet-desc width CDATA #REQUIRED>
+<!--
+The height attribute of the applet-desc element describes the
+height of the Applet in pixels.
+-->
+<!ATTLIST applet-desc height CDATA #REQUIRED>
+<!--
+The param element describes a parameter to an Applet.
+-->
+<!ELEMENT param EMPTY>
+<!--
+The name attribute of the param element describes the name of
+a parameter.
+-->
+<!ATTLIST param name CDATA #REQUIRED>
+<!--
+The value attribute of the param element describes the value
+of a parameter.
+-->
+<!ATTLIST param value CDATA #REQUIRED>
+<!--
+The component-desc element specifies a component extension.
+-->
+<!ELEMENT component-desc EMPTY>
+<!--
+The installer-desc element specifies an installer extension.
+-->
+<!ELEMENT installer-desc EMPTY>
+<!--
+The main-class attribute of the installer-desc element
+describes the main class for the installer/uninstaller.
+-->
+<!ATTLIST installer-desc main-class CDATA #IMPLIED>
+<!--
+The shortcut element describes an application's preferences
+for desktop integration.
+-->
+<!ELEMENT shortcut (desktop?, menu?)>
+<!--
+The online attribute of the shortcut element describes an
+application's preferences launching shortcuts online or
+offline
+-->
+<!ATTLIST shortcut online (true | false) "true">
+<!--
+The desktop element indicates that a shortcut on the desktop
+is desired.
+-->
+<!ELEMENT desktop EMPTY>
+<!--
+The menu element indicates that a shortcut in a menu is
+desired.
+-->
+<!ELEMENT menu EMPTY>
+<!--
+The submenu attribute of the menu element indicates where in
+the menu a shortcut is desired.
+-->
+<!ATTLIST menu submenu CDATA #IMPLIED>
+<!--
+The association element describes an application's
+preferences for desktop associations.
+-->
+<!ELEMENT association EMPTY>
+<!--
+The extensions attribute of the association element indicates
+a list of extensions to associate.
+-->
+<!ATTLIST association extensions CDATA #REQUIRED>
+<!--
+The mime-type attribute of the association element indicates
+a mime-types to associate.
+-->
+<!ATTLIST association mime-type CDATA #REQUIRED>
+<!--
+The related-content element described additional content that
+may be integrated with the application.
+-->
+<!ELEMENT related-content (title?, description*, icon*)>
+<!--
+The href attribute of the related-content element contains a
+URL to a location on the web containing additional related
+content for the application.
+-->
+<!ATTLIST related-content href CDATA #REQUIRED>
+ 
Index: /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/JNLP-6.0.dtd
===================================================================
--- /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/JNLP-6.0.dtd	(revision 18906)
+++ /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/JNLP-6.0.dtd	(revision 18906)
@@ -0,0 +1,690 @@
+<!--
+<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Discriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">
+-->
+<!-- 
+The root element for the JNLP file.  
+-->
+
+<!ELEMENT jnlp (information+, security?, update?, resources*, 
+ (application-desc | applet-desc | component-desc | installer-desc))>
+
+<!--
+The spec attribute of the jnlp element specifies what versions of the JNLP 
+specification a particular JNLP file works with. The default value is "1.0+".
+-->
+
+<!ATTLIST jnlp spec CDATA #IMPLIED>
+
+<!--
+The version attribute of the jnlp element specifies the version of the 
+application being launched, as well as the version of the JNLP file itself.
+-->
+
+<!ATTLIST jnlp version CDATA #IMPLIED>
+
+<!--
+The codebase attribute of the jnlp element specifies the codebase for the 
+application. This is also used as the base URL for all relative URLs in 
+href attributes.
+-->
+
+<!ATTLIST jnlp codebase CDATA #IMPLIED>
+
+<!--
+The href attribute of the jnlp element contains the location of the JNLP 
+file as a URL.
+-->
+
+<!ATTLIST jnlp href CDATA #IMPLIED>
+
+<!--
+The information element contains various descriptive information about the 
+application being launched.
+-->
+
+<!ELEMENT information (title, vendor, homepage?, description*, icon*,
+ offline-allowed?, shortcut?, association?, related-content*)>
+
+<!--
+The os attribute of the information element specifies for which operating 
+system this element should be considered.
+-->
+
+<!ATTLIST information os CDATA #IMPLIED>
+
+<!--
+The arch attribute of the information element specifies for what architecure 
+this element should be considered.
+-->
+
+<!ATTLIST information arch CDATA #IMPLIED>
+
+<!--
+The platform attribute of the information element specifies for what 
+platform this element should be considered.
+-->
+
+<!ATTLIST information platform CDATA #IMPLIED>
+
+<!--
+The locale attribute of the information element specifies the locale for 
+which this information element should be used.
+-->
+
+<!ATTLIST information locale CDATA #IMPLIED>
+
+<!--
+The title element contains the name of the application.
+-->
+
+<!ELEMENT title (#PCDATA)>
+
+<!--
+The vendor element contains the name of the vendor.
+-->
+
+<!ELEMENT vendor (#PCDATA)>
+
+<!--
+The homepage element contains a href to the homepage for the application.
+-->
+
+<!ELEMENT homepage EMPTY>
+
+<!--
+The href attribute of the homepage element specifies the URL for the homepage.
+-->
+
+<!ATTLIST homepage href CDATA #REQUIRED>
+
+<!--
+The description element contains a description of the application.
+-->
+
+<!ELEMENT description (#PCDATA)>
+
+<!--
+The kind attribute for the description element indicates the use of a 
+description element. The values are: i) one-line, for a one-line 
+description, ii) short, for a one paragraph description, and iii) tooltip, 
+for a tool-tip description. Longer descriptions should be put on a separate 
+web page and referred to using the homepage element.
+-->
+
+<!ATTLIST description kind (one-line | short | tooltip) #IMPLIED>
+
+<!--
+The icon element describes an image for an application.
+-->
+
+<!ELEMENT icon EMPTY>
+
+<!--
+The href attribute of an icon contains a URL to a location on the web 
+containing an image file for an icon.
+-->
+
+<!ATTLIST icon href CDATA #REQUIRED>
+
+<!--
+The version attribute of an icon contains a string describing the version of 
+the image that is requested.
+-->
+
+<!ATTLIST icon version CDATA #IMPLIED>
+
+<!--
+The width attribute of the icon element describes the width of the icon 
+in pixels.
+-->
+
+<!ATTLIST icon width CDATA #IMPLIED>
+
+<!--
+The height attribute of the icon element describes the height of the icon 
+in pixels.
+-->
+
+<!ATTLIST icon height CDATA #IMPLIED>
+
+<!--
+The kind attribute of the icon element describes the use of the icon.
+-->
+
+<!ATTLIST icon kind CDATA #IMPLIED>
+
+<!--
+The depth attribute of the icon element describes the color depth of the image 
+in bits-per-pixel. Common values will be 8, 16, or 24.
+-->
+
+<!ATTLIST icon depth CDATA #IMPLIED>
+
+<!--
+The size attribute of an icon element indicates the size of an icon file 
+in bytes.
+-->
+
+<!ATTLIST icon size CDATA #IMPLIED>
+
+<!--
+The offline-allowed element indicates if the application can be launched 
+offline. Default value (i.e., if the element is not specified) is online.
+-->
+
+<!ELEMENT offline-allowed EMPTY>
+
+<!--
+The security element describes the security requirements of the application.
+-->
+
+<!ELEMENT security (all-permissions?, j2ee-application-client-permissions?)>
+
+<!--
+The all-permissions element indicates that the application needs full access 
+the the local system and network.
+-->
+
+<!ELEMENT all-permissions EMPTY>
+
+<!--
+The j2ee-application-client-permissions element indicates that the application 
+needs the set of permissions defined for a J2EE application client.
+-->
+
+<!ELEMENT j2ee-application-client-permissions EMPTY>
+
+<!--
+The update element contains the applications preference for application update.
+-->
+
+<!ELEMENT update EMPTY>
+
+<!--
+The check attribute of the update element indicates the applications 
+preference for when to check for updates.
+-->
+
+<!ATTLIST update check (always | timeout | background) "timeout">
+
+<!--
+The policy attribute of the update element indicates the applications 
+preference for what to do when updates are available.
+-->
+
+<!ATTLIST update policy (always | prompt-update | prompt-run) "always">
+
+<!--
+The resources element contains an ordered set of resources that 
+constitutes an application.
+-->
+
+<!ELEMENT resources (java | j2se | jar | nativelib | extension | 
+ property | package)*>
+
+<!--
+The os attribute of the resources element specifies for which operating 
+system this element should be considered.
+-->
+
+<!ATTLIST resources os CDATA #IMPLIED>
+
+<!--
+The arch attribute of the resources element specifies for what platform this 
+element should be considered.
+-->
+
+<!ATTLIST resources arch CDATA #IMPLIED>
+
+<!--
+The locale attribute of the resources element specifies for which locales 
+this element should be considered.
+-->
+
+<!ATTLIST resources locale CDATA #IMPLIED>
+
+<!--
+The java element describes a supported JRE version and an optional resources 
+element to be used by the particular JRE.
+-->
+
+<!ELEMENT java (resources*)>
+
+<!--
+The version attribute of the java element describes the versions of the JRE 
+that this application is supported on.
+-->
+
+<!ATTLIST java version CDATA #REQUIRED>
+
+<!--
+The href attribute of the java element specifies the location where the JRE 
+should be downloaded from.
+-->
+
+<!ATTLIST java href CDATA #IMPLIED>
+
+<!--
+The initial-heap-size attribute of the java element specifies the initial 
+size of the object heap.
+-->
+
+<!ATTLIST java initial-heap-size CDATA #IMPLIED>
+
+<!--
+The max-heap-size attribute of the java element specifies the preferred 
+maximum size of the object heap.
+-->
+
+<!ATTLIST java max-heap-size CDATA #IMPLIED>
+
+<!--
+The java-vm-args attribute of the java element specifies a preferred set of 
+virtual machine arguments to use when launching java.
+-->
+
+<!ATTLIST java java-vm-args CDATA #IMPLIED>
+
+<!--
+The j2se element describes a supported JRE version and an optional resources 
+element to be used by the particular JRE.
+-->
+
+<!ELEMENT j2se (resources*)>
+
+<!--
+The version attribute of the j2se element describes the versions of the JRE 
+that this application is supported on.
+-->
+
+<!ATTLIST j2se version CDATA #REQUIRED>
+
+<!--
+The href attribute of the j2se element specifies the location where the JRE 
+should be downloaded from.
+-->
+
+<!ATTLIST j2se href CDATA #IMPLIED>
+
+<!--
+The initial-heap-size attribute of the j2se element specifies the initial 
+size of the object heap.
+-->
+
+<!ATTLIST j2se initial-heap-size CDATA #IMPLIED>
+
+<!--
+The max-heap-size attribute of the j2se element specifies the preferred 
+maximum size of the object heap.
+-->
+
+<!ATTLIST j2se max-heap-size CDATA #IMPLIED>
+
+<!--
+The java-vm-args attribute of the j2se element specifies a preferred set of 
+virtual machine arguments to use when launching java.
+-->
+
+<!ATTLIST j2se java-vm-args CDATA #IMPLIED>
+
+<!--
+The jar element describes a jar file resource.
+-->
+
+<!ELEMENT jar EMPTY>
+
+<!--
+The href attribute of the jar element contains the location of a jar file 
+as a URL.
+-->
+
+<!ATTLIST jar href CDATA #REQUIRED>
+
+<!--
+The version attribute of a jar element describes the version of a particular 
+JAR file that is requested.
+-->
+
+<!ATTLIST jar version CDATA #IMPLIED>
+
+<!--
+The main attribute of a jar element indicates whether this element contains 
+the main class.
+-->
+
+<!ATTLIST jar main (true|false) "false">
+
+<!--
+The download attribute of a jar element indicates if this element must be 
+downloaded before an application is launched (eager), or not (lazy).
+-->
+
+<!ATTLIST jar download (eager | lazy) "eager">
+
+<!--
+The size attribute of a jar element indicates the size of a JAR file in bytes.
+-->
+
+<!ATTLIST jar size CDATA #IMPLIED>
+
+<!--
+The part attribute of a jar element describes the name of the group it 
+belongs too.
+-->
+
+<!ATTLIST jar part CDATA #IMPLIED>
+
+<!--
+The nativelib element describes a resource containing native files.
+-->
+
+<!ELEMENT nativelib EMPTY>
+
+<!--
+The href attribute of a nativelib element contains the location of a 
+nativelib file as a URL.
+-->
+
+<!ATTLIST nativelib href CDATA #REQUIRED>
+
+<!--
+The version attribute of a nativelib element describes the version of a 
+particular nativelib file that is requested.
+-->
+
+<!ATTLIST nativelib version CDATA #IMPLIED>
+
+<!--
+The download attribute of a nativelib element indicates if this element 
+must be downloaded before an application is launched (eager), or not (lazy).
+-->
+
+<!ATTLIST nativelib download (eager | lazy) "eager">
+
+<!--
+The size attribute of a nativelib element indicates the size of a nativelib 
+file in bytes.
+-->
+
+<!ATTLIST nativelib size CDATA #IMPLIED>
+
+<!--
+The part attribute of a nativelib element describes the name of the part it 
+belongs to.
+-->
+
+<!ATTLIST nativelib part CDATA #IMPLIED>
+
+<!--
+The extension element describes an extension that is required in order to 
+run the application.
+-->
+
+<!ELEMENT extension (ext-download*)>
+
+<!--
+The version attribute of an extension element specifies the version of the 
+extension requested.
+-->
+
+<!ATTLIST extension version CDATA #IMPLIED>
+
+<!--
+The name attribute of an extension element specifies the name of the extension.
+-->
+
+<!ATTLIST extension name CDATA #IMPLIED>
+
+<!--
+The href attribute of an extension element specifies the location of the 
+extension.
+-->
+
+<!ATTLIST extension href CDATA #REQUIRED>
+
+<!--
+The ext-download element defines how parts of the extension are downloaded.
+-->
+
+<!ELEMENT ext-download EMPTY>
+
+<!--
+The ext-part attribute of an ext-download element describes the name of a 
+part in the extension.
+-->
+
+<!ATTLIST ext-download ext-part CDATA #REQUIRED>
+
+<!--
+The download attribute of an ext-download element describes if the resource 
+may be lazily downloaded.
+-->
+
+<!ATTLIST ext-download download (lazy|eager) "eager">
+
+<!--
+The part attribute of an ext-download element describes the name of the 
+part it belongs to in the current JNLP file.
+-->
+
+<!ATTLIST ext-download part CDATA #IMPLIED>
+
+<!--
+The property element describes a name/value pair that is available to the 
+launched application as a system property.
+-->
+
+<!ELEMENT property EMPTY>
+
+<!--
+The name attribute of the property element describes the name of a system 
+property.
+-->
+
+<!ATTLIST property name CDATA #REQUIRED>
+
+<!--
+The value element describes the value of a system property.
+-->
+
+<!ATTLIST property value CDATA #REQUIRED>
+
+<!--
+The package element defines a relationship between a Java package or 
+class name and a part.
+-->
+
+<!ELEMENT package EMPTY>
+
+<!--
+The name attribute of the package element describes the name of a package 
+or class.
+-->
+
+<!ATTLIST package name CDATA #REQUIRED>
+
+<!--
+The part attribute of the package element describes the part that contains 
+the specified package or class.
+-->
+
+<!ATTLIST package part CDATA #REQUIRED>
+
+<!--
+The recursive attribute of the package element indicates if all sub-packages 
+of this particular package is also included.
+-->
+
+<!ATTLIST package recursive (true|false) "false">
+
+<!--
+The application-desc element describes how to launch a Java-based application. 
+It contains information about the main class and arguments.
+-->
+
+<!ELEMENT application-desc (argument*)>
+
+<!--
+The main-class attribute of the application-desc element describes the 
+main class of an application.
+-->
+
+<!ATTLIST application-desc main-class CDATA #IMPLIED>
+
+<!--
+The argument elements describe the ordered set of arguments to an application. 
+These arguments will be passed into the main method of the application's 
+main class.
+-->
+
+<!ELEMENT argument (#PCDATA)>
+
+<!--
+The applet-desc element describes how to launch a Java Technology-based Applet. It contains information about, e.g., the main class, size, and parameters.
+-->
+
+<!ELEMENT applet-desc (param*)>
+
+<!--
+The documentbase attribute of the applet-desc element describes the 
+documentbase for the applet as a URL.
+-->
+
+<!ATTLIST applet-desc documentbase CDATA #IMPLIED>
+
+<!--
+The main-class attribute of the applet-desc element describes the name of the 
+main Applet class.
+
+-->
+
+<!ATTLIST applet-desc main-class CDATA #REQUIRED>
+
+<!--
+The name attribute of the applet-desc element describes the name of the Applet.
+-->
+
+<!ATTLIST applet-desc name CDATA #REQUIRED>
+
+<!--
+The width attribute of the applet-desc element describes the width of the 
+Applet in pixels.
+-->
+
+<!ATTLIST applet-desc width CDATA #REQUIRED>
+
+<!--
+The height attribute of the applet-desc element describes the height of the 
+Applet in pixels.
+-->
+
+<!ATTLIST applet-desc height CDATA #REQUIRED>
+
+<!--
+The param element describes a parameter to an Applet.
+-->
+
+<!ELEMENT param EMPTY>
+
+<!--
+The name attribute of the param element describes the name of a parameter.
+-->
+
+<!ATTLIST param name CDATA #REQUIRED>
+
+<!--
+The value attribute of the param element describes the value of a parameter.
+
+-->
+
+<!ATTLIST param value CDATA #REQUIRED>
+
+<!--
+The component-desc element specifies a component extension.
+-->
+
+<!ELEMENT component-desc EMPTY>
+
+<!--
+The installer-desc element specifies an installer extension.
+-->
+
+<!ELEMENT installer-desc EMPTY>
+
+<!--
+The main-class attribute of the installer-desc element describes the 
+main class for the installer/uninstaller.
+-->
+
+<!ATTLIST installer-desc main-class CDATA #IMPLIED>
+
+<!--
+The shortcut element describes an application's preferences for desktop 
+integration.
+-->
+
+<!ELEMENT shortcut (desktop?, menu?)>
+
+<!--
+The online attribute of the shortcut element describes an application's 
+preferences launching shortcuts online or offline
+-->
+
+<!ATTLIST shortcut online (true | false) "true">
+
+<!--
+The desktop element indicates that a shortcut on the desktop is desired.
+-->
+
+<!ELEMENT desktop EMPTY>
+
+<!--
+The menu element indicates that a shortcut in a menu is desired.
+-->
+
+<!ELEMENT menu EMPTY>
+
+<!--
+The submenu attribute of the menu element indicates where in the menu a 
+shortcut is desired.
+-->
+
+<!ATTLIST menu submenu CDATA #IMPLIED>
+
+<!--
+The association element describes an application's preferences for desktop 
+associations.
+-->
+
+<!ELEMENT association (description?, icon?)>
+
+<!--
+The extensions attribute of the association element indicates a list of 
+extensions to associate.
+-->
+
+<!ATTLIST association extensions CDATA #REQUIRED>
+
+<!--
+The mime-type attribute of the association element indicates a mime-types 
+to associate.
+-->
+
+<!ATTLIST association mime-type CDATA #REQUIRED>
+
+<!--
+The related-content element described additional content that may be 
+integrated with the application.
+-->
+
+<!ELEMENT related-content (title?, description?, icon?)>
+
+<!--
+The href attribute of the related-content element contains a URL to a 
+location on the web containing additional related content for the application.
+-->
+
+<!ATTLIST related-content href CDATA #REQUIRED>
+
+ 
+
Index: /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/jstub.sh
===================================================================
--- /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/jstub.sh	(revision 18906)
+++ /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/jstub.sh	(revision 18906)
@@ -0,0 +1,53 @@
+#!/bin/sh
+# 
+# Copyright 2005 Orangevolt (www.orangevolt.com)
+
+abs_file()
+{
+ FIRST_CHAR=`echo $1 | cut -c1`
+ if [ "${FIRST_CHAR}" = "/" ]
+ then
+  absolutepath=$1
+ else
+  PWD=`pwd`
+  absolutepath="${PWD}/$1"
+ fi
+}
+
+get_abs_file()
+{
+  abs_file $1
+  if [ -L "$absolutepath" ]; then
+           absolutepath=`ls -l $absolutepath | cut -d\> -f2`
+           abs_file $absolutepath
+#           echo "File is a link: $absolutepath"
+           get_abs_file $absolutepath
+#  else
+#           echo "File is not a link: $absolutepath"
+  fi
+}
+
+get_abs_file $0
+
+# now absolutepath is valid
+#echo $absolutepath
+
+path=${absolutepath%/*}
+# now path is valid
+#echo $path
+
+absolutename=${absolutepath##*/}
+# now absolutepath is valid
+#echo $absolutename
+
+name=${absolutename%%.*}
+# now name is valid
+#echo $name
+
+command="__EXECUTABLE_STRING__"
+echo "executing \"$command\" $@" 
+
+$command $@
+
+exit
+#### archive starts here ####
Index: /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/stub.sh
===================================================================
--- /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/stub.sh	(revision 18906)
+++ /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/stub.sh	(revision 18906)
@@ -0,0 +1,63 @@
+#!/bin/sh
+# 
+# Copyright 2005 Orangevolt (www.orangevolt.com)
+
+abs_file()
+{
+ FIRST_CHAR=`echo $1 | cut -c1`
+ if [ "${FIRST_CHAR}" = "/" ]
+ then
+  absolutepath=$1
+ else
+  PWD=`pwd`
+  absolutepath="${PWD}/$1"
+ fi
+}
+
+get_abs_file()
+{
+  abs_file $1
+  if [ -L "$absolutepath" ]; then
+           absolutepath=`ls -l $absolutepath | cut -d\> -f2`
+           abs_file $absolutepath
+#           echo "File is a link: $absolutepath"
+           get_abs_file $absolutepath
+#  else
+#           echo "File is not a link: $absolutepath"
+  fi
+}
+
+get_abs_file $0
+
+# now absolutepath is valid
+#echo $absolutepath
+
+path=${absolutepath%/*}
+# now path is valid
+#echo $path
+
+absolutename=${absolutepath##*/}
+# now absolutepath is valid
+#echo $absolutename
+
+name=${absolutename%%.*}
+# now name is valid
+#echo $name
+
+exe="__EXECUTABLE__NAME__"
+path="__EXECUTABLE__PATH__"
+
+if [ ! -d "/tmp/$absolutename" ] 
+then
+ mkdir /tmp/$absolutename
+fi
+unzip -o -qq $0 -d /tmp/$absolutename  >/dev/null 2>&1
+
+echo "cd /tmp/$absolutename$path"
+cd /tmp/$absolutename$path
+#chmod 755 $exe
+#echo "$exe $@"
+$exe $@
+
+exit 0
+##### zipped content starts here ####
Index: /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/taskdefs.properties
===================================================================
--- /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/taskdefs.properties	(revision 18906)
+++ /branches/rk-oran/shared/windows/installer-classes/com/orangevolt/tools/ant/taskdefs.properties	(revision 18906)
@@ -0,0 +1,19 @@
+sfx=com.orangevolt.tools.ant.SFXTask
+jstub=com.orangevolt.tools.ant.JStubTask
+jnlp=com.orangevolt.tools.ant.JNLPTask
+preferences=com.orangevolt.tools.ant.PreferencesTask
+win32.registry=com.orangevolt.tools.ant.Win32RegistryTask
+win32.shortcut=com.orangevolt.tools.ant.Win32ShortcutTask
+win32.properties=com.orangevolt.tools.ant.Win32PropertiesTask
+win32.replaceicon=com.orangevolt.tools.ant.Win32ReplaceIconTask
+properties=com.orangevolt.tools.ant.PropertiesTask
+find=com.orangevolt.tools.ant.FindTask
+compare=com.orangevolt.tools.ant.CompareTask
+execute=com.orangevolt.tools.ant.ExecuteTask
+call=com.orangevolt.tools.ant.CallTask
+switch=com.orangevolt.tools.ant.SwitchTask
+unix.properties=com.orangevolt.tools.ant.UnixPropertiesTask
+unix.link=com.orangevolt.tools.ant.UnixLinkTask
+unix.kde.shortcut=com.orangevolt.tools.ant.KDEShortcutTask
+unix.kde.shortcutdirectory=com.orangevolt.tools.ant.KDEShortcutDirectoryTask
+os.properties=com.orangevolt.tools.ant.OsPropertiesTask
Index: /branches/rk-oran/shared/windows/installer-classes/com/roxes/win32/ov4n.properties
===================================================================
--- /branches/rk-oran/shared/windows/installer-classes/com/roxes/win32/ov4n.properties	(revision 18906)
+++ /branches/rk-oran/shared/windows/installer-classes/com/roxes/win32/ov4n.properties	(revision 18906)
@@ -0,0 +1,2 @@
+#Sat Oct 06 16:45:54 CEST 2007
+orangevolt.native.libversion=1.1.1
Index: /branches/rk-oran/shared/windows/wrapper/compile.bat
===================================================================
--- /branches/rk-oran/shared/windows/wrapper/compile.bat	(revision 18906)
+++ /branches/rk-oran/shared/windows/wrapper/compile.bat	(revision 18906)
@@ -0,0 +1,10 @@
+mkdir build
+
+rc wrapper.rc
+move wrapper.RES build\wrapper.res
+
+cl /c -GX wrapper.cpp /out:wrapper.obj
+move wrapper.obj build
+
+link /OUT:build\wrapper.exe build\wrapper.obj build\wrapper.res
+
Index: /branches/rk-oran/shared/windows/wrapper/wrapper.cpp
===================================================================
--- /branches/rk-oran/shared/windows/wrapper/wrapper.cpp	(revision 18906)
+++ /branches/rk-oran/shared/windows/wrapper/wrapper.cpp	(revision 18906)
@@ -0,0 +1,386 @@
+#include <windows.h>
+
+#include <fstream>
+#include <iostream>
+#include <conio.h>
+#include <string>
+#include <time.h>
+#include <shellapi.h>
+#include <direct.h>
+#include "libsearch4j.h"
+
+using namespace std;
+
+//globals
+HBITMAP g_splash = NULL; //the main splash bitmap
+HFONT g_hfFont = NULL; //the main splash bitmap
+char step[10] = "TMP"; //the current step
+char progress[4] = "0"; //progress in the current step
+HWND splashWnd;
+HINSTANCE mainInstance;
+int mainCmdShow;
+bool window_loaded = false;
+
+void set_splash_step( char* new_step ) {
+	strcpy( step, new_step );
+	InvalidateRect(splashWnd, NULL, FALSE);
+	UpdateWindow(splashWnd);
+}
+
+void set_splash_progress( int percent_progress ) {
+	percent_progress = ( percent_progress / 10 ) * 10;
+	char p[4] = {0};
+	strcpy( progress, itoa( percent_progress, p, 10 ) );
+	InvalidateRect(splashWnd, NULL, FALSE);
+	//RedrawWindow(splashWnd, NULL, NULL, RDW_INVALIDATE | RDW_ERASE | RDW_ERASENOW | RDW_UPDATENOW | RDW_INTERNALPAINT);
+	UpdateWindow(splashWnd);
+}
+
+void spoof_progress( int interval ) {
+	int tenPercentWait = interval / 11;
+	for ( int i=0; i <= 100; i+=10 ) {
+		set_splash_progress( i );
+		Sleep( tenPercentWait );
+	}
+}
+
+//extracts a resource in chunks
+int extractResource( const char * basename, const char * type, char * file ) {
+
+	HMODULE hModule = GetModuleHandle(NULL);
+	set_splash_progress( 0 );
+
+	int no_chunks;
+	bool chunk_available = true;
+	for ( no_chunks = 0; chunk_available; no_chunks++ ) {
+
+		//construct the chunk name
+		char chunkname[127] = {0};
+		strcpy( chunkname, basename );
+		strcat( chunkname, "_" );
+		char chunknum[5] = {0};
+		itoa( no_chunks+1, chunknum, 10 );
+		strcat( chunkname, chunknum );
+		
+		if ( FindResource(hModule, chunkname, type) == NULL ) {
+			chunk_available = false;
+			break;
+		}
+	}
+	
+	if ( no_chunks == 0 ) {
+		return 1;
+	}
+	
+	for ( int i=0; i<no_chunks; i++ ) {
+	
+		//construct the chunk name
+		char chunkname[127] = {0};
+		strcpy( chunkname, basename );
+		strcat( chunkname, "_" );
+		char chunknum[5] = {0};
+		itoa( i+1, chunknum, 10 );
+		strcat( chunkname, chunknum );
+		
+		//find it
+		HRSRC hRsrc = FindResource(hModule, chunkname, type);
+		if (hRsrc == NULL ) return 1; //couldn't find the chunk
+		
+		//load it
+		HGLOBAL hGlobal = LoadResource(hModule, hRsrc);
+		if (hGlobal == NULL) return 1; //couldn't lock
+		
+		//lock it
+		BYTE* pBytes = (BYTE*) LockResource(hGlobal);
+		if (pBytes == NULL) return 1; //couldn't lock
+		
+		//put it on disk
+		DWORD dwLength = SizeofResource(hModule, hRsrc);
+		ofstream fStream(file, ios::binary | ios::out | ios::app );
+		fStream.write((char*) pBytes, dwLength);
+		fStream.close();
+		
+		//unload
+		UnlockResource(hGlobal);
+		FreeResource(hGlobal);
+		
+		//update the progress
+		set_splash_progress( i * 100 / no_chunks );
+		
+	}
+
+	return 0;
+
+}
+
+//the splash window procedure
+LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
+	switch(msg) {
+
+		case WM_CREATE: {
+			//load in the reusable resources
+			g_splash = LoadBitmap(GetModuleHandle(NULL),"SPLASH");
+			g_hfFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
+			if(g_splash == NULL) {
+				MessageBox(hwnd, "Could not load splash bitmap!", "Error", MB_OK | MB_ICONEXCLAMATION);
+			}
+			
+			//center the window automatically
+			RECT rect;
+			GetWindowRect(hwnd, &rect);
+			int x = (GetSystemMetrics(SM_CXSCREEN) - (rect.right - rect.left)) / 2;
+			int y = (GetSystemMetrics(SM_CYSCREEN) - (rect.bottom - rect.top)) / 2;
+			SetWindowPos(hwnd, HWND_TOP, x, y, 0, 0, SWP_NOSIZE);
+		}
+		
+		case WM_PAINT: {
+			// Don't use MessageBox from inside WM_PAINT
+		
+			//load in the correct resources
+			HBITMAP g_progress = NULL;
+			HBITMAP g_step = NULL;
+			char progress_res[20] = "PROGRESS_";
+			strcat( progress_res, progress );
+			char step_res[20] = "STEP_";
+			strcat( step_res, step );
+			g_progress = LoadBitmap(GetModuleHandle(NULL), progress_res );
+			g_step = LoadBitmap(GetModuleHandle(NULL), step_res );
+			if( g_progress == NULL || g_step == NULL ) {
+				MessageBox(hwnd, "Could not load an image!", "Error", MB_OK | MB_ICONEXCLAMATION);
+			}
+		
+			BITMAP bm; //holds info about the width and height
+			PAINTSTRUCT ps;
+			
+			HDC hdc = BeginPaint(hwnd, &ps);
+			HDC hdcMem = CreateCompatibleDC(hdc);
+			
+			//paint the main splash screen
+			GetObject(g_splash, sizeof(bm), &bm);
+			HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, g_splash);
+			BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
+						
+			//paint in the progress
+			GetObject(g_progress, sizeof(bm), &bm);
+			SelectObject(hdcMem, g_progress);
+			BitBlt(hdc, 0, 270, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
+			
+			//paint in the step with transparency
+			GetObject(g_step, sizeof(bm), &bm);
+			SelectObject(hdcMem, g_step);
+			BitBlt(hdc, 0, 276, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCPAINT);
+			
+			//print the step with text
+			RECT rcClient;
+			GetClientRect(hwnd, &rcClient);
+			//DrawText(hdc, "This is the step", -1, &rcClient, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
+			
+			//restore the hdc
+			SelectObject(hdcMem, hbmOld);
+			
+			//release resources
+			DeleteDC(hdcMem);
+			EndPaint(hwnd, &ps);
+			DeleteObject(g_progress);
+			DeleteObject(g_step);
+			
+		}
+		break;
+		
+		/*
+		case WM_LBUTTONDOWN: {
+			DeleteObject(g_splash);
+			PostQuitMessage(0);
+		}
+		break;
+		*/
+		
+		case WM_CLOSE:
+			DestroyWindow(hwnd);
+			break;
+		
+		case WM_DESTROY:
+			DeleteObject(g_splash);
+			PostQuitMessage(0);
+			break;
+		
+		default:
+			return DefWindowProc(hwnd, msg, wParam, lParam);
+	}
+
+	return 0;
+
+}
+
+//function to process the window
+DWORD WINAPI ProcessWindow( LPVOID lpParam ) {
+	
+	const char g_szClassName[] = "splash";
+	WNDCLASSEX wc;
+	MSG Msg;
+
+	//Step 1: Registering the Window Class
+	wc.cbSize = sizeof(WNDCLASSEX);
+	wc.style = 0;
+	wc.lpfnWndProc = WndProc;
+	wc.cbClsExtra = 0;
+	wc.cbWndExtra = 0;
+	wc.hInstance = mainInstance;
+	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
+	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
+	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
+	wc.lpszMenuName = NULL;
+	wc.lpszClassName = g_szClassName;
+	wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
+	if(!RegisterClassEx(&wc)) {
+		MessageBox(NULL, "Window Registration Failed!", "Error!",
+		MB_ICONEXCLAMATION | MB_OK);
+		return 0;
+	}
+
+	// Step 2: Creating the Window
+	splashWnd = CreateWindowEx( WS_EX_TOOLWINDOW, g_szClassName, "", WS_POPUP | SS_BITMAP, 0, 0, 420, 300, NULL, NULL, mainInstance, NULL);
+	if( splashWnd == NULL ) {
+		MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
+		return 0;
+	}
+	ShowWindow(splashWnd, mainCmdShow);
+	UpdateWindow(splashWnd);
+
+	window_loaded = true;
+	
+	// Step 3: The Message Loop
+	while(GetMessage(&Msg, NULL, 0, 0) > 0) {
+		TranslateMessage(&Msg);
+		DispatchMessage(&Msg);
+	}
+	return 0;
+} 
+
+int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
+	
+	const int SPOOF_TIME = 1000;
+	string command;
+	srand( time(0) );
+	mainInstance = hInstance;
+	mainCmdShow = nCmdShow;
+	
+	//start the window
+	HANDLE hThread;
+	DWORD dwThreadId, dwThrdParam = 1;
+	hThread = CreateThread( 
+       NULL,                        // no security attributes 
+       0,                           // use default stack size  
+       ProcessWindow,               // thread function 
+       &dwThrdParam,	            // argument to thread function 
+       0,                           // use default creation flags 
+       &dwThreadId);                // returns the thread identifier 
+	if ( hThread == NULL ) {
+		return -1;
+		//ErrorExit( "CreateThread failed." );
+	}
+	CloseHandle( hThread );
+	
+	while ( !window_loaded ) {
+		Sleep( 100 );
+	}
+	
+	//create the temp folder and change to it
+	set_splash_step( "TMP" );
+	spoof_progress( SPOOF_TIME );
+	
+	// Now we are generating temporary files in a folder inside the current directory, 
+	// instead of creating this folder in the system Temp directory(referenced by TMP)
+	// And we make this folder hidden
+	char* tmp = NULL; //char* tmp = getenv( "TMP" );
+	tmp = _getcwd(tmp, 1000);
+	char id[6]; for( int i=0; i<5; i++ ) id[i] = (char)((rand()%26) + 97); id[5] = '\0'; //id for this instance
+	string tempdir = ""; tempdir.append( tmp ); tempdir.append( "\\Greenstone-" ); tempdir.append( id );
+	const char* tmpdir = tempdir.c_str();
+	if ( _mkdir( tmpdir ) != 0 ) {
+		string title = "Failed to create the temp folder.";
+		string message = "Failed to create the temp folder.\nPlease run this installer from a folder you have permission to write to.";
+		MessageBox(NULL, message.c_str(), title.c_str(), MB_OK);
+		return -1;
+	}
+	SetFileAttributes(tmpdir, FILE_ATTRIBUTE_HIDDEN);
+	SetCurrentDirectory(tmpdir);
+	delete tmp; //  deallocate memory
+	
+	//rip out java archive if it is bundled
+	set_splash_step( "XJAVA" );
+	int javaIsBundled = (extractResource( "JAVA", "EXE", "@java.installer@" ) == 0);
+	if ( javaIsBundled ) {
+		process( "@java.installer@", false );
+	}
+
+	//find java
+	set_splash_step( "SEARCHING" );
+	spoof_progress( SPOOF_TIME );
+	bool use_minimum = true;
+	Jvm minimum;
+	minimum.setVersionFromString( "@java.min.version@" );
+	string phint = "@java.extracted@";
+	string hint = "";
+	bool verbose = true;
+	Jvm foundJvm;
+	bool jvmFound = find( foundJvm, use_minimum, minimum, false, false, phint, hint, verbose );
+	
+	//if the jvm was not found, try to fix it and find it
+	if ( !jvmFound ) {
+
+		//did not find a good java
+		string message = "This version of Greenstone requires java @java.min.version@ or greater, but ";
+		
+		//tell them if java is absent or just too old
+		if ( find( foundJvm, false, minimum, false, false, "", "", false ) ) {
+			message.append( "your java is too old.");
+		} else {
+			message.append( "java could not be found on your computer." );
+		}
+		message.append( "\n" );
+		
+		string title = "Installation Failed: Couldn't find java";
+		MessageBox(NULL, message.c_str(), title.c_str(), MB_OK);
+
+	//if java was found, carry on
+	} else {
+
+		//extract the jar
+		string jarLocation = "greenstone.jar";
+		
+		set_splash_step( "XJAR" );
+		extractResource( "JAR", "JAR", (char*) jarLocation.c_str() );
+
+		//launch the jar
+		set_splash_step( "LAUNCHING" );
+		spoof_progress( SPOOF_TIME );
+		string cmd = "\"";
+		cmd.append( foundJvm.getWinExecutable() );
+		cmd.append( "\" -jar greenstone.jar" );
+		
+		//hide splash screen
+		ShowWindow(splashWnd, SW_HIDE);
+		
+		//run the jar
+		int launch_exit_code = process( cmd, true );
+		
+		//report how it went
+		if ( launch_exit_code != 0 ) {
+			string title = "Installation Error";
+			string message = "The installation exited with an error. Java may not be installed properly, or the installation may have been interrupted partway through. Please try again.";
+			MessageBox(NULL, message.c_str(), title.c_str(), MB_OK);
+		}
+	}
+	
+	//clean up the temp directory
+	_unlink( "greenstone.jar" );
+	_unlink( "ant.install.log" );
+	_unlink( "@java.installer@" );
+	process( "cmd.exe /c rd /s /q @java.extracted@", false );
+	SetCurrentDirectory( ".." );
+	_rmdir( tempdir.c_str() );
+
+	return 0;
+	
+}
Index: /branches/rk-oran/shared/windows/wrapper/wrapper.rc
===================================================================
--- /branches/rk-oran/shared/windows/wrapper/wrapper.rc	(revision 18906)
+++ /branches/rk-oran/shared/windows/wrapper/wrapper.rc	(revision 18906)
@@ -0,0 +1,20 @@
+SPLASH BITMAP "splash.bmp"
+PROGRESS_0 BITMAP "progress-0.bmp"
+PROGRESS_10 BITMAP "progress-10.bmp"
+PROGRESS_20 BITMAP "progress-20.bmp"
+PROGRESS_30 BITMAP "progress-30.bmp"
+PROGRESS_40 BITMAP "progress-40.bmp"
+PROGRESS_50 BITMAP "progress-50.bmp"
+PROGRESS_60 BITMAP "progress-60.bmp"
+PROGRESS_70 BITMAP "progress-70.bmp"
+PROGRESS_80 BITMAP "progress-80.bmp"
+PROGRESS_90 BITMAP "progress-90.bmp"
+PROGRESS_100 BITMAP "progress-100.bmp"
+STEP_TMP BITMAP "step-tmp.bmp"
+STEP_SEARCHING BITMAP "step-searching.bmp"
+STEP_XJAVA BITMAP "step-xjava.bmp"
+STEP_XJAR BITMAP "step-xjar.bmp"
+STEP_LAUNCHING BITMAP "step-launching.bmp"
+MAINICON ICON "icon.ico"
+
+//resources are automatically appended here
Index: /branches/rk-oran/sork2/ant-scripts/build.xml
===================================================================
--- /branches/rk-oran/sork2/ant-scripts/build.xml	(revision 18906)
+++ /branches/rk-oran/sork2/ant-scripts/build.xml	(revision 18906)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		.......................................................... 
+		November 2008
+		Source Release Kit for Greenstone2 (sork2)
+		Oran Fry
+		..........................................................
+-->
+
+<project name="sork2-build" default="sork2">
+
+	<!-- CONSTANTS -->
+
+	<!-- for the benefit of the shared scripts, set release-kit home -->
+	<property name="rk.name" value="sork2"/>
+	<property name="rk.home" value="${sork2.home}" />
+	<property name="rk.os" value="multi" />
+	<property name="os.suffix" value="AnyPlatform"/>
+	
+	<!-- IMPORT OTHER ANT SCRIPTS -->
+	<import file="shared-ant-scripts/init.xml"/>
+	<import file="shared-ant-scripts/operations-on-gli.xml"/>
+	<import file="../greenstone2/ant-scripts/rk2-targets.xml"/>
+
+	<!-- THE MAIN TARGET -->
+	<target name="sork2" depends="init">
+		<antcall target="export-gsdl-gli"><param name="dest" value="distributions/Greenstone-${version}-source"/></antcall>
+		<antcall target="gsdl-set-version-numbers"><param name="gsdl.basedir" value="${basedir}/distributions/Greenstone-${version}-source"/></antcall>
+		<antcall target="gli-set-version-numbers"><param name="glibasedir" value="${basedir}/distributions/Greenstone-${version}-source/gli"/></antcall>
+		<antcall target="insert-winbin"/>
+		<antcall target="insert-windows-perl"><param name="gsdl.basedir" value="${basedir}/distributions/Greenstone-${version}-source"/></antcall>
+		<antcall target="tweak-files" />
+		<antcall target="create-archives"/>
+	</target>
+
+	<target name="tweak-files">
+		<!--<rsr file="distributions/Greenstone-${version}-source/Install.sh" pattern="^(iscdrom=).*" replacement="$1&quot;no&quot;" />-->
+		<delete file="distributions/Greenstone-${version}-source/Install.sh" />
+		<delete file="distributions/Greenstone-${version}-source/bin/linux/mgquery_old" />
+	</target>
+
+	<target name="insert-winbin">
+		<delete dir="distributions/Greenstone-${version}-source/bin/windows"/>
+		<svn>
+			<export srcurl="${svn.root}/other-projects/trunk/winbin/bin" destPath="distributions/Greenstone-${version}-source/bin/windows"/>
+		</svn>
+		<get src="http://greenstone.org/release-snapshots/server.exe" dest="distributions/Greenstone-${version}-source/bin/windows/server.exe"/>
+		
+		<delete dir="distributions/Greenstone-${version}-source/bin/windows/imagemagick"/>
+		<delete dir="distributions/Greenstone-${version}-source/bin/windows/ghostscript"/>
+	</target>
+
+	<target name="create-archives">
+		<mkdir dir="products"/>
+		<zip destfile="products/Greenstone-${version}-source.zip" basedir="distributions" includes="Greenstone-${version}-source/**/*"/>
+		<exec dir="distributions" executable="tar">
+			<arg line="-czf ../products/Greenstone-${version}-source.tar.gz Greenstone-${version}-source"/>
+		</exec>
+	</target>
+
+</project>
Index: /branches/rk-oran/sork2/bin/sork2
===================================================================
--- /branches/rk-oran/sork2/bin/sork2	(revision 18906)
+++ /branches/rk-oran/sork2/bin/sork2	(revision 18906)
@@ -0,0 +1,15 @@
+rk_name="sork2"
+rk_fullname="Source Release Kit for Greenstone2"
+RK_HOME=$SORK2_HOME
+source $SORK2_HOME/linux/rk
+
+echo "O---------------------------------------O"
+echo "|                                       |"
+echo "|   sork2                               |"
+echo "|   Source Release Kit for Greenstone2  |"
+echo "|                                       |"
+echo "O---------------------------------------O"
+
+
+#run the command
+$toexec 2>&1 | tee sork2.out
Index: /branches/rk-oran/wirk2/ant-scripts/build.xml
===================================================================
--- /branches/rk-oran/wirk2/ant-scripts/build.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/ant-scripts/build.xml	(revision 18906)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		.......................................................... 
+		June 2008
+		Windows Release Kit for Greenstone2 (wirk2)
+		Oran Fry
+		..........................................................
+-->
+
+<project name="wirk2-build" default="wirk2">
+
+	<!-- CONSTANTS -->
+	
+	<!-- the size of the resourse chunks to be put in the wrapped installer -->
+	<property name="resources.chunksize" value="8388608"/><!-- 8MiB -->
+
+	<!-- for the benefit of the shared scripts, set release-kit home -->
+	<property name="rk.name" value="wirk2"/>
+	<property name="rk.home" value="${wirk2.home}" />
+	<property name="rk.os" value="windows" />
+	<property name="shell.os" value="windows" />
+	<property name="os.suffix" value="win32"/>
+	
+	<!-- IMPORT OTHER ANT SCRIPTS -->
+	<import file="shared-ant-scripts/init.xml"/>
+	<import file="shared-ant-scripts/operations-on-gli.xml"/>
+	<import file="../greenstone2/ant-scripts/rk2-targets.xml"/>
+	<import file="compile.xml"/>
+	<import file="create-distribution.xml"/>
+	<import file="create-components.xml"/>
+	<import file="create-installer.xml"/>
+	<import file="wrap.xml"/>
+
+	<!-- THE MAIN TARGET -->
+	<target name="wirk2" depends="init">
+		<antcall target="compile"/>
+		<antcall target="create-distribution"/>
+		<antcall target="create-components"/>
+		<antcall target="create-installer"/>
+		<antcall target="wrap"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/wirk2/ant-scripts/compile.xml
===================================================================
--- /branches/rk-oran/wirk2/ant-scripts/compile.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/ant-scripts/compile.xml	(revision 18906)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk2-compile" default="compile">
+
+	<target name="compile">
+		<antcall target="checkout-gsdl-gli" />
+		<antcall target="gsdl-set-version-numbers"><param name="gsdl.basedir" value="${basedir}/compiled"/></antcall>
+		<antcall target="unzip-packages" />
+		<antcall target="get-winbin" />
+		<antcall target="insert-windows-perl"><param name="gsdl.basedir" value="compiled"/></antcall>
+		<antcall target="compile-c-code" />
+		<antcall target="compile-uninstaller" /> <!-- from rk2-targets -->
+		<antcall target="build-demo-collection" />
+	</target>
+
+	<target name="checkout-gsdl-gli">
+		<svn>
+			<checkout url="${svn.root}/gsdl/${branch.path}" destPath="${basedir}/compiled"/>
+			<checkout url="${svn.root}/gli/${branch.path}" destPath="${basedir}/compiled/gli"/>
+		</svn>
+	</target>
+
+	<target name="unzip-packages">
+		<unzip src="${basedir}/compiled/common-src/packages/windows/crypt/crypt.zip" dest="${basedir}/compiled/common-src/packages/windows/crypt"/>
+		<unzip src="${basedir}/compiled/common-src/packages/windows/expat/expat.zip" dest="${basedir}/compiled/common-src/packages/windows/expat"/>
+		<unzip src="${basedir}/compiled/common-src/packages/windows/stlport/stlport.zip" dest="${basedir}/compiled/common-src/packages/windows/stlport"/>
+		<unzip src="${basedir}/compiled/common-src/indexers/packages/windows/iconv/iconv.zip" dest="${basedir}/compiled/common-src/indexers/packages/windows/iconv"/>
+		<untar src="${basedir}/compiled/common-src/packages/sqlite/sqlite-amalgamation-3.5.9.tar.gz" dest="${basedir}/compiled/common-src/packages/sqlite" compression="gzip"/>
+	</target>
+
+	<target name="get-winbin">
+		<if>
+			<bool><not><available file="${basedir}/compiled/bin/windows"/></not></bool>
+			<svn><export srcUrl="${svn.root}/other-projects/trunk/winbin/bin" destPath="${basedir}/compiled/bin/windows" revision="${branch.revision}"/></svn>
+		</if>
+	</target>
+
+	<target name="compile-c-code">
+		<copy file="${wirk2.home}/resources/compile.bat" todir="${basedir}/compiled" overwrite="true"/>
+		<exec dir="${basedir}/compiled" executable="${basedir}/compiled/compile.bat" />
+		<move file="${basedir}/compiled/server.exe" todir="${basedir}/compiled/bin/windows"/>
+	</target>
+	
+	<target name="build-demo-collection">
+		<!-- the envs on these execs simulate the environment when you run setup.bat -->
+		<exec dir="${basedir}/compiled" executable="${basedir}/compiled/bin/windows/perl/bin/perl.exe">
+			<arg line="bin\script\import.pl --removeold demo"/>
+			<env key="GSDLHOME" value="${basedir}/compiled"/>
+			<env key="GSDLCOLLECTDIR" value="${basedir}/compiled/collect"/>
+			<env key="GSDLOS" value="windows"/>
+			<env key="PATH" value="${basedir}\compiled\bin\windows\perl\bin;${basedir}\compiled\bin\windows;${basedir}\compiled\bin\script"/>
+		</exec>
+		<exec dir="${basedir}/compiled" executable="${basedir}/compiled/bin/windows/perl/bin/perl.exe">
+			<arg line="bin\script\buildcol.pl --removeold demo"/>
+			<env key="GSDLHOME" value="${basedir}/compiled"/>
+			<env key="GSDLCOLLECTDIR" value="${basedir}/compiled/collect"/>
+			<env key="GSDLOS" value="windows"/>
+			<env key="PATH" value="${basedir}\compiled\bin\windows\perl\bin;${basedir}\compiled\bin\windows;${basedir}\compiled\bin\script"/>
+		</exec>
+		
+		<delete dir="${basedir}/compiled/collect/demo/index"/>
+		<move file="${basedir}/compiled/collect/demo/building" tofile="${basedir}/compiled/collect/demo/index"/>
+	</target>
+	
+</project>
Index: /branches/rk-oran/wirk2/ant-scripts/create-components.xml
===================================================================
--- /branches/rk-oran/wirk2/ant-scripts/create-components.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/ant-scripts/create-components.xml	(revision 18906)
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk2-create-components" default="create-components">
+
+	<!-- create components from the distribution folder -->
+
+	<!-- 1st level -->
+	<target name="create-components">
+		<antcall target="prepare-components"/>
+		<antcall target="compress-components"/>
+		<antcall target="produce-cd-components"/>
+	</target>
+	
+	<!-- 2nd level -->
+	<target name="prepare-components">
+		<antcall target="prepare-core-component" />
+		<antcall target="prepare-imagemagick-component" />
+		<antcall target="prepare-ghostscript-component" />
+
+		<antcall target="prepare-sourcecode-component" />
+
+	</target>
+	
+	<target name="compress-components">
+		<antcall target="compress-core-component" />
+		<antcall target="compress-imagemagick-component" />
+		<antcall target="compress-ghostscript-component" />
+
+		<antcall target="compress-zipped-binary-release"><param name="format" value="zip"/></antcall> <!-- from init -->
+
+	</target>
+	
+	<!-- 3rd level -->	
+	<target name="prepare-core-component">
+		<!-- delete old stuff to create new components -->
+		<delete dir="components/tmp/core" quiet="true"/>
+		<mkdir dir="components/tmp/core"/>
+				
+		<copy todir="components/tmp/core" overwrite="true">
+				<fileset dir="distributions/web">
+					<include name="**/*"/>
+				
+					<!-- exclude imagemagick -->
+					<exclude name="bin/windows/imagemagick"/>
+					<exclude name="bin/windows/imagemagick/**/*"/>
+
+					<!-- exclude ghostscript -->
+					<exclude name="bin/windows/ghostscript"/>
+					<exclude name="bin/windows/ghostscript/**/*"/>
+
+					<!-- exclude sourcecode -->
+					<exclude name="common-src"/>
+					<exclude name="common-src/**/*"/>
+					<exclude name="runtime-src"/>
+					<exclude name="runtime-src/**/*"/>
+					<exclude name="build-src"/>
+					<exclude name="build-src/**/*"/>
+					
+					<!-- exclude buildfiles -->
+					<exclude name="win32.mak"/>
+					<exclude name="win32cfg.h"/>
+					<exclude name="makegs2.bat"/>
+					<exclude name="Install.txt"/>
+					
+					<!-- exclude all readmes but the english one -->
+					<exclude name="READMEfr.txt"/>
+					<exclude name="READMEes.txt"/>
+					<exclude name="READMEru.txt"/>
+					<exclude name="READMEar.txt"/>
+					
+										
+				</fileset>
+		</copy>
+
+		<zip destfile="components/core.comp" basedir="components/tmp/core" compress="false" />
+	</target>
+	
+	
+	<target name="compress-core-component">
+		<!-- <sevenzip task="encode" input="${basedir}/components/core.comp" output="${basedir}/components/core.lzma" dictionnary="26"/> -->
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 core.lzma core.comp"/></exec>
+	</target>
+	
+	
+	
+	<target name="prepare-imagemagick-component">
+		<delete dir="components/tmp/imagemagick" quiet="true"/>
+		<mkdir dir="components/tmp/imagemagick"/>
+		<copy todir="components/tmp/imagemagick" overwrite="true">
+			<fileset dir="distributions/web/bin/windows/">
+				<include name="imagemagick/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/imagemagick.comp" basedir="components/tmp/imagemagick" compress="false" />
+	</target>
+		
+	<target name="compress-imagemagick-component">
+		<!-- <sevenzip task="encode" input="${basedir}/components/imagemagick.comp" output="${basedir}/components/imagemagick.lzma" dictionnary="26"/> -->
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 imagemagick.lzma imagemagick.comp"/></exec>
+	</target>
+	
+	
+	
+	<target name="prepare-ghostscript-component">
+		<delete dir="components/tmp/ghostscript" quiet="true"/>
+		<mkdir dir="components/tmp/ghostscript"/>
+		<copy todir="components/tmp/ghostscript" overwrite="true">
+			<fileset dir="distributions/web/bin/windows/">
+				<include name="ghostscript/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/ghostscript.comp" basedir="components/tmp/ghostscript" compress="false" />
+	</target>
+		
+	<target name="compress-ghostscript-component">
+		<!-- <sevenzip task="encode" input="${basedir}/components/ghostscript.comp" output="${basedir}/components/ghostscript.lzma" dictionnary="26"/> -->
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 ghostscript.lzma ghostscript.comp"/></exec>
+	</target>
+	
+	
+	
+	<target name="prepare-sourcecode-component">
+		<delete dir="components/tmp/sourcecode" quiet="true"/>
+		<mkdir dir="components/tmp/sourcecode"/>
+		<copy todir="components/tmp/sourcecode" overwrite="true">
+				<fileset dir="distributions/web">
+					<include name="common-src/**/*"/>
+					<include name="runtime-src/**/*"/>
+					<include name="build-src/**/*"/>
+					<include name="win32.mak"/>
+					<include name="win32cfg.h"/>
+					<include name="makegs2.bat"/>
+					<include name="Install.txt"/>
+				</fileset>
+		</copy>
+				
+		<mkdir dir="products"/>
+		<zip destfile="products/Greenstone-${version}-${os.suffix}-sourcecode-component.zip" basedir="components/tmp/sourcecode" compress="true"/>
+	</target>
+
+	<!--
+		cd components
+		produce components for cdrom distributions, to be picked up and used by cdrk2 release kit
+		split components into windows only files (windows) and general files (all)
+	-->
+	<target name="produce-cd-components">
+		<delete dir="components/tmp/cdrom"/>
+		<mkdir dir="components/tmp/cdrom"/>
+
+		<!-- core -->
+		<mkdir dir="components/tmp/cdrom/core/all"/>
+		<mkdir dir="components/tmp/cdrom/core/windows"/>
+		<copy todir="components/tmp/cdrom/core/all" overwrite="true">
+			<fileset dir="components/tmp/core"/>
+		</copy>
+		<move todir="components/tmp/cdrom/core/windows" overwrite="true">
+			<fileset dir="components/tmp/cdrom/core/all">
+				<include name="bin/windows"/>
+				<include name="bin/windows/**/*"/>
+				<include name="*.bat"/>
+			</fileset>
+		</move>
+
+		<!-- imagemagick (all windows specific) -->
+		<mkdir dir="components/tmp/cdrom/imagemagick/windows"/>
+		<copy todir="components/tmp/cdrom/imagemagick/windows" overwrite="true">
+			<fileset dir="components/tmp/imagemagick"/>
+		</copy>
+
+
+		<!-- sourcecode -->
+		<mkdir dir="components/tmp/cdrom/sourcecode/all"/>
+		<mkdir dir="components/tmp/cdrom/sourcecode/windows"/>
+		<copy todir="components/tmp/cdrom/sourcecode/all" overwrite="true">
+			<fileset dir="components/tmp/sourcecode"/>
+		</copy>
+		<move todir="components/tmp/cdrom/sourcecode/windows" overwrite="true">
+			<fileset dir="components/tmp/cdrom/sourcecode/all">
+				<include name="win32.mak"/>
+			</fileset>
+		</move>
+
+		<tar destfile="products/cdrom-linux-${version}.tar.gz" basedir="components/tmp/cdrom" compression="gzip"/>
+		
+	</target>
+		
+</project>
Index: /branches/rk-oran/wirk2/ant-scripts/create-distribution.xml
===================================================================
--- /branches/rk-oran/wirk2/ant-scripts/create-distribution.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/ant-scripts/create-distribution.xml	(revision 18906)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk2-create-distribution" default="create-distribution">
+
+	<target name="create-distribution">
+
+		<antcall target="export-gsdl-gli"><param name="dest" value="distributions/web"/></antcall>
+		<antcall target="drop-in-docs"><param name="gsdl.basedir" value="distributions/web"/></antcall>
+		<antcall target="gsdl-set-version-numbers"><param name="gsdl.basedir" value="${basedir}/distributions/web"/></antcall>
+		<antcall target="gli-set-version-numbers"><param name="glibasedir" value="${basedir}/distributions/web/gli"/></antcall>
+		<antcall target="insert-uninstaller"><param name="script-format" value="bat"/></antcall> <!-- from rk2-targets -->
+		<antcall target="dist-unzip-packages"/>
+		<antcall target="drop-in-binaries" />
+		<antcall target="drop-in-demo-collection" />
+		<!--Don't need because server.exe takes care of the gsdlhome path now-->
+		<!--<antcall target="drop-in-misc" />-->
+		<antcall target="compile-gli" />
+		<antcall target="remove-unneeded-files" />
+		<antcall target="create-needed-empty-files"><param name="gsdl.basedir" value="distributions/web"/></antcall>
+
+		<antcall target="create-binary-zip-windows"/>
+
+	</target>
+
+	<target name="drop-in-binaries">
+		<echo level="info">Dropping compiled binaries into distribution</echo>
+		<delete dir="${basedir}/distributions/web/bin/windows" />
+		<copy todir="${basedir}/distributions/web/bin/windows">
+			<fileset dir="${basedir}/compiled/bin/windows" includes="**/*"/>
+		</copy>
+		<copy todir="distributions/web" file="compiled/bin/windows/server.exe"/>
+		<copy todir="distributions/web/cgi-bin/library" file="compiled/cgi-bin/library.cgi"/>
+		<copy todir="distributions/web/cgi-bin/oaiserver" file="compiled/cgi-bin/oaiserver.cgi"/>
+		
+		<echo level="info">Dropping LuceneWrapper.jar in place</echo>
+		<copy file="${basedir}/compiled/bin/java/LuceneWrapper.jar" todir="${basedir}/distributions/web/bin/java" />
+	</target>
+
+	<target name="drop-in-demo-collection">
+		<echo level="info">Dropping rebuilt demo collection into distribution</echo>
+		<delete dir="${basedir}/distributions/web/collect/demo" />
+		<copy todir="${basedir}/distributions/web/collect/demo">
+			<fileset dir="${basedir}/compiled/collect/demo" includes="**/*"/>
+		</copy>
+	</target>
+
+	<target name="drop-in-misc">
+		<echo level="info">Putting the default llssite.cfg at the root of the distribution</echo>
+		<copy todir="${basedir}/distributions/web" file="${wirk2.home}/resources/llssite.cfg" overwrite="true"/>
+	</target>
+	
+	<target name="compile-gli">
+		<echo>Compiling gli...</echo>
+		<exec dir="${basedir}/distributions/web/gli" executable="${basedir}/distributions/web/gli/makegli.bat"/>
+		
+		<echo>Creating jar...</echo>
+		<exec dir="${basedir}/distributions/web/gli" executable="${basedir}/distributions/web/gli/makejar.bat"/>
+		
+		<echo>Cleaning up intermediate files...</echo>
+		<delete dir="${basedir}/distributions/web/gli/jar"/>
+		<delete dir="${basedir}/distributions/web/gli/classes/org"/>
+		
+		<echo>Putting gli server jar in a better place</echo>
+		<move file="${basedir}/distributions/web/gli/GLIServer.jar" todir="${basedir}/distributions/web/bin/java" />
+	</target>
+
+	<target name="remove-unneeded-files">
+		<delete file="${basedir}/distributions/web/gli/.greenstonestore" />
+		<delete dir="${basedir}/distributions/web/bin/linux" />
+		<delete><fileset dir="${basedir}/distributions/web" includes="*.bash,*.sh,*.csh,Support.htm,install-sh,configure,configure.in,config.sub,config.guess,config.h.in,configtest.pl,Makefile.in,aclocal.m4,acconfig.h,micotest.cpp,Install.sh"/></delete>
+		<delete><fileset dir="${basedir}/distributions/web/gli" includes="*.sh,*4gs3.bat"/></delete>
+		<delete file="${basedir}/distributions/web/bin/java/SignedGatherer.jar" />
+	</target>	
+
+	<target name="dist-unzip-packages">
+		<unzip src="${basedir}/distributions/web/common-src/indexers/packages/windows/iconv/iconv.zip" dest="${basedir}/distributions/web/common-src/indexers/packages/windows/iconv"/>
+		<delete file="${basedir}/distributions/web/common-src/indexers/packages/windows/iconv/iconv.zip"/>
+		
+		<unzip src="${basedir}/distributions/web/common-src/packages/windows/crypt/crypt.zip" dest="${basedir}/distributions/web/common-src/packages/windows/crypt"/>
+		<delete file="${basedir}/distributions/web/common-src/packages/windows/crypt/crypt.zip"/>
+		
+		<unzip src="${basedir}/distributions/web/common-src/packages/windows/expat/expat.zip" dest="${basedir}/distributions/web/common-src/packages/windows/expat"/>
+		<delete file="${basedir}/distributions/web/common-src/packages/windows/expat/expat.zip"/>
+		
+		<!--<unzip src="${basedir}/distributions/web/common-src/packages/windows/gdbm/gdbm.zip" dest="${basedir}/distributions/web/common-src/packages/windows/gdbm"/>
+		<delete file="${basedir}/distributions/web/common-src/packages/windows/gdbm/gdbm.zip"/>-->
+		
+		<unzip src="${basedir}/distributions/web/common-src/packages/windows/stlport/stlport.zip" dest="${basedir}/distributions/web/common-src/packages/windows/stlport"/>
+		<delete file="${basedir}/distributions/web/common-src/packages/windows/stlport/stlport.zip"/>
+
+		<untar src="${basedir}/distributions/web/common-src/packages/sqlite/sqlite-amalgamation-3.5.9.tar.gz" dest="${basedir}/distributions/web/common-src/packages/sqlite" compression="gzip"/>
+		<delete file="${basedir}/distributions/web/common-src/packages/sqlite/sqlite-amalgamation-3.5.9.tar.gz"/>
+	</target>
+	
+</project>
Index: /branches/rk-oran/wirk2/ant-scripts/create-installer.xml
===================================================================
--- /branches/rk-oran/wirk2/ant-scripts/create-installer.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/ant-scripts/create-installer.xml	(revision 18906)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk2-create-installer" default="create-installer">
+
+	<target name="create-installer">
+		<antcall target="copy-installer-files"/>
+		<antcall target="make-installer-files-concrete"><param name="java.os" value="windows"/></antcall> <!-- from init -->
+		<antcall target="compile-binary-installer"/> <!-- from init -->
+		<antcall target="compile-minimal-installer"/> <!-- from init -->
+	</target>
+
+	<target name="copy-installer-files" depends="copy-main-installer-files"> <!-- from init -->
+
+		<copy todir="${basedir}/installer/classes" overwrite="true">
+			<fileset dir="${wirk2.home}/packages/7za" includes="7za.exe"/>
+			<fileset file="${basedir}/distributions/web/LICENSE.txt"/>
+		</copy>
+		
+		<unjar src="${wirk2.home}/ant-scripts/tasks/greenstone/anttasks.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+		
+		<unjar src="${wirk2.home}/lib/crypt.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+		
+	</target>
+	
+</project>
Index: /branches/rk-oran/wirk2/ant-scripts/operations-on-gs3home.xml
===================================================================
--- /branches/rk-oran/wirk2/ant-scripts/operations-on-gs3home.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/ant-scripts/operations-on-gs3home.xml	(revision 18906)
@@ -0,0 +1,268 @@
+<?xml version="1.0"?>
+
+<!-- ====================================================================== 
+     March 2005                                                    
+
+     Greenstone3 build and install script
+                   
+     kjdon                                                                
+     ====================================================================== -->
+
+<project name="opeations-on-gs3home" default="usage">
+  
+	<!-- include standard build file -->
+	<import file="${basedir}/build.xml"/>
+
+	<property name="greenstone3-change-date" value="Tue Feb 20 12:13:42 NZDT 2007"/>
+	<property name="gs2build-change-date" value="Wed Dec 13 10:35:57 NZDT 2006"/>
+
+	<!-- ====================== DISTRIBUTION Targets ========================= -->
+
+	<!-- these two, do we need tomcat and axis for compilation??-->
+	<!-- Create the binaries for windows distribution -->
+	<target name="prepare-windows" depends="init">
+		<antcall target="checkout-gs2build"/>
+		<antcall target="checkout-gli"/>
+		<antcall target="unzip-windows-packages"/>
+		<antcall target="unzip-windows-packages"/>
+		<antcall target="checkout-winbin"/>
+		<antcall target="get-perl-for-windows"/>
+	</target>
+  
+	<target name="build-windows" depends="init">
+		<antcall target="svnupdate-distribution"/>
+		<antcall target="update-winbin"/>
+		<antcall target="get-windows-binaries"/>
+		<antcall target="rename-gs2build-files-windows"/>
+		<antcall target="compile-gs2build"/>
+		<antcall target="compile-packages"/>
+	</target>
+
+	
+	<target name="create-distribution-1" depends="init" description="do all the initial downloading and setting up">
+		
+		<antcall target="checkout-gs2build"/>
+		<antcall target="checkout-gli"/>
+		<!--<delete file="${gli.home}/gli.bat"/>-->
+		<delete file="${gli.home}/gli.sh"/>
+		<delete file="${gli.home}/gems.bat"/>
+		<delete file="${gli.home}/gems.sh"/>
+		<antcall target="rename-gs2build-files-dist"/>    
+		<delete dir="${gs2build-extra.home}"/>
+
+		<!-- <antcall target="unzip-windows-packages"/> do we need this? -->
+		<antcall target="prepare-tomcat"/>
+		<antcall target="prepare-axis"/>
+		
+		
+		<!-- delete old axis dir -->
+		<delete dir="${packages.home}/axis"/>
+		<mkdir dir="${web.home}/applet"/>
+		<mkdir dir="${web.home}/logs"/>
+		<antcall target="prepare-ant"/>
+		<antcall target="prepare-collections"/>
+
+		<!-- get good XML-Parser - does this work? -->
+		<antcall target="get-xml-parser"/>
+		
+		<delete>
+			<fileset dir="${packages.home}" includes="*.zip"/>
+		</delete>
+		
+		<!-- documented collections -->
+		<antcall target="get-documented-collections"/>
+
+		<delete file="${basedir}/README-CVS.txt"/>
+		<delete file="${basedir}/TODO.txt"/>
+		
+		<!-- create extra directories necessary the releases -->
+		<mkdir dir="${gs2build.home}/source"/>
+
+		</target>
+
+	<target name="create-distribution-2" description="do all the compilation">
+		<!-- compile the java stuff -->
+		<antcall target="compile-web"/>
+		
+		<!-- we can get this from the main greenstone3 directory
+		<antcall target="compile-packages-and-indexers"/>-->
+		<antcall target="compile-packages-and-indexers-javaonly"/>
+		
+		<antcall target="compile-core"/>
+		<antcall target="compile-gli"/>
+	</target>
+
+	<target name="create-distribution-3" depends="init" description="Do the rearranging of source code etc">
+
+		<!-- put gs2build source code in a tidy place -->
+		<move todir="${gs2build.home}/source/src" failonerror="false"><fileset dir="${gs2build.home}/src" defaultexcludes="no"/></move>
+		<move todir="${gs2build.home}/source/lib" failonerror="false"><fileset dir="${gs2build.home}/lib" defaultexcludes="no"/></move>
+		<move todir="${gs2build.home}/source/packages" failonerror="false"><fileset dir="${gs2build.home}/packages" defaultexcludes="no"/></move>
+		<move todir="${gs2build.home}/source/indexers" failonerror="false"><fileset dir="${gs2build.home}/indexers" defaultexcludes="no"/></move>
+		<move file="${gs2build.home}/win32.mak" tofile="${gs2build.home}/source/win32.mak"/>
+		<!--<move file="${gs2build.home}/setup.bat" tofile="${gs2build.home}/source/setup.bat"/>-->
+		<move file="${gs2build.home}/WIN32cfg.h" tofile="${gs2build.home}/source/WIN32cfg.h"/>
+
+		<!-- clean up -->
+		<delete><fileset dir="${basedir}" includes="**/.svn"/></delete>
+		<delete><fileset dir="${basedir}" includes="*.sh"/></delete>
+		<delete><fileset dir="${basedir}/gli" includes="*.sh"/></delete>
+		<delete><fileset dir="${basedir}/gs2build" includes="*.sh"/></delete>
+		<delete><fileset dir="${basedir}/bin/script" includes="*.sh"/></delete>
+
+		<delete dir="${basedir}/build"/>
+		<delete dir="${basedir}/lib/jni"/>
+		<delete dir="${basedir}/dist-resources"/>
+		<delete dir="${basedir}/gs2build/source"/>
+
+		<delete file="${basedir}/gli/client-gli.sh"/>
+		<delete file="${basedir}/gli/client-gli.bat"/>
+
+		<delete>
+			<fileset dir="${gs2build.home}">
+				<include name="config*"/>
+				<include name="ac*"/>
+				<include name="install-sh"/>
+				<include name="setup.bash"/>
+				<include name="Makefile.in"/>
+			</fileset>
+		</delete>
+
+		<!-- generate modified build.xml file -->
+		<antcall target="run-xslt-binary"/>
+
+		
+	</target>
+
+	<!-- Supplementary targets -->
+	<target name="svnupdate-distribution" depends="init">
+		<antcall target="svnupdate-packages"/>
+		<antcall target="svnupdate-core"/>
+		<antcall target="svnupdate-gs2build"/>
+		<antcall target="svnupdate-web"/>
+	</target>
+
+	<target name="run-xslt-source" depends="init">
+		<xslt in="${basedir}/build.xml" out="${basedir}/dist-build.xml" style="${basedir}/dist-resources/convert-build-xml-source.xsl"/>
+	</target>
+  
+	<target name="run-xslt-binary" depends="init">
+		<xslt in="${basedir}/build.xml" out="${basedir}/modified-build.xml" style="${wirk3.home}/xsl/convert-build-xml.xsl"/>
+	</target>
+  
+	<target name="rename-gs2build-files-dist" depends="init">
+		<mkdir dir="${gs2build.home}/gs2build-extra/lib"/>
+		<copy file="${gs2build.home}/gs2build-extra/lib.win32.mak" tofile="${gs2build.home}/lib/win32.mak"/>
+		<copy file="${gs2build.home}/gs2build-extra/win32.mak" tofile="${gs2build.home}/win32.mak"/>
+		<copy file="${gs2build.home}/gs2build-extra/setup.bat" tofile="${gs2build.home}/setup.bat"/>
+	</target>   
+
+	<target name="compile-packages-and-indexers-javaonly" depends="init">
+		<echo>Getting Indexer Jars</echo>
+		<!-- install the jar files -->
+		<copy file="${basedir}/../../greenstone3/gs2build/indexers/mg/mg.jar" todir="${lib.jni}"/>
+		<copy file="${basedir}/../../greenstone3/gs2build/indexers/mgpp/mgpp.jar" todir="${lib.jni}"/>
+		<copy file="${basedir}/../../greenstone3/gs2build/indexers/lucene-gs/LuceneWrapper.jar" todir="${web.lib}"/>
+		<!-- javagdbm -->
+		<!-- install the jar file -->
+		<copy file="${basedir}/../../greenstone3/src/packages/javagdbm/javagdbm.jar" todir="${lib.jni}"/>
+	</target>
+
+	<target name="delete-windows-files" depends="init" unless="current.os.iswindows">
+		<delete dir="${basedir}/winutil"/>
+		<delete>
+			<fileset dir="${lib.jni}" includes="*.dll"/>
+		</delete>
+	</target>
+
+	<target name="get-perl-for-windows" depends="init" if="current.os.iswindows">
+		<mkdir dir="${gs2build.home}/bin/windows"/>
+		<get src="http://www.greenstone.org/gs3files/perl-for-windows.zip" dest="${gs2build.home}/bin/windows/perl-for-windows.zip" usetimestamp="true"/>
+		<unzip src="${gs2build.home}/bin/windows/perl-for-windows.zip" dest="${gs2build.home}/bin/windows"/>
+		<delete file="${gs2build.home}/bin/windows/perl-for-windows.zip"/>
+	</target>
+
+	<!-- copy the doc eg colls from /home/nzdl - note we don't include the formatting ones -->
+	<target name="get-documented-collections" depends="init">
+		<property name="collect.home" value="${basedir}/web/sites/localsite/collect"/>
+
+		<!--    <copy todir="${collect.home}/authen-e">
+		  <fileset dir="${documented.collections.home}/authen-e"/>
+		</copy>
+		<copy todir="${collect.home}/bibliog1">
+		  <fileset dir="${documented.collections.home}/bibliog1"/>
+		</copy>
+		<copy todir="${collect.home}/bibliogr">
+		  <fileset dir="${documented.collections.home}/bibliogr"/>
+		</copy>
+		<copy todir="${collect.home}/dls-e">
+		  <fileset dir="${documented.collections.home}/dls-e"/>
+		</copy>
+		<copy todir="${collect.home}/dspace-e">
+		  <fileset dir="${documented.collections.home}/dspace-e"/>
+		</copy>
+		<copy todir="${collect.home}/gsarch-e">
+		  <fileset dir="${documented.collections.home}/gsarch-e"/>
+		</copy>
+		<copy todir="${collect.home}/image-e">
+		  <fileset dir="${documented.collections.home}/image-e"/>
+		</copy>
+		<copy todir="${collect.home}/isis-e">
+		  <fileset dir="${documented.collections.home}/isis-e"/>
+		</copy>
+		<copy todir="${collect.home}/oai-e">
+		  <fileset dir="${documented.collections.home}/oai-e"/>
+		</copy>
+		<copy todir="${collect.home}/pagedimg-e">
+		  <fileset dir="${documented.collections.home}/pagedimg-e"/>
+		</copy>
+		<copy todir="${collect.home}/wrdpdf-e">
+		  <fileset dir="${documented.collections.home}/wrdpdf-e"/>
+		</copy>
+
+		<copy todir="${collect.home}/garish">
+		  <fileset dir="${documented.collections.home}/garish"/>
+		</copy>
+		<copy todir="${collect.home}/marcexam">
+		  <fileset dir="${documented.collections.home}/marcexam"/>
+		</copy>
+		<copy todir="${collect.home}/style-e">
+		  <fileset dir="${documented.collections.home}/style-e"/>
+		</copy>
+		<copy todir="${collect.home}/wiki">
+		  <fileset dir="${documented.collections.home}/wiki"/>
+		</copy> -->
+	</target>
+
+	<target name="get-xml-parser" depends="init">
+		<get src="http://www.greenstone.org/gs3files/XML-Parser.tar.gz" dest="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" usetimestamp="true"/>
+		<untar src="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" dest="${gs2build.home}/perllib/cpan/" compression="gzip"/>
+		<delete file="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz"/>
+	</target>
+
+	<!-- new targets to go in distribution build.xml files -->
+
+	<!-- new usage target for binary release -->
+	<target name="usage-for-binary-dist" description="Print a help message">
+		<echo message="  Execute 'ant -projecthelp' for a list of targets."/>
+		<echo message="  Execute 'ant -help' for Ant help."/>
+	</target>
+    
+	<!-- new install target for source distribution -->
+	<target name="install-for-source-dist" depends="init" description="install the source distribution. Includes configuring and compiling">
+		<antcall target="unzip-windows-packages"/>
+		<!-- do the java version dependent stuff -->
+		<antcall target="configure-java-version"/>
+		<antcall target="install-macos-extra"/>
+		<!-- set gsdlhome in setup.bat -->
+		<antcall target="gs2build-edit-setup-bat"/>
+		<antcall target="install-indexer-files"/>
+		<antcall target="configure"/>
+		<antcall target="configure-c++"/>
+		<antcall target="compile"/>
+		<!-- make sure we have execute permission for the .sh files -->
+		<chmod dir="${basedir}" perm="ugo+rx" includes="*.sh"/>
+	</target>
+	
+</project>
+  
Index: /branches/rk-oran/wirk2/ant-scripts/wrap.xml
===================================================================
--- /branches/rk-oran/wirk2/ant-scripts/wrap.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/ant-scripts/wrap.xml	(revision 18906)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk2-wrap" default="wrap">
+
+	<target name="wrap">
+		<antcall target="copy-files-for-wrapping"/>
+		<antcall target="tweak-files-for-wrapping"/>
+		<antcall target="compile-resources"/>
+		<antcall target="compile-wrapper"/>
+		<antcall target="link-wrapper"/>
+	</target>
+
+	<target name="copy-files-for-wrapping">
+		<!--create a directory to build the wrapped installer in -->
+		<mkdir dir="${basedir}/wrapped-installer/build"/>
+		
+		<!-- copy source files -->
+		<copy todir="${basedir}/wrapped-installer/build" file="${wirk2.home}/windows/wrapper/wrapper.cpp"  overwrite="true"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${wirk2.home}/packages/search4j/libsearch4j.cpp" overwrite="true"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${wirk2.home}/packages/search4j/libsearch4j.h" overwrite="true"/>
+
+	</target>
+	
+	<target name="tweak-files-for-wrapping">
+		<echo>Substitute concrete values of things into source files</echo>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp">
+			<job pattern="@java.installer@" replacement="${windows-java.installer}"/>
+			<job pattern="@java.min.version@" replacement="${java.min.version}"/>
+			<job pattern="@bundled.version.java@" replacement="${bundled.version.windows-java}"/>
+			<job pattern="@java.extracted@" replacement="${windows-java.extracted}"/>
+		</rsr>
+	</target>
+
+	<target name="compile-resources">
+		<!--
+		<if>
+			<bool>
+				<not>
+					<uptodate targetfile="${basedir}/wrapped-installer/build/wrapper.RES">
+						<srcfiles dir="${wirk2.home}/greenstone2/icon" includes="icon.ico"/>
+						<srcfiles dir="${wirk2.home}/windows/wrapper" includes="${windows-java.installer}"/>
+						<srcfiles dir="${wirk2.home}/windows/wrapper" includes="*.bmp"/>
+						<srcfiles dir="${wirk2.home}/greenstone2/wrapper" includes="*.bmp"/>
+						<srcfiles dir="${wirk2.home}/windows/wrapper" includes="*.rc"/>
+						<srcfiles dir="${wirk2.home}/language-strings" includes="*.properties"/>
+						<srcfiles dir="${basedir}/installer" includes="Greenstone-${version}-win32.jar"/>
+					</uptodate>
+				</not>
+			</bool>
+		-->
+			
+			<echo>Compiling resources</echo>
+			
+			<echo>getting the template resource script</echo>
+			<copy todir="${basedir}/wrapped-installer/build" file="${wirk2.home}/windows/wrapper/wrapper.rc" overwrite="true"/>
+			
+			<echo>copying the small resource files into place</echo>
+			<copy todir="${basedir}/wrapped-installer/build" overwrite="true">
+				<fileset dir="${wirk2.home}/windows/wrapper" includes="*.bmp"/>
+				<fileset dir="${wirk2.home}/greenstone2/wrapper" includes="*.bmp"/>
+				<fileset dir="${wirk2.home}/greenstone2/icon" includes="icon.ico"/>
+			</copy>
+			
+			<echo>adding greenstone2.jar to the resource script as chunks</echo>
+			<rsplit
+				resource="${basedir}/installer/Greenstone-${version}-win32.jar"
+				outputDir="${basedir}/wrapped-installer/build"
+				resourceScript="${basedir}/wrapped-installer/build/wrapper.rc"
+				resourceName="JAR"
+				resourceType="JAR"
+				chunkSize="${resources.chunksize}"
+				/>
+			
+			<echo>adding ${windows-java.installer} to the copy as chunks</echo>
+			<rsplit
+				resource="${wirk2.home}/windows/wrapper/${windows-java.installer}"
+				outputDir="${basedir}/wrapped-installer/build"					
+				resourceScript="${basedir}/wrapped-installer/build/wrapper.rc"
+				resourceName="JAVA"
+				resourceType="EXE"
+				chunkSize="${resources.chunksize}"/>
+			
+			<echo>resource compiling the generated resource script</echo>
+			<exec executable="rc" dir="${basedir}/wrapped-installer/build">
+				<arg line="wrapper.rc"/>
+			</exec>
+			
+		<!--
+			<else>
+				<echo>Resourses are up-to-date, will not compile</echo>
+			</else>
+		</if>
+		-->
+	</target>
+
+	<target name="compile-wrapper">
+		<exec executable="cl" dir="${basedir}/wrapped-installer/build">
+			<arg line="/c -GX /DWINDOWS=yes libsearch4j.cpp /out:libsearch4j.obj"/>
+		</exec>
+
+		<exec executable="cl" dir="${basedir}/wrapped-installer/build">
+			<arg line="/c -GX /DWINDOWS=yes wrapper.cpp /out:wrapper.obj"/>
+		</exec>
+	</target>
+	
+	<target name="link-wrapper">
+		<exec executable="link" dir="${basedir}/wrapped-installer/build">
+			<arg line="/OUT:..\..\products\Greenstone-${version}-win32.exe gdi32.lib advapi32.lib shell32.lib user32.lib libsearch4j.obj wrapper.obj wrapper.res"/>
+		</exec>
+	</target>
+
+</project>
Index: /branches/rk-oran/wirk2/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/wirk2/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Greenstone@version@ Installer"
+			windowIcon="/resources/icon.png"
+			defaultImageResource="/resources/header.png"
+			minJavaVersion="1.4">
+
+	<!-- select language page -->
+	<page type="input" name="language-selector" displayText="">
+		<comment name="language-selector-explanation"/>
+		<select property="language" defaultValue="en" displayText="" useAsLocale="true">
+			<option value="en" text="English"/>
+			<option value="fr" text="FranÃ§ais (French)"/>
+			<option value="es" text="EspaÃ±ol (Spanish)"/>
+			<option value="de" text="Deutsch (German)"/>
+			<option value="ru" text="ÑÑÑÑÐºÐžÐ¹ ÑÐ·ÑÐº (Russian)"/>
+			<option value="zh" text="äž­æ (Chinese)"/>
+			<option value="ar" text="Arabic"/>
+		</select>
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="intro" displayText="">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end binary release -->
+
+	<!-- start source release -->
+	<page type="input" name="intro" displayText="" target="Source Release">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end source release -->
+
+	<!--  type="license" shows a license page to click through -->
+	<page type="license" name="license" resource="/LICENSE.txt"  displayText="" />
+
+	<!--  install destination page -->
+	<page type="input" name="destination" displayText="">
+	
+<!-- Because of Vista UAC related issues, it is now preferred to install Greenstone where the current user has full privileges -->
+		<directory property="installDir"
+			defaultValue="${env.HOMEDRIVE}\${env.HOMEPATH}\Greenstone2"
+			create="true"
+			displayText="" />
+
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="selector" displayText="">
+		<comment name="choose-components"/>
+
+		<target
+			target="Looking For Previous Installation"
+			diskRequirement="x"
+			defaultValue="true"
+			displayText="x"
+			force="true"
+			hidden="true"/>
+
+		<target
+			target="Installing Core System"
+			diskRequirement="@component.size.core@"
+			displayText=""
+			defaultValue="true"
+			force="true"/>
+
+		<target
+			target="Installing Start Menu Shortcuts"
+			diskRequirement="~10 KB"
+			defaultValue="true"
+			displayText=""/>
+
+		<!-- start bundled components -->
+		<target
+			target="Installing ImageMagick"
+			diskRequirement="@component.size.imagemagick@"
+			defaultValue="true" 
+			displayText=""/>
+
+		<target
+			target="Installing Ghostscript"
+			diskRequirement="@component.size.ghostscript@"
+			defaultValue="true" 
+			displayText=""/>
+		<!-- end bundled components -->
+		
+	</page>
+
+	<page type="input" name="admin-password" displayText="">
+		<comment name="admin-password-expl"/>
+<!--		<validated property="admin.password" defaultValue="" displayText="" regex="^.{3,20}$"/>-->
+		<text property="admin.password" defaultValue="admin" displayText=""/>
+	</page>
+	<!-- end binary release -->
+
+	<page type="progress" name="progress" showTargets="true" displayText=""/>
+
+</installer>
Index: /branches/rk-oran/wirk2/installer/build.xml
===================================================================
--- /branches/rk-oran/wirk2/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/wirk2/installer/build.xml	(revision 18906)
@@ -0,0 +1,222 @@
+<?xml version="1.0"?>
+<!--
+This is the build.xml run by AntInstaller for the installer
+-->
+
+<project name="Installation">
+
+	<!-- classpath -->
+	<path id="project.classpath"><pathelement path="${antinstaller.jar}"/></path>
+
+	<!-- custom tasks -->
+	<taskdef name="shortcut" classname="com.orangevolt.tools.ant.Win32ShortcutTask" classpathref="project.classpath"/> 
+	<taskdef name="winprops" classname="com.orangevolt.tools.ant.Win32PropertiesTask" classpathref="project.classpath"/> 
+	<typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/>
+	<typedef name="getfreepath" classname="org.greenstone.anttasks.GetFreePath" classpathref="project.classpath"/>
+	<typedef name="adduser" classname="org.greenstone.anttasks.AddGreenstoneUserToDatabase" classpathref="project.classpath"/>
+	
+	<!-- pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+	
+	<!-- determine if there is an existing installation in the installDir-->
+	<available file="${installDir}\etc\installation.properties" property="is.overinstall"/>
+
+	<!-- load windows properties -->
+	<winprops/>
+	
+	<!-- create a local installDir String -->
+	<path id="installDir.path"><pathelement location="${installDir}"/></path>
+	<property name="installDir.local" refid="installDir.path"/>
+	
+	<target name="Looking For Previous Installation" if="is.overinstall">
+		<property file="${installDir}\etc\installation.properties"/>
+		<delete dir="${installed.startmenu.path}" failonerror="false"/>
+	</target>
+
+	<target name="Installing Core System">
+
+		<!-- figure out the start menu path -->
+		<getfreepath path="${win32.personal.programs_menu}\Greenstone-@version@" property="startmenu.path"/>		
+		<path id="startmenu.path.path" path="${startmenu.path}"/>
+		<pathconvert targetos="unix" property="startmenu.path.unix" refid="startmenu.path.path"/>
+
+		<echo>basedir: ${basedir}</echo>
+		<echo>installDir: ${installDir}</echo>
+		<echo>antinstaller.jar: ${antinstaller.jar}</echo>
+		<echo>startmenu.path: ${startmenu.path}</echo>
+
+		<!-- create the installation directory -->
+		<echo message="Creating Installation directory"/>
+		<mkdir dir="${installDir}"/>
+		
+		<!-- extract 7za tool -->
+		<unzip src="${antinstaller.jar}" dest="${basedir}">
+			<patternset><include name="7za.exe"/></patternset>
+		</unzip>
+
+		<!-- install files -->
+		<echo message="Installing Core Component"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="core.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x core.lzma"/></exec>
+		<!--<sevenzip task="decode" input="${basedir}/core.lzma" output="${basedir}/core.comp"/>-->
+		<delete file="core.lzma"/>
+		<unzip src="${basedir}/core.comp" dest="${installDir}"/>
+		<delete file="core.comp"/>
+
+		<!-- jre -->
+		<mkdir dir="${installDir}/packages"/>
+		<copy todir="${installDir}/packages/jre" failonerror="false">
+			<fileset dir="../@windows-java.extracted@"/>
+		</copy>
+		
+		<echo message="Creating admin and demo users"/>
+		<adduser
+			txt2db="${installDir}/bin/windows/txt2db"
+			usersDb="${installDir}/etc/users.db"
+			username="admin"
+			password="${admin.password}"
+			groups="administrator,colbuilder"
+			comment="created at install time"/>
+		<adduser
+			txt2db="${installDir}/bin/windows/txt2db"
+			usersDb="${installDir}/etc/users.db"
+			username="demo"
+			password="demo"
+			groups="demo"
+			comment="Dummy 'demo' user with password 'demo' for authen-e collection"/>
+
+		<echo message="Creating installation properties file"/>
+		<echo file="${installDir}\etc\installation.properties">installed.startmenu.path:${startmenu.path.unix}</echo>
+		
+		<echo message="Finished"/>
+		
+	</target>
+
+	<target name="Installing ImageMagick">
+		<echo message="Installing ImageMagick"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="imagemagick.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x imagemagick.lzma"/></exec>
+		<!--<sevenzip task="decode" input="${basedir}/imagemagick.lzma" output="${basedir}/imagemagick.comp"/>-->
+		<delete file="imagemagick.lzma"/>
+		<unzip src="${basedir}/imagemagick.comp" dest="${installDir}/bin/windows"/>
+		<delete file="imagemagick.comp"/>
+	</target>
+
+	<target name="Installing Ghostscript">
+		<echo message="Installing GhostScript"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="ghostscript.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x ghostscript.lzma"/></exec>
+		<!--<sevenzip task="decode" input="${basedir}/ghostscript.lzma" output="${basedir}/ghostscript.comp"/>-->
+		<delete file="ghostscript.lzma"/>
+		<unzip src="${basedir}/ghostscript.comp" dest="${installDir}/bin/windows"/>
+		<delete file="ghostscript.comp"/>
+	</target>
+	
+	<!-- Start menu shortcuts -->
+	<target name="Installing Start Menu Shortcuts">
+
+		<mkdir dir="${startmenu.path}\Documentation"/>
+		
+		<shortcut
+			file="${startmenu.path}\Greenstone Server.lnk"
+			execute="${installDir}\server.exe"
+			workingDirectory="${installDir}"
+			iconFile="${installDir}\images\serverico.ico"
+			iconIndex="0" />
+
+		<shortcut
+			file="${startmenu.path}\Librarian Interface (GLI).lnk"
+			execute="${installDir}\gli\gli.bat"
+			workingDirectory="${installDir}\gli"
+			iconFile="${installDir}\images\icon.ico"
+			iconIndex="0" />
+
+		<shortcut
+			file="${startmenu.path}\Metadata Set Editor (GEMS).lnk"
+			execute="${installDir}\gli\gems.bat"
+			workingDirectory="${installDir}\gli"
+			iconFile="${installDir}\images\gems.ico"
+			iconIndex="0" />
+
+		<shortcut
+			file="${startmenu.path}\Uninstall.lnk"
+			execute="${installDir}\Uninstall.bat"
+			workingDirectory="${installDir}"
+			iconFile="${installDir}\images\uninstall.ico"
+			iconIndex="0" />
+
+		<shortcut
+			file="${startmenu.path}\Documentation\READMEen.lnk"
+			execute="${installDir}\READMEen.txt" />
+
+		<shortcut
+			file="${startmenu.path}\Documentation\Greenstone Wiki.url"
+			url="http://wiki.greenstone.org" />
+
+			<shortcut
+			file="${startmenu.path}\Documentation\Greenstone Website.url"
+			url="http://www.greenstone.org" />
+			
+<!--
+		<shortcut
+			file="${startmenu.path}\Documentation\READMEes.lnk"
+			execute="${installDir}\READMEes.txt" />
+
+		<shortcut
+			file="${startmenu.path}\Documentation\READMEar.lnk"
+			execute="${installDir}\READMEar.txt" />
+
+		<shortcut
+			file="${startmenu.path}\Documentation\READMEfr.lnk"
+			execute="${installDir}\READMEfr.txt" />
+
+		<shortcut
+			file="${startmenu.path}\Documentation\READMEru.lnk"
+			execute="${installDir}\READMEru.txt" />
+		-->
+
+	</target>
+
+	<target name="Source Release" depends="">
+
+		<!-- create the installation directory -->
+		<echo message="Creating Installation directory"/>
+		<mkdir dir="${installDir}"/>
+
+		<!-- extract 7za tool -->
+		<unzip src="${antinstaller.jar}" dest="${basedir}">
+			<patternset><include name="7za.exe"/></patternset>
+		</unzip>
+
+		<echo>Installing Source Release</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="source-release.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x source-release.lzma"/></exec>
+		<delete file="source-release.lzma"/>
+		<unzip src="${basedir}/source-release.comp" dest="${installDir}"/>
+		<delete file="source-release.comp"/>
+
+		<!-- figure out the start menu path -->
+		<getfreepath path="${win32.personal.programs_menu}\Greenstone-@version@" property="startmenu.path"/>		
+		<path id="startmenu.path.path" path="${startmenu.path}"/>
+		<pathconvert targetos="unix" property="startmenu.path.unix" refid="startmenu.path.path"/>
+
+		<echo message="Filling in concrete values in config files"/>
+		<rsr file="${installDir}/setup.bat" pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
+		<rsr file="${installDir}/cgi-bin/gsdlsite.cfg">
+			<job pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
+			<job pattern="^(#?httpprefix).*" replacement="$1 /gsdl"/>
+			<job pattern="^(#?httpimg).*" replacement="$1 /gsdl/images"/>
+		</rsr>
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/etc/usage.txt"></echo>
+				
+		<echo message="Creating installation properties file"/>
+		<echo file="${installDir}\etc\installation.properties">installed.startmenu.path:${startmenu.path.unix}</echo>
+		
+		<echo message="Finished"/>
+		
+	</target>
+
+
+</project>
Index: /branches/rk-oran/wirk2/resources/COPYING
===================================================================
--- /branches/rk-oran/wirk2/resources/COPYING	(revision 18906)
+++ /branches/rk-oran/wirk2/resources/COPYING	(revision 18906)
@@ -0,0 +1,344 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: /branches/rk-oran/wirk2/resources/compile.bat
===================================================================
--- /branches/rk-oran/wirk2/resources/compile.bat	(revision 18906)
+++ /branches/rk-oran/wirk2/resources/compile.bat	(revision 18906)
@@ -0,0 +1,4 @@
+call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
+nmake /f win32.mak clean
+nmake /f win32.mak
+nmake /f win32.mak LOCAL_LIBRARY=1
Index: /branches/rk-oran/wirk2/resources/llssite.cfg
===================================================================
--- /branches/rk-oran/wirk2/resources/llssite.cfg	(revision 18906)
+++ /branches/rk-oran/wirk2/resources/llssite.cfg	(revision 18906)
@@ -0,0 +1,12 @@
+[gsdl]
+enterlib=/gsdl
+gsdlhome=@gsdlhome@
+gdbmhome=@gsdlhome@
+logfilename=@gsdlhome@\gsdl.log
+keeplog=0
+consolelog=0
+portnumber=80
+autoenter=0
+browser=3
+start_browser=1
+address_resolution_method=1
Index: /branches/rk-oran/wirk2/src/make.bat
===================================================================
--- /branches/rk-oran/wirk2/src/make.bat	(revision 18906)
+++ /branches/rk-oran/wirk2/src/make.bat	(revision 18906)
@@ -0,0 +1,2 @@
+cl -GX wirk2.cpp -o ..\bin\wirk2.exe 
+del wirk2.obj
Index: /branches/rk-oran/wirk2/src/wirk2.cpp
===================================================================
--- /branches/rk-oran/wirk2/src/wirk2.cpp	(revision 18906)
+++ /branches/rk-oran/wirk2/src/wirk2.cpp	(revision 18906)
@@ -0,0 +1,136 @@
+#include <windows.h>
+
+#include <fstream>
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+void replace_all ( std::string & str, std::string const & pattern, std::string const & replacement ) {
+
+	std::string::size_type start = str.find( pattern, 0 );
+
+	while ( start != str.npos ) {
+		str.replace( start, pattern.size(), replacement );
+		start = str.find( pattern, start+replacement.size() );
+	}
+
+}
+
+void show_help() {
+
+	cout << "Wirk2 - Windows Release Kit for Greenstone2" << endl;
+	cout << "Helps you to create releases from the Repository" << endl << endl;
+
+	cout << "usage: wirk2 [args]" << endl;
+	cout << "	-sim" << endl;
+	cout << "		simulation only, don't actually do anything" << endl << endl;
+
+	cout << "	-help" << endl;
+	cout << "		show this help screen" << endl << endl;
+
+	cout << "	-from <target>" << endl;
+	cout << "		start execution from the target with the given target address" << endl << endl;
+
+	cout << "	-to <target>" << endl;
+	cout << "		stop execution just before the target with the given target address" << endl << endl;
+
+	cout << "	-descend <target>" << endl;
+	cout << "		execute only the target with the given address, including subtargets" << endl << endl;
+
+	cout << "	-cp" << endl;
+	cout << "		show the classpath being used by wirk2" << endl << endl;
+
+}
+
+
+int main(int argc, char** argv ) {
+
+	string classpath, command;
+	
+	//some checks
+	bool ok = true;
+	if ( getenv( "JAVA_HOME" ) == NULL ) {
+		cerr << "Please set JAVA_HOME before running wirk2" << endl;
+		ok = false;
+	}
+	if ( getenv( "WIRK2_HOME" ) == NULL ) {
+		cerr << "Please set WIRK2_HOME before running wirk2" << endl;
+		ok = false;
+	}
+	if ( !ok ) {
+		return -1;
+	}
+	//string PWD = getenv( "CD" );
+
+	//load environment variables
+	string JAVA_HOME = getenv( "JAVA_HOME" );
+	string WIRK2_HOME = getenv( "WIRK2_HOME" );
+
+	//get the pwd
+	string pwd;
+	system( "CD > cd.dat" );
+	ifstream file( "cd.dat" ) ;
+	getline(file, pwd);
+	file.close();
+	system( "del cd.dat" );
+		
+	//set the classpath
+	classpath = pwd + "\\installer\\classes;" + JAVA_HOME + "\\lib\\tools.jar;" + WIRK2_HOME + "\\lib\\serializer.jar;" + WIRK2_HOME + "\\lib\\xalan.jar;" + WIRK2_HOME + "\\lib\\xercesImpl.jar;" + WIRK2_HOME + "\\lib\\xml-apis.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-antlr.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-apache-bcel.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-apache-bsf.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-apache-log4j.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-apache-oro.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-apache-regexp.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-apache-resolver.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-commons-logging.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-commons-net.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-icontract.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-jai.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-javamail.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-jdepend.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-jmf.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-jsch.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-junit.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-launcher.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-netrexx.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-nodeps.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-starteam.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-stylebook.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-swing.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-trax.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-vaj.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-weblogic.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-xalan1.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\ant-xslp.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\xercesImpl.jar;" + WIRK2_HOME + "\\packages\\ant\\lib\\xml-apis.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\ai-icons-amaranth.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\ai-icons-bluecurve.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\ai-icons-crystalsvg.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\ai-icons-eclipse.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\ai-icons-krystaline.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\ant-installer-ext.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\ant-installer.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\jgoodies-edited-1_2_2.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\xercesImpl.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\lib\\xml-apis.jar;" + WIRK2_HOME + "\\packages\\ant-installer\\classes";
+	putenv( ("CLASSPATH=" + classpath).c_str() );
+
+	//check that it worked
+	//string changed_classpath = getenv("CLASSPATH");
+	//cout << "classpath: " << changed_classpath << endl;
+	
+	//create the command
+	command = WIRK2_HOME + "\\packages\\ant\\bin\\ant.bat -f " + WIRK2_HOME + "\\ant-scripts\\build.xml -addressing -Dwirk2.home=" + WIRK2_HOME;
+	//pass on the arguments
+	string a;
+	bool simMode = false;
+	for ( int i=0; i < argc; i++ ) {
+		a = argv[i];
+			
+		if ( a.compare("-help") == 0 || a.compare("--help") == 0 ) {
+			show_help();
+			return 0;
+		} else if ( a.compare("-cp") == 0 || a.compare("--cp") == 0 ) {
+			cout << classpath;
+			return 0;
+		} else if ( a.compare("-sim") == 0) {
+			command = command + " " + a;
+			simMode = true;
+		} else {
+			command = command + " " + a;
+		}
+
+	}
+
+	//use forward slashes for everything else
+	//replace_all( pwd, "\\", "/" );
+	
+	//set the basedir in the command
+	command = command + " -Dbasedir=";
+	command = command + pwd;
+
+
+	
+	//command = command + ".";
+
+	cout
+		<< "O-----------------------------------------O" << endl
+		<< "|                                         |" << endl
+		<< "|   WiRK2                                 |" << endl
+		<< "|   Windows Release Kit for Greenstone2   |" << endl
+		<< "|                                         |" << endl
+		<< "O-----------------------------------------O" << endl
+		;
+	
+	cout << "pwd: " << pwd << endl;
+	cout << "command: " << command << endl;
+
+	system( command.c_str() );
+	
+	return 0;
+
+}
Index: /branches/rk-oran/wirk3/ant-scripts/build.xml
===================================================================
--- /branches/rk-oran/wirk3/ant-scripts/build.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/ant-scripts/build.xml	(revision 18906)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+		.......................................................... 
+		February 2008
+		Windows Release Kit for greenstone3 (wirk3)
+		Oran Fry
+		..........................................................
+-->
+
+<project name="wirk3-build" default="wirk3">
+
+	<!-- CONSTANTS -->
+
+	<!-- the size of the resourse chunks to be put in the wrapped installer -->
+	<property name="resources.chunksize" value="8388608"/><!-- 8MiB -->
+
+	<!-- for the benefit of the shared scripts, set release-kit home -->
+	<property name="rk.name" value="wirk3"/>
+	<property name="rk.home" value="${wirk3.home}" />
+	<property name="rk.os" value="windows" />
+	<property name="os.suffix" value="win32"/>
+
+	<!-- IMPORT OTHER ANT SCRIPTS -->
+	<import file="shared-ant-scripts/init.xml"/>
+	<import file="shared-ant-scripts/operations-on-gli.xml"/>
+	<import file="../greenstone3/ant-scripts/rk3-targets.xml"/>
+
+	<import file="compile.xml"/>
+	<import file="create-distribution.xml"/>
+	<import file="create-components.xml"/>
+	<import file="create-installer.xml"/>
+	<import file="wrap.xml"/>
+	
+	<!-- THE MAIN TARGET -->
+	<target name="wirk3" depends="init">
+		<antcall target="compile"/>
+		<antcall target="create-distribution"/>
+		<antcall target="create-components"/>
+		<antcall target="create-installer"/>
+		<antcall target="wrap"/>
+	</target>
+	
+	
+
+</project>
Index: /branches/rk-oran/wirk3/ant-scripts/compile.xml
===================================================================
--- /branches/rk-oran/wirk3/ant-scripts/compile.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/ant-scripts/compile.xml	(revision 18906)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk3-compile" default="compile">
+
+	<target name="compile">
+		<antcall target="checkout-greenstone3" />
+		<antcall target="greenstone3-set-version-numbers"><param name="greenstone3basedir" value="${basedir}/compiled" /></antcall>
+		<ant target="prepare-windows" dir="compiled" antfile="${wirk3.home}/ant-scripts/operations-on-gs3home.xml" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+			<property name="branch.revision" value="${branch.revision}"/>
+		</ant>
+		<ant target="build-windows" dir="compiled" antfile="${wirk3.home}/ant-scripts/operations-on-gs3home.xml" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+			<property name="branch.revision" value="${branch.revision}"/>
+		</ant>
+		<antcall target="compile-uninstaller" /> <!-- from rk3-targets -->
+		<antcall target="prepare-documentation" />
+	</target>
+
+	<target name="checkout-greenstone3">
+		<svn>
+			<checkout url="${svn.root}/greenstone3/${branch.path}" destPath="compiled" revision="${branch.revision}"/>
+		</svn>
+	</target>
+
+	<target name="tweak-configure-scripts">
+		<antcall target="mgpp-add-static" />
+		<antcall target="mg-add-static" />
+		<antcall target="gs2buildextra-add-static" />
+	</target>
+
+	<target name="prepare-documentation">
+		<mkdir dir="compiled/gsdl-manuals"/>
+		<svn>
+			<checkout url="${svn.root}/documentation/${branch.path}/manuals" destPath="compiled/gsdl-manuals/manuals" revision="${branch.revision}"/>
+			<checkout url="${svn.root}/documentation/${branch.path}/shared" destPath="compiled/gsdl-manuals/shared" revision="${branch.revision}"/>
+		</svn>
+		<javac srcdir="compiled/gsdl-manuals/shared" destdir="compiled/gsdl-manuals/shared" debug="on"><include name="*.java"/></javac>
+		<unzip src="compiled/gsdl-manuals/shared/fop.zip" dest="compiled/gsdl-manuals/shared"/>
+
+		<echo>Define Classpath</echo>
+		<path id="documentation.compile.classpath">
+			<fileset dir="compiled/gsdl-manuals">
+				<include name="**/*.jar"/>
+			</fileset>
+			<pathelement path="compiled/gsdl-manuals/shared"/>
+			<pathelement path="compiled/gsdl-manuals/manuals"/>
+			<pathelement path="compiled/gli/classes"/>
+		</path>
+					
+		<echo>Apply XSLT</echo>
+		<java classname="org.apache.xalan.xslt.Process" classpathref="documentation.compile.classpath" fork="true">
+			<jvmarg value="-DGSDLHOME=${basedir}/greenstone" />
+			<arg value="-IN"/><arg file="compiled/gli/help/en/help.xml" />
+			<arg value="-XSL"/><arg file="compiled/gsdl-manuals/manuals/processing/gen-gli-help-to-manual-chapter.xsl" />
+			<arg value="-OUT"/><arg file="compiled/gsdl-manuals/manuals/xml-source/en/help-en.xml" />
+		</java>
+					
+		<echo>Run generate-pdf.bat</echo>
+		<exec dir="${basedir}\compiled/gsdl-manuals/manuals" executable="cmd">
+			<arg value="/C" />
+			<arg file="${basedir}/compiled/gsdl-manuals/manuals/generate-pdf.bat" />
+			<arg value="u" />
+			<arg value="en" />
+		</exec>
+	</target>
+
+</project>
Index: /branches/rk-oran/wirk3/ant-scripts/create-components.xml
===================================================================
--- /branches/rk-oran/wirk3/ant-scripts/create-components.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/ant-scripts/create-components.xml	(revision 18906)
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk3-create-components" default="create-components">
+
+	<!-- create components from the distributions folder -->
+
+	<!-- 1st level -->
+	<target name="create-components">
+		<antcall target="prepare-components" />
+		<antcall target="compress-components" />
+	</target>
+
+	<!-- 2nd level -->
+	<target name="prepare-components">
+		<antcall target="prepare-core-component" />
+		<antcall target="prepare-imagemagick-component" />
+		<antcall target="prepare-ghostscript-component" />
+		<antcall target="prepare-ant-component" />
+		<antcall target="prepare-tomcat-component" />
+
+		<antcall target="prepare-sourcecode-component" />
+
+	</target>
+	
+	<target name="compress-components">
+		<antcall target="compress-core-component" />
+		<antcall target="compress-imagemagick-component" />
+		<antcall target="compress-ghostscript-component" />
+		<antcall target="compress-ant-component" />
+		<antcall target="compress-tomcat-component" />
+
+		<antcall target="compress-zipped-binary-release"><param name="format" value="zip"/></antcall> <!-- from init -->
+
+	</target>
+	
+	<!-- 3rd level -->
+	<target name="prepare-core-component">
+
+		<!-- delete old stuff to create new components -->
+		<delete dir="components/tmp/core" quiet="true"/>
+		<mkdir dir="components/tmp/core"/>
+				
+		<copy todir="components/tmp/core" overwrite="true">
+			<fileset dir="distributions/web">
+				<include name="**/*"/>
+
+				<!-- exclude ghostscript -->
+				<exclude name="gs2build/bin/windows/ghostscript/**/*"/>
+				<exclude name="gs2build/bin/windows/ghostscript"/>
+
+				<!-- exclude imagemagick -->
+				<exclude name="gs2build/bin/windows/imagemagick/**/*"/>
+				<exclude name="gs2build/bin/windows/imagemagick"/>
+
+				<!-- exclude sourcecode -->
+				<exclude name="src/**/*"/>
+				<exclude name="src"/>
+				<exclude name="gs2build/common-src/**/*"/>
+				<exclude name="gs2build/common-src"/>
+				<exclude name="gs2build/build-src/**/*"/>
+				<exclude name="gs2build/build-src"/>
+				<exclude name="gs2build/runtime-src/**/*"/>
+				<exclude name="gs2build/runtime-src"/>
+				
+				<!-- exclude ant -->
+				<exclude name="packages/ant/**/*"/>
+				<exclude name="packages/ant"/>
+
+				<!-- exclude tomcat -->
+				<exclude name="packages/tomcat/**/*"/>
+				<exclude name="packages/tomcat"/>
+
+			</fileset>
+		</copy>
+				
+		<zip destfile="components/core.comp" basedir="components/tmp/core" compress="false" />
+	</target>
+	
+	
+	<target name="compress-core-component">
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 core.lzma core.comp"/></exec>
+	</target>
+	
+	
+	
+	<target name="prepare-imagemagick-component">
+		<delete dir="components/tmp/imagemagick" quiet="true"/>
+		<mkdir dir="components/tmp/imagemagick"/>
+		<copy todir="components/tmp/imagemagick" overwrite="true">
+			<fileset dir="distributions/web/gs2build/bin/windows/">
+				<include name="imagemagick/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/imagemagick.comp" basedir="components/tmp/imagemagick" compress="false" />
+	</target>
+		
+	<target name="compress-imagemagick-component">
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 imagemagick.lzma imagemagick.comp"/></exec>
+	</target>
+	
+	
+	
+	<target name="prepare-ghostscript-component">
+		<delete dir="components/tmp/ghostscript" quiet="true"/>
+		<mkdir dir="components/tmp/ghostscript"/>
+		<copy todir="components/tmp/ghostscript" overwrite="true">
+			<fileset dir="distributions/web/gs2build/bin/windows/">
+				<include name="ghostscript/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/ghostscript.comp" basedir="components/tmp/ghostscript" compress="false" />
+	</target>
+		
+	<target name="compress-ghostscript-component">
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 ghostscript.lzma ghostscript.comp"/></exec>
+	</target>
+	
+	<target name="prepare-sourcecode-component">
+		<delete dir="components/tmp/sourcecode" quiet="true"/>
+		<mkdir dir="components/tmp/sourcecode"/>
+		<copy todir="components/tmp/sourcecode" overwrite="true">
+				<fileset dir="distributions/web">
+					<include name="src/**/*"/>
+					<include name="gs2build/common-src/**/*"/>
+					<include name="gs2build/build-src/**/*"/>
+					<include name="gs2build/runtime-src/**/*"/>
+				</fileset>
+		</copy>
+
+		<mkdir dir="products"/>
+		<zip destfile="products/Greenstone-${version}-${os.suffix}-sourcecode-component.zip" basedir="components/tmp/sourcecode" compress="true"/>
+	</target>
+		
+	<target name="compress-sourcecode-component">
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 sourcecode.lzma sourcecode.comp"/></exec>
+	</target>
+	
+	<target name="prepare-ant-component">
+		<delete dir="components/tmp/ant" quiet="true"/>
+		<mkdir dir="components/tmp/ant"/>
+
+		<copy todir="components/tmp/ant" overwrite="true">
+			<fileset dir="distributions/web/packages">
+				<include name="ant/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/ant.comp" basedir="components/tmp/ant" compress="false" />
+	</target>
+		
+	<target name="compress-ant-component">
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 ant.lzma ant.comp"/></exec>
+	</target>
+		
+	<target name="prepare-tomcat-component">
+		<delete dir="components/tmp/tomcat" quiet="true"/>
+		<mkdir dir="components/tmp/tomcat"/>
+		<copy todir="components/tmp/tomcat" overwrite="true">
+			<fileset dir="distributions/web/packages">
+				<include name="tomcat/**/*"/>
+			</fileset>
+		</copy>
+		
+		<zip destfile="components/tomcat.comp" basedir="components/tmp/tomcat" compress="false" />
+	</target>
+		
+	<target name="compress-tomcat-component">
+		<exec executable="7z.exe" dir="components"><arg line="a -t7z -mx=9 tomcat.lzma tomcat.comp"/></exec>
+	</target>	
+
+</project>
Index: /branches/rk-oran/wirk3/ant-scripts/create-distribution.xml
===================================================================
--- /branches/rk-oran/wirk3/ant-scripts/create-distribution.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/ant-scripts/create-distribution.xml	(revision 18906)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk3-create-distribution" default="create-distribution">
+
+	<target name="create-distribution">
+
+		<!-- create distribution -->
+		<antcall target="export-greenstone3-gli" />
+		<antcall target="greenstone3-set-version-numbers"><param name="greenstone3basedir" value="${basedir}/distributions/web" /></antcall>
+		<antcall target="gli-set-version-numbers"><param name="glibasedir" value="${basedir}/distributions/web/gli" /></antcall>
+		<antcall target="insert-user-manual"/>
+		<antcall target="insert-uninstaller"><param name="script-format" value="bat"/></antcall> <!-- from rk3-targets -->
+
+		<ant target="create-distribution-1" antfile="${wirk3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+			<property name="branch.revision" value="${branch.revision}"/>
+		</ant>
+
+		<antcall target="insert-icon"/>
+
+		<ant target="create-distribution-2" antfile="${wirk3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+			<property name="branch.revision" value="${branch.revision}"/>
+		</ant>
+		<ant target="create-distribution-3" antfile="${wirk3.home}/ant-scripts/operations-on-gs3home.xml" dir="distributions/web" inheritAll="false">
+			<property name="app.version" value="${version}"/>
+			<property name="branch.path" value="${branch.path}"/>
+			<property name="branch.revision" value="${branch.revision}"/>
+		</ant>
+		<antcall target="copy-over-build-xml" />
+		<antcall target="insert-compiled-binaries"/>
+
+	</target>
+
+	<target name="export-greenstone3-gli">
+		<mkdir dir="distributions"/>
+		<delete dir="distributions/web"/>
+		<svn>
+			<export srcurl="${svn.root}/greenstone3/${branch.path}" destPath="distributions/web" revision="${branch.revision}"/>
+			<export srcurl="${svn.root}/gli/${branch.path}" destPath="distributions/web/gli" revision="${branch.revision}"/>
+		</svn>
+	</target>
+
+	<target name="copy-over-build-xml">
+		<if><bool><istrue value="${execute}"/></bool>
+			<move file="distributions/web/modified-build.xml" tofile="distributions/web/build.xml"/>
+		</if>
+	</target>
+
+	<target name="insert-user-manual">
+		<copy file="compiled/gsdl-manuals/manuals/build/en/pdf/User_en.pdf" tofile="distributions/web/docs/manual/gs2_user_en.pdf"/>
+	</target>
+
+	<target name="insert-compiled-binaries">
+
+		<delete dir="distributions/web/lib/jni"/>
+		<copy todir="distributions/web/lib/jni"><fileset dir="compiled/lib/jni"/></copy>
+		
+		<delete dir="distributions/web/gs2build/bin/windows"/>
+		<copy todir="distributions/web/gs2build/bin/windows"><fileset dir="compiled/gs2build/bin/windows"/></copy>
+
+		<delete dir="distributions/web/gs2build/bin/java"/>
+		<copy todir="distributions/web/gs2build/bin/java"><fileset dir="compiled/gs2build/bin/java"/></copy>
+
+		<copy todir="distributions/web/bin" file="compiled/bin/search4j.exe"/>
+	</target>
+	
+	<target name="insert-icon">
+		<copy
+			file="${wirk3.home}/greenstone3/icon/icon.ico"
+			tofile="distributions/web/resources/images/gs3.ico"/>
+	</target>
+
+</project>
Index: /branches/rk-oran/wirk3/ant-scripts/create-installer.xml
===================================================================
--- /branches/rk-oran/wirk3/ant-scripts/create-installer.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/ant-scripts/create-installer.xml	(revision 18906)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk3-create-installer" default="create-installer">
+
+	<target name="create-installer">
+		<antcall target="copy-installer-files"/>
+		<antcall target="make-installer-files-concrete"><param name="java.os" value="windows"/></antcall> <!-- from init -->
+		<antcall target="compile-binary-installer"/> <!-- from init -->
+		<antcall target="compile-minimal-installer"/> <!-- from init -->
+	</target>
+
+	<target name="copy-installer-files" depends="copy-main-installer-files"> <!-- from init -->
+
+		<!-- some canned resources for the installer -->
+		<copy todir="${basedir}/installer/classes" overwrite="true">
+			<fileset dir="${wirk3.home}/packages/7za" includes="7za.exe"/>
+			<fileset file="${basedir}/distributions/web/LICENSE.txt"/>
+		</copy>
+
+		<!-- some classes from jars, unpacked to be repacked into installer -->
+		<unjar src="${wirk3.home}/ant-scripts/tasks/greenstone/anttasks.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+		
+		<!--
+		<unjar src="${wirk3.home}/ant-scripts/tasks/orangevolt/roxes-win32forjava-1.1.1.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+		
+		<unjar src="${wirk3.home}/ant-scripts/tasks/orangevolt/orangevolt-ant-tasks-1.3.8.jar" dest="${basedir}/installer/classes"/>
+		<delete dir="${basedir}/installer/classes/META-INF"/>
+		-->
+
+	</target>
+	
+</project>
Index: /branches/rk-oran/wirk3/ant-scripts/operations-on-gs3home.xml
===================================================================
--- /branches/rk-oran/wirk3/ant-scripts/operations-on-gs3home.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/ant-scripts/operations-on-gs3home.xml	(revision 18906)
@@ -0,0 +1,256 @@
+<?xml version="1.0"?>
+
+<!-- ====================================================================== 
+     March 2005                                                    
+
+     Greenstone3 build and install script
+                   
+     kjdon                                                                
+     ====================================================================== -->
+
+<project name="opeations-on-gs3home" default="usage">
+  
+	<!-- include standard build file -->
+	<import file="${basedir}/build.xml"/>
+
+	<property name="documented.collections.home" value="/home/nzdl/for-distributions/collect"/>
+	<property name="greenstone3-change-date" value="Tue Feb 20 12:13:42 NZDT 2007"/>
+	<property name="gs2build-change-date" value="Wed Dec 13 10:35:57 NZDT 2006"/>
+
+	<!-- ====================== DISTRIBUTION Targets ========================= -->
+
+	<!-- these two, do we need tomcat and axis for compilation??-->
+	<!-- Create the binaries for windows distribution -->
+	<target name="prepare-windows" depends="init">
+		<antcall target="checkout-gs2build"/>
+		<antcall target="checkout-gli"/>
+		<antcall target="unzip-windows-packages"/>
+		<antcall target="checkout-winbin"/>
+		<antcall target="get-perl-for-windows"/>
+	</target>
+  
+	<target name="build-windows" depends="init">
+		<antcall target="svnupdate-distribution"/>
+		<antcall target="update-winbin"/>
+		<antcall target="get-windows-binaries"/>
+		<antcall target="compile-gs2build"/>
+		<antcall target="compile-packages"/>
+	</target>
+
+	
+	<target name="create-distribution-1" depends="init" description="do all the initial downloading and setting up">
+		
+		<antcall target="checkout-gs2build"/>
+		<delete file="${gli.home}/gli.sh"/>
+		<delete file="${gli.home}/gems.sh"/>
+		
+		<!-- <antcall target="unzip-windows-packages"/> do we need this? -->
+		<antcall target="prepare-tomcat"/>
+		<antcall target="prepare-axis"/>
+
+		
+		<!-- delete old axis dir -->
+		<delete dir="${packages.home}/axis"/>
+		<mkdir dir="${web.home}/applet"/>
+		<mkdir dir="${web.home}/logs"/>
+		<antcall target="prepare-ant"/>
+		<antcall target="prepare-collections"/>
+
+		<!-- get good XML-Parser - does this work? -->
+		<antcall target="get-xml-parser"/>
+
+		<delete>
+			<fileset dir="${packages.home}" includes="*.zip"/>
+		</delete>
+
+		
+		<!-- documented collections -->
+		<antcall target="get-documented-collections"/>
+
+		<delete file="${basedir}/README-CVS.txt"/>
+		<delete file="${basedir}/TODO.txt"/>
+		
+		<!-- create extra directories necessary the releases -->
+		<mkdir dir="${gs2build.home}/source"/>
+
+	</target>
+
+	<target name="create-distribution-2" description="do all the compilation">
+		<!-- compile the java stuff -->
+		<antcall target="compile-web"/>
+		<antcall target="compile-packages-and-indexers-javaonly"/>
+		<antcall target="distclean-packages"/>
+		<antcall target="compile-core"/>
+		<antcall target="compile-gli"/>
+	</target>
+
+	<target name="create-distribution-3" depends="init" description="Do the rearranging of source code etc">
+
+		<!-- put gs2build source code in a tidy place -->
+		<move todir="${gs2build.home}/source/src" failonerror="false"><fileset dir="${gs2build.home}/src" defaultexcludes="no"/></move>
+		<move todir="${gs2build.home}/source/lib" failonerror="false"><fileset dir="${gs2build.home}/lib" defaultexcludes="no"/></move>
+		<move todir="${gs2build.home}/source/packages" failonerror="false"><fileset dir="${gs2build.home}/packages" defaultexcludes="no"/></move>
+		<move todir="${gs2build.home}/source/indexers" failonerror="false"><fileset dir="${gs2build.home}/indexers" defaultexcludes="no"/></move>
+		<move file="${gs2build.home}/win32.mak" tofile="${gs2build.home}/source/win32.mak"/>
+		<!--<move file="${gs2build.home}/setup.bat" tofile="${gs2build.home}/source/setup.bat"/>-->
+		<!--<move file="${gs2build.home}/win32cfg.h" tofile="${gs2build.home}/source/win32cfg.h"/>-->
+
+		<!-- clean up -->
+		<delete includeemptydirs="true">
+			<fileset dir="${basedir}" defaultexcludes="false">
+				<include name="**/.svn/**" />
+				<include name="**/.svn/" />
+				<include name=".svn/**" />
+				<include name=".svn/" />
+			</fileset>
+		</delete>
+		<delete><fileset dir="${basedir}" includes="*.sh"/></delete>
+		<delete><fileset dir="${basedir}/gli" includes="*.sh"/></delete>
+		<delete><fileset dir="${basedir}/gs2build" includes="*.sh"/></delete>
+		<delete><fileset dir="${basedir}/bin/script" includes="*.sh"/></delete>
+
+		<delete dir="${basedir}/build"/>
+		<delete dir="${basedir}/lib/jni"/>
+		<delete dir="${basedir}/dist-resources"/>
+		<delete dir="${basedir}/gs2build/source"/>
+
+		<delete>
+			<fileset dir="${gs2build.home}">
+				<include name="config*"/>
+				<include name="ac*"/>
+				<include name="install-sh"/>
+				<include name="setup.bash"/>
+				<include name="Makefile.in"/>
+			</fileset>
+		</delete>
+
+		<!-- generate modified build.xml file -->
+		<antcall target="run-xslt-binary"/>
+
+	</target>
+
+	<!-- Supplementary targets -->
+	<target name="svnupdate-distribution" depends="init">
+		<antcall target="svnupdate-packages"/>
+		<antcall target="svnupdate-core"/>
+		<antcall target="svnupdate-gs2build"/>
+		<antcall target="svnupdate-web"/>
+	</target>
+
+	<target name="run-xslt-source" depends="init">
+		<xslt in="${basedir}/build.xml" out="${basedir}/dist-build.xml" style="${basedir}/dist-resources/convert-build-xml-source.xsl"/>
+	</target>
+  
+	<target name="run-xslt-binary" depends="init">
+		<xslt in="${basedir}/build.xml" out="${basedir}/modified-build.xml" style="${wirk3.home}/greenstone3/xsl/convert-build-xml.xsl"/>
+	</target>
+
+	<target name="compile-packages-and-indexers-javaonly" depends="init">
+		<echo>Getting Indexer Jars</echo>
+		<!-- install the jar files -->
+		<copy file="${basedir}/../../compiled/gs2build/common-src/indexers/mg/mg.jar" todir="${lib.jni}"/>
+		<copy file="${basedir}/../../compiled/gs2build/common-src/indexers/mgpp/mgpp.jar" todir="${lib.jni}"/>
+		<copy file="${basedir}/../../compiled/gs2build/common-src/indexers/lucene-gs/LuceneWrapper.jar" todir="${web.lib}"/>
+		<!-- javagdbm -->
+		<!-- install the jar file -->
+		<copy file="${basedir}/../../compiled/src/packages/javagdbm/javagdbm.jar" todir="${lib.jni}" />
+	</target>
+
+	<target name="delete-windows-files" depends="init" unless="current.os.iswindows">
+		<delete dir="${basedir}/winutil"/>
+		<delete>
+			<fileset dir="${lib.jni}" includes="*.dll"/>
+		</delete>
+	</target>
+
+	<target name="get-perl-for-windows" depends="init" if="current.os.iswindows">
+		<mkdir dir="${gs2build.home}/bin/windows"/>
+		<get src="http://www.greenstone.org/gs3files/perl-for-windows.zip" dest="${gs2build.home}/bin/windows/perl-for-windows.zip" usetimestamp="true"/>
+		<unzip src="${gs2build.home}/bin/windows/perl-for-windows.zip" dest="${gs2build.home}/bin/windows"/>
+		<delete file="${gs2build.home}/bin/windows/perl-for-windows.zip"/>
+	</target>
+
+	<!-- copy the doc eg colls from /home/nzdl - note we don't include the formatting ones -->
+	<target name="get-documented-collections" depends="init">
+		<property name="collect.home" value="${basedir}/web/sites/localsite/collect"/>
+
+		<!--    <copy todir="${collect.home}/authen-e">
+		  <fileset dir="${documented.collections.home}/authen-e"/>
+		</copy>
+		<copy todir="${collect.home}/bibliog1">
+		  <fileset dir="${documented.collections.home}/bibliog1"/>
+		</copy>
+		<copy todir="${collect.home}/bibliogr">
+		  <fileset dir="${documented.collections.home}/bibliogr"/>
+		</copy>
+		<copy todir="${collect.home}/dls-e">
+		  <fileset dir="${documented.collections.home}/dls-e"/>
+		</copy>
+		<copy todir="${collect.home}/dspace-e">
+		  <fileset dir="${documented.collections.home}/dspace-e"/>
+		</copy>
+		<copy todir="${collect.home}/gsarch-e">
+		  <fileset dir="${documented.collections.home}/gsarch-e"/>
+		</copy>
+		<copy todir="${collect.home}/image-e">
+		  <fileset dir="${documented.collections.home}/image-e"/>
+		</copy>
+		<copy todir="${collect.home}/isis-e">
+		  <fileset dir="${documented.collections.home}/isis-e"/>
+		</copy>
+		<copy todir="${collect.home}/oai-e">
+		  <fileset dir="${documented.collections.home}/oai-e"/>
+		</copy>
+		<copy todir="${collect.home}/pagedimg-e">
+		  <fileset dir="${documented.collections.home}/pagedimg-e"/>
+		</copy>
+		<copy todir="${collect.home}/wrdpdf-e">
+		  <fileset dir="${documented.collections.home}/wrdpdf-e"/>
+		</copy>
+
+		<copy todir="${collect.home}/garish">
+		  <fileset dir="${documented.collections.home}/garish"/>
+		</copy>
+		<copy todir="${collect.home}/marcexam">
+		  <fileset dir="${documented.collections.home}/marcexam"/>
+		</copy>
+		<copy todir="${collect.home}/style-e">
+		  <fileset dir="${documented.collections.home}/style-e"/>
+		</copy>
+		<copy todir="${collect.home}/wiki">
+		  <fileset dir="${documented.collections.home}/wiki"/>
+		</copy> -->
+	</target>
+
+	<target name="get-xml-parser" depends="init">
+		<get src="http://www.greenstone.org/gs3files/XML-Parser.tar.gz" dest="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" usetimestamp="true"/>
+		<untar src="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" dest="${gs2build.home}/perllib/cpan/" compression="gzip"/>
+		<delete file="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz"/>
+	</target>
+
+	<!-- new targets to go in distribution build.xml files -->
+
+	<!-- new usage target for binary release -->
+	<target name="usage-for-binary-dist" description="Print a help message">
+		<echo message="  Execute 'ant -projecthelp' for a list of targets."/>
+		<echo message="  Execute 'ant -help' for Ant help."/>
+	</target>
+    
+	<!-- new install target for source distribution -->
+	<target name="install-for-source-dist" depends="init" description="install the source distribution. Includes configuring and compiling">
+		<antcall target="unzip-windows-packages"/>
+		<!-- do the java version dependent stuff -->
+		<antcall target="configure-java-version"/>
+		<antcall target="install-macos-extra"/>
+		<!-- set gsdlhome in setup.bat -->
+		<antcall target="gs2build-edit-setup-bat"/>
+		<antcall target="install-indexer-files"/>
+		<antcall target="configure"/>
+		<antcall target="configure-c++"/>
+		<antcall target="compile"/>
+		<!-- make sure we have execute permission for the .sh files -->
+		<chmod dir="${basedir}" perm="ugo+rx" includes="*.sh"/>
+	</target>
+	
+</project>
+  
Index: /branches/rk-oran/wirk3/ant-scripts/wrap.xml
===================================================================
--- /branches/rk-oran/wirk3/ant-scripts/wrap.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/ant-scripts/wrap.xml	(revision 18906)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="wirk3-wrap" default="wrap">
+
+	<target name="wrap">
+		<antcall target="copy-files-for-wrapping"/>
+		<antcall target="tweak-files-for-wrapping"/>
+		<antcall target="compile-resources"/>
+		<antcall target="compile-wrapper"/>
+		<antcall target="link-wrapper"/>
+	</target>
+
+	<target name="copy-files-for-wrapping">
+		<echo>Copying wrapper source files</echo>
+		<mkdir dir="${basedir}/wrapped-installer/build"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${wirk3.home}/windows/wrapper/wrapper.cpp"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${wirk3.home}/packages/search4j/libsearch4j.cpp"/>
+		<copy todir="${basedir}/wrapped-installer/build" file="${wirk3.home}/packages/search4j/libsearch4j.h"/>
+	</target>
+	
+	<target name="tweak-files-for-wrapping">
+		<echo>Substituting concrete values into source files</echo>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.min.version@" replacement="${java.min.version}"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.installer@" replacement="${windows-java.installer}"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.extracted@" replacement="${windows-java.extracted}"/>
+		<rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@bundled.version.java@" replacement="${bundled.version.windows-java}"/>
+	</target>
+
+	<target name="compile-resources">
+		<if>
+			<bool>
+				<not>
+					<uptodate targetfile="${basedir}/wrapped-installer/build/wrapper.RES">
+						<srcfiles dir="${wirk3.home}/greenstone3/icon" includes="icon.ico"/>
+						<srcfiles dir="${wirk3.home}/windows/wrapper" includes="${windows-java.installer}"/>
+						<srcfiles dir="${wirk3.home}/windows/wrapper" includes="*.bmp"/>
+						<srcfiles dir="${wirk3.home}/windows/wrapper" includes="*.rc"/>
+						<srcfiles dir="${wirk3.home}/greenstone3/wrapper" includes="*.bmp"/>
+						<srcfiles dir="${basedir}/installer" includes="Greenstone-${version}-win32.jar"/>
+					</uptodate>
+				</not>
+			</bool>
+			
+			<echo>Compiling resources</echo>
+			
+			<echo>getting the template resource script</echo>
+			<copy todir="${basedir}/wrapped-installer/build" file="${wirk3.home}/windows/wrapper/wrapper.rc" overwrite="true"/>
+			
+			<echo>copying the small resource files into place</echo>
+			<copy todir="${basedir}/wrapped-installer/build">
+				<fileset dir="${wirk3.home}/windows/wrapper" includes="*.bmp"/>
+				<fileset dir="${wirk3.home}/greenstone3/wrapper" includes="*.bmp"/>
+				<fileset dir="${wirk3.home}/greenstone3/icon" includes="icon.ico"/>
+			</copy>
+			
+			<echo>adding greenstone3.jar to the resource script as chunks</echo>
+			<rsplit
+				resource="${basedir}/installer/Greenstone-${version}-win32.jar"
+				outputDir="${basedir}/wrapped-installer/build"
+				resourceScript="${basedir}/wrapped-installer/build/wrapper.rc"
+				resourceName="JAR"
+				resourceType="JAR"
+				chunkSize="${resources.chunksize}"
+				/>
+			
+			<echo>adding ${windows-java.installer} to the copy as chunks</echo>
+			<rsplit
+				resource="${wirk3.home}/windows/wrapper/${windows-java.installer}"
+				outputDir="${basedir}/wrapped-installer/build"					
+				resourceScript="${basedir}/wrapped-installer/build/wrapper.rc"
+				resourceName="JAVA"
+				resourceType="EXE"
+				chunkSize="${resources.chunksize}"
+				/>
+
+			<echo>resource compiling the generated resource script</echo>
+			<exec executable="rc" dir="${basedir}/wrapped-installer/build">
+				<arg line="wrapper.rc"/>
+			</exec>
+			
+			<else>
+				<echo>Resourses are up-to-date, will not compile</echo>
+			</else>
+		</if>
+	</target>
+
+	<target name="compile-wrapper">
+		<exec executable="cl" dir="${basedir}/wrapped-installer/build">
+			<arg line="/c -GX /DWINDOWS=yes libsearch4j.cpp /out:libsearch4j.obj"/>
+		</exec>
+		<exec executable="cl" dir="${basedir}/wrapped-installer/build">
+			<arg line="/c -GX /DWINDOWS=yes wrapper.cpp /out:wrapper.obj"/>
+		</exec>
+	</target>
+
+	<target name="link-wrapper">
+		<exec executable="link" dir="${basedir}/wrapped-installer/build">
+			<arg line="/OUT:..\..\products\Greenstone-${version}-win32.exe gdi32.lib advapi32.lib shell32.lib user32.lib libsearch4j.obj wrapper.obj wrapper.res"/>
+		</exec>
+	</target>
+
+</project>
Index: /branches/rk-oran/wirk3/installer/antinstall-config.xml
===================================================================
--- /branches/rk-oran/wirk3/installer/antinstall-config.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/installer/antinstall-config.xml	(revision 18906)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE installer PUBLIC "-//tp23 //DTD Ant Installer Config//EN" "http://antinstaller.sf.net/dtd/antinstall-config-0.8.dtd">
+
+<installer
+			ui="swing,text"
+			verbose="true"
+			debug="false"
+			lookAndFeel="org.tp23.jgoodies.plaf.plastic.PlasticXPLookAndFeel"
+			name="Greenstone@version@ Installer"
+			windowIcon="/resources/icon.png"
+			defaultImageResource="/resources/header.png"
+			minJavaVersion="1.4">
+
+	<!-- select language page -->
+	<page type="input" name="language-selector" displayText="">
+		<comment name="language-selector-explanation"/>
+		<select property="language" defaultValue="en" displayText="" useAsLocale="true">
+			<option value="en" text="English"/>
+			<option value="fr" text="FranÃ§ais (French)"/>
+			<option value="es" text="EspaÃ±ol (Spanish)"/>
+			<option value="de" text="Deutsch (German)"/>
+			<option value="ru" text="ÑÑÑÑÐºÐžÐ¹ ÑÐ·ÑÐº (Russian)"/>
+			<option value="zh" text="äž­æ (Chinese)"/>
+			<option value="ar" text="Arabic"/>
+		</select>
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="intro" displayText="">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end binary release -->
+
+	<!-- start source release -->
+	<page type="input" name="intro" displayText="" target="Source Release">
+		<comment name="welcome-message"/>
+	</page>
+	<!-- end source release -->
+
+	<!--  type="license" shows a license page to click through -->
+	<page type="license" name="license" resource="/LICENSE.txt"  displayText="" />
+
+	<!--  install destination page -->
+	<page type="input" name="destination" displayText="">
+
+<!-- Because of Vista UAC related issues, it is now preferred to install Greenstone where the current user has full privileges -->
+		<directory property="installDir"
+			defaultValue="${env.HOMEDRIVE}\${env.HOMEPATH}\Greenstone3"
+			create="true"
+			displayText="" />
+
+	</page>
+
+	<!-- start binary release -->
+	<page type="input" name="selector" displayText="">
+		<comment name="choose-components"/>
+
+		<target
+			target="Looking For Previous Installation"
+			diskRequirement="x"
+			defaultValue="true"
+			displayText="x"
+			force="true"
+			hidden="true"/>
+
+		<target
+			target="Installing Core System"
+			diskRequirement="@component.size.core@"
+			displayText=""
+			defaultValue="true"
+			force="true"/>
+
+		<target
+			target="Installing Start Menu Shortcuts"
+			diskRequirement="~10 KB"
+			defaultValue="true"
+			displayText=""/>		
+
+		<!-- start bundled components -->
+		<target
+			target="Installing Tomcat"
+			diskRequirement="@component.size.tomcat@"
+			defaultValue="true"
+			displayText=""/>
+
+		<target
+			target="Installing Ant"
+			diskRequirement="@component.size.ant@"
+			defaultValue="true"
+			displayText=""/>
+
+		<target
+			target="Installing ImageMagick"
+			diskRequirement="@component.size.imagemagick@"
+			defaultValue="true"
+			displayText=""/>
+			
+		<target
+			target="Installing Ghostscript"
+			diskRequirement="@component.size.ghostscript@"
+			defaultValue="true"
+			displayText=""/>
+		<!-- end bundled components -->
+			
+	</page>
+	<!-- end binary release -->
+
+	<!-- start bundled components -->
+	<page type="input" name="tomcat-config" ifProperty="(${Installing Tomcat}==true)" displayText="">
+
+		<text property="tomcat.server" defaultValue="localhost" displayText=""/>
+		<text property="tomcat.port" defaultValue="8080" displayText=""/>
+		<text property="tomcat.shutdown.port" defaultValue="8005" displayText=""/>
+
+	</page>
+	<!-- end bundled components -->
+
+	<page type="progress" name="progress" showTargets="true" displayText=""/>
+
+</installer>
Index: /branches/rk-oran/wirk3/installer/build.xml
===================================================================
--- /branches/rk-oran/wirk3/installer/build.xml	(revision 18906)
+++ /branches/rk-oran/wirk3/installer/build.xml	(revision 18906)
@@ -0,0 +1,247 @@
+<?xml version="1.0"?>
+<!--
+This is the build.xml run by AntInstaller for the installer
+-->
+
+<project name="Installation" default="" basedir="${basedir}">
+
+	<!-- this is required to pick up the properties generated during the install pages -->
+	<property file="${basedir}/ant.install.properties"/>
+
+	<path id="project.classpath">
+		<pathelement path="${antinstaller.jar}"/>
+	</path>
+
+	<!-- custom tasks -->
+	<taskdef name="shortcut" classname="com.orangevolt.tools.ant.Win32ShortcutTask" classpathref="project.classpath"/> 
+	<taskdef name="winprops" classname="com.orangevolt.tools.ant.Win32PropertiesTask" classpathref="project.classpath"/> 
+	<typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/>
+	<typedef name="getfreepath" classname="org.greenstone.anttasks.GetFreePath" classpathref="project.classpath"/>
+	
+	<!-- create a local installDir String -->
+	<path id="installDir.path">
+		<pathelement location="${installDir}"/>
+	</path>
+	<property name="installDir.local" refid="installDir.path"/>
+	<pathconvert targetos="unix" property="installDir.unix" refid="installDir.path"/>
+		
+	<!-- load windows properties -->
+	<winprops/>
+
+	<!-- determine if there is an existing installation in the installDir-->
+	<available file="${installDir}\installation.properties" property="is.overinstall"/>
+
+	<target name="Looking For Previous Installation" if="is.overinstall">
+		<property file="${installDir}\installation.properties"/>
+		<delete dir="${installed.startmenu.path}" failonerror="false"/>
+	</target>
+	
+	<target name="Installing Core System">
+
+		<!-- figure out the start menu path  -->
+		<getfreepath path="${win32.personal.programs_menu}\Greenstone-@version@" property="startmenu.path"/>
+		<path id="startmenu.path.path" path="${startmenu.path}"/>
+		<pathconvert targetos="unix" property="startmenu.path.unix" refid="startmenu.path.path"/>
+				
+		<echo>basedir: ${basedir}</echo>
+		<echo>installDir: ${installDir}</echo>
+		<echo>antinstaller.jar: ${antinstaller.jar}</echo>
+		<echo>startmenu.path: ${startmenu.path}</echo>
+		
+		<!-- create the installation directory -->
+		<echo message="Creating Installation directory"/>
+		<mkdir dir="${installDir}"/>
+
+		<!-- extract 7za tool -->
+		<unzip src="${antinstaller.jar}" dest="${basedir}">
+			<patternset><include name="7za.exe"/></patternset>
+		</unzip>
+		
+		<!-- install files -->
+		<echo message="Installing Core Component"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="core.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x core.lzma"/></exec>
+		<delete file="core.lzma"/>
+		<unzip src="${basedir}/core.comp" dest="${installDir}"/>
+		<delete file="core.comp"/>
+
+		<!-- jre -->
+		<mkdir dir="${installDir}/packages"/>
+		<copy todir="${installDir}/packages/jre" failonerror="false">
+			<fileset dir="../@windows-java.extracted@"/>
+		</copy>
+
+		<!-- change the tomcat ports in build.properties -->
+		<echo message="Changing tomcat ports in build.properties"/>
+		<rsr file="${installDir}/build.properties" pattern="(tomcat.port[=:]).*" replacement="$1${tomcat.port}" />
+		<rsr file="${installDir}/build.properties" pattern="(tomcat.shutdown.port[=:]).*" replacement="$1${tomcat.shutdown.port}" />
+		<echo message="Changing tomcat ports in resources/tomcat/server.xml"/>
+		<copy file="${installDir}/resources/tomcat/server.xml" tofile="${installDir.local}/packages/tomcat/conf/server.xml" overwrite="true"/>
+		
+		<!-- set gsdlhome in gs2build setup.bat -->
+		<echo message="Setting %GSDLHOME% in gs2build\setup.bat"/>
+		<rsr file="${installDir}/gs2build/setup.bat" pattern="\*\*GSDLHOME\*\*" replacement="${installDir.local}\gs2build" />
+		<!-- copy the greenstone3.xml file to tomcat -->
+		<echo message="Copying greenstone3.xml to tomcat directory"/>
+		<copy file="${installDir}/resources/tomcat/greenstone3.xml" tofile="${installDir}/packages/tomcat/conf/Catalina/localhost/greenstone3.xml" overwrite="true"/>
+		<rsr file="${installDir}/packages/tomcat/conf/Catalina/localhost/greenstone3.xml" pattern="@gsdl3webhome@" replacement="${installDir.local}\web" />
+
+		<!-- set up global properties -->
+		<echo message="Setting up global properties"/>
+		<copy file="${installDir}/resources/java/global.properties.in" tofile="${installDir}/web/WEB-INF/classes/global.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties">
+			<job pattern="@gsdl3home@" replacement="${installDir.unix}/web" />
+			<job pattern="@tomcat.server@" replacement="${tomcat.server}" />
+			<job pattern="@tomcat.port@" replacement="${tomcat.port}" />
+		</rsr>
+
+		<!-- set up log4j properties-->
+		<echo message="Setting up log4j properties"/>
+		<copy file="${installDir}/resources/java/log4j.properties.in" tofile="${installDir}/web/WEB-INF/classes/log4j.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/log4j.properties" pattern="@gsdl3home@" replacement="${installDir.unix}/web"/>
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/gs2build/etc/usage.txt"></echo>
+
+		<echo message="Creating installation properties file"/>
+		<echo file="${installDir}\installation.properties">installed.startmenu.path:${startmenu.path.unix}</echo>
+		
+	</target>
+
+
+	<target name="Installing Tomcat">
+		
+		<echo message="Installing Apache Tomcat"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="tomcat.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x tomcat.lzma"/></exec>
+		<delete file="tomcat.lzma"/>
+		<unzip src="${basedir}/tomcat.comp" dest="${installDir}/packages"/>
+		<delete file="tomcat.comp"/>
+		
+		<!-- change the tomcat ports in tomcats server.xml -->
+		<rsr file="${installDir}/packages/tomcat/conf/server.xml" pattern="@server@" replacement="${tomcat.server}" />
+		<rsr file="${installDir}/packages/tomcat/conf/server.xml" pattern="@port@" replacement="${tomcat.port}" />
+		<rsr file="${installDir}/packages/tomcat/conf/server.xml" pattern="@shutdown-port@" replacement="${tomcat.shutdown.port}" />
+
+	</target>
+
+	<target name="Installing Ant">
+		<echo message="Installing Apache Ant"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="ant.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x ant.lzma"/></exec>
+		<delete file="ant.lzma"/>
+		<unzip src="${basedir}/ant.comp" dest="${installDir}/packages"/>
+		<delete file="ant.comp"/>
+	</target>
+
+	<target name="Installing ImageMagick">
+		<echo message="Installing ImageMagick"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="imagemagick.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x imagemagick.lzma"/></exec>
+		<delete file="imagemagick.lzma"/>
+		<unzip src="${basedir}/imagemagick.comp" dest="${installDir}/gs2build/bin/windows"/>
+		<delete file="imagemagick.comp"/>
+	</target>
+
+	<target name="Installing Ghostscript">
+		<echo message="Installing GhostScript"/>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="ghostscript.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x ghostscript.lzma"/></exec>
+		<delete file="ghostscript.lzma"/>
+		<unzip src="${basedir}/ghostscript.comp" dest="${installDir}/gs2build/bin/windows"/>
+		<delete file="ghostscript.comp"/>
+	</target>
+	
+	<target name="Installing Start Menu Shortcuts">
+
+		<mkdir dir="${startmenu.path}\Documentation"/>
+		
+		<shortcut
+			file="${startmenu.path}\Greenstone3 Server.lnk"
+			execute="${installDir}\gs3-server.bat"
+			workingDirectory="${installDir}"
+			iconFile="${installDir}\resources\images\gs3.ico"
+			iconIndex="0" />
+
+		<shortcut
+			file="${startmenu.path}\Greenstone Librarian Interface (GLI).lnk"
+			execute="${installDir}\gli\gli.bat"
+			workingDirectory="${installDir}\gli"
+			iconFile="${installDir}\resources\images\gs3.ico"
+			iconIndex="0" />
+			
+		<shortcut
+			file="${startmenu.path}\Greenstone Editor for Metadata Sets (GEMS).lnk"
+			execute="${installDir}\gli\gems.bat"
+			workingDirectory="${installDir}\gli"
+			iconFile="${installDir}\resources\images\gs3.ico"
+			iconIndex="0" />
+
+		<shortcut
+			file="${startmenu.path}\Uninstall.lnk"
+			execute="${installDir}\Uninstall.bat"
+			workingDirectory="${installDir}"
+			iconFile="${installDir}\resources\images\gs3.ico"
+			iconIndex="0" />
+	
+		<shortcut
+			file="${startmenu.path}\Documentation\README.lnk"
+			execute="${installDir}\README.txt" />
+		
+		<shortcut
+			file="${startmenu.path}\Documentation\Greenstone3 Users' Guide.lnk"
+			execute="${installDir}\documentation\manual\manual.pdf" />
+		
+		<shortcut
+			file="${startmenu.path}\Documentation\Greenstone2 Users' Guide.lnk"
+			execute="${installDir}\documentation\manual\gs2_user_en.pdf" />
+		
+	</target>
+
+	<target name="Source Release" depends="">
+
+		<!-- create the installation directory -->
+		<echo message="Creating Installation directory"/>
+		<mkdir dir="${installDir}"/>
+
+		<!-- extract 7za tool -->
+		<unzip src="${antinstaller.jar}" dest="${basedir}">
+			<patternset><include name="7za.exe"/></patternset>
+		</unzip>
+
+		<echo>Installing Source Release</echo>
+		<unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="source-release.lzma"/></patternset></unzip>
+		<exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x source-release.lzma"/></exec>
+		<delete file="source-release.lzma"/>
+		<unzip src="${basedir}/source-release.comp" dest="${installDir}"/>
+		<delete file="source-release.comp"/>
+
+		<!-- set gsdlhome in gs2build setup.bat -->
+		<echo message="Setting %GSDLHOME% in gs2build\setup.bat"/>
+		<rsr file="${installDir}/gs2build/setup.bat" pattern="\*\*GSDLHOME\*\*" replacement="${installDir.local}\gs2build" />
+
+		<!-- set up global properties -->
+		<echo message="Setting up global properties"/>
+		<copy file="${installDir}/resources/java/global.properties.in" tofile="${installDir}/web/WEB-INF/classes/global.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/global.properties">
+			<job pattern="@gsdl3home@" replacement="${installDir.unix}/web" />
+			<job pattern="@tomcat.server@" replacement="${tomcat.server}" />
+			<job pattern="@tomcat.port@" replacement="${tomcat.port}" />
+		</rsr>
+
+		<!-- set up log4j properties-->
+		<echo message="Setting up log4j properties"/>
+		<copy file="${installDir}/resources/java/log4j.properties.in" tofile="${installDir}/web/WEB-INF/classes/log4j.properties" overwrite="true"/>
+		<rsr file="${installDir}/web/WEB-INF/classes/log4j.properties" pattern="@gsdl3home@" replacement="${installDir.unix}/web"/>
+
+		<echo>Create usage.txt</echo>
+		<echo file="${installDir}/gs2build/etc/usage.txt"></echo>
+
+		<echo message="Creating installation properties file"/>
+		<echo file="${installDir}\installation.properties">installed.startmenu.path:${startmenu.path.unix}</echo>
+		
+	</target>
+
+
+	
+</project>
Index: /branches/rk-oran/wirk3/src/make.bat
===================================================================
--- /branches/rk-oran/wirk3/src/make.bat	(revision 18906)
+++ /branches/rk-oran/wirk3/src/make.bat	(revision 18906)
@@ -0,0 +1,2 @@
+cl -GX wirk3.cpp -o ..\bin\wirk3.exe 
+del wirk3.obj
Index: /branches/rk-oran/wirk3/src/wirk3.cpp
===================================================================
--- /branches/rk-oran/wirk3/src/wirk3.cpp	(revision 18906)
+++ /branches/rk-oran/wirk3/src/wirk3.cpp	(revision 18906)
@@ -0,0 +1,130 @@
+#include <windows.h>
+
+#include <fstream>
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+void replace_all ( std::string & str, std::string const & pattern, std::string const & replacement ) {
+
+	std::string::size_type start = str.find( pattern, 0 );
+
+	while ( start != str.npos ) {
+		str.replace( start, pattern.size(), replacement );
+		start = str.find( pattern, start+replacement.size() );
+	}
+
+}
+
+void show_help() {
+
+	cout << "Wirk3 - Windows Release Kit for Greenstone3" << endl;
+	cout << "Helps you to create releases from the Repository" << endl << endl;
+
+	cout << "usage: wirk3 [args]" << endl;
+	cout << "	-sim" << endl;
+	cout << "		simulation only, don't actually do anything" << endl << endl;
+
+	cout << "	-help" << endl;
+	cout << "		show this help screen" << endl << endl;
+
+	cout << "	-from <target>" << endl;
+	cout << "		start execution from the target with the given target address" << endl << endl;
+
+	cout << "	-to <target>" << endl;
+	cout << "		stop execution just before the target with the given target address" << endl << endl;
+
+	cout << "	-descend <target>" << endl;
+	cout << "		execute only the target with the given address, including subtargets" << endl << endl;
+
+	cout << "	-cp" << endl;
+	cout << "		show the classpath being used by wirk2" << endl << endl;
+
+}
+
+int main(int argc, char** argv ) {
+
+	string classpath, command;
+	
+	//some checks
+	bool ok = true;
+	if ( getenv( "JAVA_HOME" ) == NULL ) {
+		cerr << "Please set JAVA_HOME before running wirk3" << endl;
+		ok = false;
+	}
+	if ( getenv( "WIRK3_HOME" ) == NULL ) {
+		cerr << "Please set WIRK2_HOME before running wirk3" << endl;
+		ok = false;
+	}
+	if ( !ok ) {
+		return -1;
+	}
+
+	//influential environment variables
+	string JAVA_HOME = getenv( "JAVA_HOME" );
+	string WIRK3_HOME = getenv( "WIRK3_HOME" );
+	//string PWD = getenv( "CD" );
+
+	//get the pwd
+	string pwd;
+	system( "CD > cd.dat" );
+	ifstream file( "cd.dat" ) ;
+	getline(file, pwd);
+	file.close();
+	system( "del cd.dat" );
+	
+	//set the classpath
+	classpath = pwd + "\\installer\\classes;" + JAVA_HOME + "\\lib\\tools.jar;" + WIRK3_HOME + "\\lib\\serializer.jar;" + WIRK3_HOME + "\\lib\\xalan.jar;" + WIRK3_HOME + "\\lib\\xercesImpl.jar;" + WIRK3_HOME + "\\lib\\xml-apis.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-antlr.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-apache-bcel.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-apache-bsf.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-apache-log4j.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-apache-oro.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-apache-regexp.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-apache-resolver.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-commons-logging.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-commons-net.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-icontract.jar;" + WIRK3_HOME + "\\packages\\ant-1.6.5\\lib\\ant-jai.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-javamail.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-jdepend.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-jmf.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-jsch.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-junit.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-launcher.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-netrexx.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-nodeps.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-starteam.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-stylebook.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-swing.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-trax.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-vaj.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-weblogic.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-xalan1.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\ant-xslp.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\xercesImpl.jar;" + WIRK3_HOME + "\\packages\\ant\\lib\\xml-apis.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\ai-icons-amaranth.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\ai-icons-bluecurve.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\ai-icons-crystalsvg.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\ai-icons-eclipse.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\ai-icons-krystaline.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\ant-installer-ext.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\ant-installer.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\jgoodies-edited-1_2_2.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\xercesImpl.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\lib\\xml-apis.jar;" + WIRK3_HOME + "\\packages\\ant-installer\\classes;" + WIRK3_HOME + "\\ant-scripts\\tasks\\svnant\\lib\\svnjavahl.jar;" + WIRK3_HOME + "\\ant-scripts\\tasks\\svnant\\lib\\svnant.jar;" + WIRK3_HOME + "\\ant-scripts\\tasks\\svnant\\lib\\svnClientAdapter.jar";
+	putenv( ("CLASSPATH=" + classpath).c_str() );
+	putenv( "SystemDrive=C:" );
+
+	//create the command
+	command = "\"\"" + WIRK3_HOME + "\\packages\\ant\\bin\\ant.bat\" -f \"" + WIRK3_HOME + "\\ant-scripts\\build.xml\" -addressing \"-Dwirk3.home=" + WIRK3_HOME + "\"";
+	//pass on the arguments
+	string a;
+	bool simMode = false;
+	for ( int i=0; i < argc; i++ ) {
+		a = argv[i];
+			
+		if ( a.compare("-help") == 0 || a.compare("--help") == 0 ) {
+			show_help();
+			return 0;
+		} else if ( a.compare("-cp") == 0 || a.compare("--cp") == 0 ) {
+			cout << classpath;
+			return 0;
+		} else if ( a.compare("-sim") == 0) {
+			command = command + " " + a;
+			simMode = true;
+		} else {
+			command = command + " " + a;
+		}
+
+	}
+
+	//use forward slashes for everything else
+	//replace_all( pwd, "\\", "/" );
+	
+	//set the basedir in the command
+	command = command + " \"-Dbasedir=";
+	command = command + pwd + "\"\"";
+	
+	//command = command + ".";
+
+	cout
+		<< "O-----------------------------------------O" << endl
+		<< "|                                         |" << endl
+		<< "|   WiRK3                                 |" << endl
+		<< "|   Windows Release Kit for Greenstone3   |" << endl
+		<< "|                                         |" << endl
+		<< "O-----------------------------------------O" << endl
+		;
+	
+	cout << "pwd: " << pwd << endl;
+	cout << "command: " << command.c_str() << endl;
+
+	system( command.c_str() );
+	
+	return 0;
+
+}
