source: trunk/src/crtdll/bsearch.c@ 2246

Last change on this file since 2246 was 2177, checked in by sandervl, 26 years ago

all crt functions moved to crtdll

File size: 901 bytes
Line 
1/* $Id: bsearch.c,v 1.2 1999-12-21 12:27:11 sandervl Exp $ */
2/* bsearch.c (emx+gcc) -- Copyright (c) 1990-1995 by Eberhard Mattes */
3
4#include <odin.h>
5#include <builtin.h>
6
7/*********************************************************************
8 * bsearch (CRTDLL.346)
9 */
10
11void *CDECL CRTDLL_bsearch (const void *key, const void *base, size_t num, size_t width,
12 int (* CDECL compare)(const void *key, const void *element))
13{
14 int left, right, median, sign;
15 const void *element;
16
17 if (width == 0)
18 return 0;
19 left = 1; right = num;
20 while (left <= right)
21 {
22 median = (left + right) / 2;
23 element = (void *)((char *)base + (median-1)*width);
24 sign = compare (key, element);
25 if (sign == 0)
26 return (void *)element;
27 if (sign > 0)
28 left = median + 1;
29 else
30 right = median - 1;
31 }
32 return 0;
33}
Note: See TracBrowser for help on using the repository browser.