From f43805d875ad5c672afbbfff48bded2087204773 Mon Sep 17 00:00:00 2001 From: Chantry Xavier Date: Sat, 10 May 2008 18:47:42 +0200 Subject: Cleanup usages of alpm_list_find and alpm_list_remove. * remove obsolete and unused *_cmp helper functions like deppkg_cmp and _alpm_grp_cmp * new alpm_list_remove_str function, used 6 times in handle.c * remove _alpm_prov_cmp / _alpm_db_whatprovides and replace them by a more general alpm_find_pkg_satisfiers with a cleaner implementation. before: alpm_db_whatprovides(db, targ) after: alpm_find_pkg_satisfiers(alpm_db_getpkgcache(db), targ) * remove satisfycmp and replace alpm_list_find + satisfycmp usage by _alpm_find_dep_satisfiers. before : alpm_list_find(_alpm_db_get_pkgcache(db), dep, satisfycmp) after : _alpm_find_dep_satisfiers(_alpm_db_get_pkgcache(db), dep) * remove _alpm_pkgname_pkg_cmp, which was used with alpm_list_remove, and use _alpm_pkg_find + alpm_list_remove with _alpm_pkg_cmp instead. This commit actually get rids of all complicated and asymmetric _cmp functions. I first thought these functions were worth it, be caused it allowed us to reuse list_find and list_remove. But this was at the detriment of the clarity and also the ease of use of these functions, dangerous because of their asymmetricity. Signed-off-by: Chantry Xavier Signed-off-by: Dan McGee --- lib/libalpm/sync.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'lib/libalpm/sync.c') diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 3743f9bb..0d6a6ee3 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -372,11 +372,8 @@ static int syncpkg_cmp(const void *s1, const void *s2) { const pmsyncpkg_t *sp1 = s1; const pmsyncpkg_t *sp2 = s2; - pmpkg_t *p1, *p2; - - p1 = alpm_sync_get_pkg(sp1); - p2 = alpm_sync_get_pkg(sp2); - + pmpkg_t *p1 = alpm_sync_get_pkg(sp1); + pmpkg_t *p2 = alpm_sync_get_pkg(sp2); return(strcmp(alpm_pkg_get_name(p1), alpm_pkg_get_name(p2))); } @@ -531,12 +528,12 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync conflict->package1, conflict->package2); /* if sync1 provides sync2, we remove sync2 from the targets, and vice versa */ - if(alpm_list_find(alpm_pkg_get_provides(sync1->pkg), - conflict->package2, _alpm_prov_cmp)) { + pmdepend_t *dep1 = _alpm_splitdep(conflict->package1); + pmdepend_t *dep2 = _alpm_splitdep(conflict->package2); + if(alpm_depcmp(sync1->pkg, dep2)) { rsync = sync2; sync = sync1; - } else if(alpm_list_find(alpm_pkg_get_provides(sync2->pkg), - conflict->package1, _alpm_prov_cmp)) { + } else if(alpm_depcmp(sync2->pkg, dep1)) { rsync = sync1; sync = sync2; } else { @@ -551,8 +548,12 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync } alpm_list_free_inner(deps, (alpm_list_fn_free)_alpm_conflict_free); alpm_list_free(deps); + _alpm_dep_free(dep1); + _alpm_dep_free(dep2); goto cleanup; } + _alpm_dep_free(dep1); + _alpm_dep_free(dep2); /* Prints warning */ _alpm_log(PM_LOG_WARNING, -- cgit v1.2.3