From: Kristian Høgsberg Date: Tue, 22 Jan 2008 05:08:13 +0000 (-0500) Subject: Use a package iterator in find_packages() to add packages sorted. X-Git-Tag: 0.1~255 X-Git-Url: http://project.juiblex.co.uk/git/?a=commitdiff_plain;h=ff048987e66a8b7656fc0851ab86067f525d211a;p=razor2.git%2F.git Use a package iterator in find_packages() to add packages sorted. Also avoids use of razor_set_get_package(). --- 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