Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[no_mangle]
- pub unsafe extern "C" fn tsearch(mut vkey: *const libc::c_void,
- mut vrootp: *mut *mut libc::c_void,
- mut compar:
- Option<unsafe extern "C" fn(_:
- *const libc::c_void,
- _:
- *const libc::c_void)
- -> libc::c_int>)
- -> *mut libc::c_void {
- let mut q: *mut node_t = 0 as *mut node_t;
- let mut rootp: *mut *mut node_t = vrootp as *mut *mut node_t;
- if rootp.is_null() { return 0 as *mut libc::c_void }
- while !(*rootp).is_null() {
- let mut r: libc::c_int = 0;
- r =
- compar.expect("non-null function pointer")(vkey,
- (**rootp).key as
- *const libc::c_void);
- if r == 0i32 { return *rootp as *mut libc::c_void }
- rootp =
- if r < 0i32 { &mut (**rootp).llink } else { &mut (**rootp).rlink }
- }
- q =
- malloc(::std::mem::size_of::<node_t>() as libc::c_ulong) as
- *mut node_t;
- if !q.is_null() {
- *rootp = q;
- (*q).key = vkey as *mut libc::c_void as *mut libc::c_char;
- (*q).rlink = 0 as *mut node;
- (*q).llink = (*q).rlink
- }
- return q as *mut libc::c_void;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement