From f7033aa40c04c292e69e495d8dc12c8f7edfbfa5 Mon Sep 17 00:00:00 2001 From: Brennan Kinney <5098581+polarathene@users.noreply.github.com> Date: Fri, 12 Jun 2026 22:30:12 +1200 Subject: [PATCH 1/2] fix: Update to `printf-compat@0.4.0` --- c-scape/Cargo.toml | 2 +- c-scape/src/fs/fcntl.rs | 8 ++++---- c-scape/src/fs/open.rs | 2 +- c-scape/src/io/mod.rs | 8 ++++---- c-scape/src/mm/mod.rs | 2 +- c-scape/src/process/exec.rs | 8 ++++---- c-scape/src/syscall.rs | 18 +++++++++--------- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/c-scape/Cargo.toml b/c-scape/Cargo.toml index f00a3dd..0f9cd2f 100644 --- a/c-scape/Cargo.toml +++ b/c-scape/Cargo.toml @@ -34,7 +34,7 @@ rand = { version = "0.9.0", default-features = false } rustix-dlmalloc = { version = "0.2.1", optional = true } rustix-openpty = "0.2.0" bitflags = { version = "2.4.1", default-features = false } -printf-compat = { version = "0.3.0", default-features = false } +printf-compat = { version = "0.4.0", default-features = false } num-complex = { version = "0.4.4", default-features = false, features = ["libm"] } posix-regex = { version = "0.1.1", features = ["no_std"] } diff --git a/c-scape/src/fs/fcntl.rs b/c-scape/src/fs/fcntl.rs index 52443e8..561dc6b 100644 --- a/c-scape/src/fs/fcntl.rs +++ b/c-scape/src/fs/fcntl.rs @@ -29,7 +29,7 @@ unsafe fn _fcntl(fd: c_int, cmd: c_int, mut args: VaList<'_>) -> } } libc::F_SETFL => { - let flags = args.arg::(); + let flags = args.next_arg::(); libc!(libc::fcntl(fd, libc::F_SETFL, flags)); let fd = BorrowedFd::borrow_raw(fd); match convert_res(rustix::fs::fcntl_setfl( @@ -49,7 +49,7 @@ unsafe fn _fcntl(fd: c_int, cmd: c_int, mut args: VaList<'_>) -> } } libc::F_SETFD => { - let flags = args.arg::(); + let flags = args.next_arg::(); libc!(libc::fcntl(fd, libc::F_SETFD, flags)); let fd = BorrowedFd::borrow_raw(fd); match convert_res(rustix::io::fcntl_setfd( @@ -61,7 +61,7 @@ unsafe fn _fcntl(fd: c_int, cmd: c_int, mut args: VaList<'_>) -> } } libc::F_SETLK | libc::F_SETLKW => { - let ptr = args.arg::<*mut FlockTy>(); + let ptr = args.next_arg::<*mut FlockTy>(); libc!(libc::fcntl(fd, cmd, ptr)); let fd = BorrowedFd::borrow_raw(fd); let is_blocking = cmd == libc::F_SETLKW; @@ -96,7 +96,7 @@ unsafe fn _fcntl(fd: c_int, cmd: c_int, mut args: VaList<'_>) -> } #[cfg(not(target_os = "wasi"))] libc::F_DUPFD_CLOEXEC => { - let arg = args.arg::(); + let arg = args.next_arg::(); libc!(libc::fcntl(fd, libc::F_DUPFD_CLOEXEC, arg)); let fd = BorrowedFd::borrow_raw(fd); match convert_res(rustix::io::fcntl_dupfd_cloexec(fd, arg)) { diff --git a/c-scape/src/fs/open.rs b/c-scape/src/fs/open.rs index 9386a34..932b16d 100644 --- a/c-scape/src/fs/open.rs +++ b/c-scape/src/fs/open.rs @@ -14,7 +14,7 @@ macro_rules! openat_impl { ($fd:expr, $pathname:ident, $flags:ident, $args:ident) => {{ let flags = OFlags::from_bits($flags as _).unwrap(); let mode = if flags.contains(OFlags::CREATE) || flags.contains(OFlags::TMPFILE) { - let mode: libc::mode_t = $args.arg(); + let mode: libc::mode_t = $args.next_arg(); Mode::from_bits((mode & !libc::S_IFMT) as _).unwrap() } else { Mode::empty() diff --git a/c-scape/src/io/mod.rs b/c-scape/src/io/mod.rs index 1fb5908..e352a9d 100644 --- a/c-scape/src/io/mod.rs +++ b/c-scape/src/io/mod.rs @@ -33,14 +33,14 @@ unsafe extern "C" fn ioctl(fd: c_int, request: c_long, mut args: ...) -> c_int { let fd = BorrowedFd::borrow_raw(fd); match convert_res(rustix::termios::tcgetattr(fd)) { Some(x) => { - args.arg::<*mut rustix::termios::Termios>().write(x); + args.next_arg::<*mut rustix::termios::Termios>().write(x); 0 } None => -1, } } FIONBIO | TIOCINQ => { - let ptr = args.arg::<*mut c_int>(); + let ptr = args.next_arg::<*mut c_int>(); let value = *ptr != 0; libc!(libc::ioctl(fd, libc::FIONBIO, value as c_int)); let fd = BorrowedFd::borrow_raw(fd); @@ -60,14 +60,14 @@ unsafe extern "C" fn ioctl(fd: c_int, request: c_long, mut args: ...) -> c_int { ws_xpixel: size.ws_xpixel, ws_ypixel: size.ws_ypixel, }; - args.arg::<*mut libc::winsize>().write(size); + args.next_arg::<*mut libc::winsize>().write(size); 0 } None => -1, } } FICLONE => { - let src_fd = args.arg::(); + let src_fd = args.next_arg::(); libc!(libc::ioctl(fd, libc::FICLONE as _, src_fd)); let fd = BorrowedFd::borrow_raw(fd); let src_fd = BorrowedFd::borrow_raw(src_fd); diff --git a/c-scape/src/mm/mod.rs b/c-scape/src/mm/mod.rs index 63d8e56..ea26c70 100644 --- a/c-scape/src/mm/mod.rs +++ b/c-scape/src/mm/mod.rs @@ -77,7 +77,7 @@ unsafe extern "C" fn mremap( mut args: ... ) -> *mut c_void { if (flags & libc::MREMAP_FIXED) == libc::MREMAP_FIXED { - let new_address = args.arg::<*mut c_void>(); + let new_address = args.next_arg::<*mut c_void>(); libc!(libc::mremap( old_address, old_size, diff --git a/c-scape/src/process/exec.rs b/c-scape/src/process/exec.rs index 8db60d1..f720b93 100644 --- a/c-scape/src/process/exec.rs +++ b/c-scape/src/process/exec.rs @@ -19,7 +19,7 @@ unsafe extern "C" fn execl(path: *const c_char, arg: *const c_char, mut argv: .. vec.push(arg); loop { - let ptr = argv.arg::<*const c_char>(); + let ptr = argv.next_arg::<*const c_char>(); vec.push(ptr); if ptr.is_null() { break; @@ -35,10 +35,10 @@ unsafe extern "C" fn execle(path: *const c_char, arg: *const c_char, mut argv: . vec.push(arg); let envp = loop { - let ptr = argv.arg::<*const c_char>(); + let ptr = argv.next_arg::<*const c_char>(); vec.push(ptr); if ptr.is_null() { - break argv.arg::<*const *const c_char>(); + break argv.next_arg::<*const *const c_char>(); } }; @@ -51,7 +51,7 @@ unsafe extern "C" fn execlp(file: *const c_char, arg: *const c_char, mut argv: . vec.push(arg); loop { - let ptr = argv.arg::<*const c_char>(); + let ptr = argv.next_arg::<*const c_char>(); vec.push(ptr); if ptr.is_null() { break; diff --git a/c-scape/src/syscall.rs b/c-scape/src/syscall.rs index caa3f41..6886d8e 100644 --- a/c-scape/src/syscall.rs +++ b/c-scape/src/syscall.rs @@ -79,19 +79,19 @@ unsafe extern "C" fn syscall(number: c_long, mut args: ...) -> *mut c_void { without_provenance_mut(libc::statx(dirfd, path, flags, mask, statxbuf) as _) } libc::SYS_getrandom => { - let buf = args.arg::<*mut c_void>(); - let len = args.arg::(); - let flags = args.arg::(); + let buf = args.next_arg::<*mut c_void>(); + let len = args.next_arg::(); + let flags = args.next_arg::(); without_provenance_mut(libc::getrandom(buf, len, flags) as _) } #[cfg(feature = "thread")] libc::SYS_futex => { - let uaddr = args.arg::<*mut u32>(); - let futex_op = args.arg::(); - let val = args.arg::(); - let timeout = args.arg::<*const libc::timespec>(); - let uaddr2 = args.arg::<*mut u32>(); - let val3 = args.arg::(); + let uaddr = args.next_arg::<*mut u32>(); + let futex_op = args.next_arg::(); + let val = args.next_arg::(); + let timeout = args.next_arg::<*const libc::timespec>(); + let uaddr2 = args.next_arg::<*mut u32>(); + let val3 = args.next_arg::(); without_provenance_mut( futex(uaddr, futex_op, val, timeout, uaddr2, val3) as isize as usize ) From 9c0cc30bb3f889e788501b275983f0d838976136 Mon Sep 17 00:00:00 2001 From: Brennan Kinney <5098581+polarathene@users.noreply.github.com> Date: Fri, 12 Jun 2026 22:37:07 +1200 Subject: [PATCH 2/2] Update to the latest nightly Rust --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e76255e..dc0f651 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2025-12-07" +channel = "nightly-2026-06-11" components = ["rustc", "cargo", "rust-std", "rust-src", "rustfmt"]