pkg: make pkgconf_compare_version consistent

The code taken from rpmvercmp in pkg-config returns -1 if a is less than
b, 0 if a is equal to b, and 1 if a is greater than b. This matches the
expectations of the comparison operators that use this function.
However, the tilde handling, the NULL handling, and the docstring all do
the opposite.

This fixes the tilde handling, the NULL handling, and the docstring to
match the behavior of the rpmvercmp code and the expectations of the
comparison operators.
pull/249/head
Doug Freed 2022-10-12 21:43:52 -04:00 committed by Ariadne Conill
parent eb5c6b49d6
commit 08db74c474
1 changed files with 5 additions and 5 deletions

View File

@ -826,7 +826,7 @@ out:
*
* :param char* a: The first version to compare in the pair.
* :param char* b: The second version to compare in the pair.
* :return: -1 if the first version is greater, 0 if both versions are equal, 1 if the second version is greater.
* :return: -1 if the first version is less than, 0 if both versions are equal, 1 if the second version is less than.
* :rtype: int
*/
int
@ -841,10 +841,10 @@ pkgconf_compare_version(const char *a, const char *b)
/* optimization: if version matches then it's the same version. */
if (a == NULL)
return 1;
return -1;
if (b == NULL)
return -1;
return 1;
if (!strcasecmp(a, b))
return 0;
@ -865,9 +865,9 @@ pkgconf_compare_version(const char *a, const char *b)
if (*one == '~' || *two == '~')
{
if (*one != '~')
return -1;
if (*two != '~')
return 1;
if (*two != '~')
return -1;
one++;
two++;