diff options
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r-- | OpenSim/Framework/Console/ConsoleBase.cs | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs index 27ff340..1d92ed1 100644 --- a/OpenSim/Framework/Console/ConsoleBase.cs +++ b/OpenSim/Framework/Console/ConsoleBase.cs | |||
@@ -26,7 +26,9 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections; | ||
29 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text.RegularExpressions; | ||
30 | using System.Diagnostics; | 32 | using System.Diagnostics; |
31 | using System.Net; | 33 | using System.Net; |
32 | using System.Reflection; | 34 | using System.Reflection; |
@@ -368,23 +370,27 @@ namespace OpenSim.Framework.Console | |||
368 | RunCommand(tempstr); | 370 | RunCommand(tempstr); |
369 | } | 371 | } |
370 | 372 | ||
371 | public void RunCommand(string command) | 373 | public void RunCommand(string cmdline) |
372 | { | 374 | { |
373 | string[] tempstrarray; | 375 | Regex Extractor = new Regex(@"(['""][^""]+['""])\s*|([^\s]+)\s*", RegexOptions.Compiled); |
374 | tempstrarray = command.Split(' '); | 376 | char[] delims = {' ', '"'}; |
375 | string cmd = tempstrarray[0]; | 377 | MatchCollection matches = Extractor.Matches(cmdline); |
376 | Array.Reverse(tempstrarray); | 378 | // Get matches |
377 | Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1); | 379 | string cmd = matches[0].Value.Trim(delims); |
378 | Array.Reverse(tempstrarray); | 380 | string[] cmdparams = new string[matches.Count - 1]; |
379 | string[] cmdparams = (string[]) tempstrarray; | 381 | |
380 | 382 | for (int i = 1; i < matches.Count; i++) | |
383 | { | ||
384 | cmdparams[i-1] = matches[i].Value.Trim(delims); | ||
385 | } | ||
386 | |||
381 | try | 387 | try |
382 | { | 388 | { |
383 | RunCmd(cmd, cmdparams); | 389 | RunCmd(cmd, cmdparams); |
384 | } | 390 | } |
385 | catch (Exception e) | 391 | catch (Exception e) |
386 | { | 392 | { |
387 | m_log.ErrorFormat("[Console]: Command [{0}] failed with exception {1}", command, e.ToString()); | 393 | m_log.ErrorFormat("[Console]: Command [{0}] failed with exception {1}", cmdline, e.ToString()); |
388 | } | 394 | } |
389 | } | 395 | } |
390 | 396 | ||