Function nc::getgroups

source ·
pub unsafe fn getgroups(
    size: i32,
    group_list: &mut [gid_t]
) -> Result<i32, Errno>
Expand description

Get list of supplementary group Ids.

§Example

let mut groups = vec![];
let ret = unsafe { nc::getgroups(0, &mut groups) };
assert!(ret.is_ok());
let total_num = ret.unwrap();
groups.resize(total_num as usize, 0);

let ret = unsafe { nc::getgroups(total_num, &mut groups) };
assert!(ret.is_ok());
assert_eq!(ret, Ok(total_num));
Examples found in repository?
examples/getgroups.rs (line 8)
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
fn main() {
    {
        let mut groups = vec![];
        let ret = unsafe { nc::getgroups(0, &mut groups) };
        assert!(ret.is_ok());
        let total_num = ret.unwrap();
        groups.resize(total_num as usize, 0);

        let ret = unsafe { nc::getgroups(total_num, &mut groups) };
        assert!(ret.is_ok());
        assert_eq!(ret, Ok(total_num));
    }

    {
        let mut groups = vec![0; 8];
        let mut ret = unsafe { nc::getgroups(groups.len() as i32, &mut groups) };
        while ret.is_err() && ret == Err(nc::EINVAL) {
            groups.resize(groups.len() * 2, 0);
            ret = unsafe { nc::getgroups(groups.len() as i32, &mut groups) };
        }
    }
}