#!/bin/sh # Filename: grml-exec-wrapper # Purpose: simple but smart program execution wrapper # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2 or any later version. ################################################################################ PN=$(basename "$0") usage() { printf "Usage: %s [] Available options: -h | --help display this usage information -p check specified argument instead of default args, like: %s -p aumix xterm -T aumix -e aumix\n" "${PN}" "${PN}" } is_installed() { prog="$1" [ -z "$prog" ] && return 1 case "${prog}" in /*) # deal with absolute-path programs [ -x "${prog}" ] && return 0 return 1 ;; esac ret=1 oifs="$IFS" IFS=: for dir in $PATH; do [ -z "$dir" ] && continue [ -x "$dir/$prog" ] && ret=0 && break done IFS="$oifs" unset oifs return "$ret" } # use Xdisplay only if present and running under X: display_info() { if is_installed xterm && test -n "$DISPLAY" ; then xterm -T 'Sorry :(' -e "dialog --msgbox \"$1\" 0 0" else printf '%s\n' "$1">&2 fi } if [ -z "$1" ] || [ "$1" = '-h' ] || [ "$1" = '--help' ] ; then usage exit 1 fi if [ "$1" = '-p' ] ; then if [ -z "$2" ] ; then usage exit 1 else PROG="$2" shift ; shift fi else PROG="$1" # make sure to support 'grml-exec-wrapper sudo wireshark' as well: case $PROG in *sudo*) PROG="$2" ;; esac fi if is_installed "$PROG" ; then exec "$@" fi display_info "Sorry: ${PROG} not available. Looks like the grml flavour you are using does not ship ${PROG}. :( You can search for ${PROG} executing: apt-get update && apt-cache search $(basename "${PROG}") " exit 1 ## END OF FILE #################################################################