diff options
author | intrigeri <intrigeri@boum.org> | 2014-02-22 14:15:27 +0000 |
---|---|---|
committer | intrigeri <intrigeri@boum.org> | 2014-02-22 14:23:22 +0000 |
commit | 0e6df840b65267f9a668f5e987f5adec8535d70b (patch) | |
tree | e0bfa3fd7d0a1fd596375984f3039b687c444a8b /lib | |
parent | 9ef0217bbc97e0caa90e3df271e239b4fc8fec1e (diff) | |
download | backupninja-0e6df840b65267f9a668f5e987f5adec8535d70b.tar.gz backupninja-0e6df840b65267f9a668f5e987f5adec8535d70b.tar.bz2 |
Add shell functions to compare version numbers.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/tools.in | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/tools.in b/lib/tools.in index 929826b..55c2650 100644 --- a/lib/tools.in +++ b/lib/tools.in @@ -15,6 +15,44 @@ function maketemp() { echo $tempfile } +# +# compare version numbers. +# returns 0 if equal, 1 if $1>$2, and 2 if $1<$2 +# + +function compare_versions() { + if [[ "$1" == "$2" ]]; then + return 0 + fi + local IFS=. + local i version_1=($1) version_2=($2) + for ((i=${#version_1[@]}; i<${#version_2[@]}; i++)); do + version_1[i]=0 + done + for ((i=0; i<${#version_1[@]}; i++)); do + if [[ -z ${version_2[i]} ]]; then + version_2[i]=0 + fi + if ((10#${version_1[i]} > 10#${version_2[i]})); then + return 1 + fi + if ((10#${version_1[i]} < 10#${version_2[i]})); then + return 2 + fi + done + return 0 +} + +# +# compare version numbers: >= +# + +function version_ge() { + compare_versions "$1" "$2" + comp=$? + [ $comp -eq 0 ] || [ $comp -eq 1 ] +} + ##################################################### ## CONFIG-FILE RELATED FUNCTIONS |