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?