--- /dev/null
+/** @file\r
+ GuidChkTask class.\r
+\r
+ GuidChkTask is to call GuidChk.exe to generate Section.\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+**/\r
+package org.tianocore.framework.tasks;\r
+import java.io.BufferedReader;\r
+import java.io.InputStreamReader;\r
+import java.io.PrintWriter;\r
+import java.io.File;\r
+\r
+import org.apache.tools.ant.BuildException;\r
+import org.apache.tools.ant.Project;\r
+import org.apache.tools.ant.Task;\r
+\r
+import org.tianocore.common.logger.EdkLog;\r
+\r
+/**\r
+ GuidChkTask\r
+ \r
+ GuidChkTask is to call GuidChk.exe to generate Section.\r
+ \r
+**/\r
+public class GuidChkTask extends Task implements EfiDefine{\r
+ /**\r
+ * GuidChk task class\r
+ * class member\r
+ * -exDir : directory name of exclusion searching \r
+ * -exFile : file name of exclusion searching\r
+ * -exExt : extension name of exclusion searching\r
+ * -exSubDir: extesnion name of sub dir which excluded searching\r
+ * -outFile : out put file wrote internal GUID+basename list\r
+ * -chkGui : check for duplicate guids\r
+ * -chkSign : check for duplicate signatures\r
+ * -printGuiDef : if set will print guid+defined symbol name\r
+ * -printAllGuid: if set will print all GUIDS found\r
+ * -outPut : redirection file name\r
+ * -fos : out put redirect to this file \r
+ * \r
+ */\r
+ //\r
+ // Tool name\r
+ // \r
+ private static String toolName = "GuidChk";\r
+ //\r
+ // Directory name of exclusion searching \r
+ //\r
+ private FileArg exDir = new FileArg();\r
+ //\r
+ // File name of exclusion searching.\r
+ //\r
+ private FileArg exFile = new FileArg();\r
+ //\r
+ // Extension name of exclusion searching.\r
+ //\r
+ private FileArg exExt = new FileArg();\r
+ //\r
+ // Extesnion name of sub dir which excluded searching.\r
+ //\r
+ private FileArg exSubDir = new FileArg();\r
+ //\r
+ // Out put file wrote internal GUID+basename list\r
+ //\r
+ private FileArg outFile = new FileArg();\r
+ //\r
+ // Check for duplicate guids.\r
+ //\r
+ private ToolArg chkGui = new ToolArg();\r
+ //\r
+ // Check for duplicate signatures\r
+ //\r
+ private ToolArg chkSign = new ToolArg();\r
+ //\r
+ // If set will print guid+defined symbol name\r
+ //\r
+ private ToolArg printGuiDef = new ToolArg();\r
+ //\r
+ // If set will print all GUIDS found\r
+ //\r
+ private ToolArg printAllGuid = new ToolArg();\r
+ //\r
+ // redirection file name.\r
+ //\r
+ private String outPut = "";\r
+ //\r
+ // out put redirect to this file.\r
+ //\r
+ protected PrintWriter fos = null;\r
+ \r
+ //\r
+ // overload class execute method\r
+ // \r
+ public void execute() throws BuildException {\r
+ Project project = this.getOwningTarget().getProject();\r
+ String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");\r
+ String command;\r
+ if (path == null) {\r
+ command = toolName;\r
+ } else {\r
+ command = path + File.separatorChar + toolName;\r
+ }\r
+ String argument = "" + exDir +\r
+ exFile +\r
+ exExt +\r
+ exSubDir +\r
+ outFile +\r
+ chkGui +\r
+ chkSign +\r
+ printGuiDef + \r
+ printAllGuid; \r
+ try {\r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, command + " " + argument);\r
+ //\r
+ // execute command line \r
+ //\r
+ Process proc = Runtime.getRuntime().exec(command + " " + argument);\r
+ //\r
+ // if set output, redirect out put to output file, else print output to screen\r
+ // \r
+ if ( !this.outPut.equals("")) {\r
+ fos = new PrintWriter(this.outPut);\r
+ BufferedReader bin = new BufferedReader(new InputStreamReader(proc.getInputStream()));\r
+ String line = bin.readLine();\r
+ while (line != null ){ \r
+ fos.println(line);\r
+ line = bin.readLine();\r
+ }\r
+ fos.close();\r
+ }\r
+ else {\r
+ BufferedReader bin = new BufferedReader(new InputStreamReader(proc.getInputStream()));\r
+ String line = bin.readLine();\r
+ while (line != null ){\r
+ line = bin.readLine();\r
+ } \r
+ } \r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, toolName + " Succeeded!");\r
+ } catch (Exception e) {\r
+ throw new BuildException(toolName + " failed!");\r
+ }\r
+ }\r
+ /**\r
+ getChkGui\r
+ \r
+ This function is to get the string of flag of ChkGui\r
+ \r
+ @return string of flag of ChkGui\r
+ **/\r
+ public String getChkGui() {\r
+ return chkGui.getValue();\r
+ }\r
+ \r
+ /**\r
+ setChkGui\r
+ \r
+ This function is to set chkGui\r
+ \r
+ @param chkGui set class member of chkGui\r
+ **/\r
+ public void setChkGui(boolean chkGui) {\r
+ if (chkGui) {\r
+ this.chkGui.setArg(" -", "g");\r
+ } \r
+ }\r
+ \r
+ /**\r
+ getChkSign\r
+ \r
+ This function is to get chkSign\r
+ \r
+ @return chkSign\r
+ **/\r
+ public String getChkSign() {\r
+ return chkSign.getValue();\r
+ }\r
+ \r
+ /**\r
+ setChkSign\r
+ \r
+ This function is to set class member of chkSign\r
+ * @param chkSign\r
+ */\r
+ public void setChkSign(boolean chkSign) {\r
+ if (chkSign){\r
+ this.chkSign.setArg(" -", "s");\r
+ } \r
+ }\r
+ /**\r
+ getExDir\r
+ \r
+ This function is to get class member of exDir\r
+ \r
+ @return exDir\r
+ **/\r
+ public String getExDir() {\r
+ return exDir.getValue();\r
+ }\r
+ \r
+ /**\r
+ setExDir\r
+ \r
+ This function is to set class member of exDir\r
+ \r
+ @param exDir\r
+ **/\r
+ public void setExDir(String exDir) {\r
+ this.exDir.setArg(" -d ", exDir);\r
+ }\r
+ \r
+ /**\r
+ getExExt\r
+ \r
+ This function is to get class member of exExt\r
+ \r
+ @return exExt\r
+ **/\r
+ public String getExExt() {\r
+ return exExt.getValue();\r
+ }\r
+ \r
+ /**\r
+ setExExt\r
+ \r
+ This function is to set class member of exExt\r
+ @param exExt\r
+ **/\r
+ public void setExExt(String exExt) {\r
+ this.exExt.setArg(" -e ", exExt);\r
+ }\r
+ \r
+ /**\r
+ getExFile\r
+ \r
+ This function is to get class member of exFile\r
+ @return exFile\r
+ **/\r
+ public String getExFile() {\r
+ return exFile.getValue();\r
+ }\r
+ \r
+ /**\r
+ setExFile\r
+ \r
+ This function is to set class member of exFile.\r
+ \r
+ @param exFile\r
+ **/\r
+ public void setExFile(String exFile) {\r
+ this.exFile.setArg(" -f ", exFile);\r
+ }\r
+ \r
+ /**\r
+ getExSubDir\r
+ \r
+ This function is to get class member of exSubDir\r
+ \r
+ @return exSubDir\r
+ **/\r
+ public String getExSubDir() {\r
+ return exSubDir.getValue();\r
+ }\r
+ \r
+ /**\r
+ setExSubDir\r
+ \r
+ This function is to set class member of exSubDir.\r
+ @param exSubDir\r
+ **/\r
+ public void setExSubDir(String exSubDir) {\r
+ this.exSubDir.setArg(" -u ", exSubDir);\r
+ }\r
+ \r
+ /**\r
+ getOutFile\r
+ \r
+ This function is to get outFile\r
+ \r
+ @return outFile\r
+ **/\r
+ public String getOutFile() {\r
+ return outFile.getValue();\r
+ }\r
+ /**\r
+ * set class member of outFile\r
+ * @param outFile\r
+ */\r
+ public void setOutFile(String outFile) {\r
+ this.outFile.setArg(" -b ", outFile);\r
+ }\r
+ /**\r
+ getPrintGuidDef\r
+ \r
+ This function is to get printGuidDef\r
+ \r
+ @return flage of printing (guid+defined symbol name)\r
+ **/\r
+ public String getPrintGuiDef() {\r
+ return printGuiDef.getValue();\r
+ }\r
+ \r
+ \r
+ /**\r
+ setPrintGuidDef\r
+ \r
+ This function is to set class member of printGuiDef.\r
+ @param printGuiDef\r
+ **/\r
+ public void setPrintGuiDef(boolean printGuiDef) {\r
+ if (printGuiDef){\r
+ this.printGuiDef.setArg(" -", "x");\r
+ }\r
+ \r
+ }\r
+ \r
+ /**\r
+ getOutput\r
+ \r
+ This function is to get output\r
+ \r
+ @return name of outPut file\r
+ **/\r
+ public String getOutPut() {\r
+ return outPut;\r
+ }\r
+ \r
+ /**\r
+ setOutPut\r
+ \r
+ This function is to set class member of outPut.\r
+ @param outPut\r
+ **/\r
+ public void setOutPut(String outPut) {\r
+ this.outPut = outPut;\r
+ }\r
+ \r
+ /**\r
+ getPrintAllGuid\r
+ \r
+ This function is to get printAllGuid\r
+ @return printAllGuid\r
+ **/\r
+ public String getPrintAllGuid() {\r
+ return printAllGuid.getValue();\r
+ }\r
+ \r
+ /**\r
+ setPrintAllGuid\r
+ \r
+ This function is to set class member of printAllGuid.\r
+ @param printAllGuid\r
+ **/\r
+ public void setPrintAllGuid(boolean printAllGuid) {\r
+ if (printAllGuid) {\r
+ this.printAllGuid.setArg(" -", "p");\r
+ } \r
+ }\r
+}\r
+\r