X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fgrml%2Fscript-functions;h=4d6bcea8f9beae83abd08f44155d299ea54a4a9f;hb=69255e617abd0d063240d11f975b2fecf94d758e;hp=21085b7b3f192fbfb3c1301bd2a0ed7135454897;hpb=6b83c3fd03200b08e9adc881d2c30544a4d723f4;p=grml-etc-core.git diff --git a/etc/grml/script-functions b/etc/grml/script-functions index 21085b7..4d6bcea 100644 --- a/etc/grml/script-functions +++ b/etc/grml/script-functions @@ -48,25 +48,60 @@ setdialog(){ # }}} # {{{ check for availability of program(s) +# usage example: +# check4progs [-s,-q,--quiet,--silent] arg [arg .... argn] +# +# with option given either of: +# -s,-q,--quiet,--silent +# +# check for available progs but produce no output check4progs() { + [ -n "${ZSH_VERSION}" ] && emulate -L sh local RTN=0 - local ARG='' - while [ ${#} -gt 0 ] + local oldifs="${IFS}" + local ARG d found + local VERBOSE=1 + + case ${1} in + -q | -s | --quiet | --silent) + VERBOSE=0 + shift 1 + ;; + + *) + ;; + esac + + while [ $# -gt 0 ] do - ARG="${1}" + ARG="$1" shift + found=0 + IFS=: + for d in $PATH + do + if [ -x "${d}/${ARG}" ] + then + found=1 + break + fi + done + IFS="${oldifs}" + # check for availability - if ! \which "${ARG}" >/dev/null 2>&1 + if [ ${found} -eq 0 ] then - printf "%s: binary not found\n" "${ARG}" >&2 + if [ ${VERBOSE} -eq 1 ] + then + printf "%s: binary not found\n" "${ARG}" >&2 + fi RTN=1 fi - done # return non zero, if at least one prog is missing! - return ${RTN} + return $RTN } # }}}