libalpm/deps.c : split alpm_depcmp.
That function wasn't big, but this might be useful for later refactoring of the search for satisfier code. Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
c68d3cc38a
commit
240bdf5971
@ -443,25 +443,38 @@ alpm_list_t *_alpm_checkdeps(pmdb_t *db, pmtranstype_t op,
|
||||
return(baddeps);
|
||||
}
|
||||
|
||||
static int _alpm_dep_vercmp(const char *version1, pmdepmod_t mod,
|
||||
const char *version2)
|
||||
{
|
||||
int equal = 0;
|
||||
|
||||
if(mod == PM_DEP_MOD_ANY) {
|
||||
equal = 1;
|
||||
} else {
|
||||
int cmp = _alpm_versioncmp(version1, version2);
|
||||
switch(mod) {
|
||||
case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
|
||||
case PM_DEP_MOD_GE: equal = (cmp >= 0); break;
|
||||
case PM_DEP_MOD_LE: equal = (cmp <= 0); break;
|
||||
default: equal = 1; break;
|
||||
}
|
||||
}
|
||||
return(equal);
|
||||
}
|
||||
|
||||
int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
|
||||
{
|
||||
int equal = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(strcmp(pkg->name, dep->name) == 0
|
||||
|| alpm_list_find_str(alpm_pkg_get_provides(pkg), dep->name)) {
|
||||
if(dep->mod == PM_DEP_MOD_ANY) {
|
||||
equal = 1;
|
||||
} else {
|
||||
int cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), dep->version);
|
||||
switch(dep->mod) {
|
||||
case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
|
||||
case PM_DEP_MOD_GE: equal = (cmp >= 0); break;
|
||||
case PM_DEP_MOD_LE: equal = (cmp <= 0); break;
|
||||
default: equal = 1; break;
|
||||
}
|
||||
}
|
||||
const char *pkgname = alpm_pkg_get_name(pkg);
|
||||
const char *pkgversion = alpm_pkg_get_version(pkg);
|
||||
|
||||
if(strcmp(pkgname, dep->name) == 0
|
||||
|| alpm_list_find_str(alpm_pkg_get_provides(pkg), dep->name)) {
|
||||
|
||||
equal = _alpm_dep_vercmp(pkgversion, dep->mod, dep->version);
|
||||
|
||||
char *mod = "~=";
|
||||
switch(dep->mod) {
|
||||
@ -473,16 +486,16 @@ int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
|
||||
|
||||
if(strlen(dep->version) > 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "depcmp: %s-%s %s %s-%s => %s",
|
||||
alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg),
|
||||
pkgname, pkgversion,
|
||||
mod, dep->name, dep->version, (equal ? "match" : "no match"));
|
||||
} else {
|
||||
_alpm_log(PM_LOG_DEBUG, "depcmp: %s-%s %s %s => %s",
|
||||
alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg),
|
||||
pkgname, pkgversion,
|
||||
mod, dep->name, (equal ? "match" : "no match"));
|
||||
}
|
||||
}
|
||||
|
||||
return equal;
|
||||
return(equal);
|
||||
}
|
||||
|
||||
pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
|
||||
|
Loading…
Reference in New Issue
Block a user