Ejemplo n.º 1
0
        public void analyzeCommands()
        {
            bool   doneWithCompilerFlags = false;
            string word = "";

            for (int i = 0; i < words.Count; i++)
            {
                word = words[i];
                if (word.ToLower().Equals("cl") || word.ToLower().Equals("cl.exe"))
                {
                }
                else if (word.Equals(""))
                {
                }
                else if (word.Contains(".c") || word.Contains(".cpp") || word.Contains(".cxx") || word.Contains(".obj") || word.Contains(".lib") || word.Contains(".def"))
                {
                    doneWithCompilerFlags = true;

                    if (word.Contains(flag_Fo))
                    {
                        string delim = word[0].ToString();
                        string flag  = delim + flag_Fo;
                        clOptionsLiteral += word + " ";
                        clOptions.Add(flag_Fo);
                        clFiles.Add(word.Substring(flag.Length));
                    }
                    else
                    {
                        clFiles.Add(word);
                    }
                }
                else if (word.Length > 0 && (word[0].Equals('/') || word[0].Equals('-')))
                {
                    if (!doneWithCompilerFlags)
                    {
                        if (word.Equals("/D") || word.Equals("-D"))
                        {
                            clDefines.Add(words[i + 1]);
                            i++;
                        }
                        else
                        {
                            clOptionsLiteral += word + " ";
                            clOptions.Add(word.Substring(1));
                        }
                    }
                    else
                    {
                        containsLinkFlags   = true;
                        LinkOptionsLiteral += word + " ";
                        LinkOptionsLiteral_Words.Add(word);
                        linkerOptions.Add(word);
                    }
                }
                else
                {
                    unidentified.Add(word);
                }
            }
            clOptionsLiteral   = clOptionsLiteral.Trim();
            LinkOptionsLiteral = LinkOptionsLiteral.Trim();
        }
Ejemplo n.º 2
0
        public void analyzeCommands()
        {
            string currentFlag     = "";
            bool   processingFiles = false;

            foreach (string word in words)
            {
                if (word.StartsWith("/") || word.StartsWith("-"))
                {
                    if (word.Contains(flag_dll) || word.Contains(flag_dll.ToUpper()))
                    {
                        isDll = true;
                    }
                    else if (word.Contains(flag_exe) || word.Contains(flag_exe.ToUpper()))
                    {
                        isExe = true;
                    }
                    else if (word.Contains(flag_out) || word.Contains(flag_out.ToUpper()))
                    {
                        Output = word.Substring(flag_out.Length + 1);
                        Options.Add(new KeyValuePair <string, string>(flag_out, Output));
                        currentFlag = flag_out;
                    }
                    else if (word.Contains(flag_def) || word.Contains(flag_def.ToUpper()))
                    {
                        Def = word.Substring(flag_def.Length + 1);
                        Options.Add(new KeyValuePair <string, string>(flag_def, Def));
                        currentFlag = flag_def;
                    }
                    else if (word.Contains(flag_entry) || word.Contains(flag_entry.ToUpper()))
                    {
                        Entry = word.Substring(flag_entry.Length + 1);
                        Options.Add(new KeyValuePair <string, string>(flag_entry, Entry));
                        currentFlag = flag_entry;
                    }
                    else
                    {
                        Options.Add(new KeyValuePair <string, string>(word, Entry));
                    }
                }
                else if (word.Contains(".obj"))
                {
                    Objs.Add(word);
                    processingFiles = true;
                }
                else if (word.Contains(".lib"))
                {
                    Libs.Add(word);
                    processingFiles = true;
                }
                else if (word.Contains(".res"))
                {
                }
                else if (currentFlag != "")
                {
                }
                else
                {
                    //Unrecognized command
                }

                if (word.ToLower().Equals("link") || word.ToLower().Equals("link.exe"))
                {
                }
                else if (!processingFiles)
                {
                    if (!word.Equals(""))
                    {
                        LinkOptionsLiteral += word + " ";
                        LinkOptionsLiteral_Words.Add(word);
                    }
                }
            }
            LinkOptionsLiteral = LinkOptionsLiteral.Trim();
        }