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

commit bde62cf3d4ae00b161e4e863ac6cc59fd848aa8e
Author: Michel Hermier <herm...@frugalware.org>
Date:   Sat May 4 11:27:13 2013 +0200

libpacman: Make _pacman_sortbydeps take a trans instead of a list and return 
void.

diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c
index b50ae4b..6c34298 100644
--- a/lib/libpacman/deps.c
+++ b/lib/libpacman/deps.c
@@ -250,9 +250,8 @@ int _pacman_depmiss_isin(pmdepmissing_t *needle, pmlist_t 
*haystack)
* affects the dependency order sortbydeps() will use.
*
* This function returns the new pmlist_t* target list.
- *
*/
-pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode)
+void _pacman_sortbydeps(pmtrans_t *trans, int mode)
{
pmlist_t *newtargs = NULL;
pmlist_t *i, *j, *k;
@@ -261,14 +260,14 @@ pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode)
pmgraph_t *vertex;
int found;

-       if(targets == NULL) {
+       if (trans->_packages == NULL) {
return(NULL);
}

_pacman_log(PM_LOG_DEBUG, _("started sorting dependencies"));

/* We create the vertices */
-       for(i = targets; i; i = i->next) {
+       for (i = trans->_packages; i; i = i->next) {
pmgraph_t *v = _pacman_graph_new();
v->data = (void *)i->data;
vertices = _pacman_list_add(vertices, v);
@@ -339,7 +338,7 @@ pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode)

_FREELIST(vertices, _pacman_graph_free);

-       return(newtargs);
+       trans->_packages = newtargs;
}

/* Returns a pmlist_t* of missing_t pointers.
diff --git a/lib/libpacman/deps.h b/lib/libpacman/deps.h
index dc6741c..be09d12 100644
--- a/lib/libpacman/deps.h
+++ b/lib/libpacman/deps.h
@@ -49,7 +49,7 @@ typedef struct __pmgraph_t {
pmdepmissing_t *_pacman_depmiss_new(const char *target, unsigned char type, 
unsigned char depmod,
const char *depname, const char *depversion);
int _pacman_depmiss_isin(pmdepmissing_t *needle, pmlist_t *haystack);
-pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode);
+void _pacman_sortbydeps(pmtrans_t *trans, int mode);
pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t 
*packages);
int _pacman_splitdep(const char *depstr, pmdepend_t *depend);
void _pacman_removedeps(pmtrans_t *trans);
diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index d7095f3..c6de66b 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -630,25 +630,7 @@ int _pacman_sync_prepare (pmtrans_t *trans, pmlist_t 
**data)
}
}

-               /* re-order w.r.t. dependencies */
-               k = l = NULL;
-               for(i=trans->packages; i; i=i->next) {
-                       pmsyncpkg_t *s = (pmsyncpkg_t*)i->data;
-                       k = _pacman_list_add(k, s->pkg_new);
-               }
-               m = _pacman_sortbydeps(k, PM_TRANS_TYPE_ADD);
-               for(i=m; i; i=i->next) {
-                       for(j=trans->packages; j; j=j->next) {
-                               pmsyncpkg_t *s = (pmsyncpkg_t*)j->data;
-                               if(s->pkg_new==i->data) {
-                                       l = _pacman_list_add(l, s);
-                               }
-                       }
-               }
-               FREELISTPTR(k);
-               FREELISTPTR(m);
-               FREELISTPTR(trans->packages);
-               trans->packages = l;
+               _pacman_sortbydeps(trans, PM_TRANS_TYPE_ADD);

EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL);

@@ -1008,9 +990,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t 
**data)
RET_ERR(PM_ERR_CONFLICTING_DEPS, -1);
}

-                       /* re-order w.r.t. dependencies */
-                       _pacman_log(PM_LOG_FLOW1, _("sorting by dependencies"));
-                       trans->_packages = _pacman_sortbydeps(trans->_packages, 
PM_TRANS_TYPE_ADD);
+                       _pacman_sortbydeps(trans, PM_TRANS_TYPE_ADD);
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);
}

@@ -1096,8 +1076,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t 
**data)
}

/* re-order w.r.t. dependencies */
-               _pacman_log(PM_LOG_FLOW1, _("sorting by dependencies"));
-               trans->_packages = _pacman_sortbydeps(trans->_packages, 
PM_TRANS_TYPE_REMOVE);
+               _pacman_sortbydeps(trans, PM_TRANS_TYPE_REMOVE);

EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);
}
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to