lib/util.c: add function which tests if a given pkgver is reverted by a given pkg.

This commit is contained in:
Enno Boland 2014-09-22 21:22:05 +02:00
parent 33032429c2
commit 18204aeac1
2 changed files with 35 additions and 0 deletions

View File

@ -1835,6 +1835,19 @@ bool xbps_pkg_arch_match(struct xbps_handle *xhp,
*/ */
int xbps_humanize_number(char *buf, int64_t bytes); int xbps_humanize_number(char *buf, int64_t bytes);
/**
* Tests if pkgver is reverted by pkg
*
* The package version is defined by:
* ${VERSION}_${REVISION}.
*
* @param[in] pkgver a package version string
* @param[in] pkg a package which is a candidate to revert pkgver.
*
* @return 1 if pkg reverts pkgver, 0 otherwise.
*/
int xbps_pkgver_is_reverted(const char *pkgver, xbps_dictionary_t pkg);
/** /**
* Compares package version strings. * Compares package version strings.
* *

View File

@ -425,3 +425,25 @@ xbps_humanize_number(char *buf, int64_t bytes)
return humanize_number(buf, 7, bytes, "B", return humanize_number(buf, 7, bytes, "B",
HN_AUTOSCALE, HN_DECIMAL|HN_NOSPACE); HN_AUTOSCALE, HN_DECIMAL|HN_NOSPACE);
} }
/*
* Check if pkg is explicitly marked to replace a specific installed version.
*/
int
xbps_pkgver_is_reverted(const char *pkgver, xbps_dictionary_t pkg) {
unsigned int i;
xbps_array_t reverts;
const char *revertver;
if ((reverts = xbps_dictionary_get(pkg, "reverts")) == NULL)
return 0;
for (i = 0; i < xbps_array_count(reverts); i++) {
xbps_array_get_cstring_nocopy(reverts, i, &revertver);
if (strcmp(pkgver, revertver) == 0) {
return 1;
}
}
return 0;
}