Vast refactor of pwd.h, add getpwent/setpwent/endpwent

This commit is contained in:
jD91mZM2
2019-08-12 09:29:24 +02:00
parent aeab6a986d
commit 4f2a93ea90
5 changed files with 263 additions and 194 deletions
+14 -6
View File
@@ -1,7 +1,15 @@
pub fn split(line: &[u8]) -> [&[u8]; 7] {
let mut parts: [&[u8]; 7] = [&[]; 7];
for (i, part) in line.splitn(7, |b| *b == b':').enumerate() {
parts[i] = part;
}
parts
use super::{parsed, passwd};
use crate::platform::types::*;
pub fn split(line: &mut [u8]) -> Option<passwd> {
let mut parts = line.split_mut(|&c| c == b'\0');
Some(passwd {
pw_name: parts.next()?.as_mut_ptr() as *mut c_char,
pw_passwd: parts.next()?.as_mut_ptr() as *mut c_char,
pw_uid: parsed(parts.next())?,
pw_gid: parsed(parts.next())?,
pw_gecos: parts.next()?.as_mut_ptr() as *mut c_char,
pw_dir: parts.next()?.as_mut_ptr() as *mut c_char,
pw_shell: parts.next()?.as_mut_ptr() as *mut c_char,
})
}