tfind.c raw

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