diff options
author | Dan McGee <dan@archlinux.org> | 2011-08-18 00:11:19 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-08-18 10:47:41 -0500 |
commit | d008a816f1125ca44f0b2165b38220047860ecb0 (patch) | |
tree | dba30fd6730c3ced823d45723f85f3c7bed0efee /lib/libalpm | |
parent | 78b63ce7c30f4a20707bce61eeaef913b513f557 (diff) | |
download | pacman-d008a816f1125ca44f0b2165b38220047860ecb0.tar.xz |
Add an _alpm_depcmp_literal() function
This omits the finding of matching provisions and only checks the
package itself against the provided dep.
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm')
-rw-r--r-- | lib/libalpm/deps.c | 23 | ||||
-rw-r--r-- | lib/libalpm/deps.h | 1 |
2 files changed, 14 insertions, 10 deletions
diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index de9ae44c..48e8e773 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -368,20 +368,23 @@ static int dep_vercmp(const char *version1, alpm_depmod_t mod, return equal; } +int _alpm_depcmp_literal(alpm_pkg_t *pkg, alpm_depend_t *dep) +{ + if(pkg->name_hash != dep->name_hash + || strcmp(pkg->name, dep->name) != 0) { + /* skip more expensive checks */ + return 0; + } + return dep_vercmp(pkg->version, dep->mod, dep->version); +} + int _alpm_depcmp(alpm_pkg_t *pkg, alpm_depend_t *dep) { alpm_list_t *i; - int satisfy = 0; + int satisfy = _alpm_depcmp_literal(pkg, dep); - /* check (pkg->name, pkg->version) */ - if(pkg->name_hash != dep->name_hash) { - /* skip more expensive checks */ - } else { - satisfy = (strcmp(pkg->name, dep->name) == 0 - && dep_vercmp(pkg->version, dep->mod, dep->version)); - if(satisfy) { - return satisfy; - } + if(satisfy) { + return satisfy; } /* check provisions, name and version if available */ diff --git a/lib/libalpm/deps.h b/lib/libalpm/deps.h index 6ef4cbbe..29e69eb2 100644 --- a/lib/libalpm/deps.h +++ b/lib/libalpm/deps.h @@ -36,6 +36,7 @@ int _alpm_resolvedeps(alpm_handle_t *handle, alpm_list_t *localpkgs, alpm_pkg_t alpm_list_t *preferred, alpm_list_t **packages, alpm_list_t *remove, alpm_list_t **data); alpm_depend_t *_alpm_splitdep(const char *depstring); +int _alpm_depcmp_literal(alpm_pkg_t *pkg, alpm_depend_t *dep); int _alpm_depcmp(alpm_pkg_t *pkg, alpm_depend_t *dep); #endif /* _ALPM_DEPS_H */ |