Merge remote-tracking branch 'upstream/main' into impl_pidwait

This commit is contained in:
Krysztal Huang
2024-08-14 20:37:43 +08:00
2 changed files with 40 additions and 8 deletions
Generated
+2 -2
View File
@@ -164,9 +164,9 @@ dependencies = [
[[package]]
name = "clap_complete"
version = "4.5.14"
version = "4.5.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d11bff0290e9a266fc9b4ce6fa96c2bf2ca3f9724c41c10202ac1daf7a087f8"
checksum = "9c677cd0126f3026d8b093fa29eae5d812fde5c05bc66dbb29d0374eea95113a"
dependencies = [
"clap",
]
+38 -6
View File
@@ -5,7 +5,6 @@
use std::cell::RefCell;
use chrono::DateTime;
use uu_pgrep::process::{ProcessInformation, Teletype};
pub(crate) fn collect_pickers(
@@ -54,13 +53,23 @@ fn time(proc_info: RefCell<ProcessInformation>) -> String {
let cumulative_cpu_time = {
let utime = proc_info.borrow_mut().stat()[13].parse::<i64>().unwrap();
let stime = proc_info.borrow_mut().stat()[14].parse::<i64>().unwrap();
utime + stime
(utime + stime) / 100
};
DateTime::from_timestamp_millis(cumulative_cpu_time)
.unwrap()
.format("%H:%M:%S")
.to_string()
format_time(cumulative_cpu_time)
}
fn format_time(seconds: i64) -> String {
let day = seconds / (3600 * 24);
let hour = (seconds % (3600 * 24)) / 3600;
let minute = (seconds % 3600) / 60;
let second = seconds % 60;
if day != 0 {
format!("{:02}-{:02}:{:02}:{:02}", day, hour, minute, second)
} else {
format!("{:02}:{:02}:{:02}", hour, minute, second)
}
}
fn cmd(proc_info: RefCell<ProcessInformation>) -> String {
@@ -70,3 +79,26 @@ fn cmd(proc_info: RefCell<ProcessInformation>) -> String {
fn ucmd(proc_info: RefCell<ProcessInformation>) -> String {
proc_info.borrow_mut().status().get("Name").unwrap().into()
}
#[test]
fn test_time() {
let formatted = {
let time = {
let utime = 29i64;
let stime = 18439i64;
(utime + stime) / 100
};
format_time(time)
};
assert_eq!(formatted, "00:03:04");
let formatted = {
let time = {
let utime = 12345678i64;
let stime = 90i64;
(utime + stime) / 100
};
format_time(time)
};
assert_eq!(formatted, "01-10:17:37");
}