From fe09abec099fb3ab0e8c21f6ba90de8ecc6a016e Mon Sep 17 00:00:00 2001 From: ticktock35 Date: Mon, 15 Dec 2008 00:31:22 -0500 Subject: adding list_upgradable opkg: refactory the upgradable list git-svn-id: http://opkg.googlecode.com/svn/trunk@164 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358 --- (limited to 'libopkg/opkg_upgrade.c') diff --git a/libopkg/opkg_upgrade.c b/libopkg/opkg_upgrade.c index 925d9d8..d014979 100644 --- a/libopkg/opkg_upgrade.c +++ b/libopkg/opkg_upgrade.c @@ -77,3 +77,35 @@ int opkg_upgrade_pkg(opkg_conf_t *conf, pkg_t *old) new->state_flag |= SF_USER; return opkg_install_pkg(conf, new,1); } + + + +pkg_vec_t *opkg_upgrade_all_list_get(opkg_conf_t *conf) { + pkg_vec_t *all, *ans; + int i; + + /* ensure all data is valid */ + pkg_info_preinstall_check (conf); + + all = pkg_vec_alloc (); + ans = pkg_vec_alloc (); + pkg_hash_fetch_all_installed (&conf->pkg_hash, all); + for (i = 0; i < all->len; i++) + { + pkg_t *old, *new; + int cmp; + + old = all->pkgs[i]; + new = pkg_hash_fetch_best_installation_candidate_by_name(conf, old->name, NULL); + + if (new == NULL) + continue; + + cmp = pkg_compare_versions(old, new); + + if ( cmp < 0 ) + pkg_vec_insert(ans, old); + } + pkg_vec_free (all); + return ans; +} -- cgit v0.9.1