mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix(ext/node): compatibility with {Free,Open}BSD (#26604)
Ports for both BSDs contain patches to the same effect.
See
https://github.com/freebsd/freebsd-ports/blob/main/www/deno/files/patch-ext_node_ops_fs.rs
and
8644910cae/lang/deno/patches/patch-ext_node_ops_fs_rs
This commit is contained in:
parent
aa2a354190
commit
efb5e912e5
1 changed files with 16 additions and 2 deletions
|
@ -152,13 +152,21 @@ where
|
||||||
let mut cpath = path.as_bytes().to_vec();
|
let mut cpath = path.as_bytes().to_vec();
|
||||||
cpath.push(0);
|
cpath.push(0);
|
||||||
if bigint {
|
if bigint {
|
||||||
#[cfg(not(target_os = "macos"))]
|
#[cfg(not(any(
|
||||||
|
target_os = "macos",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
)))]
|
||||||
// SAFETY: `cpath` is NUL-terminated and result is pointer to valid statfs memory.
|
// SAFETY: `cpath` is NUL-terminated and result is pointer to valid statfs memory.
|
||||||
let (code, result) = unsafe {
|
let (code, result) = unsafe {
|
||||||
let mut result: libc::statfs64 = std::mem::zeroed();
|
let mut result: libc::statfs64 = std::mem::zeroed();
|
||||||
(libc::statfs64(cpath.as_ptr() as _, &mut result), result)
|
(libc::statfs64(cpath.as_ptr() as _, &mut result), result)
|
||||||
};
|
};
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(any(
|
||||||
|
target_os = "macos",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
// SAFETY: `cpath` is NUL-terminated and result is pointer to valid statfs memory.
|
// SAFETY: `cpath` is NUL-terminated and result is pointer to valid statfs memory.
|
||||||
let (code, result) = unsafe {
|
let (code, result) = unsafe {
|
||||||
let mut result: libc::statfs = std::mem::zeroed();
|
let mut result: libc::statfs = std::mem::zeroed();
|
||||||
|
@ -168,7 +176,10 @@ where
|
||||||
return Err(std::io::Error::last_os_error().into());
|
return Err(std::io::Error::last_os_error().into());
|
||||||
}
|
}
|
||||||
Ok(StatFs {
|
Ok(StatFs {
|
||||||
|
#[cfg(not(target_os = "openbsd"))]
|
||||||
typ: result.f_type as _,
|
typ: result.f_type as _,
|
||||||
|
#[cfg(target_os = "openbsd")]
|
||||||
|
typ: 0 as _,
|
||||||
bsize: result.f_bsize as _,
|
bsize: result.f_bsize as _,
|
||||||
blocks: result.f_blocks as _,
|
blocks: result.f_blocks as _,
|
||||||
bfree: result.f_bfree as _,
|
bfree: result.f_bfree as _,
|
||||||
|
@ -186,7 +197,10 @@ where
|
||||||
return Err(std::io::Error::last_os_error().into());
|
return Err(std::io::Error::last_os_error().into());
|
||||||
}
|
}
|
||||||
Ok(StatFs {
|
Ok(StatFs {
|
||||||
|
#[cfg(not(target_os = "openbsd"))]
|
||||||
typ: result.f_type as _,
|
typ: result.f_type as _,
|
||||||
|
#[cfg(target_os = "openbsd")]
|
||||||
|
typ: 0 as _,
|
||||||
bsize: result.f_bsize as _,
|
bsize: result.f_bsize as _,
|
||||||
blocks: result.f_blocks as _,
|
blocks: result.f_blocks as _,
|
||||||
bfree: result.f_bfree as _,
|
bfree: result.f_bfree as _,
|
||||||
|
|
Loading…
Reference in a new issue