mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 19:47:45 +00:00
chroot: make Options.groups into an Option type
Change the type of `Options.groups` to be `Option<Vec<String>>` so that the absence of the `--groups` option is meaningfully distinguished from an empty list of groups. This is important because `chroot --groups=''` is used specifically to disable supplementary group lookup.
This commit is contained in:
parent
52c05e2fd6
commit
b59da37365
1 changed files with 7 additions and 5 deletions
|
@ -43,7 +43,7 @@ struct Options {
|
|||
/// Whether to change to the new root directory.
|
||||
skip_chdir: bool,
|
||||
/// List of groups under which the command will be run.
|
||||
groups: Vec<String>,
|
||||
groups: Option<Vec<String>>,
|
||||
/// The user and group (each optional) under which the command will be run.
|
||||
userspec: Option<UserSpec>,
|
||||
}
|
||||
|
@ -133,12 +133,12 @@ impl Options {
|
|||
None => return Err(ChrootError::MissingNewRoot.into()),
|
||||
};
|
||||
let groups = match matches.get_one::<String>(options::GROUPS) {
|
||||
None => vec![],
|
||||
None => None,
|
||||
Some(s) => {
|
||||
if s.is_empty() {
|
||||
vec![]
|
||||
Some(vec![])
|
||||
} else {
|
||||
parse_group_list(s)?
|
||||
Some(parse_group_list(s)?)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -288,7 +288,9 @@ pub fn uu_app() -> Command {
|
|||
|
||||
fn set_context(options: &Options) -> UResult<()> {
|
||||
enter_chroot(&options.newroot, options.skip_chdir)?;
|
||||
set_groups_from_str(&options.groups)?;
|
||||
if let Some(groups) = &options.groups {
|
||||
set_groups_from_str(groups)?;
|
||||
}
|
||||
match &options.userspec {
|
||||
None | Some(UserSpec::NeitherGroupNorUser) => {}
|
||||
Some(UserSpec::UserOnly(user)) => set_user(user)?,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue