aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Busch <morphis@gravedo.de>2012-01-29 19:53:50 +0100
committerSimon Busch <morphis@gravedo.de>2012-01-29 19:56:07 +0100
commit7c1dd65a6ffce893afadb9e0bcf5326e3fdfb3ff (patch)
treeb803ce893fa29ff2f3d08616ab9e3f1408dd9fe7
parent74d0d85a2bdbac4312af198239c525de15a67e65 (diff)
downloadcornucopia-7c1dd65a6ffce893afadb9e0bcf5326e3fdfb3ff.tar.gz
cornucopia-7c1dd65a6ffce893afadb9e0bcf5326e3fdfb3ff.tar.bz2
cornucopia-7c1dd65a6ffce893afadb9e0bcf5326e3fdfb3ff.zip
tools: mdbus2: fix bug that we can't supply an empty string as argument
If you want to supply an empty string as argument you have to pass at least "" or '' so the commandline parser detects that the argument is empty. Signed-off-by: Simon Busch <morphis@gravedo.de>
-rw-r--r--tools/mdbus2/src/main.vala17
1 files changed, 13 insertions, 4 deletions
diff --git a/tools/mdbus2/src/main.vala b/tools/mdbus2/src/main.vala
index f11d9ece..df1031c6 100644
--- a/tools/mdbus2/src/main.vala
+++ b/tools/mdbus2/src/main.vala
@@ -443,6 +443,7 @@ class Commands : Object
{
var n = 0;
var depth = 0;
+ var depth_changed = false;
var current_argument = "";
var arguments = new GLib.List<string>();
@@ -451,27 +452,35 @@ class Commands : Object
switch ( commandline[n] )
{
case ' ':
- if ( depth == 0 && current_argument.length > 0 )
+ if ( depth == 0 && ( current_argument.length > 0 || depth_changed ) )
{
arguments.append( current_argument );
current_argument = "";
+ depth_changed = false;
}
else if (current_argument.length > 0)
{
current_argument += @"$(commandline[n])";
}
break;
+ case '\'':
case '\"':
if ( ( n + 1 < commandline.size() && commandline[n+1] == ' ' ) || ( n + 1 >= commandline.size() ) )
+ {
depth--;
- else depth++;
- current_argument += "\"";
+ }
+ else
+ {
+ depth++;
+ depth_changed = true;
+ }
break;
case '{':
case '[':
case '(':
current_argument += @"$(commandline[n])";
depth++;
+ depth_changed = true;
break;
case '}':
case ')':
@@ -486,7 +495,7 @@ class Commands : Object
n++;
}
- if ( current_argument.size() > 0 )
+ if ( current_argument.size() > 0 || depth_changed )
arguments.append( current_argument );
if ( arguments.length() == 0 || depth > 0 )