From ff048987e66a8b7656fc0851ab86067f525d211a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 22 Jan 2008 00:08:13 -0500 Subject: [PATCH] Use a package iterator in find_packages() to add packages sorted. Also avoids use of razor_set_get_package(). --- razor.c | 24 +++++++++++++++++------- 1 files changed, 17 insertions(+), 7 deletions(-) diff --git a/razor.c b/razor.c index 64b323b..ddb16fc 100644 --- a/razor.c +++ b/razor.c @@ -1692,18 +1692,28 @@ razor_set_satisfy(struct razor_set *set, struct array *unsatisfied, static void find_packages(struct razor_set *set, - int count, const char **packages, struct array *list) + int count, const char **package_names, struct array *list) { - struct razor_package *p; + struct razor_package_iterator *pi; + struct razor_package *p, *packages; + const char *name, *version; unsigned long *r; int i; - /* FIXME: Sort the packages. */ - for (i = 0; i < count; i++) { - p = razor_set_get_package(set, packages[i]); - r = array_add(list, sizeof *r); - *r = p - (struct razor_package *) set->packages.data; + packages = (struct razor_package *) set->packages.data; + pi = razor_package_iterator_create(set); + + while (razor_package_iterator_next(pi, &p, &name, &version)) { + for (i = 0; i < count; i++) { + if (strcmp(name, package_names[i]) == 0) { + r = array_add(list, sizeof *r); + *r = p - packages; + break; + } + } } + + razor_package_iterator_destroy(pi); } static void -- 1.7.1