2008-06-30 20:37:14 +00:00
|
|
|
#!/bin/sh
|
2012-03-06 20:36:10 +00:00
|
|
|
# (C) 2008 Yann E. MORIN <yann.morin.1998@free.fr>
|
2008-06-30 20:37:14 +00:00
|
|
|
# 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)
|
2008-07-19 12:15:17 +00:00
|
|
|
# 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
|
2017-02-27 03:06:35 +00:00
|
|
|
# -> we can't use $(echo "${LD_PRELOAD}" |sed -r -e "s|${LIBDUMA_SO}||;")
|
2008-07-19 12:15:17 +00:00
|
|
|
# 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
|
2008-06-30 20:37:14 +00:00
|
|
|
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
|