blob: 00afd67c62c259eb82021661f921e9f26cd44f3b [file] [log] [blame]
#!/bin/sh
# (C) 2008 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
# Licensed under the GPL v.2
LIBDUMA_SO=
case "$1" in
-on)
case "${LD_PRELOAD}" in
*${LIBDUMA_SO}*) ;;
*) LD_PRELOAD="${LIBDUMA_SO} ${LD_PRELOAD}";;
esac
shift
;;
-off)
# We use a suposedly POSIX-compliant shell: /bin/sh
# -> we can't use "${LD_PRELOAD//${LIBDUMA_SO}/}", it's not POSIX
# We don't know if sed will be present on the target
# -> we can't use $(echo "${LD_PRELOAD}" |sed -r -e "s|${LIBDUMA_SO}||;")
# So, iterate through LD_PRELOAD, and keep only those libs that
# are not "${LIBDUMA_SO}"
old_LD_PRELOAD="${LD_PRELOAD}"
LD_PRELOAD=
for lib in ${old_LD_PRELOAD}; do
[ "${lib}" = "${LIBDUMA_SO}" ] || LD_PRELOAD="${LD_PRELOAD} ${lib}"
done
unset old_LD_PRELOAD
shift
;;
-show)
case "${LD_PRELOAD}" in
*${LIBDUMA_SO}*) echo "duma is enabled";;
*) echo "duma is disabled";;
esac
exit 0
;;
"")
cat <<_EOF_
Usage:
. $0 <-on|-off|-show>
Sets, unsets or show DUMA usage.
$0 <executable [arg...]>
Execute 'executable' (with arguments 'args') using DUMA.
_EOF_
false # Don't 'exit', we could well be source'd
;;
*)
exec "$0" -on "$@"
;;
esac
export LD_PRELOAD
if [ -n "$1" ]; then
exec "$@"
fi