From 5f9a26a3da1abedae0565001ccfb2551f4c24115 Mon Sep 17 00:00:00 2001 From: Thilo Six Date: Sun, 17 Nov 2013 15:34:51 +0100 Subject: [PATCH] =?utf8?q?check4progs:=20Change=20testing=20from=20?= =?utf8?q?=E2=80=98which=E2=80=99=20to=20iterating=20over=20$PATH=20[Close?= =?utf8?q?s:=20issue1284]?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This removes the availability of ‘which’ and improves performance when ‘which’ is an external program. This patch also silently adds options to make the function more quiet than its default behaviour. --- etc/grml/script-functions | 49 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) 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 } # }}} -- 2.1.4