diff options
author | David Oberhollenzer <david.oberhollenzer@tele2.at> | 2018-04-11 15:57:01 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@tele2.at> | 2018-04-11 15:57:01 +0200 |
commit | 4ee0ea9754d4c8103a623c90c03b68457c71581f (patch) | |
tree | a7b548acd56057c666d2ca5d1cc896115ef72305 /lib/include | |
parent | dca72a4c778cbe55975508ebce22db2105c26ee0 (diff) |
Split bulk of split_argv out into helper function
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
Diffstat (limited to 'lib/include')
-rw-r--r-- | lib/include/util.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/lib/include/util.h b/lib/include/util.h index c13b942..d824b22 100644 --- a/lib/include/util.h +++ b/lib/include/util.h @@ -100,13 +100,25 @@ int rdline(rdline_t *t); int unescape(char *src); /* + Replace spaces in 'str' with null bytes. Tread strings (started and + terminated with double-quotes which can be escaped) as a single block. + Such strings are run through unescap(). All elements are tightly + packed together and the function returns the number of consecutive + argument strings that are now inside 'str'. + + Returns a negative value if unescape() fails, a string is not + termianted or two such strings touch each other without a white + space in between. +*/ +int pack_argv(char *str); + +/* Split a space seperated string into a sequence of null-terminated strings. Return a NULL terminated array of strings pointing to the start of each sub string. - If a double quote is encountered, the entire string up to to the next, - unescaped double quite is interpreted as a single sub string and - fed through the unescape function. + It basically runs pack_argv on 'str' and then constructs the argv + vector from that, with each entry pointing into 'str'. The returned array must be freed with free(). */ |