| #!/bin/sh |
| # (C) 2008 Yann E. MORIN <yann.morin.1998@free.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 |