Annotation of coherent/b/lib/libc/gen/bsearch.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * C general utilities library.
        !             3:  * bsearch()
        !             4:  * ANSI 4.10.5.1.
        !             5:  * Binary search.
        !             6:  */
        !             7: 
        !             8: #include <stdlib.h>
        !             9: 
        !            10: __VOID__ *
        !            11: bsearch(key, base, nmemb, size, compar)
        !            12: const __VOID__ *key, *base;
        !            13: register size_t nmemb;
        !            14: size_t size;
        !            15: int (*compar)();
        !            16: {
        !            17:        register size_t i;
        !            18:        register int n;
        !            19:        register __VOID__ *p;
        !            20: 
        !            21:        while (nmemb > 0) {
        !            22:                i = nmemb / 2;
        !            23:                p = (__VOID__ *)(((char *)base) + i * size);
        !            24:                if ((n = (*compar)(key, p)) == 0)
        !            25:                        return p;
        !            26:                else if (n < 0)
        !            27:                        nmemb = i;
        !            28:                else {
        !            29:                        nmemb -= i + 1;
        !            30:                        base = (__VOID__ *)(((char *)p) + size);
        !            31:                }
        !            32:        }
        !            33:        return NULL;
        !            34: }
        !            35: 
        !            36: /* end of bsearch.c */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.