diff options
author | Gwenolé Beauchesne <gbeauchesne@mandriva.org> | 2003-06-04 18:31:57 +0000 |
---|---|---|
committer | Gwenolé Beauchesne <gbeauchesne@mandriva.org> | 2003-06-04 18:31:57 +0000 |
commit | 09e967c2d732783b2579e4e120cd9b608404cb00 (patch) | |
tree | 8d2783a6a7e33608c6012efd6a88b8f5694df81d /mdk-stage1/dietlibc/lib/bsearch.c | |
parent | 18fcff49d3c836697d3b75a3d01d31c700e69974 (diff) | |
download | drakx-09e967c2d732783b2579e4e120cd9b608404cb00.tar drakx-09e967c2d732783b2579e4e120cd9b608404cb00.tar.gz drakx-09e967c2d732783b2579e4e120cd9b608404cb00.tar.bz2 drakx-09e967c2d732783b2579e4e120cd9b608404cb00.tar.xz drakx-09e967c2d732783b2579e4e120cd9b608404cb00.zip |
Merge from R9_0-AMD64, most notably:
- AMD64 support to insmod-busybox, minilibc, et al.
- Sync with insmod-modutils 2.4.19 something but everyone should use
dietlibc nowadays
- Factor out compilation and prefix with $(DIET) for dietlibc builds
- 64-bit & varargs fixes
Diffstat (limited to 'mdk-stage1/dietlibc/lib/bsearch.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/bsearch.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/mdk-stage1/dietlibc/lib/bsearch.c b/mdk-stage1/dietlibc/lib/bsearch.c index d2f5c74b2..14605f1f6 100644 --- a/mdk-stage1/dietlibc/lib/bsearch.c +++ b/mdk-stage1/dietlibc/lib/bsearch.c @@ -1,20 +1,20 @@ +#include <assert.h> #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); + size_t m; + while (nmemb) { + int tmp; + void *p; + m=nmemb/2; + p=(void *) (((const char *) base) + (m * size)); + if ((tmp=(*compar)(key,p))<0) { + nmemb=m; + } else if (tmp>0) { + base=p+size; + nmemb-=m+1; + } else + return p; + } return 0; } |