summaryrefslogtreecommitdiffstats
path: root/libopkg/opkg.c
diff options
context:
space:
mode:
authorticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2008-12-15 00:34:03 (EST)
committer ticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2008-12-15 00:34:03 (EST)
commit4ec6ca94f200ed52f2cc00ff740bae13d7fef6be (patch)
tree1ff395946ad0250880c76621da4b4db9723f08bb /libopkg/opkg.c
parentb06a66aaeddc129a3a8c08f0ac45be6d7f2c5199 (diff)
opkg: using active list to list upgradeable pkgs
git-svn-id: http://opkg.googlecode.com/svn/trunk@177 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg/opkg.c')
-rw-r--r--libopkg/opkg.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/libopkg/opkg.c b/libopkg/opkg.c
index 857ed74..28e2c8c 100644
--- a/libopkg/opkg.c
+++ b/libopkg/opkg.c
@@ -940,8 +940,11 @@ opkg_list_packages (opkg_t *opkg, opkg_package_callback_t callback, void *user_d
int
opkg_list_upgradable_packages (opkg_t *opkg, opkg_package_callback_t callback, void *user_data)
{
- pkg_vec_t *all;
- int i;
+ struct active_list *head;
+ struct active_list *node;
+ pkg_t *old=NULL, *new = NULL;
+ static opkg_package_t* package=NULL;
+
opkg_assert (opkg);
opkg_assert (callback);
@@ -949,23 +952,15 @@ opkg_list_upgradable_packages (opkg_t *opkg, opkg_package_callback_t callback, v
/* ensure all data is valid */
pkg_info_preinstall_check (opkg->conf);
- all = opkg_upgrade_all_list_get (opkg->conf);
- for (i = 0; i < all->len; i++)
- {
- pkg_t *old, *new;
- opkg_package_t *package;
-
- old = all->pkgs[i];
-
+ head = prepare_upgrade_list(opkg->conf);
+ for (node=active_list_next(head, head); node; active_list_next(head,node)) {
+ old = list_entry(node, pkg_t, list);
new = pkg_hash_fetch_best_installation_candidate_by_name(opkg->conf, old->name, NULL);
-
package = pkg_clone (new);
callback (opkg, package, user_data);
opkg_package_free (package);
}
-
- pkg_vec_free (all);
-
+ active_list_head_delete(head);
return 0;
}