xref: /aosp_15_r20/external/musl/src/search/tfind.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <search.h>
2*c9945492SAndroid Build Coastguard Worker #include "tsearch.h"
3*c9945492SAndroid Build Coastguard Worker 
tfind(const void * key,void * const * rootp,int (* cmp)(const void *,const void *))4*c9945492SAndroid Build Coastguard Worker void *tfind(const void *key, void *const *rootp,
5*c9945492SAndroid Build Coastguard Worker 	int(*cmp)(const void *, const void *))
6*c9945492SAndroid Build Coastguard Worker {
7*c9945492SAndroid Build Coastguard Worker 	if (!rootp)
8*c9945492SAndroid Build Coastguard Worker 		return 0;
9*c9945492SAndroid Build Coastguard Worker 
10*c9945492SAndroid Build Coastguard Worker 	struct node *n = *rootp;
11*c9945492SAndroid Build Coastguard Worker 	for (;;) {
12*c9945492SAndroid Build Coastguard Worker 		if (!n)
13*c9945492SAndroid Build Coastguard Worker 			break;
14*c9945492SAndroid Build Coastguard Worker 		int c = cmp(key, n->key);
15*c9945492SAndroid Build Coastguard Worker 		if (!c)
16*c9945492SAndroid Build Coastguard Worker 			break;
17*c9945492SAndroid Build Coastguard Worker 		n = n->a[c>0];
18*c9945492SAndroid Build Coastguard Worker 	}
19*c9945492SAndroid Build Coastguard Worker 	return n;
20*c9945492SAndroid Build Coastguard Worker }
21