# 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.
# Latest change: Fre Apr 06 22:42:04 CEST 2007 [mika]
################################################################################

# {{{ set default PATH
setpath(){
  export PATH=${PATH:-'/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin'}
}
# }}}

# {{{ 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 user permissions
check4user(){
  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 running zsh
iszsh(){
  if ! [ -z "$ZSH_VERSION" ] ; then
    return 0
  else
    return 1
  fi
}
# }}}

# {{{ check for (X)dialog
setdialog(){
  if [ -n "$DISPLAY" ] ; then
     [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog" && export XDIALOG_HIGH_DIALOG_COMPAT=1
  else
     [ -x /usr/bin/dialog ] && DIALOG='dialog' || ( echo 1>&2 "dialog not available" ; 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
}
# }}}

# {{{ 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(){
  stringinstring " $1=" /proc/cmdline || return 1
  result="${/proc/cmdline##*$1=}"
  result="${result%%[   ]*}"
  echo "$result"
  return 0
}
# }}}

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

# {{{ check whether $1 is yes
checkvalue(){
  if [ "$1" = "yes" -o "$1" = "YES" ] ; then
    return 0
  else
    return 1
  fi
}
# }}}

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

grmlversion(){
 cat /etc/grml_version
}

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

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

checkgrmlsmall(){
  grep -q small /etc/grml_version 2>/dev/null && return 0 || return 1
}
# }}}

# {{{ filesystems (proc, pts, sys)
mount_proc(){
  check4root || return 1
  [ -f /proc/version ] || mount -t proc /proc /proc 2>/dev/null
}

mount_pts(){
  check4root || return 1
  stringinfile "/dev/pts" /proc/mounts || mount -t devpts /dev/pts /dev/pts 2>/dev/null
}

mount_sys(){
  check4root || return 1
  [ -d /sys/devices ] || mount -t sysfs /sys /sys 2>/dev/null
}
# }}}

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