X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=sh-lib;h=e41be34798085a7ae6971286f560a2361e3f5d6f;hb=2324ae084c8a9b19994cd4c335ba1830889ae2b8;hp=27e8ff3374049870b96834c8b61ad4bf1a37cbc1;hpb=f8e00cff9c81fe071494af7d5a07c551f02add25;p=grml-shlib.git diff --git a/sh-lib b/sh-lib index 27e8ff3..e41be34 100644 --- a/sh-lib +++ b/sh-lib @@ -14,6 +14,9 @@ VERBOSE_TMP__=0 # FIXME maybe PROG_PATH__ for better error reporting? PROG_NAME__="" # initialised within init section +# directory for init scripts +INITD_DIR__="/etc/init.d/" + # >= level and the function will print the message EPRINT__=1 # eprint (error print) EEPRINT__=2 # 2print (intern error print) @@ -568,56 +571,54 @@ function netGetNameservers # SERVICES {{{ function _touchService { - local action_="${1:-"start"}" + local action_="${1:-start}" local service_="$2" local error_function_=${3:-"eprint"} # function to call on error + local message_="$4" # user supplied error message local i="" + local known_action_='false' for i in "start" "stop" "restart" "reload" "force-reload"; do if [[ $i == $action_ ]]; then + known_action_='true' break fi - $error_function_ "unknown action: \"$action\"" - return 1 done + $known_action_ || warn "_touchService(): unknown action \"$action_\"" + - if [ ! -e "$service_" ]; then - $error_function_ "service does not exist: \"$service_\"" + local service_path_="" + service_path_="${INITD_DIR__}/$service_" + if [ ! -e "$service_path_" ]; then + warn "_touchService(): service does not exist: \"$service_\"" return 1 fi - if [ ! -x "$service_" ]; then - $error_function_ "service is not executable: \"$service_\"" + if [ ! -x "$service_path_" ]; then + warn "_touchService(): service is not executable: \"$service_\"" fi - /etc/init.d/$service_ $action_ + local ret_="" + "$service_path_" "$action_" + ret_=$? + if [[ $ret_ != 0 ]]; then + if [ -z "$message_" ]; then + "$error_function_" "Problems ${action_}ing service \"$service_\"" $ret_ + else + "$error_function_" "$message_" $ret_ + fi + return 1 + fi + dprint "_touchService(): successfully started service \"$service_\"" + return 0 } function _createServiceFunctions { for i in "start" "stop" "restart" "reload" "force-reload"; do - eval "\ -function ${i}Service -{ - local service_=\"\$1\" - local error_function_=\${2:-\"eprint\"} # function to call on error - local message_=\"\$3\" # user supplied error message - - local ret_=\"\" - _touchService ${i} \"\$service_\" - ret_=\$? - if [[ \$ret_ != 0 ]]; then - if [ -z \"\$message_\" ]; then - \"\$error_function_\" \"Problems ${i}ing service \"\$service_\"\" \$ret_ - else - \"\$error_function_\" \"\$message_\" \$ret_ - fi - return 1 - fi -}" + eval "function ${i}Service { _touchService ${i} \"\$1\" \"\$2\" \"\$3\"; }" done } _createServiceFunctions - # }}} # prints the next free /dev/loop* to stdout