# HG changeset patch # User Kristian H?gsberg # Date 1200978493 18000 # Node ID 2ddc6448762e798452ed8e3a754e402a6272bae4 # Parent 705f6dbf0a7e93a5eed66ad2222695cb28f09757 Use a package iterator in find_packages() to add packages sorted. Also avoids use of razor_set_get_package(). diff -r 705f6dbf0a7e -r 2ddc6448762e razor.c --- a/razor.c Mon Jan 21 23:02:47 2008 -0500 +++ b/razor.c Tue Jan 22 00:08:13 2008 -0500 @@ -1692,18 +1692,28 @@ 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