ptxd_ipkg_rev_smaller will return the wrong value if the version number
does not include a $micro component.

For example:
        pkgd_ipkg_rev_smaller foo_1.0-2_armel.ipk foo_1.0-1_armel.ipk
will incorrectly return 0

Increased the number of parts of rev_upstream that is compared since any
extra parts will be filled in with 0 for comparison purposes

Signed-off-by: Jon Ringle <[email protected]>
---
 scripts/libptxdist.sh |   28 ++++++++++++++++++----------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/scripts/libptxdist.sh b/scripts/libptxdist.sh
index 48dbd64..adf2e12 100644
--- a/scripts/libptxdist.sh
+++ b/scripts/libptxdist.sh
@@ -743,23 +743,31 @@ ptxd_ipkg_rev_smaller() {
 
        local first=`ptxd_ipkg_split $1`
        local first_rev_upstream=`ptxd_ipkg_rev_upstream $first`
-       local first_rev_packet=`ptxd_ipkg_rev_package $first`
+       local first_rev_packet=$((`ptxd_ipkg_rev_package $first` + 0))
        local second=`ptxd_ipkg_split $2`
        local second_rev_upstream=`ptxd_ipkg_rev_upstream $second`
-       local second_rev_packet=`ptxd_ipkg_rev_package $second`
-       local first_major=`echo $first_rev_upstream | awk -F. '{print $1}'`
-       local first_minor=`echo $first_rev_upstream | awk -F. '{print $2}'`
-       local first_micro=`echo $first_rev_upstream | awk -F. '{print $3}'`
-       local second_major=`echo $second_rev_upstream | awk -F. '{print $1}'`
-       local second_minor=`echo $second_rev_upstream | awk -F. '{print $2}'`
-       local second_micro=`echo $second_rev_upstream | awk -F. '{print $3}'`
+       local second_rev_packet=$((`ptxd_ipkg_rev_package $second` + 0))
+       local first_major=$((`echo $first_rev_upstream | awk -F. '{print $1}'` 
+ 0))
+       local first_minor=$((`echo $first_rev_upstream | awk -F. '{print $2}'` 
+ 0))
+       local first_micro1=$((`echo $first_rev_upstream | awk -F. '{print $3}'` 
+ 0))
+       local first_micro2=$((`echo $first_rev_upstream | awk -F. '{print $4}'` 
+ 0))
+       local first_micro3=$((`echo $first_rev_upstream | awk -F. '{print $5}'` 
+ 0))
+       local second_major=$((`echo $second_rev_upstream | awk -F. '{print 
$1}'` + 0))
+       local second_minor=$((`echo $second_rev_upstream | awk -F. '{print 
$2}'` + 0))
+       local second_micro1=$((`echo $second_rev_upstream | awk -F. '{print 
$3}'` + 0))
+       local second_micro2=$((`echo $second_rev_upstream | awk -F. '{print 
$4}'` + 0))
+       local second_micro3=$((`echo $second_rev_upstream | awk -F. '{print 
$5}'` + 0))
 
        [ $first_major -lt $second_major ] && return 0
        [ $first_major -gt $second_major ] && return 1
        [ $first_minor -lt $second_minor ] && return 0
        [ $first_minor -gt $second_minor ] && return 1
-       [ $first_micro -lt $second_micro ] && return 0
-       [ $first_micro -gt $second_micro ] && return 1
+       [ $first_micro1 -lt $second_micro1 ] && return 0
+       [ $first_micro1 -gt $second_micro1 ] && return 1
+       [ $first_micro2 -lt $second_micro2 ] && return 0
+       [ $first_micro2 -gt $second_micro2 ] && return 1
+       [ $first_micro3 -lt $second_micro3 ] && return 0
+       [ $first_micro3 -gt $second_micro3 ] && return 1
        [ $first_rev_packet -lt $second_rev_packet ] && return 0
        [ $first_rev_packet -gt $second_rev_packet ] && return 1
 
-- 
1.7.0.4


-- 
ptxdist mailing list
[email protected]

Reply via email to