Use bsearch instead of hash table when looking up packages.
authorKristian H?gsberg <krh@redhat.com>
Fri Sep 07 14:00:19 2007 -0400 (2007-09-07)
changeset 1678383b7bc4fa
parent 15 228bd47c5dc4
child 17 67029e580a0e
Use bsearch instead of hash table when looking up packages.
razor.c
     1.1 --- a/razor.c	Fri Sep 07 13:48:42 2007 -0400
     1.2 +++ b/razor.c	Fri Sep 07 14:00:19 2007 -0400
     1.3 @@ -866,19 +866,26 @@
     1.4  		printf("%s %s\n", &pool[p->name], &pool[p->version]);
     1.5  }
     1.6  
     1.7 +struct razor_set *bsearch_set;
     1.8 +
     1.9 +static int
    1.10 +compare_package_name(const void *key, const void *data)
    1.11 +{
    1.12 +	const struct razor_package *p = data;
    1.13 +	char *pool;
    1.14 +
    1.15 +	pool = bsearch_set->string_pool.data;
    1.16 +
    1.17 +	return strcmp(key, &pool[p->name]);
    1.18 +}
    1.19 +
    1.20  struct razor_package *
    1.21  razor_set_get_package(struct razor_set *set, const char *package)
    1.22  {
    1.23 -	unsigned long name;
    1.24 -	struct razor_package *p, *end;
    1.25 -
    1.26 -	name = razor_set_lookup(set, package);
    1.27 -	end = set->packages.data + set->packages.size;
    1.28 -	for (p = set->packages.data; p < end; p++)
    1.29 -		if (p->name == name)
    1.30 -			return p;
    1.31 -
    1.32 -	return NULL;
    1.33 +	bsearch_set = set;
    1.34 +	return bsearch(package, set->packages.data,
    1.35 +		       set->packages.size / sizeof(struct razor_package),
    1.36 +		       sizeof(struct razor_package), compare_package_name);
    1.37  }
    1.38  
    1.39  static void