diff options
author | Werner Koch <[email protected]> | 2021-03-04 11:30:30 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2021-03-04 11:49:03 +0000 |
commit | 20c60076866904187a09393de596deef286116f8 (patch) | |
tree | 5a6e18c7db6ccfcdf7365014ccaba810075c6230 /common/t-w32-cmdline.c | |
parent | gpg: Prepare for globing with UTF-8. (diff) | |
download | gnupg-20c60076866904187a09393de596deef286116f8.tar.gz gnupg-20c60076866904187a09393de596deef286116f8.zip |
common,w32: Refine the command line parsing for \ in quotes.
* common/t-w32-cmdline.c (test_all): Add new test cases.
* common/w32-misc.c (strip_one_arg): Add arg endquote.
(parse_cmdstring): Take care of backslashes in quotes.
--
I found some new test vectors from Microsoft.
Diffstat (limited to 'common/t-w32-cmdline.c')
-rw-r--r-- | common/t-w32-cmdline.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/common/t-w32-cmdline.c b/common/t-w32-cmdline.c index 8686a376a..172489c70 100644 --- a/common/t-w32-cmdline.c +++ b/common/t-w32-cmdline.c @@ -59,8 +59,18 @@ test_all (void) { "a\\\\\\b d\"e f\"g h", 3, { "a\\\\\\b", "de fg", "h" }}, { "a\\\\\\\"b c d", 3, { "a\\\"b", "c", "d" }}, { "a\\\\\\\\\"b c\" d e", 3, { "a\\\\b c", "d", "e" }}, + /* Examples from "Parsing C Command-Line Arguments" dated 11/09/2020. + * https://docs.microsoft.com/en-us/cpp/c-language/\ + * parsing-c-command-line-arguments?view=msvc-160 + */ + { "\"a b c\" d e", 3, { "a b c", "d", "e" }}, + { "\"ab\\\"c\" \"\\\\\" d", 3, { "ab\"c", "\\", "d" }}, + { "a\\\\\\b d\"e f\"g h", 3, { "a\\\\\\b", "de fg", "h" }}, + { "a\\\\\\\"b c d", 3, { "a\\\"b", "c", "d" }}, + { "a\\\\\\\\\"b c\" d e", 3, { "a\\\\b c", "d", "e" }}, + { "a\"b\"\" c d", 1, { "ab\" c d" }}, /* Some arbitrary tests created using mingw. - * But I am nire sure whether their parser is fully correct. + * But I am not sure whether their parser is fully correct. */ { "e:a a b\"c\" ", 3, { "e:a", "a", "bc" }}, /* { "e:a a b\"c\"\" d\"\"e \" ", */ |