chipsenkbeil / winsplit-rs

Library to split string into command line arguments mirroring CommandLineToArgV, following VC++ 2008 parsing rules

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

winsplit

Crates.io Docs CI

Like shell-words, but for Windows that somewhat mirrors CommandLineToArgvW, following VC++ 2008 parsing rules.

Written purely in Rust, so runs on any operating system! Windows is not a requirement!

Minimum tested Rust version is 1.56.1, but this may compile and work on earlier versions!

Installation

[Dependencies]
winsplit = "0.1"

If you want to use this without std library, this library can be compiled for use with alloc by disabling the std feature:

[Dependencies]
winsplit = { version = "0.1", default-features = false }

Usage

let args = winsplit::split(
    r#"C:\ProgramFiles\Example\example.exe --key "some value" arg1 arg2"#
);
assert_eq!(
    args, 
    &[
        r"C:\ProgramFiles\Example\example.exe",
        "--key",
        "some value",
        "arg1",
        "arg2"
    ]
);

Parsing Rules

This library follows the 2008 parsing rules for VC++ 9.9 (msvcr90.dll) that was released with Visual Studio 2008. See C/C++ parameter parsing rules for more details.

You can also check out the mirror of the rules and examples at the wiki documentation page for this repository.

Special Thanks

Goes to David Deley for documenting the complexities of the Windows parameter parsing logic and providing numerous examples found at https://daviddeley.com/autohotkey/parameters/parameters.htm.

License

This project is licensed under either of

Apache License, Version 2.0, (LICENSE-APACHE or apache-license) MIT license (LICENSE-MIT or mit-license) at your option.

About

Library to split string into command line arguments mirroring CommandLineToArgV, following VC++ 2008 parsing rules


Languages

Language:Rust 100.0%