Switch to shlex to make filenames shellsafe

shlex also takes care of any other POSIX-shell specific stuff, such as ".
Also cleans up the vector extension a bit.
main
MultisampledNight 2 years ago
parent 83edde8103
commit 148e9e450f
No known key found for this signature in database
GPG Key ID: C81EF9B053977241

1
Cargo.lock generated

@ -1367,6 +1367,7 @@ dependencies = [
"rmpv", "rmpv",
"serde", "serde",
"serde_json", "serde_json",
"shlex",
"skia-safe", "skia-safe",
"swash", "swash",
"tokio", "tokio",

@ -39,6 +39,7 @@ rand = "0.8.5"
rmpv = "1.0.0" rmpv = "1.0.0"
serde = { version = "1.0.136", features = ["derive"] } serde = { version = "1.0.136", features = ["derive"] }
serde_json = "1.0.79" serde_json = "1.0.79"
shlex = "1.1.0"
swash = "0.1.4" swash = "0.1.4"
tokio = { version = "1.17.0", features = ["full"] } tokio = { version = "1.17.0", features = ["full"] }
tokio-util = { version = "0.7.1", features = ["compat"] } tokio-util = { version = "0.7.1", features = ["compat"] }

@ -172,11 +172,10 @@ pub fn handle_command_line_arguments(args: Vec<String>) -> Result<(), String> {
if cfg!(target_os = "macos") { if cfg!(target_os = "macos") {
// escape filepath which contain spaces // escape filepath which contain spaces
neovim_args.extend::<Vec<String>>( neovim_args.extend(
files_to_open files_to_open
.iter() .iter()
.map(|file| file.replace(" ", "\\ ")) .map(|file| shlex::quote(file).into_owned()),
.collect(),
); );
} else { } else {
neovim_args.extend::<Vec<String>>(files_to_open); neovim_args.extend::<Vec<String>>(files_to_open);

Loading…
Cancel
Save