aboutsummaryrefslogtreecommitdiff
path: root/stdlib/bsearch.c
diff options
context:
space:
mode:
authorOndrej Bilka <neleai@seznam.cz>2013-02-11 23:18:09 +0100
committerOndrej Bilka <neleai@seznam.cz>2013-02-11 23:18:09 +0100
commit41eda41d7489a428abb46202482136a540ec23dc (patch)
treeb0adeba7c44ac543ba0085bb2f742c196e65348d /stdlib/bsearch.c
parent8ded91fb377ad48c66e8b44929af7214f40f3557 (diff)
downloadglibc-41eda41d7489a428abb46202482136a540ec23dc.zip
glibc-41eda41d7489a428abb46202482136a540ec23dc.tar.gz
glibc-41eda41d7489a428abb46202482136a540ec23dc.tar.bz2
Add inline bsearch expansion.
Diffstat (limited to 'stdlib/bsearch.c')
-rw-r--r--stdlib/bsearch.c31
1 files changed, 3 insertions, 28 deletions
diff --git a/stdlib/bsearch.c b/stdlib/bsearch.c
index 55b4f37..4a357ef 100644
--- a/stdlib/bsearch.c
+++ b/stdlib/bsearch.c
@@ -17,32 +17,7 @@
#include <stdlib.h>
-
-/* Perform a binary search for KEY in BASE which has NMEMB elements
- of SIZE bytes each. The comparisons are done by (*COMPAR)(). */
-void *
-bsearch (const void *key, const void *base, size_t nmemb, size_t size,
- int (*compar) (const void *, const void *))
-{
- size_t l, u, idx;
- const void *p;
- int comparison;
-
- l = 0;
- u = nmemb;
- while (l < u)
- {
- idx = (l + u) / 2;
- p = (void *) (((const char *) base) + (idx * size));
- comparison = (*compar) (key, p);
- if (comparison < 0)
- u = idx;
- else if (comparison > 0)
- l = idx + 1;
- else
- return (void *) p;
- }
-
- return NULL;
-}
+#undef __extern_inline
+#define __extern_inline /* Empty, so we get a normal definition. */
+#include <bits/stdlib-bsearch.h>
libc_hidden_def (bsearch)