Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. #[no_mangle]
  2. pub unsafe extern "C" fn tsearch(mut vkey: *const libc::c_void,
  3. mut vrootp: *mut *mut libc::c_void,
  4. mut compar:
  5. Option<unsafe extern "C" fn(_:
  6. *const libc::c_void,
  7. _:
  8. *const libc::c_void)
  9. -> libc::c_int>)
  10. -> *mut libc::c_void {
  11. let mut q: *mut node_t = 0 as *mut node_t;
  12. let mut rootp: *mut *mut node_t = vrootp as *mut *mut node_t;
  13. if rootp.is_null() { return 0 as *mut libc::c_void }
  14. while !(*rootp).is_null() {
  15. let mut r: libc::c_int = 0;
  16. r =
  17. compar.expect("non-null function pointer")(vkey,
  18. (**rootp).key as
  19. *const libc::c_void);
  20. if r == 0i32 { return *rootp as *mut libc::c_void }
  21. rootp =
  22. if r < 0i32 { &mut (**rootp).llink } else { &mut (**rootp).rlink }
  23. }
  24. q =
  25. malloc(::std::mem::size_of::<node_t>() as libc::c_ulong) as
  26. *mut node_t;
  27. if !q.is_null() {
  28. *rootp = q;
  29. (*q).key = vkey as *mut libc::c_void as *mut libc::c_char;
  30. (*q).rlink = 0 as *mut node;
  31. (*q).llink = (*q).rlink
  32. }
  33. return q as *mut libc::c_void;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement