diff options
author | Simon Busch <morphis@gravedo.de> | 2012-01-29 19:53:50 +0100 |
---|---|---|
committer | Simon Busch <morphis@gravedo.de> | 2012-01-29 19:56:07 +0100 |
commit | 7c1dd65a6ffce893afadb9e0bcf5326e3fdfb3ff (patch) | |
tree | b803ce893fa29ff2f3d08616ab9e3f1408dd9fe7 | |
parent | 74d0d85a2bdbac4312af198239c525de15a67e65 (diff) | |
download | cornucopia-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.vala | 17 |
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 ) |