This commit is contained in:
Sorath Panzer 2026-01-14 05:40:26 +01:00 committed by GitHub
commit b09c8a3c5e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 28 additions and 4 deletions

View file

@ -69,7 +69,7 @@ signal-hook-tokio = { version = "0.4.0", features = [ "futures-v0_3" ] }
[target.'cfg(target_os = "macos")'.dependencies]
crossterm = { workspace = true, features = [ "use-dev-tty", "libc" ] }
[target.'cfg(all(not(target_os = "macos"), not(target_os = "windows")))'.dependencies]
[target.'cfg(all(not(target_os = "macos"), not(target_os = "windows"), not(target_os = "openbsd")))'.dependencies]
tikv-jemallocator = "0.6.1"
[[bin]]

View file

@ -1,4 +1,4 @@
#[cfg(all(not(target_os = "macos"), not(target_os = "windows")))]
#[cfg(all(not(target_os = "macos"), not(target_os = "windows"), not(target_os = "openbsd")))]
#[global_allocator]
static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;

View file

@ -116,7 +116,6 @@ fn casefold_impl(path: PathBuf) -> io::Result<PathBuf> {
#[cfg(any(
target_os = "macos",
target_os = "netbsd",
target_os = "openbsd",
target_os = "freebsd"
))]
fn final_path(path: &Path) -> io::Result<PathBuf> {
@ -139,6 +138,11 @@ fn final_path(path: &Path) -> io::Result<PathBuf> {
Ok(OsString::from_vec(cstr.to_bytes().to_vec()).into())
}
#[cfg(target_os = "openbsd")]
fn final_path(path: &Path) -> io::Result<PathBuf> {
std::fs::canonicalize(path)
}
#[cfg(target_os = "windows")]
fn final_path(path: &Path) -> io::Result<PathBuf> {
use std::{ffi::OsString, fs::File, os::windows::{ffi::OsStringExt, fs::OpenOptionsExt, io::AsRawHandle}};

View file

@ -38,7 +38,12 @@ impl Command {
lua.globals().raw_set("Command", command)
}
#[cfg(unix)]
#[cfg(any(
target_os = "macos",
target_os = "netbsd",
target_os = "linux",
target_os = "freebsd"
))]
fn spawn(&mut self) -> io::Result<Child> {
if let Some(max) = self.memory {
unsafe {
@ -52,6 +57,21 @@ impl Command {
self.inner.spawn().map(Child::new)
}
#[cfg(target_os = "openbsd")]
fn spawn(&mut self) -> io::Result<Child> {
if let Some(max) = self.memory {
unsafe {
self.inner.pre_exec(move || {
let rlp = libc::rlimit { rlim_cur: max as _, rlim_max: max as _ };
#[cfg(target_os = "openbsd")]
libc::setrlimit(libc::RLIMIT_DATA, &rlp);
Ok(())
});
}
}
self.inner.spawn().map(Child::new)
}
#[cfg(windows)]
fn spawn(&mut self) -> io::Result<Child> {
use std::os::windows::io::RawHandle;