X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fgrml%2Fscript-functions;h=4d6bcea8f9beae83abd08f44155d299ea54a4a9f;hb=4db20203215091835dbf4aab193a620800f1f25c;hp=0a389e9071920f29df18f5712879b01d6f9a0e5d;hpb=f5b996ec4d80add3c921e213a2a75ae8f6f7d346;p=grml-etc-core.git diff --git a/etc/grml/script-functions b/etc/grml/script-functions index 0a389e9..4d6bcea 100644 --- a/etc/grml/script-functions +++ b/etc/grml/script-functions @@ -3,7 +3,6 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Fre Apr 06 22:42:04 CEST 2007 [mika] ################################################################################ # {{{ set default PATH @@ -49,15 +48,60 @@ setdialog(){ # }}} # {{{ check for availability of program(s) -check4progs(){ - local RC='' - for arg in $* ; do - type -p $arg >/dev/null 2>&1 || RC="$arg" - done - if [ -n "$RC" ] ; then - echo "$RC not installed" - return 1 - fi +# 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 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" + 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 [ ${found} -eq 0 ] + then + 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 } # }}} @@ -77,8 +121,9 @@ stringinstring(){ # {{{ reread boot command line; echo last parameter's argument or return false. getbootparam(){ - stringinstring " $1=" /proc/cmdline || return 1 - result="${/proc/cmdline##*$1=}" + CMDLINE=$(cat /proc/cmdline) + stringinstring " $1=" "$CMDLINE" || return 1 + result="${CMDLINE##*$1=}" result="${result%%[ ]*}" echo "$result" return 0 @@ -87,7 +132,7 @@ getbootparam(){ # {{{ check boot commandline for specified option checkbootparam(){ - stringinstring " $1" /proc/cmdline + stringinfile " $1" /proc/cmdline return "$?" } # }}} @@ -146,17 +191,17 @@ mount_sys(){ # Returns the reversed order of list # reverse_list() { - local ret - ret='' - while [ "$#" -gt 0 ] ; do - if [ -z "${ret}" ] ; then - ret="$1" - else - ret="$1 ${ret}" - fi - shift - done - printf '%s' "${ret}" + local ret + ret='' + while [ "$#" -gt 0 ] ; do + if [ -z "${ret}" ] ; then + ret="$1" + else + ret="$1 ${ret}" + fi + shift + done + printf '%s' "${ret}" } #}}} @@ -167,21 +212,21 @@ reverse_list() { # # EXAMPLE: if is_older_than a.out *.o ; then ... is_older_than() { - local x - local ref="$1" - shift + local x + local ref="$1" + shift - for x in "$@" ; do - [ "${x}" -nt "${ref}" ] && return 0 + for x in "$@" ; do + [ "${x}" -nt "${ref}" ] && return 0 - if [ -d "${x}" ] ; then - is_older_than "${ref}" "${x}"/* && return 0 - fi - done + if [ -d "${x}" ] ; then + is_older_than "${ref}" "${x}"/* && return 0 + fi + done - return 1 + return 1 } #}}} ## END OF FILE ################################################################# -# vim:foldmethod=marker tw=80 ai expandtab shiftwidth=2 tabstop=2 +# vim:foldmethod=marker tw=80 ai expandtab shiftwidth=2 tabstop=8 ft=sh