- unsigned first = 0;
- unsigned last = DI_FUNCTION_COUNT - 1;
-
- while (first <= last) {
- unsigned middle = (first + last) / 2;
- int comp = strcmp((const char *) name,
- __glXDispatchTableStrings[middle]);
-
- if (comp < 0)
- first = middle + 1;
- else if (comp > 0)
- last = middle - 1;
- else
- return middle;
- }
+ const char **match;
+
+ match = bsearch(name, __glXDispatchTableStrings, DI_FUNCTION_COUNT,
+ sizeof(const char *), compare);