private static string[] Parse(string cl) { int emptySplits; string[] pieces = QuotingUtilities.SplitUnquoted(cl, int.MaxValue, false, true, out emptySplits, ' ', '\n').ToArray(); return(pieces); }
/// <summary> /// Called when a recognized switch that takes parameters is detected on the command line. /// </summary> /// <param name="parameterizedSwitch"></param> /// <param name="switchParameters"></param> /// <param name="multipleParametersAllowed"></param> /// <param name="unquoteParameters"></param> /// <returns>true, if the given parameters were successfully stored</returns> internal bool SetParameterizedSwitch ( ParameterizedSwitch parameterizedSwitch, string commandLineArg, string switchParameters, bool multipleParametersAllowed, bool unquoteParameters ) { bool parametersStored = false; // if this is the first time this switch has been detected if (_parameterizedSwitches[(int)parameterizedSwitch].commandLineArg == null) { // initialize its parameter storage _parameterizedSwitches[(int)parameterizedSwitch].parameters = new ArrayList(); // save the switch text _parameterizedSwitches[(int)parameterizedSwitch].commandLineArg = commandLineArg; } else { // append the switch text _parameterizedSwitches[(int)parameterizedSwitch].commandLineArg = string.Concat( _parameterizedSwitches[(int)parameterizedSwitch].commandLineArg, " ", commandLineArg ); } // check if the switch has multiple parameters if (multipleParametersAllowed) { // store all the switch parameters int emptyParameters; _parameterizedSwitches[(int)parameterizedSwitch].parameters.AddRange(QuotingUtilities.SplitUnquoted(switchParameters, int.MaxValue, false /* discard empty parameters */, unquoteParameters, out emptyParameters, s_parameterSeparators)); // check if they were all stored successfully i.e. they were all non-empty (after removing quoting, if requested) parametersStored = (emptyParameters == 0); } else { if (unquoteParameters) { // NOTE: removing quoting from the parameters can reduce the parameters to an empty string switchParameters = QuotingUtilities.Unquote(switchParameters); } // if the switch actually has parameters, store them if (switchParameters.Length > 0) { _parameterizedSwitches[(int)parameterizedSwitch].parameters.Add(switchParameters); parametersStored = true; } } return parametersStored; }
/* * Method: ParseCommandLine * * Simulates the parsing of a command line, taking into account quoting. * */ private static string[] Parse(string cl) { int emptySplits = 0; string[] pieces = (string[])QuotingUtilities.SplitUnquoted(cl, int.MaxValue, false, true, out emptySplits, ' ', '\n').ToArray(typeof(string)); #if NEVER foreach (string s in pieces) { Console.WriteLine("Found = [{0}]", s); } #endif return(pieces); }
internal bool SetParameterizedSwitch(ParameterizedSwitch parameterizedSwitch, string commandLineArg, string switchParameters, bool multipleParametersAllowed, bool unquoteParameters) { bool flag = false; if (this.parameterizedSwitches[(int)parameterizedSwitch].commandLineArg == null) { this.parameterizedSwitches[(int)parameterizedSwitch].parameters = new ArrayList(); } this.parameterizedSwitches[(int)parameterizedSwitch].commandLineArg = commandLineArg; if (multipleParametersAllowed) { int num; this.parameterizedSwitches[(int)parameterizedSwitch].parameters.AddRange(QuotingUtilities.SplitUnquoted(switchParameters, 0x7fffffff, false, unquoteParameters, out num, parameterSeparators)); return(num == 0); } if (unquoteParameters) { switchParameters = QuotingUtilities.Unquote(switchParameters); } if (switchParameters.Length > 0) { this.parameterizedSwitches[(int)parameterizedSwitch].parameters.Add(switchParameters); flag = true; } return(flag); }