# Filename:      /etc/grml/script-functions
# Purpose:       some often used functions for use in shellscripts
# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports:   see http://grml.org/bugs/
# License:       This file is licensed under the GPL v2.
################################################################################

# {{{ check for root-permissions
check4root(){
  if [ "$(id -u 2>/dev/null)" != 0 ] ; then
    echo 1>&2 "Error: please run this script with uid 0 (root)." ; return 1
  fi
}
# }}}

# {{{ 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 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
}
# }}}

# {{{ simple shell grep
stringinfile(){
  case "$(cat $2)" in *$1*) return 0;; esac
  return 1
}
# }}}

# {{{ simple shell grep for strings
stringinstring(){
  case "$2" in *$1*) return 0;; esac
  return 1
}
# }}}

# {{{ reread boot command line; echo last parameter's argument or return false.
getbootparam(){
  CMDLINE=$(cat /proc/cmdline)
  stringinstring " $1=" "$CMDLINE" || return 1
  result="${CMDLINE##*$1=}"
  result="${result%%[   ]*}"
  echo "$result"
  return 0
}
# }}}

# {{{ check boot commandline for specified option
checkbootparam(){
  stringinfile " $1" /proc/cmdline
  return "$?"
}
# }}}

# {{{ grml specific checks
isgrml(){
  [ -f /etc/grml_version ] && return 0 || return 1
}

isgrmlcd(){
  [ -f /etc/grml_cd ] && return 0 || return 1
}
# }}}

## END OF FILE #################################################################
# vim:foldmethod=marker tw=80 ai expandtab shiftwidth=2 tabstop=8 ft=sh
