# Shell script fragment to infer the location of
# $FINDBUGS_HOME and assign it to the findbugs_home shell
# variable. Also sets the fb_osname shell variable,
# as the output of uname.
script.get.fbhome=\
program="$0"\n\
\n\
# Follow symlinks until we get to the actual file.\n\
while [ -h "$program" ]; do\n\
\tlink=`ls -ld "$program"`\n\
\tlink=`expr "$link" : '.*-> \\(.*\\)'`\n\
\tif [ "`expr "$link" : '/.*'`" = 0 ]; then\n\
\t\t# Relative\n\
\t\tdir=`dirname "$program"`\n\
\t\tprogram="$dir/$link"\n\
\telse\n\
\t\t# Absolute\n\
\t\tprogram="$link"\n\
\tfi\n\
done\n\
\n\
# Assume findbugs home directory is the parent\n\
# of the directory containing the script (which should\n\
# normally be "$findbugs_home/bin").\n\
dir=`dirname "$program"`\n\
findbugs_home="$dir/.."\n\
\n\
# Handle FHS-compliant installations (e.g., Fink)\n\
if [ -d "$findbugs_home/share/findbugs" ]; then\n\
\tfindbugs_home="$findbugs_home/share/findbugs"\n\
fi\n\
\n\
# Make absolute\n\
findbugs_home=`cd "$findbugs_home" && pwd`\n\
\n\
fb_pathsep=':'\n\
\n\
# Handle cygwin, courtesy of Peter D. Stout\n\
fb_osname=`uname`\n\
if [ `expr "$fb_osname" : CYGWIN` -ne 0 ]; then\n\
\tfindbugs_home=`cygpath --mixed "$findbugs_home"`\n\
\tfb_pathsep=';'\n\
fi\n\
# Handle MKS, courtesy of Kelly O'Hair\n\
if [ "${fb_osname}" = "Windows_NT" ]; then\n\
\tfb_pathsep=';'\n\
fi\n\
\n\
if [ ! -d "$findbugs_home" ]; then\n\
\techo "The path $findbugs_home,"\n\
\techo "which is where I think FindBugs is located,"\n\
\techo "does not seem to be a directory."\n\
\texit 1\n\
fi
# Define the escape_arg function, which turns an arbitrary string into
# a escaped version that may be appended to an argument list.
# No quotes should be used in the construction of the
# argument list string. Escapes (backslashes) are added where needed
# to preserve spaces, quote characters, and special characters inside
# the single argument being added.
#
# Usage:
# my_args="$my_args `escape_arg "$first_arg"`"
# my_args="$my_args `escape_arg "$second_arg"`"
# ...
# exec java -Xmx584m $main_class $my_args
#
# Bourne shell programming really, really sucks.
script.define.escape_arg=\
escape_arg() {\n\
\techo "$1" | sed -e "s,\\\\([\\\\\\"' \t]\\\\),\\\\\\\\\\\\1,g"\n\
}
# Pick a default Java executable.
# This should be done before executing any code that
# could override fb_javacmd.
script.set.default.java=\
# Choose default java binary\n\
fb_javacmd=java\n\
if [ ! -z "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then\n\
\tif [ `expr "$fb_osname" : CYGWIN` -ne 0 ]; then\n\
\t\tfb_javacmd=`cygpath --mixed "$JAVA_HOME"`/bin/java\n\
\telse\n\
\t\tfb_javacmd="$JAVA_HOME/bin/java"\n\
\tfi\n\
fi
# Fragment to execute java, using the arguments stored
# in the shell's $@ variable (and/or in the $fb_appargs variable).
# Unless fb_appjar is specified, assumes the class to be executed
# is in $findbugs_home/lib/findbugs.jar.
script.wrap.java=\
fb_javacmd=\${fb_javacmd:-"java"}\n\
fb_maxheap=\${fb_maxheap:-"-Xmx768m"}\n\
fb_appjar=\${fb_appjar:-"$findbugs_home/lib/findbugs.jar"}\n\
set -f\n\
#echo command: \\\n\
exec "$fb_javacmd" \\\n\
\t-classpath "$fb_appjar$fb_pathsep$CLASSPATH" \\\n\
\t-Dfindbugs.home="$findbugs_home"\\\n\
\t$fb_maxheap $fb_jvmargs $fb_mainclass \${@:+"$@"} $fb_appargs
# Fragment to execute java, using -jar $fb_appjar.
script.wrap.jar=\
fb_javacmd=\${fb_javacmd:-"java"}\n\
fb_maxheap=\${fb_maxheap:-"-Xmx768m"}\n\
fb_appjar=\${fb_appjar:-"$findbugs_home/lib/findbugs.jar"}\n\
set -f\n\
#echo command: \\\n\
exec "$fb_javacmd" \\\n\
\t-Dfindbugs.home="$findbugs_home"\\\n\
\t$fb_maxheap $fb_jvmargs \\\n\
\t-jar "$fb_appjar"\\\n\
\t\${@:+"$@"} $fb_appargs