diff options
author | unknown <magnus@neptunus.(none)> | 2004-04-14 12:11:51 +0200 |
---|---|---|
committer | unknown <magnus@neptunus.(none)> | 2004-04-14 12:11:51 +0200 |
commit | f4adc50ea0044f4e330ffbaa712ca38c0fd74ce7 (patch) | |
tree | 886c6b8fcd5699e03622f538ce106ce73b7735b3 /ndb/home/lib | |
parent | e6240e593dca52bb710999ce752b9e6e7feee82c (diff) | |
download | mariadb-git-f4adc50ea0044f4e330ffbaa712ca38c0fd74ce7.tar.gz |
Add more files for NDB Cluster
Diffstat (limited to 'ndb/home/lib')
-rw-r--r-- | ndb/home/lib/funcs.sh | 294 |
1 files changed, 294 insertions, 0 deletions
diff --git a/ndb/home/lib/funcs.sh b/ndb/home/lib/funcs.sh new file mode 100644 index 00000000000..b7d8914035e --- /dev/null +++ b/ndb/home/lib/funcs.sh @@ -0,0 +1,294 @@ +# NAME +# safe, safe_eval, die, rawdie, syndie, msg, errmsg, +# rawmsg, rawerrmsg, trace, errtrace, is_wordmatch +# - functions for safe execution and convenient printing and tracing +# +# abspath - make a path absolute +# +# SYNOPSIS +# . funcs.sh +# +# is_wordmatch requires perl. +# +# DESCRIPTION +# Funcs.sh is a collection of somewhat related functions. +# The main categories and their respective functions are: +# Controlled execution - safe, safe_eval +# Exiting with a message - die, rawdie, syndie +# Printing messages - msg, errmsg, rawmsg, rawerrmsg +# Tracing - trace, errtrace +# Pattern matching - is_wordmatch +# +# +# ENVIRONMENT +# These variables are not exported, but they are still visible +# to, and used by, these functions. +# +# progname basename of $0 +# verbose empty or non-emtpy, used for tracing +# synopsis string describing the syntax of $progname +# +# VERSION +# 2.0 +# +# AUTHOR +# Jonas Mvlsd +# Jonas Oreland - added abspath + + + + + +# Safely executes the given command and exits +# with the given commands exit code if != 0, +# else the return value ("the functions exit +# code") is 0. Eg: safely cd $install_dir +# +safely () +{ + "$@" + safely_code__=$? + [ $safely_code__ -ne 0 ] && + { errmsg "Command failed: $@. Exit code: $safely_code__."; + exit $safely_code__; } + + : # return "exit code" 0 from function +} + + + + +# Safely_eval executes "eval command" and exits +# with the given commands exit code if != 0, +# else the return value (the functions "exit +# code") is 0. +# +# Safely_eval is just like like safely, but safely_eval does +# "eval command" instead of just "command" +# +# Safely_eval even works with pipes etc., but you have to quote +# the special characters. Eg: safely_eval ls \| wc \> tst.txt 2\>\&1 +# +# +safely_eval () +{ + eval "$@" + safely_eval_code__=$? + [ $safely_eval_code__ -ne 0 ] && + { errmsg "Command failed: $@. Exit code: $safely_eval_code__."; + exit $safely_eval_code__; } + + : # return "exit code" 0 from function +} + + + + + + +# +# safe and safe_eval are deprecated, use safely and safely_eval instead +# + +# Safe executes the given command and exits +# with the given commands exit code if != 0, +# else the return value ("the functions exit +# code") is 0. +# +safe () +{ + "$@" + safe_code__=$? + [ $safe_code__ -ne 0 ] && + { errmsg "Command failed: $@. Exit code: $safe_code__."; + exit $safe_code__; } + + : # return "exit code" 0 from function +} + + + + +# Safe_eval executes "eval command" and exits +# with the given commands exit code if != 0, +# else the return value (the functions "exit +# code") is 0. +# +# Safe_eval is just like like safe, but safe_eval does +# "eval command" instead of just "command" +# +# Safe_eval even works with pipes etc., but you have to quote +# the special characters. Eg: safe_eval ls \| wc \> tst.txt 2\>\&1 +# +# +safe_eval () +{ + eval "$@" + safe_eval_code__=$? + [ $safe_eval_code__ -ne 0 ] && + { errmsg "Command failed: $@. Exit code: $safe_eval_code__."; + exit $safe_eval_code__; } + + : # return "exit code" 0 from function +} + + + + + + +# die prints the supplied message to stderr, +# prefixed with the program name, and exits +# with the exit code given by "-e num" or +# 1, if no -e option is present. +# +die () +{ + die_code__=1 + [ "X$1" = X-e ] && { die_code__=$2; shift 2; } + [ "X$1" = X-- ] && shift + errmsg "$@" + exit $die_code__ +} + + + +# rawdie prints the supplied message to stderr. +# It then exits with the exit code given with "-e num" +# or 1, if no -e option is present. +# +rawdie () +{ + rawdie_code__=1 + [ "X$1" = X-e ] && { rawdie_code__=$2; shift 2; } + [ "X$1" = X-- ] && shift + rawerrmsg "$@" + exit $rawdie_code__ +} + + + + +# Syndie prints the supplied message (if present) to stderr, +# prefixed with the program name, on the first line. +# On the second line, it prints $synopsis. +# It then exits with the exit code given with "-e num" +# or 1, if no -e option is present. +# +syndie () +{ + syndie_code__=1 + [ "X$1" = X-e ] && { syndie_code__=$2; shift 2; } + [ "X$1" = X-- ] && shift + [ -n "$*" ] && msg "$*" + rawdie -e $syndie_code__ "Synopsis: $synopsis" +} + + + + +# msg prints the supplied message to stdout, +# prefixed with the program name. +# +msg () +{ + echo "${progname:-<no program name set>}:" "$@" +} + + + +# msg prints the supplied message to stderr, +# prefixed with the program name. +# +errmsg () +{ + echo "${progname:-<no program name set>}:" "$@" >&2 +} + + + +rawmsg () { echo "$*"; } # print the supplied message to stdout +rawerrmsg () { echo "$*" >&2; } # print the supplied message to stderr + + + +# trace prints the supplied message to stdout if verbose is non-null +# +trace () +{ + [ -n "$verbose" ] && msg "$@" +} + + +# errtrace prints the supplied message to stderr if verbose is non-null +# +errtrace () +{ + [ -n "$verbose" ] && msg "$@" >&2 +} + + + +# SYNTAX +# is_wordmatch candidatelist wordlist +# +# DESCRIPTION +# is_wordmatch returns true if any of the words (candidates) +# in candidatelist is present in wordlist, otherwise it +# returns false. +# +# EXAMPLES +# is_wordmatch "tuareg nixdorf low content" "xx yy zz low fgj turn roff sd" +# returns true, since "low" in candidatelist is present in wordlist. +# +# is_wordmatch "tuareg nixdorf low content" "xx yy zz slow fgj turn roff sd" +# returns false, since none of the words in candidatelist occurs in wordlist. +# +# is_wordmatch "tuareg nixdorf low content" "xx yy zz low fgj tuareg roff" +# returns true, since "low" and "tuareg" in candidatelist occurs in wordlist. +# +is_wordmatch () +{ + is_wordmatch_pattern__=`echo $1 | + sed 's/^/\\\\b/; + s/[ ][ ]*/\\\\b|\\\\b/g; + s/$/\\\\b/;'` + shift + echo "$*" | + perl -lne "m/$is_wordmatch_pattern__/ || exit 1" +} + +# +# abspath +# +# Stolen from http://oase-shareware.org/shell/shelltips/script_programmer.html +# +abspath() +{ + __abspath_D=`dirname "$1"` + __abspath_B=`basename "$1"` + echo "`cd \"$__abspath_D\" 2>/dev/null && pwd || echo \"$__abspath_D\"`/$__abspath_B" +} + +# +# +# NdbExit +# +# +NdbExit() +{ + echo "NdbExit: $1" + exit $1 +} + +NdbGetExitCode() +{ + __res__=`echo $* | awk '{if($1=="NdbExit:") print $2;}'` + if [ -n $__res__ ] + then + echo $__res__ + else + echo 255 + fi +} + |