mirror of
https://github.com/ClementTsang/bottom.git
synced 2025-07-13 00:34:46 +02:00
bug: redirect stderr on FreeBSD to avoid drawing on UI (#897)
This commit is contained in:
parent
31d2e4a746
commit
a07fa305fb
12
Cargo.lock
generated
12
Cargo.lock
generated
@ -219,6 +219,7 @@ dependencies = [
|
|||||||
"ctrlc",
|
"ctrlc",
|
||||||
"dirs",
|
"dirs",
|
||||||
"fern",
|
"fern",
|
||||||
|
"filedescriptor",
|
||||||
"futures",
|
"futures",
|
||||||
"futures-timer",
|
"futures-timer",
|
||||||
"fxhash",
|
"fxhash",
|
||||||
@ -589,6 +590,17 @@ dependencies = [
|
|||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "filedescriptor"
|
||||||
|
version = "0.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"thiserror",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "float-cmp"
|
name = "float-cmp"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
|
@ -111,6 +111,7 @@ winapi = "0.3.9"
|
|||||||
[target.'cfg(target_os = "freebsd")'.dependencies]
|
[target.'cfg(target_os = "freebsd")'.dependencies]
|
||||||
serde_json = { version = "1.0.82" }
|
serde_json = { version = "1.0.82" }
|
||||||
sysctl = { version = "0.5.2", optional = true }
|
sysctl = { version = "0.5.2", optional = true }
|
||||||
|
filedescriptor = "0.8.2"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
assert_cmd = "2.0.4"
|
assert_cmd = "2.0.4"
|
||||||
|
@ -251,14 +251,22 @@ impl DataCollector {
|
|||||||
if self.widgets_to_harvest.use_temp {
|
if self.widgets_to_harvest.use_temp {
|
||||||
self.sys.refresh_components();
|
self.sys.refresh_components();
|
||||||
}
|
}
|
||||||
if cfg!(target_os = "windows") && self.widgets_to_harvest.use_net {
|
|
||||||
self.sys.refresh_networks();
|
#[cfg(target_os = "windows")]
|
||||||
|
{
|
||||||
|
if self.widgets_to_harvest.use_net {
|
||||||
|
self.sys.refresh_networks();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if cfg!(target_os = "freebsd") && self.widgets_to_harvest.use_disk {
|
|
||||||
self.sys.refresh_disks();
|
#[cfg(target_os = "freebsd")]
|
||||||
}
|
{
|
||||||
if cfg!(target_os = "freebsd") && self.widgets_to_harvest.use_mem {
|
if self.widgets_to_harvest.use_disk {
|
||||||
self.sys.refresh_memory();
|
self.sys.refresh_disks();
|
||||||
|
}
|
||||||
|
if self.widgets_to_harvest.use_mem {
|
||||||
|
self.sys.refresh_memory();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,6 +131,16 @@ fn main() -> Result<()> {
|
|||||||
terminal.clear()?;
|
terminal.clear()?;
|
||||||
terminal.hide_cursor()?;
|
terminal.hide_cursor()?;
|
||||||
|
|
||||||
|
#[cfg(target_os = "freebsd")]
|
||||||
|
let _stderr_fd = {
|
||||||
|
// A really ugly band-aid to suppress stderr warnings on FreeBSD due to sysinfo.
|
||||||
|
use filedescriptor::{FileDescriptor, StdioDescriptor};
|
||||||
|
use std::fs::OpenOptions;
|
||||||
|
|
||||||
|
let path = OpenOptions::new().write(true).open("/dev/null")?;
|
||||||
|
FileDescriptor::redirect_stdio(&path, StdioDescriptor::Stderr)?
|
||||||
|
};
|
||||||
|
|
||||||
// Set panic hook
|
// Set panic hook
|
||||||
panic::set_hook(Box::new(panic_hook));
|
panic::set_hook(Box::new(panic_hook));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user