github.com/afumu/libc@v0.0.6/musl/src/stdlib/bsearch.c (about) 1 #include <stdlib.h> 2 3 void *bsearch(const void *key, const void *base, size_t nel, size_t width, int (*cmp)(const void *, const void *)) 4 { 5 void *try; 6 int sign; 7 while (nel > 0) { 8 try = (char *)base + width*(nel/2); 9 sign = cmp(key, try); 10 if (sign < 0) { 11 nel /= 2; 12 } else if (sign > 0) { 13 base = (char *)try + width; 14 nel -= nel/2+1; 15 } else { 16 return try; 17 } 18 } 19 return NULL; 20 }