Use bsearch instead of hash table when looking up packages.
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