Use a package iterator in find_packages() to add packages sorted.
Also avoids use of razor_set_get_package().
1.1 --- a/razor.c Mon Jan 21 23:02:47 2008 -0500
1.2 +++ b/razor.c Tue Jan 22 00:08:13 2008 -0500
1.3 @@ -1692,18 +1692,28 @@
1.4
1.5 static void
1.6 find_packages(struct razor_set *set,
1.7 - int count, const char **packages, struct array *list)
1.8 + int count, const char **package_names, struct array *list)
1.9 {
1.10 - struct razor_package *p;
1.11 + struct razor_package_iterator *pi;
1.12 + struct razor_package *p, *packages;
1.13 + const char *name, *version;
1.14 unsigned long *r;
1.15 int i;
1.16
1.17 - /* FIXME: Sort the packages. */
1.18 - for (i = 0; i < count; i++) {
1.19 - p = razor_set_get_package(set, packages[i]);
1.20 - r = array_add(list, sizeof *r);
1.21 - *r = p - (struct razor_package *) set->packages.data;
1.22 + packages = (struct razor_package *) set->packages.data;
1.23 + pi = razor_package_iterator_create(set);
1.24 +
1.25 + while (razor_package_iterator_next(pi, &p, &name, &version)) {
1.26 + for (i = 0; i < count; i++) {
1.27 + if (strcmp(name, package_names[i]) == 0) {
1.28 + r = array_add(list, sizeof *r);
1.29 + *r = p - packages;
1.30 + break;
1.31 + }
1.32 + }
1.33 }
1.34 +
1.35 + razor_package_iterator_destroy(pi);
1.36 }
1.37
1.38 static void