redrust 0.1.1

redrust is a port of the popular Redis database system written in Rust programming language. This port aims to provide all the features of Redis while taking advantage of the Rust language's safety, speed, and modern language features.
Documentation
extern crate c2rust_bitfields;
extern crate libc;
extern crate core;
pub type size_t = libc::c_ulong;
pub type uintptr_t = libc::c_ulong;
#[inline]
unsafe extern "C" fn swapfunc(
    mut a: *mut libc::c_char,
    mut b: *mut libc::c_char,
    mut n: size_t,
    mut swaptype: libc::c_int,
) {
    if swaptype <= 1 as libc::c_int {
        let mut i: size_t = n
            .wrapping_div(core::mem::size_of::<libc::c_long>() as libc::c_ulong);
        let mut pi: *mut libc::c_long = a as *mut libc::c_void as *mut libc::c_long;
        let mut pj: *mut libc::c_long = b as *mut libc::c_void as *mut libc::c_long;
        loop {
            let mut t: libc::c_long = *pi;
            let fresh0 = pi;
            pi = pi.offset(1);
            *fresh0 = *pj;
            let fresh1 = pj;
            pj = pj.offset(1);
            *fresh1 = t;
            i = i.wrapping_sub(1);
            if !(i > 0 as libc::c_int as libc::c_ulong) {
                break;
            }
        }
    } else {
        let mut i_0: size_t = n
            .wrapping_div(core::mem::size_of::<libc::c_char>() as libc::c_ulong);
        let mut pi_0: *mut libc::c_char = a as *mut libc::c_void as *mut libc::c_char;
        let mut pj_0: *mut libc::c_char = b as *mut libc::c_void as *mut libc::c_char;
        loop {
            let mut t_0: libc::c_char = *pi_0;
            let fresh2 = pi_0;
            pi_0 = pi_0.offset(1);
            *fresh2 = *pj_0;
            let fresh3 = pj_0;
            pj_0 = pj_0.offset(1);
            *fresh3 = t_0;
            i_0 = i_0.wrapping_sub(1);
            if !(i_0 > 0 as libc::c_int as libc::c_ulong) {
                break;
            }
        }
    };
}
#[inline]
unsafe extern "C" fn med3(
    mut a: *mut libc::c_char,
    mut b: *mut libc::c_char,
    mut c: *mut libc::c_char,
    mut cmp: Option::<
        unsafe extern "C" fn(*const libc::c_void, *const libc::c_void) -> libc::c_int,
    >,
) -> *mut libc::c_char {
    return if cmp
        .expect(
            "non-null function pointer",
        )(a as *const libc::c_void, b as *const libc::c_void) < 0 as libc::c_int
    {
        if cmp
            .expect(
                "non-null function pointer",
            )(b as *const libc::c_void, c as *const libc::c_void) < 0 as libc::c_int
        {
            b
        } else if cmp
            .expect(
                "non-null function pointer",
            )(a as *const libc::c_void, c as *const libc::c_void) < 0 as libc::c_int
        {
            c
        } else {
            a
        }
    } else if cmp
        .expect(
            "non-null function pointer",
        )(b as *const libc::c_void, c as *const libc::c_void) > 0 as libc::c_int
    {
        b
    } else if cmp
        .expect(
            "non-null function pointer",
        )(a as *const libc::c_void, c as *const libc::c_void) < 0 as libc::c_int
    {
        a
    } else {
        c
    };
}
unsafe extern "C" fn _pqsort(
    mut a: *mut libc::c_void,
    mut n: size_t,
    mut es: size_t,
    mut cmp: Option::<
        unsafe extern "C" fn(*const libc::c_void, *const libc::c_void) -> libc::c_int,
    >,
    mut lrange: *mut libc::c_void,
    mut rrange: *mut libc::c_void,
) {
    let mut pa: *mut libc::c_char = 0 as *mut libc::c_char;
    let mut pb: *mut libc::c_char = 0 as *mut libc::c_char;
    let mut pc: *mut libc::c_char = 0 as *mut libc::c_char;
    let mut pd: *mut libc::c_char = 0 as *mut libc::c_char;
    let mut pl: *mut libc::c_char = 0 as *mut libc::c_char;
    let mut pm: *mut libc::c_char = 0 as *mut libc::c_char;
    let mut pn: *mut libc::c_char = 0 as *mut libc::c_char;
    let mut d: size_t = 0;
    let mut r: size_t = 0;
    let mut swaptype: libc::c_int = 0;
    let mut cmp_result: libc::c_int = 0;
    loop {
        swaptype = if (a as uintptr_t)
            .wrapping_rem(core::mem::size_of::<libc::c_long>() as libc::c_ulong) != 0
            || es.wrapping_rem(core::mem::size_of::<libc::c_long>() as libc::c_ulong)
                != 0
        {
            2 as libc::c_int
        } else if es == core::mem::size_of::<libc::c_long>() as libc::c_ulong {
            0 as libc::c_int
        } else {
            1 as libc::c_int
        };
        if n < 7 as libc::c_int as libc::c_ulong {
            pm = (a as *mut libc::c_char).offset(es as isize);
            while pm < (a as *mut libc::c_char).offset(n.wrapping_mul(es) as isize) {
                pl = pm;
                while pl > a as *mut libc::c_char
                    && cmp
                        .expect(
                            "non-null function pointer",
                        )(
                        pl.offset(-(es as isize)) as *const libc::c_void,
                        pl as *const libc::c_void,
                    ) > 0 as libc::c_int
                {
                    if swaptype == 0 as libc::c_int {
                        let mut t: libc::c_long = *(pl as *mut libc::c_void
                            as *mut libc::c_long);
                        *(pl as *mut libc::c_void
                            as *mut libc::c_long) = *(pl.offset(-(es as isize))
                            as *mut libc::c_void as *mut libc::c_long);
                        *(pl.offset(-(es as isize)) as *mut libc::c_void
                            as *mut libc::c_long) = t;
                    } else {
                        swapfunc(pl, pl.offset(-(es as isize)), es, swaptype);
                    }
                    pl = pl.offset(-(es as isize));
                }
                pm = pm.offset(es as isize);
            }
            return;
        }
        pm = (a as *mut libc::c_char)
            .offset(
                n.wrapping_div(2 as libc::c_int as libc::c_ulong).wrapping_mul(es)
                    as isize,
            );
        if n > 7 as libc::c_int as libc::c_ulong {
            pl = a as *mut libc::c_char;
            pn = (a as *mut libc::c_char)
                .offset(
                    n.wrapping_sub(1 as libc::c_int as libc::c_ulong).wrapping_mul(es)
                        as isize,
                );
            if n > 40 as libc::c_int as libc::c_ulong {
                d = n.wrapping_div(8 as libc::c_int as libc::c_ulong).wrapping_mul(es);
                pl = med3(
                    pl,
                    pl.offset(d as isize),
                    pl
                        .offset(
                            (2 as libc::c_int as libc::c_ulong).wrapping_mul(d) as isize,
                        ),
                    cmp,
                );
                pm = med3(pm.offset(-(d as isize)), pm, pm.offset(d as isize), cmp);
                pn = med3(
                    pn
                        .offset(
                            -((2 as libc::c_int as libc::c_ulong).wrapping_mul(d)
                                as isize),
                        ),
                    pn.offset(-(d as isize)),
                    pn,
                    cmp,
                );
            }
            pm = med3(pl, pm, pn, cmp);
        }
        if swaptype == 0 as libc::c_int {
            let mut t_0: libc::c_long = *(a as *mut libc::c_long);
            *(a as *mut libc::c_long) = *(pm as *mut libc::c_void as *mut libc::c_long);
            *(pm as *mut libc::c_void as *mut libc::c_long) = t_0;
        } else {
            swapfunc(a as *mut libc::c_char, pm, es, swaptype);
        }
        pb = (a as *mut libc::c_char).offset(es as isize);
        pa = pb;
        pd = (a as *mut libc::c_char)
            .offset(
                n.wrapping_sub(1 as libc::c_int as libc::c_ulong).wrapping_mul(es)
                    as isize,
            );
        pc = pd;
        loop {
            while pb <= pc
                && {
                    cmp_result = cmp
                        .expect(
                            "non-null function pointer",
                        )(pb as *const libc::c_void, a);
                    cmp_result <= 0 as libc::c_int
                }
            {
                if cmp_result == 0 as libc::c_int {
                    if swaptype == 0 as libc::c_int {
                        let mut t_1: libc::c_long = *(pa as *mut libc::c_void
                            as *mut libc::c_long);
                        *(pa as *mut libc::c_void
                            as *mut libc::c_long) = *(pb as *mut libc::c_void
                            as *mut libc::c_long);
                        *(pb as *mut libc::c_void as *mut libc::c_long) = t_1;
                    } else {
                        swapfunc(pa, pb, es, swaptype);
                    }
                    pa = pa.offset(es as isize);
                }
                pb = pb.offset(es as isize);
            }
            while pb <= pc
                && {
                    cmp_result = cmp
                        .expect(
                            "non-null function pointer",
                        )(pc as *const libc::c_void, a);
                    cmp_result >= 0 as libc::c_int
                }
            {
                if cmp_result == 0 as libc::c_int {
                    if swaptype == 0 as libc::c_int {
                        let mut t_2: libc::c_long = *(pc as *mut libc::c_void
                            as *mut libc::c_long);
                        *(pc as *mut libc::c_void
                            as *mut libc::c_long) = *(pd as *mut libc::c_void
                            as *mut libc::c_long);
                        *(pd as *mut libc::c_void as *mut libc::c_long) = t_2;
                    } else {
                        swapfunc(pc, pd, es, swaptype);
                    }
                    pd = pd.offset(-(es as isize));
                }
                pc = pc.offset(-(es as isize));
            }
            if pb > pc {
                break;
            }
            if swaptype == 0 as libc::c_int {
                let mut t_3: libc::c_long = *(pb as *mut libc::c_void
                    as *mut libc::c_long);
                *(pb as *mut libc::c_void
                    as *mut libc::c_long) = *(pc as *mut libc::c_void
                    as *mut libc::c_long);
                *(pc as *mut libc::c_void as *mut libc::c_long) = t_3;
            } else {
                swapfunc(pb, pc, es, swaptype);
            }
            pb = pb.offset(es as isize);
            pc = pc.offset(-(es as isize));
        }
        pn = (a as *mut libc::c_char).offset(n.wrapping_mul(es) as isize);
        r = (if (pa.offset_from(a as *mut libc::c_char) as libc::c_long)
            < pb.offset_from(pa) as libc::c_long
        {
            pa.offset_from(a as *mut libc::c_char) as libc::c_long
        } else {
            pb.offset_from(pa) as libc::c_long
        }) as size_t;
        if r > 0 as libc::c_int as libc::c_ulong {
            swapfunc(a as *mut libc::c_char, pb.offset(-(r as isize)), r, swaptype);
        }
        r = if (pd.offset_from(pc) as libc::c_long as size_t)
            < (pn.offset_from(pd) as libc::c_long as libc::c_ulong).wrapping_sub(es)
        {
            pd.offset_from(pc) as libc::c_long as size_t
        } else {
            (pn.offset_from(pd) as libc::c_long as libc::c_ulong).wrapping_sub(es)
        };
        if r > 0 as libc::c_int as libc::c_ulong {
            swapfunc(pb, pn.offset(-(r as isize)), r, swaptype);
        }
        r = pb.offset_from(pa) as libc::c_long as size_t;
        if r > es {
            let mut _l: *mut libc::c_void = a;
            let mut _r: *mut libc::c_void = (a as *mut libc::c_uchar)
                .offset(r as isize)
                .offset(-(1 as libc::c_int as isize)) as *mut libc::c_void;
            if !(lrange < _l && rrange < _l || lrange > _r && rrange > _r) {
                _pqsort(a, r.wrapping_div(es), es, cmp, lrange, rrange);
            }
        }
        r = pd.offset_from(pc) as libc::c_long as size_t;
        if !(r > es) {
            break;
        }
        let mut _l_0: *mut libc::c_void = 0 as *mut libc::c_void;
        let mut _r_0: *mut libc::c_void = 0 as *mut libc::c_void;
        a = pn.offset(-(r as isize)) as *mut libc::c_void;
        n = r.wrapping_div(es);
        _l_0 = a;
        _r_0 = (a as *mut libc::c_uchar)
            .offset(r as isize)
            .offset(-(1 as libc::c_int as isize)) as *mut libc::c_void;
        if lrange < _l_0 && rrange < _l_0 || lrange > _r_0 && rrange > _r_0 {
            break;
        }
    };
}
#[no_mangle]
pub unsafe extern "C" fn pqsort(
    mut a: *mut libc::c_void,
    mut n: size_t,
    mut es: size_t,
    mut cmp: Option::<
        unsafe extern "C" fn(*const libc::c_void, *const libc::c_void) -> libc::c_int,
    >,
    mut lrange: size_t,
    mut rrange: size_t,
) {
    _pqsort(
        a,
        n,
        es,
        cmp,
        (a as *mut libc::c_uchar).offset(lrange.wrapping_mul(es) as isize)
            as *mut libc::c_void,
        (a as *mut libc::c_uchar)
            .offset(
                rrange.wrapping_add(1 as libc::c_int as libc::c_ulong).wrapping_mul(es)
                    as isize,
            )
            .offset(-(1 as libc::c_int as isize)) as *mut libc::c_void,
    );
}