mirror of
https://github.com/NotAShelf/microfetch.git
synced 2025-10-05 12:42:05 +00:00
uptime: get rid of nix crate
This commit is contained in:
parent
a3b87f8f83
commit
e9aa9a2bbe
1 changed files with 17 additions and 10 deletions
|
@ -1,32 +1,39 @@
|
||||||
use nix::sys::sysinfo::sysinfo;
|
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
||||||
pub fn get_current() -> Result<String, io::Error> {
|
pub fn get_current() -> Result<String, io::Error> {
|
||||||
let info = sysinfo().map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
|
let uptime_seconds = unsafe {
|
||||||
let uptime_seconds = info.uptime().as_secs();
|
let mut info: libc::sysinfo = std::mem::zeroed();
|
||||||
|
if libc::sysinfo(&mut info) != 0 {
|
||||||
|
return Err(io::Error::last_os_error());
|
||||||
|
}
|
||||||
|
info.uptime as u64
|
||||||
|
};
|
||||||
|
|
||||||
let days = uptime_seconds / (60 * 60 * 24);
|
let days = uptime_seconds / 86400;
|
||||||
let hours = (uptime_seconds / 3600) % 24;
|
let hours = (uptime_seconds / 3600) % 24;
|
||||||
let minutes = (uptime_seconds / 60) % 60;
|
let minutes = (uptime_seconds / 60) % 60;
|
||||||
|
|
||||||
let mut result = String::new();
|
let mut result = String::new();
|
||||||
if days > 0 {
|
if days > 0 {
|
||||||
result.push_str(&format!("{days} day{}", if days > 1 { "s" } else { "" }));
|
result.push_str(&days.to_string());
|
||||||
|
result.push_str(if days == 1 { " day" } else { " days" });
|
||||||
}
|
}
|
||||||
if hours > 0 {
|
if hours > 0 {
|
||||||
if !result.is_empty() {
|
if !result.is_empty() {
|
||||||
result.push_str(", ");
|
result.push_str(", ");
|
||||||
}
|
}
|
||||||
result.push_str(&format!("{hours} hour{}", if hours > 1 { "s" } else { "" }));
|
result.push_str(&hours.to_string());
|
||||||
|
result.push_str(if hours == 1 { " hour" } else { " hours" });
|
||||||
}
|
}
|
||||||
if minutes > 0 {
|
if minutes > 0 {
|
||||||
if !result.is_empty() {
|
if !result.is_empty() {
|
||||||
result.push_str(", ");
|
result.push_str(", ");
|
||||||
}
|
}
|
||||||
result.push_str(&format!(
|
result.push_str(&minutes.to_string());
|
||||||
"{minutes} minute{}",
|
result.push_str(if minutes == 1 { " minute" } else { " minutes" });
|
||||||
if minutes > 1 { "s" } else { "" }
|
}
|
||||||
));
|
if result.is_empty() {
|
||||||
|
result.push_str("less than a minute");
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(result)
|
Ok(result)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue