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); }
/// <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; }