]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
a better shell script to run fop with works
authorKeiron Liddle <keiron@apache.org>
Fri, 31 Aug 2001 11:45:02 +0000 (11:45 +0000)
committerKeiron Liddle <keiron@apache.org>
Fri, 31 Aug 2001 11:45:02 +0000 (11:45 +0000)
from anywhere and sets the classpath in a better way.
Submitted by: Weiqi Gao <weiqigao@networkusa.net>

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194450 13f79535-47bb-0310-9956-ffa450edef68

fop.sh

diff --git a/fop.sh b/fop.sh
index 0e8999b44125543e14bde680dab3a35cb2909a58..2bbf32ca8d294124018858da1b98793294afee56 100755 (executable)
--- a/fop.sh
+++ b/fop.sh
@@ -1,5 +1,104 @@
-#!/bin/sh
-LIBDIR=./lib
-LOCALCLASSPATH=$LIBDIR/../build/fop.jar:$LIBDIR/batik.jar:$LIBDIR/xalan-2.0.0.jar:$LIBDIR/xerces-1.2.3.jar:$LIBDIR/avalon-framework-4.0.jar:$LIBDIR/logkit-1.0b4.jar:$LIBDIR/jimi-1.0.jar 
-java -cp $CLASSPATH:$LOCALCLASSPATH org.apache.fop.apps.Fop "$@"
+#! /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 "$@"