f886372749
We should use the "command" shell builtin to execute a binary from within the wrapper with the same name. Hard coding the path to the binary makes our test suite fail.
113 lines
2.5 KiB
Bash
113 lines
2.5 KiB
Bash
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
|
|
# Released under the 2-clause BSD license.
|
|
|
|
# Allow any sh script to work with einfo functions and friends
|
|
# We also provide a few helpful functions for other programs to use
|
|
|
|
RC_GOT_FUNCTIONS="yes"
|
|
|
|
eindent()
|
|
{
|
|
: $(( EINFO_INDENT = ${EINFO_INDENT:-0} + 2 ))
|
|
[ "$EINFO_INDENT" -gt 40 ] && EINFO_INDENT=40
|
|
export EINFO_INDENT
|
|
}
|
|
|
|
eoutdent()
|
|
{
|
|
: $(( EINFO_INDENT = ${EINFO_INDENT:-0} - 2 ))
|
|
[ "$EINFO_INDENT" -lt 0 ] && EINFO_INDENT=0
|
|
return 0
|
|
}
|
|
|
|
yesno()
|
|
{
|
|
[ -z "$1" ] && return 1
|
|
|
|
case "$1" in
|
|
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) return 0;;
|
|
[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) return 1;;
|
|
esac
|
|
|
|
local value=
|
|
eval value=\$${1}
|
|
case "$value" in
|
|
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) return 0;;
|
|
[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) return 1;;
|
|
*) vewarn "\$$1 is not set properly"; return 1;;
|
|
esac
|
|
}
|
|
|
|
rc_runlevel()
|
|
{
|
|
rc-status --runlevel
|
|
}
|
|
|
|
_sanitize_path()
|
|
{
|
|
local IFS=":" p= path=
|
|
for p in $PATH; do
|
|
case "$p" in
|
|
@LIBEXECDIR@/bin|@LIBEXECDIR@/sbin);;
|
|
@PREFIX@/bin|@PREFIX@/sbin|/usr/bin|/usr/sbin);;
|
|
@PKG_PREFIX@/bin|@PKG_PREFIX@/sbin);;
|
|
@LOCAL_PREFIX@/bin|@LOCAL_PREFIX@/sbin);;
|
|
*) path="$path${path:+:}$p";;
|
|
esac
|
|
done
|
|
echo "$path"
|
|
}
|
|
|
|
# Allow our scripts to support zsh
|
|
if [ -n "$ZSH_VERSION" ]; then
|
|
emulate sh
|
|
NULLCMD=:
|
|
alias -g '${1+"$@"}'='"$@"'
|
|
setopt NO_GLOB_SUBST
|
|
fi
|
|
|
|
# Make a sane PATH
|
|
_PREFIX=@PREFIX@
|
|
_PKG_PREFIX=@PKG_PREFIX@
|
|
_LOCAL_PREFIX=@LOCAL_PREFIX@
|
|
_LOCAL_PREFIX=${_LOCAL_PREFIX:-/usr/local}
|
|
_PATH=@LIBEXECDIR@/bin
|
|
case "$_PREFIX" in
|
|
"$_PKG_PREFIX"|"$_LOCAL_PREFIX") ;;
|
|
*) _PATH="$_PATH:$_PREFIX/bin:$_PREFIX/sbin";;
|
|
esac
|
|
_PATH="$_PATH":/bin:/sbin:/usr/bin:/usr/sbin
|
|
|
|
if [ -n "$_PKG_PREFIX" ]; then
|
|
_PATH="$_PATH:$_PKG_PREFIX/bin:$_PKG_PREFIX/sbin"
|
|
fi
|
|
if [ -n "$_LOCAL_PREFIX" ]; then
|
|
_PATH="$_PATH:$_LOCAL_PREFIX/bin:$_LOCAL_PREFIX/sbin"
|
|
fi
|
|
_path="$(_sanitize_path "$PATH")"
|
|
export PATH="$_PATH${_path:+:}$_path"
|
|
unset _sanitize_path _PREFIX _PKG_PREFIX _LOCAL_PREFIX _PATH _path
|
|
|
|
for arg; do
|
|
case "$arg" in
|
|
--nocolor|--nocolour|-C)
|
|
export EINFO_COLOR="NO"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -t 1 ] && yesno "${EINFO_COLOR:-YES}"; then
|
|
if [ -z "$GOOD" ]; then
|
|
eval $(eval_ecolors)
|
|
fi
|
|
else
|
|
# We need to have shell stub functions so our init scripts can remember
|
|
# the last ecmd
|
|
for _e in ebegin eend error errorn einfo einfon ewarn ewarnn ewend \
|
|
vebegin veend veinfo vewarn vewend; do
|
|
eval "$_e() { local _r; command $_e \"\$@\"; _r=\$?; \
|
|
export EINFO_LASTCMD=$_e; return \$_r; }"
|
|
done
|
|
unset _e
|
|
fi
|