Hi, I have adapted the shell script that Ant uses to run itself into a shell script that can be used to run FOP. I have attached the 'fop' script. This can potentially be a nice replacement for the fop.sh script that FOP currently uses. Benefit of this script: 1. For users of FOP that uses it as a command line utility, as in fop -fo myfile.fo -pdf myfile.pdf there is no need to mess around with the CLASSPATH. Simply add /path/to/FOP-0.20.1 into the PATH, or create a symbolic like this: ln -s /path/to/Fop-0.20.1/fop /usr/bin/fop and the fop command will simply work. 2. The ant script works with Cygwin, even if you install FOP into a directory with a space in its name, like "C:\Program Files". I haven't tested it but it should work. 3. It brings in all jar files in the $FOP_HOME/lib directory. So in the future, there's no need to modify the fop script when some new library is added to $FOP_HOME/lib. -- Weiqi Gao [EMAIL PROTECTED]
#! /bin/sh # # Shell script to run FOP, adapted from the Jakarta-Ant project. if [ -f $HOME/.foprc ] ; then . $HOME/.foprc 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 ;; esac if [ -z "$FOP_HOME" ] ; then # try to find FOP if [ -d /opt/fop ] ; then FOP_HOME=/opt/fop fi if [ -d ${HOME}/opt/fop ] ; then FOP_HOME=${HOME}/opt/fop fi ## resolve links - $0 may be a link to fop's home PRG=$0 progname=`basename $0` 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 FOP_HOME=`dirname "$PRG"` fi # For Cygwin, ensure paths are in UNIX format before anything is touched if $cygwin ; then [ -n "$FOP_HOME" ] && FOP_HOME=`cygpath --unix "$FOP_HOME"` [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"` fi 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=java fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit fi if [ -n "$CLASSPATH" ] ; then LOCALCLASSPATH=$CLASSPATH fi # add fop.jar, which resides in $FOP_HOME/build LOCALCLASSPATH=${FOP_HOME}/build/fop.jar:$LOCALCLASSPATH # add in the dependency .jar files, which reside in $FOP_HOME/lib DIRLIBS=${FOP_HOME}/lib/*.jar for i in ${DIRLIBS} do # if the directory is empty, then it will return the input string # this is stupid, so case for it if [ "$i" != "${DIRLIBS}" ] ; then if [ -z "$LOCALCLASSPATH" ] ; then LOCALCLASSPATH=$i else LOCALCLASSPATH="$i":$LOCALCLASSPATH fi fi done # For Cygwin, switch paths to Windows format before running java if $cygwin; then FOP_HOME=`cygpath --path --windows "$FOP_HOME"` JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"` fi $JAVACMD -classpath "$LOCALCLASSPATH" $FOP_OPTS org.apache.fop.apps.Fop "$@"
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]