| 635 | |
| 636 | #[cfg(windows)] |
| 637 | fn preprocess_windows_command(command: &str) -> String { |
| 638 | let trimmed = command.trim_start(); |
| 639 | let leading_ws_len = command.len() - trimmed.len(); |
| 640 | let token_end = trimmed.find(char::is_whitespace).unwrap_or(trimmed.len()); |
| 641 | let token = &trimmed[..token_end]; |
| 642 | let rest = &trimmed[token_end..]; |
| 643 | |
| 644 | let is_native_curl = matches!(token, "curl" | "curl.exe" | "wget" | "wget.exe") |
| 645 | && !rest.trim_start().starts_with("--%"); |
| 646 | |
| 647 | if is_native_curl { |
| 648 | format!( |
| 649 | "{}{} --%{}", |
| 650 | &command[..leading_ws_len], |
| 651 | if token.starts_with("wget") { |
| 652 | "curl.exe" |
| 653 | } else { |
| 654 | token |
| 655 | }, |
| 656 | rewrite_curl_json_literals(rest, true) |
| 657 | ) |
| 658 | } else { |
| 659 | rewrite_curl_json_literals(command, false) |
| 660 | } |
| 661 | } |
| 662 | |
| 663 | #[cfg(windows)] |
| 664 | fn rewrite_curl_json_literals(command: &str, verbatim_mode: bool) -> String { |