summaryrefslogtreecommitdiff
path: root/src/lib/libc/stdlib/bsearch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/stdlib/bsearch.c')
-rw-r--r--src/lib/libc/stdlib/bsearch.c27
1 files changed, 7 insertions, 20 deletions
diff --git a/src/lib/libc/stdlib/bsearch.c b/src/lib/libc/stdlib/bsearch.c
index fac03f694f..b48747236e 100644
--- a/src/lib/libc/stdlib/bsearch.c
+++ b/src/lib/libc/stdlib/bsearch.c
@@ -10,11 +10,7 @@
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the 11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software 13 * 3. Neither the name of the University nor the names of its contributors
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software 14 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission. 15 * without specific prior written permission.
20 * 16 *
@@ -31,11 +27,6 @@
31 * SUCH DAMAGE. 27 * SUCH DAMAGE.
32 */ 28 */
33 29
34#if defined(LIBC_SCCS) && !defined(lint)
35/*static char *sccsid = "from: @(#)bsearch.c 5.4 (Berkeley) 2/23/91";*/
36static char *rcsid = "$Id: bsearch.c,v 1.1.1.1 1995/10/18 08:42:16 deraadt Exp $";
37#endif /* LIBC_SCCS and not lint */
38
39#include <stdlib.h> 30#include <stdlib.h>
40 31
41/* 32/*
@@ -46,7 +37,7 @@ static char *rcsid = "$Id: bsearch.c,v 1.1.1.1 1995/10/18 08:42:16 deraadt Exp $
46 * is odd, moving left simply involves halving lim: e.g., when lim 37 * is odd, moving left simply involves halving lim: e.g., when lim
47 * is 5 we look at item 2, so we change lim to 2 so that we will 38 * is 5 we look at item 2, so we change lim to 2 so that we will
48 * look at items 0 & 1. If lim is even, the same applies. If lim 39 * look at items 0 & 1. If lim is even, the same applies. If lim
49 * is odd, moving right again involes halving lim, this time moving 40 * is odd, moving right again involves halving lim, this time moving
50 * the base up one item past p: e.g., when lim is 5 we change base 41 * the base up one item past p: e.g., when lim is 5 we change base
51 * to item 3 and make lim 2 so that we will look at items 3 and 4. 42 * to item 3 and make lim 2 so that we will look at items 3 and 4.
52 * If lim is even, however, we have to shrink it by one before 43 * If lim is even, however, we have to shrink it by one before
@@ -55,16 +46,12 @@ static char *rcsid = "$Id: bsearch.c,v 1.1.1.1 1995/10/18 08:42:16 deraadt Exp $
55 * look at item 3. 46 * look at item 3.
56 */ 47 */
57void * 48void *
58bsearch(key, base0, nmemb, size, compar) 49bsearch(const void *key, const void *base0, size_t nmemb, size_t size,
59 register const void *key; 50 int (*compar)(const void *, const void *))
60 const void *base0;
61 size_t nmemb;
62 register size_t size;
63 register int (*compar) __P((const void *, const void *));
64{ 51{
65 register const char *base = base0; 52 const char *base = base0;
66 register int lim, cmp; 53 int lim, cmp;
67 register const void *p; 54 const void *p;
68 55
69 for (lim = nmemb; lim != 0; lim >>= 1) { 56 for (lim = nmemb; lim != 0; lim >>= 1) {
70 p = base + (lim >> 1) * size; 57 p = base + (lim >> 1) * size;