From 1bbdcc1202a9e534f4ee7fb3990e36c4c7866801 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 19 Dec 2025 12:12:16 -0700 Subject: [PATCH] Implement fwscanf and similar --- src/header/wchar/mod.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/header/wchar/mod.rs b/src/header/wchar/mod.rs index 21bab30676..32909f8602 100644 --- a/src/header/wchar/mod.rs +++ b/src/header/wchar/mod.rs @@ -163,6 +163,16 @@ pub unsafe extern "C" fn fwide(stream: *mut FILE, mode: c_int) -> c_int { (*stream).try_set_orientation(mode) } +/// See . +#[unsafe(no_mangle)] +pub unsafe extern "C" fn fwscanf( + stream: *mut FILE, + format: *const wchar_t, + mut __valist: ... +) -> c_int { + vfwscanf(stream, format, __valist.as_va_list()) +} + /// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn getwc(stream: *mut FILE) -> wint_t { @@ -1078,8 +1088,12 @@ pub unsafe extern "C" fn wmemset(ws: *mut wchar_t, wc: wchar_t, n: size_t) -> *m /// See . #[unsafe(no_mangle)] -pub unsafe extern "C" fn vwscanf(format: *const wchar_t, __valist: va_list) -> c_int { - let mut file = (*stdin).lock(); +pub unsafe extern "C" fn vfwscanf( + stream: *mut FILE, + format: *const wchar_t, + __valist: va_list, +) -> c_int { + let mut file = (*stream).lock(); if let Err(_) = file.try_set_byte_orientation_unlocked() { return -1; } @@ -1089,10 +1103,16 @@ pub unsafe extern "C" fn vwscanf(format: *const wchar_t, __valist: va_list) -> c wscanf::scanf(reader, format, __valist) } -/// See . +/// See . +#[unsafe(no_mangle)] +pub unsafe extern "C" fn vwscanf(format: *const wchar_t, __valist: va_list) -> c_int { + vfwscanf(stdin, format, __valist) +} + +/// See . #[unsafe(no_mangle)] pub unsafe extern "C" fn wscanf(format: *const wchar_t, mut __valist: ...) -> c_int { - vwscanf(format, __valist.as_va_list()) + vfwscanf(stdin, format, __valist.as_va_list()) } /// See .