e0d4ed89ff
The subdir in tools are no lonmger necessary. Also, remove ther old bin links feature, not very useful anymore.
131 lines
2.5 KiB
Bash
Executable File
131 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Start script for VIPS
|
|
|
|
# need extended regexps, hence we insist on bash above
|
|
shopt -s extglob
|
|
# set -x
|
|
|
|
# name we were invoked as
|
|
bname=`basename $0`
|
|
|
|
# check args
|
|
if [[ $# < 1 ]]; then
|
|
echo "usage: $bname [command ...]"
|
|
echo "examples:"
|
|
echo " $bname nip"
|
|
echo " $bname man im_invert"
|
|
echo " $bname im_invert /pics/tmp/fred.jpg /pics/tmp/fred2.tif"
|
|
exit 1
|
|
fi
|
|
|
|
# prepend a path component to an environment variable
|
|
# be careful to avoid trailing : characters if the var is not defined, they
|
|
# can cause security problems
|
|
function prepend_var () {
|
|
# we have to use eval to do double indirection, I think
|
|
eval value="\$$1"
|
|
if [ "x$value" = x ]; then
|
|
export $1=$2
|
|
else
|
|
export $1=$2:$value
|
|
fi
|
|
}
|
|
|
|
# try to extract the prefix from a path to an executable
|
|
# eg. "/home/john/vips/bin/fred" -> "/home/john/vips"
|
|
function find_prefix () {
|
|
# try to canonicalise the path
|
|
ep_canon=$1
|
|
|
|
# relative path? prefix with pwd
|
|
if [ ${ep_canon:0:1} != "/" ]; then
|
|
ep_canon=`pwd`/$ep_canon
|
|
fi
|
|
|
|
# replace any "/./" with "/"
|
|
ep_canon=${ep_canon//\/.\//\/}
|
|
|
|
# any "xxx/../" can go
|
|
ep_canon=${ep_canon//+([^\/])\/..\//}
|
|
|
|
# trailing "xxx/.." can go
|
|
ep_canon=${ep_canon/%+([^\/])\/../}
|
|
|
|
# remove trailing "/bin/xxx" to get the prefix
|
|
ep_prefix=${ep_canon/%\/bin\/+([^\/])/}
|
|
|
|
# was there anything to remove in that final step? if not, the path
|
|
# must be wrong
|
|
if [ x$ep_prefix == x$ep_canon ]; then
|
|
return 1
|
|
fi
|
|
|
|
echo $ep_prefix;
|
|
|
|
return 0
|
|
}
|
|
|
|
# try to guess the install prefix from $0
|
|
function guess_prefix () {
|
|
# $0 is a file? must be us
|
|
if [ -f $0 ]; then
|
|
find_prefix $0
|
|
return
|
|
fi
|
|
|
|
# nope, extract program name from $0 and try looking along the
|
|
# searchpath for it
|
|
name=`basename $0`
|
|
|
|
fred=$PATH
|
|
while [ x$fred != x"" ]; do
|
|
path=${fred/:*/}/$name
|
|
fred=${fred/*([^:])?(:)/}
|
|
|
|
if [ -f $path ]; then
|
|
find_prefix $path
|
|
return
|
|
fi
|
|
done
|
|
|
|
# not found on path either ... give up!
|
|
return 1
|
|
}
|
|
|
|
prefix=`guess_prefix`;
|
|
|
|
if [ $? != 0 ]; then
|
|
echo "unable to find $0 from the file name, or from your PATH"
|
|
echo "either run directly, or add the install bin area to "
|
|
echo "your PATH"
|
|
exit 1
|
|
fi
|
|
|
|
export VIPSHOME=$prefix
|
|
|
|
# add VIPSHOME to man pages
|
|
prepend_var MANPATH $VIPSHOME/man
|
|
|
|
# add the VIPS lib area to the library path
|
|
case `uname` in
|
|
HPUX)
|
|
libvar=SHLIB_PATH
|
|
;;
|
|
|
|
Darwin)
|
|
libvar=DYLD_LIBRARY_PATH
|
|
;;
|
|
|
|
*)
|
|
libvar=LD_LIBRARY_PATH
|
|
;;
|
|
esac
|
|
prepend_var $libvar $VIPSHOME/lib
|
|
|
|
# add VIPS bin area to path
|
|
prepend_var PATH $VIPSHOME/bin
|
|
|
|
# run, passing in args we were passed
|
|
exec $*
|