summaryrefslogtreecommitdiff
path: root/libc/stdlib/bsearch.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/stdlib/bsearch.c')
-rw-r--r--libc/stdlib/bsearch.c56
1 files changed, 26 insertions, 30 deletions
diff --git a/libc/stdlib/bsearch.c b/libc/stdlib/bsearch.c
index 72ba2617a..04d5ab68b 100644
--- a/libc/stdlib/bsearch.c
+++ b/libc/stdlib/bsearch.c
@@ -10,37 +10,33 @@
*/
#include <stdio.h>
-static int _bsearch; /* index of element found, or where to
- * insert */
+static int _bsearch; /* index of element found, or where to
-char *
-bsearch(key, base, num, size, cmp)
-register char *key; /* item to search for */
-register char *base; /* base address */
-int num; /* number of elements */
-register int size; /* element size in bytes */
-register int (*cmp) (); /* comparison function */
+ * insert */
+
+char *bsearch(key, base, num, size, cmp)
+register char *key; /* item to search for */
+register char *base; /* base address */
+int num; /* number of elements */
+register int size; /* element size in bytes */
+register int (*cmp) (); /* comparison function */
{
- register int a, b, c, dir;
+ register int a, b, c, dir;
- a = 0;
- b = num - 1;
- while (a <= b)
- {
- c = (a + b) >> 1; /* == ((a + b) / 2) */
- if ((dir = (*cmp) ((base + (c * size)), key)))
- {
- if (dir > 0)
- b = c - 1;
- else /* (dir < 0) */
- a = c + 1;
- }
- else
- {
- _bsearch = c;
- return (base + (c * size));
- }
- }
- _bsearch = b;
- return (NULL);
+ a = 0;
+ b = num - 1;
+ while (a <= b) {
+ c = (a + b) >> 1; /* == ((a + b) / 2) */
+ if ((dir = (*cmp) ((base + (c * size)), key))) {
+ if (dir > 0)
+ b = c - 1;
+ else /* (dir < 0) */
+ a = c + 1;
+ } else {
+ _bsearch = c;
+ return (base + (c * size));
+ }
+ }
+ _bsearch = b;
+ return (NULL);
}