diff --git a/src/bin/passwd.rs b/src/bin/passwd.rs index daa86512f8..4a8d063ab3 100644 --- a/src/bin/passwd.rs +++ b/src/bin/passwd.rs @@ -79,16 +79,7 @@ fn main() { let uid = get_uid().unwrap_or_exit(1); let mut users = AllUsers::authenticator(Config::default().writeable(true)).unwrap_or_exit(1); - let user = match args.value_of("LOGIN") { - Some(login) => users.get_mut_by_name(login).unwrap_or_else(|| { - eprintln!("passwd: user does not exist: {}", login); - exit(1); - }), - None => users.get_mut_by_id(uid).unwrap_or_else(|| { - eprintln!("passwd: you do not exist"); - exit(1); - }), - }; + let user = find_user(&args, &mut users); if user.uid != uid && uid != 0 { eprintln!( @@ -132,6 +123,23 @@ fn main() { users.save().unwrap_or_exit(1); } +fn find_user<'a, T: Default>( + args: &clap::ArgMatches<'_>, + users: &'a mut AllUsers, +) -> &'a mut redox_users::User { + let uid = get_uid().unwrap_or_exit(1); + match args.value_of("LOGIN") { + Some(login) => users.get_mut_by_name(login).unwrap_or_else(|| { + eprintln!("passwd: user does not exist: {}", login); + exit(1); + }), + None => users.get_mut_by_id(uid).unwrap_or_else(|| { + eprintln!("passwd: you do not exist"); + exit(1); + }), + } +} + fn ask_new_password( mut stdin: io::StdinLock<'_>, mut stdout: io::StdoutLock<'_>,