runebsearch.c 256 B

12345678910111213141516171819202122
  1. #include <u.h>
  2. #include <libc.h>
  3. Rune*
  4. _runebsearch(Rune c, Rune *t, int n, int ne)
  5. {
  6. Rune *p;
  7. int m;
  8. while(n > 1) {
  9. m = n/2;
  10. p = t + m*ne;
  11. if(c >= p[0]) {
  12. t = p;
  13. n = n-m;
  14. } else
  15. n = m;
  16. }
  17. if(n && c >= t[0])
  18. return t;
  19. return 0;
  20. }