Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=cef2d7b9377225ca5a2058be9dfbcf485494a27d

commit cef2d7b9377225ca5a2058be9dfbcf485494a27d
Author: Michel Hermier <[email protected]>
Date:   Wed Sep 3 09:26:32 2014 +0200

libpacman: Make trans->packages not a pointer.

diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp
index 456ec43..a0bdc04 100644
--- a/lib/libpacman/conflict.cpp
+++ b/lib/libpacman/conflict.cpp
@@ -238,20 +238,19 @@ FPtrList *_pacman_db_find_conflicts(pmtrans_t *trans)
char path[PATH_MAX+1];
struct stat buf;
FPtrList *conflicts = NULL;
-       FPtrList *targets = trans->packages;
Package *p, *dbpkg;
double percent;
int howmany, remain;
Database *db_local = trans->m_handle->db_local;
const char *root = trans->m_handle->root;

-       if(db_local == NULL || targets == NULL || root == NULL) {
+       if(db_local == NULL || trans->packages.empty() || root == NULL) {
return(NULL);
}
-       howmany = f_ptrlist_count(targets);
+       howmany = f_ptrlist_count(&trans->packages);

/* CHECK 1: check every target against every target */
-       for(auto i = targets->begin(), end = targets->end(); i != end; i = 
i->next()) {
+       for(auto i = trans->packages.begin(), end = trans->packages.end(); i != 
end; i = i->next()) {
Package *p1 = (Package*)f_ptrlistitem_data(i);
remain = f_ptrlistiterator_count(i, end);
percent = (double)(howmany - remain + 1) / howmany;
@@ -307,7 +306,7 @@ FPtrList *_pacman_db_find_conflicts(pmtrans_t *trans)
/* Check if the conflicting file has been moved to another package/target */
if(!ok) {
/* Look at all the targets */
-                                               for(auto k = targets->begin(), 
k_end = targets->end(); k != k_end && !ok; k = k->next()) {
+                                               for(auto k = 
trans->packages.begin(), k_end = trans->packages.end(); k != k_end && !ok; k = 
k->next()) {
Package *p2 = (Package *)f_ptrlistitem_data(k);
/* As long as they're not the current package */
if(strcmp(p2->name(), p->name())) {
diff --git a/lib/libpacman/db/fakedb.cpp b/lib/libpacman/db/fakedb.cpp
index 330c104..c4ddde7 100644
--- a/lib/libpacman/db/fakedb.cpp
+++ b/lib/libpacman/db/fakedb.cpp
@@ -85,7 +85,7 @@ int _pacman_fakedb_addtarget(pmtrans_t *trans, const char 
*name)
if (dummy == NULL)
return -1;
/* add the package to the transaction */
-       trans->packages = trans->packages->add(dummy);
+       trans->packages.add(dummy);

return(0);
}
diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp
index efda819..f69ac1b 100644
--- a/lib/libpacman/deps.cpp
+++ b/lib/libpacman/deps.cpp
@@ -271,7 +271,7 @@ FPtrList *_pacman_checkdeps(pmtrans_t *trans, unsigned char 
op, FPtrList *packag
/* check requiredby fields */
if(!_pacman_pkg_isin(requiredby_name, packages)) {
/* check if a package in trans->packages provides this package */
-                                               for(auto k = 
trans->packages->begin(), k_end = trans->packages->end(); !found && k != k_end; 
k = k->next()) {
+                                               for(auto k = 
trans->packages.begin(), k_end = trans->packages.end(); !found && k != k_end; k 
= k->next()) {
Package *spkg = f_ptrlistitem_data(k);

if(spkg && spkg->provides(pkg_local->name())) {
diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp
index fc5b622..b5f3a52 100644
--- a/lib/libpacman/pacman.cpp
+++ b/lib/libpacman/pacman.cpp
@@ -1028,7 +1028,7 @@ void *pacman_trans_getinfo(unsigned char parm)
case PM_TRANS_TYPE:     data = (void *)(long)trans->m_type; break;
case PM_TRANS_FLAGS:    data = (void *)(long)trans->flags; break;
case PM_TRANS_TARGETS:  data = trans->targets; break;
-               case PM_TRANS_PACKAGES: data = trans->packages ? 
trans->packages : trans->syncpkgs; break;
+               case PM_TRANS_PACKAGES: data = !trans->packages.empty() ? 
&trans->packages : trans->syncpkgs; break;
case PM_TRANS_SYNCPKGS: data = trans->syncpkgs; break;
default:
data = NULL;
diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index 50437d1..5c58bc1 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -104,7 +104,7 @@ __pmtrans_t::~__pmtrans_t()
/* Sanity checks */
//      ASSERT(state != STATE_COMMITING, RET_ERR(PM_ERR_TRANS_COMMITING, -1));

-       FREELISTPKGS(packages);
+       packages.clear(/* _pacman_pkg_delete */);
#if 0
{
FVisitor visitor = {
@@ -126,7 +126,7 @@ static
int _pacman_trans_compute_triggers(pmtrans_t *trans)
{
/* NOTE: Not the most efficient way, but will do until we add some string hash. 
*/
-       for(auto lp = trans->packages->begin(), end = trans->packages->end(); 
lp != end; lp = lp->next()) {
+       for(auto lp = trans->packages.begin(), end = trans->packages.end(); lp 
!= end; lp = lp->next()) {
Package *pkg = f_ptrlistitem_data(lp);

trans->triggers = f_stringlist_add_stringlist(trans->triggers, pkg->triggers());
@@ -273,7 +273,7 @@ int __pmtrans_t::add(Package *pkg, pmtranstype_t type, int 
flags)
ASSERT(pkg != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));

_pacman_log(PM_LOG_FLOW2, _("adding %s in the targets list"), pkg->name());
-       packages = packages->add(pkg);
+       packages.add(pkg);
return 0;
}

@@ -429,9 +429,8 @@ int __pmtrans_t::add(const char *target, pmtranstype_t 
type, int flags)

/* check if an older version of said package is already in transaction packages.
* if so, replace it in the list */
-       FPtrListIterator *i;
-       auto end = packages->end();
-       for(i = packages->begin(); i != end; i = i->next()) {
+       FPtrListIterator *i, *end;
+       for(i = packages.begin(), end = packages.end(); i != end; i = 
i->next()) {
Package *pkg = f_ptrlistitem_data(i);
if(strcmp(pkg->name(), pkg_new->name()) == 0) {
pkg_queued = pkg;
@@ -454,7 +453,7 @@ int __pmtrans_t::add(const char *target, pmtranstype_t 
type, int flags)
}
}
if(type == PM_TRANS_TYPE_REMOVE) {
-       if(_pacman_pkg_isin(target, packages)) {
+       if(_pacman_pkg_isin(target, &packages)) {
RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
}

@@ -502,7 +501,7 @@ int __pmtrans_t::prepare(FPtrList **data)
}

/* If there's nothing to do, return without complaining */
-       if(packages->empty() &&
+       if(packages.empty() &&
syncpkgs->empty()) {
return(0);
}
@@ -883,7 +882,7 @@ cleanup:
EVENT(this, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);
_pacman_log(PM_LOG_FLOW1, _("looking for unsatisfied dependencies"));

-               lp = _pacman_checkdeps(this, m_type, packages);
+               lp = _pacman_checkdeps(this, m_type, &packages);

/* look for unsatisfied dependencies */
if(lp != NULL) {
@@ -894,14 +893,14 @@ cleanup:
Package *pkg_local = db_local->scan(miss->depend.name, INFRQ_ALL);
if(pkg_local) {
_pacman_log(PM_LOG_FLOW2, _("pulling %s in the targets list"), 
pkg_local->name());
-                                                       packages = 
packages->add(pkg_local);
+                                                       packages.add(pkg_local);
} else {
_pacman_log(PM_LOG_ERROR, _("could not find %s in database -- skipping"),
miss->depend.name);
}
}
FREELIST(lp);
-                                       lp = _pacman_checkdeps(this, m_type, 
packages);
+                                       lp = _pacman_checkdeps(this, m_type, 
&packages);
}
}
}
@@ -917,7 +916,7 @@ cleanup:
if(m_type & PM_TRANS_TYPE_ADD) {
/* no unsatisfied deps, so look for conflicts */
_pacman_log(PM_LOG_FLOW1, _("looking for conflicts"));
-               lp = _pacman_checkconflicts(this, packages);
+               lp = _pacman_checkconflicts(this, &packages);
if(lp != NULL) {
if(data) {
*data = lp;
@@ -929,24 +928,24 @@ cleanup:

/* re-order w.r.t. dependencies */
_pacman_log(PM_LOG_FLOW1, _("sorting by dependencies"));
-               lp = _pacman_sortbydeps(packages, PM_TRANS_TYPE_ADD);
+               lp = _pacman_sortbydeps(&packages, PM_TRANS_TYPE_ADD);
/* free the old alltargs */
-               FREELISTPTR(packages);
-               packages = lp;
+               packages.clear();
+               packages = *lp;
}

if(m_type == PM_TRANS_TYPE_REMOVE && m_type != PM_TRANS_TYPE_UPGRADE) {
if(flags & PM_TRANS_FLAG_RECURSE) {
_pacman_log(PM_LOG_FLOW1, _("finding removable dependencies"));
-                       packages = _pacman_removedeps(db_local, packages);
+                       _pacman_removedeps(db_local, &packages);
}

/* re-order w.r.t. dependencies */
_pacman_log(PM_LOG_FLOW1, _("sorting by dependencies"));
-               lp = _pacman_sortbydeps(packages, PM_TRANS_TYPE_REMOVE);
+               lp = _pacman_sortbydeps(&packages, PM_TRANS_TYPE_REMOVE);
/* free the old alltargs */
-               FREELISTPTR(packages);
-               packages = lp;
+               packages.clear();
+               packages = *lp;
}
EVENT(this, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);
}
@@ -956,7 +955,7 @@ cleanup:
if(m_type & PM_TRANS_TYPE_ADD) {
EVENT(this, PM_TRANS_EVT_CLEANUP_START, NULL, NULL);
_pacman_log(PM_LOG_FLOW1, _("cleaning up"));
-       for (auto lp = packages->begin(), lp_end = packages->end(); lp != 
lp_end; lp = lp->next()) {
+       for (auto lp = packages.begin(), lp_end = packages.end(); lp != lp_end; 
lp = lp->next()) {
Package *pkg_new = (Package *)f_ptrlistitem_data(lp);
auto removes = pkg_new->removes();

@@ -1417,7 +1416,7 @@ int __pmtrans_t::commit(FPtrList **data)
*data = NULL;

/* If there's nothing to do, return without complaining */
-       if(packages->empty() &&
+       if(packages.empty() &&
syncpkgs->empty()) {
return(0);
}
@@ -1552,7 +1551,7 @@ int __pmtrans_t::commit(FPtrList **data)
FPtrList *list = (FPtrList *)ps->data;
for(auto j = list->begin(), end = list->end(); j != end; j = j->next()) {
Package *pkg = f_ptrlistitem_data(j);
-                               if(!_pacman_pkg_isin(pkg->name(), 
tr->packages)) {
+                               if(!_pacman_pkg_isin(pkg->name(), 
&tr->packages)) {
if(tr->add(pkg->name(), tr->m_type, tr->flags) == -1) {
goto error;
}
@@ -1596,7 +1595,7 @@ int __pmtrans_t::commit(FPtrList **data)
}
/* using f_ptrlist_last() is ok because addtarget() adds the new target at the
* end of the tr->packages list */
-               spkg = f_ptrlistitem_data(f_ptrlist_last(tr->packages));
+               spkg = f_ptrlistitem_data(tr->packages.last());
if(ps->type == PM_SYNC_TYPE_DEPEND || flags & PM_TRANS_FLAG_ALLDEPS) {
spkg->m_reason = PM_PKG_REASON_DEPEND;
} else if(ps->type == PM_SYNC_TYPE_UPGRADE && !m_handle->sysupgrade) {
@@ -1679,9 +1678,9 @@ int __pmtrans_t::commit(FPtrList **data)
int ret = 0;
time_t t;

-       howmany = f_ptrlist_count(packages);
+       howmany = f_ptrlist_count(&packages);

-       for(auto targ = packages->begin(), end = packages->end(); targ != end; 
targ = targ->next()) {
+       for(auto targ = packages.begin(), end = packages.end(); targ != end; 
targ = targ->next()) {
Package *pkg_new = NULL, *pkg_local = NULL;
void *event_arg0 = NULL, *event_arg1 = NULL;
pmtranstype_t type = m_type;
@@ -1791,7 +1790,7 @@ int __pmtrans_t::commit(FPtrList **data)
* its requiredby info: it is in the process of being removed (if not
* already done!)
*/
-                       if(_pacman_pkg_isin(depend.name, packages)) {
+                       if(_pacman_pkg_isin(depend.name, &packages)) {
continue;
}
depinfo = db_local->find(depend.name);
diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index 6c103de..a45cdfd 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -74,7 +74,7 @@ struct __pmtrans_t
unsigned int flags;
unsigned char state;
FStringList *targets;
-       FPtrList *packages;    /* FPtrList of (pmpkg_t *) or (pmsyncpkg_t *) */
+       FPtrList packages;    /* FPtrList of (pmpkg_t *) or (pmsyncpkg_t *) */
FPtrList *syncpkgs; /* FPtrList of (pmsyncpkg_t *) */
FStringList *skiplist;
FStringList *triggers;
diff --git a/lib/libpacman/util.cpp b/lib/libpacman/util.cpp
index ad9bdad..2e09913 100644
--- a/lib/libpacman/util.cpp
+++ b/lib/libpacman/util.cpp
@@ -482,7 +482,7 @@ int _pacman_check_freespace(pmtrans_t *trans, pmlist_t 
**data)
{
long long pkgsize=0, freespace;

-       for(auto i = trans->packages->begin(), end = trans->packages->end(); i 
!= end; i = i->next()) {
+       for(auto i = trans->packages.begin(), end = trans->packages.end(); i != 
end; i = i->next()) {
Package *pkg = f_ptrlistitem_data(i);
pkgsize += pkg->size;
}
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to