diff -r 1d584c5af737 -r 2ddc6448762e razor.c --- a/razor.c Mon Jan 21 22:40:54 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