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) };
}
}
}