117 lines
2.2 KiB
Plaintext
117 lines
2.2 KiB
Plaintext
|
#!/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
|
||
|
|
||
|
# 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
|
||
|
export MANPATH=$VIPSHOME/man:$MANPATH
|
||
|
|
||
|
# add the VIPS lib area to the library path
|
||
|
case `uname` in
|
||
|
HPUX)
|
||
|
export SHLIB_PATH=$VIPSHOME/lib:$SHLIB_PATH
|
||
|
;;
|
||
|
|
||
|
Darwin)
|
||
|
export DYLD_LIBRARY_PATH=$VIPSHOME/lib:$DYLD_LIBRARY_PATH
|
||
|
;;
|
||
|
|
||
|
*)
|
||
|
export LD_LIBRARY_PATH=$VIPSHOME/lib:$LD_LIBRARY_PATH
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
# add VIPS bin area to path
|
||
|
export PATH=$VIPSHOME/bin:$PATH
|
||
|
|
||
|
# run, passing in args we were passed
|
||
|
exec $*
|