From 070135626023caa0186a77f9f846c078e3cf1be8 Mon Sep 17 00:00:00 2001 From: Xavier Chantry Date: Sun, 17 Aug 2008 19:30:36 +0200 Subject: Change checkdeps and checkdbconflicts to be more flexible. These two functions now take directly a package list rather than a database. checkdbconflicts was renamed to checkconflicts. Signed-off-by: Xavier Chantry --- lib/libalpm/add.c | 2 +- lib/libalpm/alpm.h | 4 ++-- lib/libalpm/conflict.c | 6 +++--- lib/libalpm/deps.c | 12 ++++-------- lib/libalpm/remove.c | 6 +++--- lib/libalpm/sync.c | 2 +- src/util/testdb.c | 5 +++-- 7 files changed, 17 insertions(+), 20 deletions(-) diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c index 3c832b3e..50405895 100644 --- a/lib/libalpm/add.c +++ b/lib/libalpm/add.c @@ -114,7 +114,7 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data) /* look for unsatisfied dependencies */ _alpm_log(PM_LOG_DEBUG, "looking for unsatisfied dependencies\n"); - lp = alpm_checkdeps(db, 1, NULL, trans->packages); + lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, NULL, trans->packages); if(lp != NULL) { if(data) { *data = lp; diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index cdceaf01..382822cc 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -428,7 +428,7 @@ typedef enum _pmdepmod_t { } pmdepmod_t; int alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep); -alpm_list_t *alpm_checkdeps(pmdb_t *db, int reversedeps, +alpm_list_t *alpm_checkdeps(alpm_list_t *pkglist, int reversedeps, alpm_list_t *remove, alpm_list_t *upgrade); alpm_list_t *alpm_deptest(pmdb_t *db, alpm_list_t *targets); @@ -436,7 +436,7 @@ const char *alpm_miss_get_target(const pmdepmissing_t *miss); pmdepend_t *alpm_miss_get_dep(pmdepmissing_t *miss); const char *alpm_miss_get_causingpkg(const pmdepmissing_t *miss); -alpm_list_t *alpm_checkdbconflicts(pmdb_t *db_local); +alpm_list_t *alpm_checkconflicts(alpm_list_t *pkglist); const char *alpm_conflict_get_package1(pmconflict_t *conflict); const char *alpm_conflict_get_package2(pmconflict_t *conflict); diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c index a8bcdd59..cae237cf 100644 --- a/lib/libalpm/conflict.c +++ b/lib/libalpm/conflict.c @@ -219,11 +219,11 @@ alpm_list_t *_alpm_outerconflicts(pmdb_t *db, alpm_list_t *packages) /** Check the package conflicts in a database * - * @param db_local the database to check + * @param pkglist the list of packages to check * @return an alpm_list_t of pmconflict_t */ -alpm_list_t SYMEXPORT *alpm_checkdbconflicts(pmdb_t *db_local) { - return(_alpm_innerconflicts(_alpm_db_get_pkgcache(db_local))); +alpm_list_t SYMEXPORT *alpm_checkconflicts(alpm_list_t *pkglist) { + return(_alpm_innerconflicts(pkglist)); } /* Returns a alpm_list_t* of file conflicts. diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index c667daa2..96c971a2 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -229,13 +229,13 @@ alpm_list_t SYMEXPORT *alpm_deptest(pmdb_t *db, alpm_list_t *targets) /** Checks dependencies and returns missing ones in a list. * Dependencies can include versions with depmod operators. - * @param db pointer to the local package database + * @param pkglist the list of local packages * @param reversedeps handles the backward dependencies * @param remove an alpm_list_t* of packages to be removed * @param upgrade an alpm_list_t* of packages to be upgraded (remove-then-upgrade) * @return an alpm_list_t* of pmpkg_t* of missing_t pointers. */ -alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps, +alpm_list_t SYMEXPORT *alpm_checkdeps(alpm_list_t *pkglist, int reversedeps, alpm_list_t *remove, alpm_list_t *upgrade) { alpm_list_t *i, *j; @@ -245,12 +245,8 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps, ALPM_LOG_FUNC; - if(db == NULL) { - return(NULL); - } - targets = alpm_list_join(alpm_list_copy(remove), alpm_list_copy(upgrade)); - for(i = _alpm_db_get_pkgcache(db); i; i = i->next) { + for(i = pkglist; i; i = i->next) { void *pkg = i->data; if(alpm_list_find(targets, pkg, _alpm_pkg_cmp)) { modified = alpm_list_add(modified, pkg); @@ -572,7 +568,7 @@ int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, alpm_list_t *list, for(i = list; i; i = i->next) { pmpkg_t *tpkg = i->data; targ = alpm_list_add(NULL, tpkg); - deps = alpm_checkdeps(local, 0, remove, targ); + deps = alpm_checkdeps(_alpm_db_get_pkgcache(local), 0, remove, targ); alpm_list_free(targ); for(j = deps; j; j = j->next) { pmdepmissing_t *miss = j->data; diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index 864fafaf..f0734902 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -104,7 +104,7 @@ static void remove_prepare_cascade(pmtrans_t *trans, pmdb_t *db, } alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free); alpm_list_free(lp); - lp = alpm_checkdeps(db, 1, trans->packages, NULL); + lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->packages, NULL); } } @@ -134,7 +134,7 @@ static void remove_prepare_keep_needed(pmtrans_t *trans, pmdb_t *db, } alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free); alpm_list_free(lp); - lp = alpm_checkdeps(db, 1, trans->packages, NULL); + lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->packages, NULL); } } @@ -161,7 +161,7 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data) EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL); _alpm_log(PM_LOG_DEBUG, "looking for unsatisfied dependencies\n"); - lp = alpm_checkdeps(db, 1, trans->packages, NULL); + lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->packages, NULL); if(lp != NULL) { if(trans->flags & PM_TRANS_FLAG_CASCADE) { diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 22b391bc..96ca6319 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -630,7 +630,7 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync } _alpm_log(PM_LOG_DEBUG, "checking dependencies\n"); - deps = alpm_checkdeps(db_local, 1, remove, list); + deps = alpm_checkdeps(_alpm_db_get_pkgcache(db_local), 1, remove, list); if(deps) { pm_errno = PM_ERR_UNSATISFIED_DEPS; ret = -1; diff --git a/src/util/testdb.c b/src/util/testdb.c index 87bfcf96..94f9ad73 100644 --- a/src/util/testdb.c +++ b/src/util/testdb.c @@ -135,7 +135,8 @@ int main(int argc, char **argv) /* check dependencies */ alpm_list_t *data; - data = alpm_checkdeps(db, 0, NULL, alpm_db_getpkgcache(db)); + alpm_list_t *pkglist = alpm_db_getpkgcache(db); + data = alpm_checkdeps(pkglist, 0, NULL, pkglist); for(i = data; i; i = alpm_list_next(i)) { pmdepmissing_t *miss = alpm_list_getdata(i); pmdepend_t *dep = alpm_miss_get_dep(miss); @@ -146,7 +147,7 @@ int main(int argc, char **argv) } /* check conflicts */ - data = alpm_checkdbconflicts(db); + data = alpm_checkconflicts(pkglist); for(i = data; i; i = i->next) { pmconflict_t *conflict = alpm_list_getdata(i); printf("%s conflicts with %s\n", alpm_conflict_get_package1(conflict), -- cgit v1.2.3-70-g09d2