summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-08-18 07:11:19 +0200
committerDan McGee <dan@archlinux.org>2011-08-18 17:47:41 +0200
commitd008a816f1125ca44f0b2165b38220047860ecb0 (patch)
treedba30fd6730c3ced823d45723f85f3c7bed0efee
parent78b63ce7c30f4a20707bce61eeaef913b513f557 (diff)
downloadpacman-d008a816f1125ca44f0b2165b38220047860ecb0.tar.gz
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>
-rw-r--r--lib/libalpm/deps.c23
-rw-r--r--lib/libalpm/deps.h1
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 */