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);
|
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 SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
|
||||||
{
|
{
|
||||||
int equal = 0;
|
int equal = 0;
|
||||||
|
|
||||||
ALPM_LOG_FUNC;
|
ALPM_LOG_FUNC;
|
||||||
|
|
||||||
if(strcmp(pkg->name, dep->name) == 0
|
const char *pkgname = alpm_pkg_get_name(pkg);
|
||||||
|| alpm_list_find_str(alpm_pkg_get_provides(pkg), dep->name)) {
|
const char *pkgversion = alpm_pkg_get_version(pkg);
|
||||||
if(dep->mod == PM_DEP_MOD_ANY) {
|
|
||||||
equal = 1;
|
if(strcmp(pkgname, dep->name) == 0
|
||||||
} else {
|
|| alpm_list_find_str(alpm_pkg_get_provides(pkg), dep->name)) {
|
||||||
int cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), dep->version);
|
|
||||||
switch(dep->mod) {
|
equal = _alpm_dep_vercmp(pkgversion, dep->mod, dep->version);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char *mod = "~=";
|
char *mod = "~=";
|
||||||
switch(dep->mod) {
|
switch(dep->mod) {
|
||||||
@ -473,16 +486,16 @@ int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
|
|||||||
|
|
||||||
if(strlen(dep->version) > 0) {
|
if(strlen(dep->version) > 0) {
|
||||||
_alpm_log(PM_LOG_DEBUG, "depcmp: %s-%s %s %s-%s => %s",
|
_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"));
|
mod, dep->name, dep->version, (equal ? "match" : "no match"));
|
||||||
} else {
|
} else {
|
||||||
_alpm_log(PM_LOG_DEBUG, "depcmp: %s-%s %s %s => %s",
|
_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"));
|
mod, dep->name, (equal ? "match" : "no match"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return equal;
|
return(equal);
|
||||||
}
|
}
|
||||||
|
|
||||||
pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
|
pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
|
||||||
|
Loading…
Reference in New Issue
Block a user