diff options
Diffstat (limited to 'opkg-compare-versions.sh')
-rwxr-xr-x | opkg-compare-versions.sh | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/opkg-compare-versions.sh b/opkg-compare-versions.sh deleted file mode 100755 index 1f092d7..0000000 --- a/opkg-compare-versions.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh -set -e - -# This is a little experiment to see how expensive it would be to -# compare versions in a shell script. This script is not done yet -# and the nasiest part is still left undone, (the fact that in Debian -# versions all letters compare less than all non-letters). -# -# It looks to me like version comprehension might be the feature that pushes -# opkg from /bin/sh to compiled C code... - -if [ $# -lt 3 ]; then - echo " -usage: opkg-compare-versions v1 op v2 - where op in (<<, <=, =, >=, >>) -Return value is 0 if v1 op v2 is satisfied, 1 otherwise" - exit 2 -fi - -v1=$1 -op=$2 -v2=$3 - -# Debian has a little historical problem with operators... -may_be_equal=0 -case $op in -'>>') - op="-gt" -;; -'<<') - op="-lt" -;; -'>'|'>=') - op="-gt" - may_be_equal=1 -;; -'<'|'<=') - op="-lt" - may_be_equal=1 -;; -'=') - may_be_equal=1 -;; -*) - echo "opkg_compare_versions: Invalid operator \`$op' valid operators are (<<, <=, =, >=, >>)" - exit 1 -;; -esac - -if [ $may_be_equal == 1 -a $v1 == $v2 ]; then - exit 0; -elif [ $op == '=' ]; then - exit 1; -fi - -epoch1=`echo $v1 | sed -ne 's/:.*//p'` -v1=`echo $v1 | sed -e 's/^[^:]*://'` -epoch2=`echo $v2 | sed -ne 's/:.*//p'` -v2=`echo $v2 | sed -e 's/^[^:]*://'` - -upstream1=`echo $v1 | sed -e '/-/s/\(.*\)-.*/\1/'` -debian_rev1=`echo $v1 | sed -ne 's/.*-//p'` -upstream2=`echo $v2 | sed -e '/-/s/\(.*\)-.*/\1/'` -debian_rev2=`echo $v2 | sed -ne 's/.*-//p'` - -echo "$epoch1:$upstream1-$debian_rev1 $op $epoch2:$upstream2-$debian_rev2" - -exit 3 - -[ -z $epoch1 ] && epoch1="0" -[ -z $epoch2 ] && epoch2="0" - -if [ $epoch1 != $epoch2 ]; then - exit `[ $epoch1 $op $epoch2 ]` -fi - -exit 3 |