diff options
author | Michael Vetter <jubalh@iodoru.org> | 2022-06-16 20:40:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-16 20:40:05 +0200 |
commit | 476c73251c2787930f866c76484eb1417a834cea (patch) | |
tree | a08f5ad8d40c8364f167f371f6c1d602f64d6773 | |
parent | 2394d033b9e9445fcd34d78b0a8d422d84d042b1 (diff) | |
parent | 13f1b831df2dc02a54e888c2f35b3acdb2baef7c (diff) | |
download | profani-tty-476c73251c2787930f866c76484eb1417a834cea.tar.gz |
Merge pull request #1721 from MarcoPolo-PasTonMolo/fix/improve-parser
Improve cmd argument parser
-rw-r--r-- | src/tools/parser.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/tools/parser.c b/src/tools/parser.c index 98dc5809..30c1961f 100644 --- a/src/tools/parser.c +++ b/src/tools/parser.c @@ -83,8 +83,17 @@ _parse_args_helper(const char* const inp, int min, int max, gboolean* result, gb i++; gchar* next_ch = g_utf8_next_char(curr_ch); gunichar next_uni = g_utf8_get_char(next_ch); - token_start = next_ch; - token_size += g_unichar_to_utf8(next_uni, NULL); + + if (next_uni == '"') { + tokens = g_slist_append(tokens, g_strndup(curr_ch, + 0)); + token_size = 0; + in_token = FALSE; + in_quotes = FALSE; + } else { + token_start = next_ch; + token_size += g_unichar_to_utf8(next_uni, NULL); + } } if (curr_uni == '"') { gchar* next_ch = g_utf8_next_char(curr_ch); @@ -115,7 +124,7 @@ _parse_args_helper(const char* const inp, int min, int max, gboolean* result, gb token_size)); token_size = 0; in_token = FALSE; - } else if (curr_uni != '"') { + } else { token_size += g_unichar_to_utf8(curr_uni, NULL); } } |