Root/
Source at commit 1275 created 12 years 11 months ago. By meklort, Remove unused file. Fixup makefiles some more - boot2 compiles again. | |
---|---|
1 | /*␊ |
2 | * bsearch.c␊ |
3 | */␊ |
4 | ␊ |
5 | #include <stdlib.h>␊ |
6 | ␊ |
7 | void *bsearch(const void *key, const void *base, size_t nmemb,␊ |
8 | ␉ size_t size, int (*cmp) (const void *, const void *))␊ |
9 | {␊ |
10 | ␉while (nmemb) {␊ |
11 | ␉␉size_t mididx = nmemb / 2;␊ |
12 | ␉␉const void *midobj = base + mididx * size;␊ |
13 | ␉␉int diff = cmp(key, midobj);␊ |
14 | ␊ |
15 | ␉␉if (diff == 0)␊ |
16 | ␉␉␉return (void *)midobj;␊ |
17 | ␊ |
18 | ␉␉if (diff > 0) {␊ |
19 | ␉␉␉base = midobj + size;␊ |
20 | ␉␉␉nmemb -= mididx + 1;␊ |
21 | ␉␉} else␊ |
22 | ␉␉␉nmemb = mididx;␊ |
23 | ␉}␊ |
24 | ␊ |
25 | ␉return NULL;␊ |
26 | }␊ |
27 |