aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_core/src')
-rw-r--r--mingling_core/src/program.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/mingling_core/src/program.rs b/mingling_core/src/program.rs
index bee9772..7ea3a38 100644
--- a/mingling_core/src/program.rs
+++ b/mingling_core/src/program.rs
@@ -8,7 +8,7 @@ use crate::{
AnyOutput, ChainProcess, RenderResult, asset::dispatcher::Dispatcher,
error::ProgramExecuteError,
};
-use std::{env, fmt::Display, pin::Pin, sync::OnceLock};
+use std::{fmt::Display, pin::Pin, sync::OnceLock};
#[doc(hidden)]
pub mod exec;
@@ -74,7 +74,19 @@ where
Program {
collect: std::marker::PhantomData,
group: std::marker::PhantomData,
+ #[cfg(not(windows))]
args: env::args().collect(),
+ #[cfg(windows)]
+ args: {
+ std::env::args_os()
+ .map(|arg| {
+ use std::os::windows::ffi::OsStrExt;
+
+ let wide: Vec<u16> = arg.encode_wide().collect();
+ String::from_utf16_lossy(&wide)
+ })
+ .collect()
+ },
dispatcher: Vec::new(),
stdout_setting: Default::default(),
user_context: Default::default(),