feat: 初步增加 Windows 支持

This commit is contained in:
mofeng-git
2026-05-18 22:43:28 +08:00
parent 0b9d94f53f
commit 935fa823f2
163 changed files with 11419 additions and 7581 deletions

View File

@@ -9,7 +9,15 @@ pub fn hostname_from_etc() -> String {
/// Current kernel hostname (`gethostname`). Used for live device info in the UI.
pub fn hostname_uname() -> String {
nix::unistd::gethostname()
.map(|s| s.to_string_lossy().into_owned())
.unwrap_or_else(|_| "unknown".to_string())
#[cfg(unix)]
{
nix::unistd::gethostname()
.map(|s| s.to_string_lossy().into_owned())
.unwrap_or_else(|_| "unknown".to_string())
}
#[cfg(not(unix))]
{
std::env::var("COMPUTERNAME").unwrap_or_else(|_| "unknown".to_string())
}
}

View File

@@ -2,10 +2,16 @@
pub mod fs;
pub mod host;
#[cfg(unix)]
pub mod net;
#[cfg(not(unix))]
#[path = "net_disabled.rs"]
pub mod net;
pub mod serial;
pub mod throttle;
pub use fs::{list_dir_names, read_trimmed};
pub use host::{hostname_from_etc, hostname_uname};
pub use net::{bind_tcp_listener, bind_udp_socket};
pub use serial::list_serial_ports;
pub use throttle::LogThrottler;

14
src/utils/net_disabled.rs Normal file
View File

@@ -0,0 +1,14 @@
use std::io;
use std::net::{SocketAddr, TcpListener, UdpSocket};
pub fn bind_tcp_listener(addr: SocketAddr) -> io::Result<TcpListener> {
let listener = TcpListener::bind(addr)?;
listener.set_nonblocking(true)?;
Ok(listener)
}
pub fn bind_udp_socket(addr: SocketAddr) -> io::Result<UdpSocket> {
let socket = UdpSocket::bind(addr)?;
socket.set_nonblocking(true)?;
Ok(socket)
}

12
src/utils/serial.rs Normal file
View File

@@ -0,0 +1,12 @@
//! Cross-platform serial port discovery helpers.
/// Return serial port names that users can put directly into the config.
pub fn list_serial_ports() -> Vec<String> {
let mut ports: Vec<String> = serialport::available_ports()
.map(|ports| ports.into_iter().map(|port| port.port_name).collect())
.unwrap_or_default();
ports.sort();
ports.dedup();
ports
}