Jinoh Kang (@iamahuman) commented about tools/wine/wine.rs:
+ let args: Vec<String> = env::args().collect(); + + let bindir: Option<String> = get_bindir(&args[0]); + let libdir: Option<String> = Some(get_libdir(bindir.as_ref().unwrap())); + + let ntdll = load_ntdll(bindir, libdir); + + unsafe { + let init_func: Result<Symbol<unsafe extern "C" fn(i32, *mut *mut i8)>, _> = + ntdll.get(b"__wine_main"); + + match init_func { + Ok(func) => { + let mut c_args: Vec<*mut i8> = args + .iter() + .map(|arg| CString::new(arg.as_str()).unwrap().into_raw()) What's the point of the Rust when we're doing the C?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/7717#note_99621