Further fixes related to 113661
authorsopwith <devnull@localhost>
Fri, 20 Feb 2004 20:05:27 +0000 (20:05 +0000)
committersopwith <devnull@localhost>
Fri, 20 Feb 2004 20:05:27 +0000 (20:05 +0000)
CVS patchset: 7105
CVS date: 2004/02/20 20:05:27

python/header-py.c

index f54b939..2cd4fe1 100644 (file)
@@ -989,6 +989,15 @@ PyObject * versionCompare (PyObject * self, PyObject * args)
 
 /**
  */
+static int label_compare_values(const char *str1, const char *str2)
+{
+    if (str1 && !str2)
+       return 1;
+    else if (!str1 && str2)
+       return -1;
+    return rpmvercmp(str1, str2);
+}
+
 PyObject * labelCompare (PyObject * self, PyObject * args)
 {
     char *v1, *r1, *e1, *v2, *r2, *e2;
@@ -998,30 +1007,15 @@ PyObject * labelCompare (PyObject * self, PyObject * args)
                          &e1, &v1, &r1,
                          &e2, &v2, &r2)) return NULL;
 
-    if (!v1 || !v2 || !r1  || !r2) {
-       PyErr_SetString(pyrpmError, "Invalid version or release - possibly None");
-       return NULL;
-    }
-
-    if (e1 && !e2)
-       return Py_BuildValue("i", 1);
-    else if (!e1 && e2)
-       return Py_BuildValue("i", -1);
-    else if (e1 && e2) {
-       int ep1, ep2;
-       ep1 = atoi (e1);
-       ep2 = atoi (e2);
-       if (ep1 < ep2)
-           return Py_BuildValue("i", -1);
-       else if (ep1 > ep2)
-           return Py_BuildValue("i", 1);
-    }
+    rc = compare_values(e1, e2)
+    if (rc)
+       return Py_BuildValue("i", rc);
 
-    rc = rpmvercmp(v1, v2);
+    rc = compare_values(v1, v2)
     if (rc)
        return Py_BuildValue("i", rc);
 
-    return Py_BuildValue("i", rpmvercmp(r1, r2));
+    return Py_BuildValue("i", compare_values(r1, r2));
 }
 
 /*@}*/