- local retval=${1:-0}
- shift
-
- _eend ${retval} ewarn "$*"
-
- LAST_E_CMD=ewend
- return $retval
-}
-
-# v-e-commands honor RC_VERBOSE which defaults to no.
-# The condition is negated so the return value will be zero.
-veinfo() { [ "${RC_VERBOSE}" != "yes" ] || einfo "$@"; }
-veinfon() { [ "${RC_VERBOSE}" != "yes" ] || einfon "$@"; }
-vewarn() { [ "${RC_VERBOSE}" != "yes" ] || ewarn "$@"; }
-veerror() { [ "${RC_VERBOSE}" != "yes" ] || eerror "$@"; }
-vebegin() { [ "${RC_VERBOSE}" != "yes" ] || ebegin "$@"; }
-veend() {
- [ "${RC_VERBOSE}" = "yes" ] && { eend "$@"; return $?; }
- return ${1:-0}
-}
-veend() {
- [ "${RC_VERBOSE}" = "yes" ] && { ewend "$@"; return $?; }
- return ${1:-0}
-}
-
-# bool get_bootparam(param)
-#
-# return 0 if gentoo=param was passed to the kernel
-#
-# EXAMPLE: if get_bootparam "nodevfs" ; then ....
-#
-get_bootparam() {
- local x copt params retval=1
-
- [ ! -r "/proc/cmdline" ] && return 1
-
- for copt in $(< /proc/cmdline)
- do
- if [ "${copt%=*}" = "gentoo" ]
- then
- params="$(gawk -v PARAMS="${copt##*=}" '
- BEGIN {
- split(PARAMS, nodes, ",")
- for (x in nodes)
- print nodes[x]
- }')"
-
- # Parse gentoo option
- for x in ${params}
- do
- if [ "${x}" = "$1" ]
- then
-# printf "YES\n"
- retval=0
- fi
- done
- fi
- done
-
- return ${retval}
-}
-
-# char *add_suffix(char * configfile)
-#
-# Returns a config file name with the softlevel suffix
-# appended to it. For use with multi-config services.
-add_suffix() {
- if [ "${RC_USE_CONFIG_PROFILE}" = "yes" -a -e "$1.${DEFAULTLEVEL}" ]
- then
- printf "$1.${DEFAULTLEVEL}\n"
- else
- printf "$1\n"
- fi
-
- return 0
-}
-
-# Network filesystems list for common use in rc-scripts.
-# This variable is used in is_net_fs and other places such as
-# localmount.
-NET_FS_LIST="afs cifs coda gfs ncpfs nfs nfs4 shfs smbfs"
-
-# bool is_net_fs(path)
-#
-# return 0 if path is the mountpoint of a networked filesystem
-#
-# EXAMPLE: if is_net_fs / ; then ...
-#
-is_net_fs() {
- local fstype
- # /proc/mounts is always accurate but may not always be available
- if [ -e /proc/mounts ]; then
- fstype="$( sed -n -e '/^rootfs/!s:.* '"$1"' \([^ ]*\).*:\1:p' /proc/mounts )"
- else
- fstype="$( mount | sed -n -e 's:.* on '"$1"' type \([^ ]*\).*:\1:p' )"
- fi
- case " ${NET_FS_LIST} " in
- *" ${fstype} "*)
- return 0
- ;;
- *)
- return 1
- ;;
- esac
-}
-
-# bool is_uml_sys()
-#
-# return 0 if the currently running system is User Mode Linux
-#
-# EXAMPLE: if is_uml_sys ; then ...
-#
-is_uml_sys() {
- grep -qs 'UML' /proc/cpuinfo
- return $?
-}
-
-# bool is_vserver_sys()
-#
-# return 0 if the currently running system is a Linux VServer
-#
-# EXAMPLE: if is_vserver_sys ; then ...
-#
-is_vserver_sys() {
- grep -qs '^s_context:[[:space:]]*[1-9]' /proc/self/status
- return $?
-}
-
-# bool get_mount_fstab(path)
-#
-# return the parameters to pass to the mount command generated from fstab
-#
-# EXAMPLE: cmd=$( get_mount_fstab /proc )
-# cmd=${cmd:--t proc none /proc}
-# mount -n ${cmd}
-#
-get_mount_fstab() {
- awk '$1 ~ "^#" { next }
- $2 == "'$*'" { if (found++ == 0) { print "-t "$3,"-o "$4,$1,$2 } }
- END { if (found > 1) { print "More than one entry for '$*' found in /etc/fstab!" > "/dev/stderr" } }
- ' /etc/fstab
-}
-
-# 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