# 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.
-# Latest change: Sam Sep 16 13:08:16 CEST 2006 [mika]
################################################################################
# {{{ set default PATH
# {{{ check for root-permissions
check4root(){
- if [ "$UID" != 0 ] ; then
+ 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 user permissions
check4user(){
- if [ "$UID" == 0 ] ; then
+ if [ "$(id -u 2>/dev/null)" = 0 ] ; then
echo 1>&2 "Error: please do not run this script with uid 0 (root)." ; return 1
fi
}
# }}}
# {{{ 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
}
# }}}
# {{{ 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
# {{{ check boot commandline for specified option
checkbootparam(){
- stringinstring " $1" /proc/cmdline
+ stringinfile " $1" /proc/cmdline
return "$?"
}
# }}}
}
# }}}
+# char *reverse_list(list) {{{
+#
+# 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}"
+}
+#}}}
+
+# bool is_older_than(reference, files/dirs to check) {{{
+#
+# return 0 if any of the files/dirs are newer than
+# the reference file
+#
+# EXAMPLE: if is_older_than a.out *.o ; then ...
+is_older_than() {
+ local x
+ local ref="$1"
+ shift
+
+ for x in "$@" ; do
+ [ "${x}" -nt "${ref}" ] && return 0
+
+ if [ -d "${x}" ] ; then
+ is_older_than "${ref}" "${x}"/* && return 0
+ fi
+ done
+
+ 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