private static string[] Parse(string cl)
        {
            int emptySplits;

            string[] pieces = QuotingUtilities.SplitUnquoted(cl, int.MaxValue, false, true, out emptySplits, ' ', '\n').ToArray();
            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);
        }
        /// <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;
        }
Beispiel #4
0
        /*
         * 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);
        }