diff options
Diffstat (limited to 'mdk-stage1/dietlibc/lib/bsearch.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/bsearch.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/bsearch.c b/mdk-stage1/dietlibc/lib/bsearch.c new file mode 100644 index 000000000..d2f5c74b2 --- /dev/null +++ b/mdk-stage1/dietlibc/lib/bsearch.c @@ -0,0 +1,20 @@ +#include <stdlib.h> + +void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) { + const char *v, *r; + int res; + r=base+(nmemb-1)*size; + do { + register int num=nmemb/2; + v=base+num*size; + if ((res=compar(key,v))<0) { + r=v-size; + nmemb=num; + } else { + if (res==0) return (void*)v; + base=v+size; + nmemb-=num; + } + } while ((char*)base<=r); + return 0; +} |