summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-06-22 11:08:39 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2009-06-22 11:08:39 +0200
commit5b75b40bf9c6769ef14e23d13cc0765929a5b83a (patch)
tree98649f7e5d5bd751508094f2fa29d81b72b076bb
parent4bbed2d648fcb98c613f88c1ced418e771407f84 (diff)
downloadapk-tools-5b75b40bf9c6769ef14e23d13cc0765929a5b83a.tar.bz2
apk-tools-5b75b40bf9c6769ef14e23d13cc0765929a5b83a.tar.xz
version: added apk_version_compare_blob() function
We want be able to compare blobs so we basicly revert the old change, and make a wrapper that takes version strings.
-rw-r--r--src/apk_version.h1
-rw-r--r--src/version.c15
2 files changed, 9 insertions, 7 deletions
diff --git a/src/apk_version.h b/src/apk_version.h
index b7779fa..ea3f444 100644
--- a/src/apk_version.h
+++ b/src/apk_version.h
@@ -21,6 +21,7 @@
const char *apk_version_op_string(int result_mask);
int apk_version_result_mask(const char *str);
int apk_version_validate(apk_blob_t ver);
+int apk_version_compare_blob(apk_blob_t a, apk_blob_t b);
int apk_version_compare(const char *str1, const char *str2);
#endif
diff --git a/src/version.c b/src/version.c
index 57f9a22..a1796a1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -174,20 +174,16 @@ int apk_version_validate(apk_blob_t ver)
return t == TOKEN_END;
}
-int apk_version_compare(const char *str1, const char *str2)
+int apk_version_compare_blob(apk_blob_t a, apk_blob_t b)
{
int at = TOKEN_DIGIT, bt = TOKEN_DIGIT;
int av = 0, bv = 0;
- apk_blob_t a, b;
- if (str1 == NULL || str2 == NULL) {
- if (str1 == NULL && str2 == NULL)
+ if (APK_BLOB_IS_NULL(a) || APK_BLOB_IS_NULL(b)) {
+ if (APK_BLOB_IS_NULL(a) && APK_BLOB_IS_NULL(b))
return APK_VERSION_EQUAL;
return APK_VERSION_EQUAL | APK_VERSION_GREATER | APK_VERSION_LESS;
}
-
- a = APK_BLOB_STR(str1);
- b = APK_BLOB_STR(str2);
while (at == bt && at != TOKEN_END && at != TOKEN_INVALID && av == bv) {
av = get_token(&at, &a);
@@ -213,3 +209,8 @@ int apk_version_compare(const char *str1, const char *str2)
APK_VERSION_LESS : APK_VERSION_GREATER;
return APK_VERSION_EQUAL;
}
+
+int apk_version_compare(const char *str1, const char *str2)
+{
+ return apk_version_compare_blob(APK_BLOB_STR(str1), APK_BLOB_STR(str2));
+}