diff options
author | Nicolas Planel <nplanel@mandriva.com> | 2003-10-29 16:07:11 +0000 |
---|---|---|
committer | Nicolas Planel <nplanel@mandriva.com> | 2003-10-29 16:07:11 +0000 |
commit | de47eb59bb829423b1d0f47ba13099073999b3cb (patch) | |
tree | 827f35c4666e15ec66edae7c1fa05d963324602b /mdk-stage1/dietlibc/lib/bsearch.c | |
parent | 1fece42e9c460ca017fc4facad380f05163d8977 (diff) | |
download | drakx-backup-do-not-use-de47eb59bb829423b1d0f47ba13099073999b3cb.tar drakx-backup-do-not-use-de47eb59bb829423b1d0f47ba13099073999b3cb.tar.gz drakx-backup-do-not-use-de47eb59bb829423b1d0f47ba13099073999b3cb.tar.bz2 drakx-backup-do-not-use-de47eb59bb829423b1d0f47ba13099073999b3cb.tar.xz drakx-backup-do-not-use-de47eb59bb829423b1d0f47ba13099073999b3cb.zip |
Corporate Server 2.1.1 releasetopic/Corpo_2_1
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; } |