mqrs/src/posix/list.rs
finga e1cac4e164 clippy: Fix several clippy issues
In order to enable several clippy lint groups fix several findings.
2023-10-15 20:11:54 +02:00

60 lines
1.7 KiB
Rust

use anyhow::{anyhow, Result};
use chrono::{DateTime, Local};
use clap::Parser;
use log::warn;
use std::{fs, os::unix::fs::PermissionsExt};
/// Print a list of existing message queues
#[derive(Debug, Parser)]
pub struct List {
/// Show all parameters
#[clap(short, long)]
all: bool,
}
impl List {
pub fn run(&self) -> Result<()> {
if self.all {
println!(
"{0: <10} {1: <10} {2: <12} {3: <26} {4: <26}",
"Name", "Size", "Permissions", "Modified", "Accessed",
);
} else {
println!("Name");
}
for mq in fs::read_dir("/dev/mqueue")? {
match mq {
Ok(mq) => {
print!(
"/{0: <10}",
mq.file_name().into_string().map_err(|e| anyhow!(
"Could not convert queue name to string: {:?}",
e
))?
);
if self.all {
let metadata = mq.metadata()?;
let modified: DateTime<Local> = metadata.modified()?.into();
let accessed: DateTime<Local> = metadata.accessed()?.into();
print!(
"{0: <10} {1: <12o} {2: <26} {3: <26}",
metadata.len(),
metadata.permissions().mode(),
modified,
accessed,
);
}
println!();
}
Err(e) => warn!("Could not read file: {:?}", e),
}
}
Ok(())
}
}