From 448805890080756ee28615bff2ae6fd2a4fa42b6 Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Fri, 1 Dec 2006 09:51:54 +0000 Subject: * Fixed the bug where -R pkgA pkgB failed when pkgA depended on pkgB --- lib/libalpm/deps.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'lib/libalpm') diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 7b870085..7b32b7d0 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -332,19 +332,30 @@ pmlist_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, unsigned char op, pmlist found=0; for(j = tp->requiredby; j; j = j->next) { + /* Search for 'reqname' in packages for removal */ char *reqname = j->data; - if(!_alpm_list_is_strin(reqname, packages)) { + pmlist_t *x = NULL; + for(x = packages; x; x = x->next) { + pmpkg_t *xp = x->data; + if(strcmp(reqname, xp->name) == 0) { + found = 1; + break; + } + } + if(!found) { /* check if a package in trans->packages provides this package */ for(k=trans->packages; !found && k; k=k->next) { pmpkg_t *spkg = NULL; - if(trans->type == PM_TRANS_TYPE_SYNC) { - pmsyncpkg_t *sync = k->data; - spkg = sync->pkg; - } else { - spkg = k->data; - } - if(spkg && _alpm_list_is_strin(tp->name, spkg->provides)) { - found=1; + if(trans->type == PM_TRANS_TYPE_SYNC) { + pmsyncpkg_t *sync = k->data; + spkg = sync->pkg; + } else { + spkg = k->data; + } + if(spkg) { + if(_alpm_list_is_strin(tp->name, spkg->provides)) { + found = 1; + } } } if(!found) { -- cgit v1.2.3