printf("%s %s\n", &pool[p->name], &pool[p->version]);
}
-struct razor_package *
-razor_set_get_package(struct razor_set *set, const char *package)
+struct razor_set *bsearch_set;
+
+static int
+compare_package_name(const void *key, const void *data)
{
- unsigned long name;
- struct razor_package *p, *end;
+ const struct razor_package *p = data;
+ char *pool;
- name = razor_set_lookup(set, package);
- end = set->packages.data + set->packages.size;
- for (p = set->packages.data; p < end; p++)
- if (p->name == name)
- return p;
+ pool = bsearch_set->string_pool.data;
+
+ return strcmp(key, &pool[p->name]);
+}
- return NULL;
+struct razor_package *
+razor_set_get_package(struct razor_set *set, const char *package)
+{
+ bsearch_set = set;
+ return bsearch(package, set->packages.data,
+ set->packages.size / sizeof(struct razor_package),
+ sizeof(struct razor_package), compare_package_name);
}
static void