From 4ea2cc3bd4a7d9b1c54a9d33e6a1cf82e7c8c21d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 23 Jul 2014 09:06:59 +0200 Subject: Imported Upstream version 0.18.1 --- chkver | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100755 chkver (limited to 'chkver') diff --git a/chkver b/chkver new file mode 100755 index 0000000..01028fc --- /dev/null +++ b/chkver @@ -0,0 +1,119 @@ +#! /bin/bash +# +# Copyright 2009-2014 Yorba Foundation +# +# This software is licensed under the GNU LGPL (version 2.1 or later). +# See the COPYING file in this distribution. +# +# chkver +# +# Returns 0 if queried version is greater than or equal (for min) or lesser than (for max) the +# supplied value, or 1 otherwise. +# +# Set VERBOSE environment variable for somewhat useful output. +# +# NOTE: +# This is an ultra-naive implementation with just enough error-checking. + +usage() { + echo 'usage: chkver ' +} + +abort() { + usage + exit 1 +} + +verify_cardinal() { + while [ $# != 0 ] + do + if [ $1 ] && [ $1 -eq $1 2> /dev/null ] && [ $1 -ge 0 ] + then + : + else + abort + fi + + shift + done +} + +# check_min name number min-number +check_min() { + if [ $2 -gt $3 ] + then + verbose $1 large enough. + exit 0 + elif [ $2 -lt $3 ] + then + verbose $1 not large enough. + exit 1 + fi +} + +# check_max name number max-number +check_max() { + if [ $2 -lt $3 ] + then + verbose $1 small enough. + exit 0 + elif [ $2 -gt $3 ] + then + verbose $1 not small enough. + exit 1 + fi +} + +verbose() { + if [ $VERBOSE ] + then + echo $* + fi +} + +# Check number of arguments +if [ $# -lt 3 ] +then + abort +fi + +# Parse arguments +mode=$1 +if [ $mode != "min" ] && [ $mode != "max" ] +then + abort +fi + +major=`echo $2 | awk -F. '{print $1}'` +minor=`echo $2 | awk -F. '{print $2}'` +revision=`echo $2 | awk -F. '{print $3}'` + +min_major=`echo $3 | awk -F. '{print $1}'` +min_minor=`echo $3 | awk -F. '{print $2}'` +min_revision=`echo $3 | awk -F. '{print $3}'` + +# Verify they're all positive integers +verify_cardinal "$major" "$minor" "$revision" "$min_major" "$min_minor" "$min_revision" + +verbose Comparing $major.$minor.$revision against $mode $min_major.$min_minor.$min_revision + +# check version numbers in order of importance +if [ $mode == "min" ] +then + check_min "Major" $major $min_major + check_min "Minor" $minor $min_minor + check_min "Revision" $revision $min_revision +else + check_max "Major" $major $min_major + check_max "Minor" $minor $min_minor + check_max "Revision" $revision $min_revision +fi + +verbose Same version. +if [ $mode == "min" ] +then + exit 0 +else + exit 1 +fi + -- cgit v1.2.3