X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fgrml%2Flsb-functions;h=2cf4ab73f5714fe512de4ffd35d58dcaf7edde75;hb=9744b8522931488c6735e63e54249c17bc48038f;hp=ac20e6e325b7ce520816ddb88a208589870769a3;hpb=dbcc99bcf584cec903ab729534d1434d021d4e5e;p=grml-etc-core.git diff --git a/etc/grml/lsb-functions b/etc/grml/lsb-functions index ac20e6e..2cf4ab7 100644 --- a/etc/grml/lsb-functions +++ b/etc/grml/lsb-functions @@ -1,5 +1,7 @@ +# vim:ft=sh:tw=80:ts=4 # lsb init-functions -# vim:ft=sh:tw=80 +# +# based on: # /lib/lsb/init-functions for Debian -*- shell-script -*- # # Copyright (c) 2002-03 Chris Lawrence @@ -100,12 +102,12 @@ log_end_msg() { if _have_tput ; then COLS="$("$TPUT" cols)" if [ -n "$COLS" ]; then - COL=$(( "$COLS" - 7 )) + COL=$(( $COLS - 7 )) else COL=73 fi UP="$("$TPUT" cuu1)" - END="$("$TPUT" hpa $COL)" + END="$("$TPUT" hpa "$COL")" START="$("$TPUT" hpa 0)" #RED="$("$TPUT" setaf 1)" #NORMAL="$("$TPUT" op)" @@ -123,294 +125,3 @@ log_end_msg() { fi return "$1" } - -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-src/rc-scripts/sbin/functions.sh,v 1.81.2.6 2005/05/15 20:00:31 vapier Exp $ - -RC_GOT_FUNCTIONS="yes" - -# Different types of dependencies -deptypes="need use" -# Different types of order deps -ordtypes="before after" - -# -# Internal variables -# - -# Dont output to stdout? -RC_QUIET_STDOUT="no" -RC_VERBOSE="${RC_VERBOSE:-no}" - -# Should we use color? -if [ -r /proc/cmdline ] ; then - grep -q ' nocolor' /proc/cmdline && RC_NOCOLOR='yes' -fi -RC_NOCOLOR="${RC_NOCOLOR:-no}" -# Can the terminal handle endcols? -RC_ENDCOL="yes" - -# -# Default values for rc system -# -RC_TTY_NUMBER=11 -RC_NET_STRICT_CHECKING="no" -RC_PARALLEL_STARTUP="no" -RC_USE_CONFIG_PROFILE="yes" - -# -# Default values for e-message indentation and dots -# -RC_INDENTATION='' -RC_DEFAULT_INDENT=2 -#RC_DOT_PATTERN=' .' -RC_DOT_PATTERN='' - -# void esyslog(char* priority, char* tag, char* message) -# -# use the system logger to log a message -# -esyslog() { - local pri - local tag - - if [ -x /usr/bin/logger ] - then - pri="$1" - tag="$2" - - shift 2 - [ -z "$*" ] && return 0 - - /usr/bin/logger -p "${pri}" -t "${tag}" -- "$*" - fi - - return 0 -} - -# void eindent(int num) -# -# increase the indent used for e-commands. -# -eindent() { - local i=$1 - (( i > 0 )) || (( i = RC_DEFAULT_INDENT )) - esetdent $(( ${#RC_INDENTATION} + i )) -} - -# void eoutdent(int num) -# -# decrease the indent used for e-commands. -# -eoutdent() { - local i=$1 - (( i > 0 )) || (( i = RC_DEFAULT_INDENT )) - esetdent $(( ${#RC_INDENTATION} - i )) -} - -# void esetdent(int num) -# -# hard set the indent used for e-commands. -# num defaults to 0 -# -esetdent() { - local i=$1 - (( i < 0 )) && (( i = 0 )) - RC_INDENTATION=$(printf "%${i}s" '') -} - -# void einfo(char* message) -# -# show an informative message (with a newline) -# -einfo() { - einfon "$*\n" - LAST_E_CMD=einfo - return 0 -} - -# void einfon(char* message) -# -# show an informative message (without a newline) -# -einfon() { - [ "${RC_QUIET_STDOUT}" = "yes" ] && return 0 - [ "${RC_ENDCOL}" != "yes" ] && [ "${LAST_E_CMD}" = "ebegin" ] && echo - printf " ${GOOD}*${NORMAL} ${RC_INDENTATION}$*" - LAST_E_CMD=einfon - return 0 -} - -# void ewarn(char* message) -# -# show a warning message + log it -# -ewarn() { - if [ "${RC_QUIET_STDOUT}" = "yes" ]; then - printf " $*\n" - else - [ "${RC_ENDCOL}" != "yes" ] && [ "${LAST_E_CMD}" = "ebegin" ] && echo - printf " ${WARN}*${NORMAL} ${RC_INDENTATION}$*\n" - fi - - # Log warnings to system log - esyslog "daemon.warning" "rc-scripts" "$*" - - LAST_E_CMD=ewarn - return 0 -} - -# void eerror(char* message) -# -# show an error message + log it -# -eerror() { - if [ "${RC_QUIET_STDOUT}" = "yes" ]; then - printf " $*\n" >/dev/stderr - else - [ "${RC_ENDCOL}" != "yes" ] && [ "${LAST_E_CMD}" = "ebegin" ] && echo - printf " ${BAD}*${NORMAL} ${RC_INDENTATION}$*\n" - fi - - # Log errors to system log - esyslog "daemon.err" "rc-scripts" "$*" - - LAST_E_CMD=eerror - return 0 -} - -# void ebegin(char* message) -# -# show a message indicating the start of a process -# -ebegin() { - local msg="$*" dots spaces - spaces="$(printf '%'"${#RC_DOT_PATTERN}"'s' '')" - [ "${RC_QUIET_STDOUT}" = "yes" ] && return 0 - - if [ -n "${RC_DOT_PATTERN}" ]; then - dots=$(printf "%$(( COLS - 3 - ${#RC_INDENTATION} - ${#msg} - 7 ))s" '') - while [ "${dots#${spaces}}" != "${dots}" ] ; do - dots="${dots#${spaces}}${RC_DOT_PATTERN}" - done - msg="${msg}${dots}" - else - msg="${msg} ..." - fi - einfon "${msg}" - [ "${RC_ENDCOL}" = "yes" ] && echo - - LAST_E_LEN=$(( 3 + ${#RC_INDENTATION} + ${#msg} )) - LAST_E_CMD=ebegin - return 0 -} - -# void _eend(int error, char *efunc, char* errstr) -# -# indicate the completion of process, called from eend/ewend -# if error, show errstr via efunc -# -# This function is private to functions.sh. Do not call it from a -# script. -# -_eend() { - local retval=${1:-0} efunc=${2:-eerror} msg - shift 2 - - if [ "${retval}" -eq 0 ]; then - [ "${RC_QUIET_STDOUT}" = "yes" ] && return 0 - msg="${BRACKET}[ ${GOOD}ok${BRACKET} ]${NORMAL}" - else - if [ -n "$*" ]; then - "${efunc}" "$*" - fi - msg="${BRACKET}[ ${BAD}!!${BRACKET} ]${NORMAL}" - fi - - if [ "${RC_ENDCOL}" = "yes" ]; then - printf "${ENDCOL} ${msg}\n" - else - [ "${LAST_E_CMD}" = "ebegin" ] || LAST_E_LEN=0 - printf "%$(( "${COLS}" - "${LAST_E_LEN}" - 6 ))s%b\n" '' "${msg}" - fi - - return ${retval} -} - -# void eend(int error, char* errstr) -# -# indicate the completion of process -# if error, show errstr via eerror -# -eend() { - local retval=${1:-0} - shift - - _eend ${retval} eerror "$*" - - LAST_E_CMD=eend - return $retval -} - -# void ewend(int error, char* errstr) -# -# indicate the completion of process -# if error, show errstr via ewarn -# -ewend() { - local retval=${1:-0} - shift - - _eend ${retval} ewarn "$*" - - LAST_E_CMD=ewend - return $retval -} - -# Setup a basic $PATH. Just add system default to existing. -# This should solve both /sbin and /usr/sbin not present when -# doing 'su -c foo', or for something like: PATH= rcscript start -PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:${PATH}" - -if [ "$(/sbin/consoletype 2> /dev/null)" = "serial" ] ; then - # We do not want colors/endcols on serial terminals - RC_NOCOLOR="yes" - RC_ENDCOL="no" -fi - -for arg in "$@" ; do - case "${arg}" in - # Lastly check if the user disabled it with --nocolor argument - --nocolor|-nc) - RC_NOCOLOR="yes" - ;; - esac -done - -# Setup COLS and ENDCOL so eend can line up the [ ok ] -# width of [ ok ] == 7 -COLS="$(stty size 2>/dev/null | cut -d' ' -f2)" -if [ -z "${COLS}" ] || [ "${COLS}" -le 0 ] ; then - COLS=80 -fi - -if [ "${RC_ENDCOL}" = "yes" ]; then - ENDCOL="[$(( ${COLS} - 8 ))G" -else - ENDCOL='' -fi - -# Setup the colors so our messages all look pretty -if [ "${RC_NOCOLOR}" = "yes" ]; then - unset GOOD WARN BAD NORMAL HILITE BRACKET -else - GOOD='' - WARN='' - BAD='' - NORMAL='' - HILITE='' - BRACKET='' -fi - -# vim:ts=4