fix update's version logic
authormbm <mbm@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 11 Jul 2004 22:54:23 +0000 (22:54 +0000)
committermbm <mbm@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 11 Jul 2004 22:54:23 +0000 (22:54 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@86 3c298f89-4303-0410-b956-a3cf2f4a3e73

root/bin/ipkg

index b5c2ce7..c802ce1 100755 (executable)
@@ -19,6 +19,18 @@ set -e
 # explicitly enable it first and disable it afterwards.
 set -o noglob
 
+ipkg_is_upgrade () {
+  local A B a b
+  A=$(echo $1 | sed "s/[0-9]*/ & /g")
+  B=$(echo $2 | sed "s/[0-9]*/ & /g")
+  while [ \! -z "$A" ] && [ \! -z "$B" ]; do {
+    set $A; a=$1; shift; A=$*
+    set $B; b=$1; shift; B=$*
+    { [ "$a" -gt "$b" ] 2>- || [ "$a" ">" "$b" ]; } && { return 0; }
+  }; done
+  return 1;
+}
+
 ipkg_srcs() {
        local srcre="$1"
        sed -ne "s/^src[[:space:]]\+$srcre[[:space:]]\+//p" < $IPKG_CONF
@@ -984,7 +996,7 @@ ipkg_upgrade_pkg() {
 
                        if [ "$avail_ver" = "$inst_ver" ]; then 
                                echo "Package $pkg ($inst_ver) installed in $dest_name is up to date"
-                       elif [ "$avail_ver" -gt "$inst_ver" ]; then
+                       elif ipkg_is_upgrade "$avail_ver" "$inst_ver"; then
                                echo "Upgrading $pkg ($dest_name) from $inst_ver to $avail_ver"
                                ipkg_get_install_dest $dest $pkg
                        else