]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Switch order of tilde and caret check in evr.c
authorMichael Schroeder <mls@suse.de>
Mon, 26 Nov 2018 13:20:16 +0000 (14:20 +0100)
committerMichael Schroeder <mls@suse.de>
Mon, 26 Nov 2018 13:20:16 +0000 (14:20 +0100)
Tilde must come before caret, so that 1.0~1 < 1.0^1
Also add this to the testcase.

src/evr.c
test/testcases/evrcmp/caret.t

index c7d4b3181ec157f7d6a1eb37f5e1ecb2d290cc61..c63878e14b5c3bdc501daa9838c0e2fd0009acff 100644 (file)
--- a/src/evr.c
+++ b/src/evr.c
@@ -82,18 +82,6 @@ solv_vercmp_rpm(const char *s1, const char *q1, const char *s2, const char *q2)
       while (s2 < q2 && !(*s2 >= '0' && *s2 <= '9') &&
           !(*s2 >= 'a' && *s2 <= 'z') && !(*s2 >= 'A' && *s2 <= 'Z') && *s2 != '~' && *s2 != '^')
        s2++;
-      if (s1 < q1 && *s1 == '^')
-       {
-         if (s2 < q2 && *s2 == '^')
-           {
-             s1++;
-             s2++;
-             continue;
-           }
-         return s2 < q2 ? -1 : 1;
-       }
-      if (s2 < q2 && *s2 == '^')
-       return s1 < q1 ? 1 : -1;
       if (s1 < q1 && *s1 == '~')
         {
          if (s2 < q2 && *s2 == '~')
@@ -106,6 +94,18 @@ solv_vercmp_rpm(const char *s1, const char *q1, const char *s2, const char *q2)
         }
       if (s2 < q2 && *s2 == '~')
        return 1;
+      if (s1 < q1 && *s1 == '^')
+       {
+         if (s2 < q2 && *s2 == '^')
+           {
+             s1++;
+             s2++;
+             continue;
+           }
+         return s2 < q2 ? -1 : 1;
+       }
+      if (s2 < q2 && *s2 == '^')
+       return s1 < q1 ? 1 : -1;
       if (s1 >= q1 || s2 >= q2)
        break;
       if ((*s1 >= '0' && *s1 <= '9') || (*s2 >= '0' && *s2 <= '9'))
index 9227c73d6aede3815c0285594dae97e76b792e3f..d0c3a07bcb3fc6c505dd05c62125fba006c3946f 100644 (file)
@@ -36,35 +36,39 @@ evrcmp 1.0~rc1 1.0~rc1^git1
 evrcmp 1.0^git1~pre 1.0^git1~pre
 evrcmp 1.0^git1 1.0^git1~pre
 evrcmp 1.0^git1~pre 1.0^git1
+evrcmp 1.0^1 1.0~1
+evrcmp 1.0~1 1.0^1
 
 result jobs <inline>
-#>job noop provides 1.0 < 1.0^
-#>job noop provides 1.0 < 1.0^git1
+#>job noop provides 1.0~rc1 = 1.0~rc1
+#>job noop provides 1.0~rc1 < 1.0
 #>job noop provides 1.0 > 1.0~rc1
-#>job noop provides 1.0.1 > 1.0^20160101
-#>job noop provides 1.01 > 1.0^git1
+#>job noop provides 1.0~rc1 < 1.0~rc2
+#>job noop provides 1.0~rc2 > 1.0~rc1
+#>job noop provides 1.0~rc1~git123 = 1.0~rc1~git123
+#>job noop provides 1.0~rc1~git123 < 1.0~rc1
+#>job noop provides 1.0~rc1 > 1.0~rc1~git123
 #>job noop provides 1.0^ = 1.0^
 #>job noop provides 1.0^ > 1.0
-#>job noop provides 1.0^20160101 < 1.0.1
-#>job noop provides 1.0^20160101 = 1.0^20160101
-#>job noop provides 1.0^20160101^git1 < 1.0^20160102
-#>job noop provides 1.0^20160101^git1 = 1.0^20160101^git1
-#>job noop provides 1.0^20160102 > 1.0^20160101^git1
-#>job noop provides 1.0^git1 < 1.01
-#>job noop provides 1.0^git1 < 1.0^git2
+#>job noop provides 1.0 < 1.0^
 #>job noop provides 1.0^git1 = 1.0^git1
 #>job noop provides 1.0^git1 > 1.0
-#>job noop provides 1.0^git1 > 1.0^git1~pre
-#>job noop provides 1.0^git1~pre < 1.0^git1
-#>job noop provides 1.0^git1~pre = 1.0^git1~pre
+#>job noop provides 1.0 < 1.0^git1
+#>job noop provides 1.0^git1 < 1.0^git2
 #>job noop provides 1.0^git2 > 1.0^git1
-#>job noop provides 1.0~rc1 < 1.0
-#>job noop provides 1.0~rc1 < 1.0~rc1^git1
-#>job noop provides 1.0~rc1 < 1.0~rc2
-#>job noop provides 1.0~rc1 = 1.0~rc1
-#>job noop provides 1.0~rc1 > 1.0~rc1~git123
+#>job noop provides 1.0^git1 < 1.01
+#>job noop provides 1.01 > 1.0^git1
+#>job noop provides 1.0^20160101 = 1.0^20160101
+#>job noop provides 1.0^20160101 < 1.0.1
+#>job noop provides 1.0.1 > 1.0^20160101
+#>job noop provides 1.0^20160101^git1 = 1.0^20160101^git1
+#>job noop provides 1.0^20160102 > 1.0^20160101^git1
+#>job noop provides 1.0^20160101^git1 < 1.0^20160102
 #>job noop provides 1.0~rc1^git1 = 1.0~rc1^git1
 #>job noop provides 1.0~rc1^git1 > 1.0~rc1
-#>job noop provides 1.0~rc1~git123 < 1.0~rc1
-#>job noop provides 1.0~rc1~git123 = 1.0~rc1~git123
-#>job noop provides 1.0~rc2 > 1.0~rc1
+#>job noop provides 1.0~rc1 < 1.0~rc1^git1
+#>job noop provides 1.0^git1~pre = 1.0^git1~pre
+#>job noop provides 1.0^git1 > 1.0^git1~pre
+#>job noop provides 1.0^git1~pre < 1.0^git1
+#>job noop provides 1.0^1 > 1.0~1
+#>job noop provides 1.0~1 < 1.0^1