author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Wed Jun 17 15:27:55 2009 +0200 (2009-06-17) | |
branch | 1.4 |
changeset 1452 | 0c021c8900cc |
parent 635 | 0d7348cb7faa |
child 2908 | dcdb309b7967 |
permissions | -rw-r--r-- |
yann@635 | 1 |
#!/bin/sh |
yann@635 | 2 |
# (C) 2008 Yann E. MORIN <yann.morin.1998@anciens.enib.fr> |
yann@635 | 3 |
# Licensed under the GPL v.2 |
yann@635 | 4 |
|
yann@635 | 5 |
LIBDUMA_SO= |
yann@635 | 6 |
|
yann@635 | 7 |
case "$1" in |
yann@635 | 8 |
-on) |
yann@635 | 9 |
case "${LD_PRELOAD}" in |
yann@635 | 10 |
*${LIBDUMA_SO}*) ;; |
yann@635 | 11 |
*) LD_PRELOAD="${LIBDUMA_SO} ${LD_PRELOAD}";; |
yann@635 | 12 |
esac |
yann@635 | 13 |
shift |
yann@635 | 14 |
;; |
yann@635 | 15 |
-off) |
yann@686 | 16 |
# We use a suposedly POSIX-compliant shell: /bin/sh |
yann@686 | 17 |
# -> we can't use "${LD_PRELOAD//${LIBDUMA_SO}/}", it's not POSIX |
yann@686 | 18 |
# We don't know if sed will be present on the target |
yann@686 | 19 |
# -> we can't use $(echo "${LD_PRELOAD}" |sed -r -e "s|${LIBDUMA_SO}||;") |
yann@686 | 20 |
# So, iterate through LD_PRELOAD, and keep only those libs that |
yann@686 | 21 |
# are not "${LIBDUMA_SO}" |
yann@686 | 22 |
old_LD_PRELOAD="${LD_PRELOAD}" |
yann@686 | 23 |
LD_PRELOAD= |
yann@686 | 24 |
for lib in ${old_LD_PRELOAD}; do |
yann@686 | 25 |
[ "${lib}" = "${LIBDUMA_SO}" ] || LD_PRELOAD="${LD_PRELOAD} ${lib}" |
yann@686 | 26 |
done |
yann@686 | 27 |
unset old_LD_PRELOAD |
yann@635 | 28 |
shift |
yann@635 | 29 |
;; |
yann@635 | 30 |
-show) |
yann@635 | 31 |
case "${LD_PRELOAD}" in |
yann@635 | 32 |
*${LIBDUMA_SO}*) echo "duma is enabled";; |
yann@635 | 33 |
*) echo "duma is disabled";; |
yann@635 | 34 |
esac |
yann@635 | 35 |
exit 0 |
yann@635 | 36 |
;; |
yann@635 | 37 |
"") |
yann@635 | 38 |
cat <<_EOF_ |
yann@635 | 39 |
Usage: |
yann@635 | 40 |
. $0 <-on|-off|-show> |
yann@635 | 41 |
Sets, unsets or show DUMA usage. |
yann@635 | 42 |
$0 <executable [arg...]> |
yann@635 | 43 |
Execute 'executable' (with arguments 'args') using DUMA. |
yann@635 | 44 |
_EOF_ |
yann@635 | 45 |
false # Don't 'exit', we could well be source'd |
yann@635 | 46 |
;; |
yann@635 | 47 |
*) |
yann@635 | 48 |
exec "$0" -on "$@" |
yann@635 | 49 |
;; |
yann@635 | 50 |
esac |
yann@635 | 51 |
|
yann@635 | 52 |
export LD_PRELOAD |
yann@635 | 53 |
if [ -n "$1" ]; then |
yann@635 | 54 |
exec "$@" |
yann@635 | 55 |
fi |