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