razor.c
changeset 105 2ddc6448762e
parent 103 1d584c5af737
child 106 9d4d62f62735
     1.1 --- a/razor.c	Mon Jan 21 22:40:54 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