Expand Out wrapper and use it in utsname.

This commit is contained in:
4lDO2
2025-10-05 19:58:50 +02:00
parent 7ed934a01d
commit 24cf96393c
9 changed files with 175 additions and 34 deletions
+5 -1
View File
@@ -2,12 +2,14 @@
use crate::{
error::ResultExt,
out::Out,
platform::{Pal, Sys, types::*},
};
pub const UTSLENGTH: usize = 65;
#[repr(C)]
#[derive(Clone, Copy, Debug, OutProject)]
pub struct utsname {
pub sysname: [c_char; UTSLENGTH],
pub nodename: [c_char; UTSLENGTH],
@@ -19,5 +21,7 @@ pub struct utsname {
#[unsafe(no_mangle)]
pub unsafe extern "C" fn uname(uts: *mut utsname) -> c_int {
Sys::uname(uts).map(|()| 0).or_minus_one_errno()
Sys::uname(Out::nonnull(uts))
.map(|()| 0)
.or_minus_one_errno()
}
+1 -1
View File
@@ -563,7 +563,7 @@ pub extern "C" fn gethostid() -> c_long {
pub unsafe extern "C" fn gethostname(mut name: *mut c_char, mut len: size_t) -> c_int {
let mut uts = mem::MaybeUninit::<sys_utsname::utsname>::uninit();
// TODO
let err = Sys::uname(uts.as_mut_ptr())
let err = Sys::uname(Out::from_uninit_mut(&mut uts))
.map(|()| 0)
.or_minus_one_errno();
if err < 0 {