use core::ffi::{c_char, c_int};

use super::sys_types::{gid_t, uid_t};

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(C)]
pub struct passwd {
    pub pw_name: *mut c_char,
    pub pw_uid: uid_t,
    pub pw_gid: gid_t,
    pub pw_dir: *mut c_char,
    pub pw_shell: *mut c_char,
}

#[no_mangle]
unsafe extern "C" fn endpwent() {
    unimplemented!()
}

#[no_mangle]
unsafe extern "C" fn getpwent() -> *mut passwd {
    unimplemented!()
}

#[no_mangle]
unsafe extern "C" fn getpwnam(_name: *const c_char) -> *mut passwd {
    unimplemented!()
}

#[no_mangle]
unsafe extern "C" fn getpwnam_r(
    _name: *const c_char,
    _pwd: *mut passwd,
    _buf: *mut c_char,
    _buflen: usize,
    _result: *mut *mut passwd,
) -> c_int {
    unimplemented!()
}

#[no_mangle]
unsafe extern "C" fn getpwuid(_uid: uid_t) -> *mut passwd {
    unimplemented!()
}

#[no_mangle]
unsafe extern "C" fn getpwuid_r(
    _uid: uid_t,
    _pwd: *mut passwd,
    _buf: *mut c_char,
    _buflen: usize,
    _result: *mut *mut passwd,
) -> c_int {
    unimplemented!()
}

#[no_mangle]
unsafe extern "C" fn setpwent() {
    unimplemented!()
}
