From 0e6df840b65267f9a668f5e987f5adec8535d70b Mon Sep 17 00:00:00 2001 From: intrigeri Date: Sat, 22 Feb 2014 14:15:27 +0000 Subject: Add shell functions to compare version numbers. --- lib/tools.in | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'lib') 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 -- cgit v1.2.3