summaryrefslogtreecommitdiffstats
path: root/lib/Utils/stringops.cpp
diff options
context:
space:
mode:
authorKarel Klic <kklic@redhat.com>2009-11-19 10:14:27 +0100
committerKarel Klic <kklic@redhat.com>2009-11-19 10:14:27 +0100
commitbd60681c8227bc31ef0991e98a9a3e849032c924 (patch)
tree5d4f3cf03d54ecb30ab863c7cc349bfcd232346c /lib/Utils/stringops.cpp
parent0ecc573a8ba79bca8e37809c41f92f0b629149e8 (diff)
parent83aea71df4761ec10c0d947055e65102bcace489 (diff)
downloadabrt-bd60681c8227bc31ef0991e98a9a3e849032c924.tar.gz
abrt-bd60681c8227bc31ef0991e98a9a3e849032c924.tar.xz
abrt-bd60681c8227bc31ef0991e98a9a3e849032c924.zip
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
Diffstat (limited to 'lib/Utils/stringops.cpp')
-rw-r--r--lib/Utils/stringops.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/lib/Utils/stringops.cpp b/lib/Utils/stringops.cpp
index 1b3793f..dc71b5b 100644
--- a/lib/Utils/stringops.cpp
+++ b/lib/Utils/stringops.cpp
@@ -3,24 +3,33 @@
void parse_args(const char *psArgs, vector_string_t& pArgs, int quote)
{
unsigned ii;
- bool is_quote = false;
+ bool inside_quotes = false;
std::string item;
for (ii = 0; psArgs[ii]; ii++)
{
- if (quote != -1 && psArgs[ii] == quote)
+ if (quote != -1)
{
- is_quote = !is_quote;
+ if (psArgs[ii] == quote)
+ {
+ inside_quotes = !inside_quotes;
+ continue;
+ }
+ /* inside quotes we support escaping with \x */
+ if (inside_quotes && psArgs[ii] == '\\' && psArgs[ii+1])
+ {
+ ii++;
+ item += psArgs[ii];
+ continue;
+ }
}
- else if (psArgs[ii] == ',' && !is_quote)
+ if (psArgs[ii] == ',' && !inside_quotes)
{
pArgs.push_back(item);
item.clear();
+ continue;
}
- else
- {
- item += psArgs[ii];
- }
+ item += psArgs[ii];
}
if (item.size() != 0)