Magellan Linux

Annotation of /trunk/mkinitrd-magellan/klibc/usr/klibc/bsearch.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (hide annotations) (download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 9 months ago) by niro
File MIME type: text/plain
File size: 450 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 niro 532 /*
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     }