aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2014-02-22 14:15:27 +0000
committerintrigeri <intrigeri@boum.org>2014-02-22 14:23:22 +0000
commit0e6df840b65267f9a668f5e987f5adec8535d70b (patch)
treee0bfa3fd7d0a1fd596375984f3039b687c444a8b
parent9ef0217bbc97e0caa90e3df271e239b4fc8fec1e (diff)
downloadbackupninja-0e6df840b65267f9a668f5e987f5adec8535d70b.tar.gz
backupninja-0e6df840b65267f9a668f5e987f5adec8535d70b.tar.bz2
Add shell functions to compare version numbers.
-rw-r--r--lib/tools.in38
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