catalog_shell: fix several clippy warnings
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
parent
6486cb853f
commit
314bb35868
|
@ -144,7 +144,7 @@ impl ShellCmdMap {
|
||||||
|
|
||||||
/// List all known commands with their help text.
|
/// List all known commands with their help text.
|
||||||
fn list_commands(&self) {
|
fn list_commands(&self) {
|
||||||
println!("");
|
println!();
|
||||||
for cmd in &self.cmds {
|
for cmd in &self.cmds {
|
||||||
println!("{}\n", cmd.1.help());
|
println!("{}\n", cmd.1.help());
|
||||||
}
|
}
|
||||||
|
@ -191,16 +191,14 @@ impl ShellCmdMap {
|
||||||
} else {
|
} else {
|
||||||
bail!("invalid option");
|
bail!("invalid option");
|
||||||
}
|
}
|
||||||
|
} else if let Some(name) = required.next() {
|
||||||
|
// First fill all required parameters
|
||||||
|
given.parameters.insert(name, arg);
|
||||||
|
} else if let Some(name) = optional.next() {
|
||||||
|
// Now fill all optional parameters
|
||||||
|
given.parameters.insert(name, arg);
|
||||||
} else {
|
} else {
|
||||||
if let Some(name) = required.next() {
|
bail!("to many arguments");
|
||||||
// First fill all required parameters
|
|
||||||
given.parameters.insert(name, arg);
|
|
||||||
} else if let Some(name) = optional.next() {
|
|
||||||
// Now fill all optional parameters
|
|
||||||
given.parameters.insert(name, arg);
|
|
||||||
} else {
|
|
||||||
bail!("to many arguments");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Check that we have got all required parameters
|
// Check that we have got all required parameters
|
||||||
|
@ -379,7 +377,7 @@ impl ShellInstance {
|
||||||
self.context().current = path;
|
self.context().current = path;
|
||||||
// Update the directory displayed in the prompt
|
// Update the directory displayed in the prompt
|
||||||
let prompt =
|
let prompt =
|
||||||
Self::generate_prompt(Self::to_path(&self.context().current.clone())?.as_slice());
|
Self::generate_prompt(Self::path(&self.context().current.clone())?.as_slice());
|
||||||
self.rl.update_prompt(prompt);
|
self.rl.update_prompt(prompt);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -409,12 +407,12 @@ impl ShellInstance {
|
||||||
|
|
||||||
/// Print the current working directory
|
/// Print the current working directory
|
||||||
fn pwd(&mut self, _args: Args) -> Result<(), Error> {
|
fn pwd(&mut self, _args: Args) -> Result<(), Error> {
|
||||||
let pwd = Self::to_path(&self.context().current.clone())?;
|
let pwd = Self::path(&self.context().current.clone())?;
|
||||||
Self::print_slice(&pwd).map_err(|err| format_err!("{}", err))
|
Self::print_slice(&pwd).map_err(|err| format_err!("{}", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate an absolute path from a directory stack.
|
/// Generate an absolute path from a directory stack.
|
||||||
fn to_path(dir_stack: &[DirEntry]) -> Result<Vec<u8>, Error> {
|
fn path(dir_stack: &[DirEntry]) -> Result<Vec<u8>, Error> {
|
||||||
let mut path = vec![b'/'];
|
let mut path = vec![b'/'];
|
||||||
// Skip the archive root, '/' is displayed for it
|
// Skip the archive root, '/' is displayed for it
|
||||||
for item in dir_stack.iter().skip(1) {
|
for item in dir_stack.iter().skip(1) {
|
||||||
|
@ -544,7 +542,7 @@ impl ShellInstance {
|
||||||
// Calling canonical_path() makes sure the provided path is valid and
|
// Calling canonical_path() makes sure the provided path is valid and
|
||||||
// actually contained within the catalog and therefore also the archive.
|
// actually contained within the catalog and therefore also the archive.
|
||||||
let path = self.canonical_path(path)?;
|
let path = self.canonical_path(path)?;
|
||||||
if self.selected.insert(Self::to_path(&path)?) {
|
if self.selected.insert(Self::path(&path)?) {
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
bail!("entry already selected for restore")
|
bail!("entry already selected for restore")
|
||||||
|
@ -641,7 +639,7 @@ impl ShellInstance {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Print the list of `DirEntry`s to stdout.
|
/// Print the list of `DirEntry`s to stdout.
|
||||||
fn print_list(list: &Vec<DirEntry>) -> Result<(), std::io::Error> {
|
fn print_list(list: &[DirEntry]) -> Result<(), std::io::Error> {
|
||||||
if list.is_empty() {
|
if list.is_empty() {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
@ -686,21 +684,19 @@ impl ShellInstance {
|
||||||
size: u64,
|
size: u64,
|
||||||
) -> Result<(), std::io::Error> {
|
) -> Result<(), std::io::Error> {
|
||||||
let mut out = std::io::stdout();
|
let mut out = std::io::stdout();
|
||||||
out.write_all("File: ".as_bytes())?;
|
out.write_all(b"File: ")?;
|
||||||
out.write_all(&item.filename.as_bytes())?;
|
out.write_all(&item.filename.as_bytes())?;
|
||||||
out.write_all(&[b'\n'])?;
|
out.write_all(&[b'\n'])?;
|
||||||
out.write_all(format!("Size: {}\n", size).as_bytes())?;
|
out.write_all(format!("Size: {}\n", size).as_bytes())?;
|
||||||
let mode = match item.entry.mode as u32 & libc::S_IFMT {
|
out.write_all(b"Type: ")?;
|
||||||
libc::S_IFDIR => "directory".as_bytes(),
|
match item.entry.mode as u32 & libc::S_IFMT {
|
||||||
libc::S_IFREG => "regular file".as_bytes(),
|
libc::S_IFDIR => out.write_all(b"directory\n")?,
|
||||||
libc::S_IFLNK => "symbolic link".as_bytes(),
|
libc::S_IFREG => out.write_all(b"regular file\n")?,
|
||||||
libc::S_IFBLK => "block special file".as_bytes(),
|
libc::S_IFLNK => out.write_all(b"symbolic link\n")?,
|
||||||
libc::S_IFCHR => "character special file".as_bytes(),
|
libc::S_IFBLK => out.write_all(b"block special file\n")?,
|
||||||
_ => "unknown".as_bytes(),
|
libc::S_IFCHR => out.write_all(b"character special file\n")?,
|
||||||
|
_ => out.write_all(b"unknown\n")?,
|
||||||
};
|
};
|
||||||
out.write_all("Type: ".as_bytes())?;
|
|
||||||
out.write_all(&mode)?;
|
|
||||||
out.write_all(&[b'\n'])?;
|
|
||||||
out.write_all(format!("Uid: {}\n", item.entry.uid).as_bytes())?;
|
out.write_all(format!("Uid: {}\n", item.entry.uid).as_bytes())?;
|
||||||
out.write_all(format!("Gid: {}\n", item.entry.gid).as_bytes())?;
|
out.write_all(format!("Gid: {}\n", item.entry.gid).as_bytes())?;
|
||||||
out.flush()?;
|
out.flush()?;
|
||||||
|
@ -708,10 +704,11 @@ impl ShellInstance {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the current size of the terminal
|
/// Get the current size of the terminal
|
||||||
|
/// # Safety
|
||||||
///
|
///
|
||||||
/// uses tty_ioctl, see man tty_ioctl(2)
|
/// uses unsafe call to tty_ioctl, see man tty_ioctl(2)
|
||||||
fn get_terminal_size() -> (usize, usize) {
|
fn get_terminal_size() -> (usize, usize) {
|
||||||
const TIOCGWINSZ: libc::c_ulong = 0x00005413;
|
const TIOCGWINSZ: libc::c_ulong = 0x5413;
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
struct WinSize {
|
struct WinSize {
|
||||||
|
|
|
@ -1770,7 +1770,7 @@ async fn catalog_shell(param: Value) -> Result<Value, Error> {
|
||||||
}))).await?;
|
}))).await?;
|
||||||
|
|
||||||
let list = result["data"].as_array().unwrap();
|
let list = result["data"].as_array().unwrap();
|
||||||
if list.len() == 0 {
|
if list.is_empty() {
|
||||||
bail!("backup group '{}' does not contain any snapshots:", path);
|
bail!("backup group '{}' does not contain any snapshots:", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue