if (this.ffsFileType.equals("")) {\r
throw new BuildException ("Must set ffsFileType!\n");\r
}\r
-\r
//\r
// Create ffs file. File name = FfsFileGuid + BaseName + ffsSuffix.\r
// If outputDir's value was set, file will output to the outputDir.\r
\r
String ffsFilePath = outputPath + this.ffsFileGuid + '-' + this.baseName + ffsSuffix;\r
File ffsFile = new File (ffsFilePath);\r
- genFfs(ffsFile);\r
+ try{\r
+ genFfs(ffsFile);\r
+ }catch (BuildException e){\r
+ if (ffsFile != null && ffsFile.exists()){\r
+ ffsFile.deleteOnExit();\r
+ }\r
+ throw new BuildException(e.getMessage());\r
+ \r
+ }\r
+ \r
} \r
\r
/**\r
@param ffsFile Name of FFS file.\r
@param isOrg Flag to indicate generate ORG ffs file or not.\r
**/\r
- private void genFfs(File ffsFile) {\r
+ private void genFfs(File ffsFile) throws BuildException {\r
Section sect;\r
int fileSize;\r
int fileDataSize;\r
//\r
sect.toBuffer((DataOutputStream)dataBuffer);\r
} catch (Exception e) {\r
+ if (dataBuffer != null){\r
+ dataBuffer.close();\r
+ }\r
throw new BuildException (e.getMessage());\r
}\r
}\r
import java.util.ArrayList;\r
import java.util.Iterator;\r
import java.util.List;\r
+import java.util.Random;\r
\r
import org.apache.tools.ant.BuildException;\r
import org.tianocore.common.logger.EdkLog;\r
private Input inputFiles = new Input();\r
private Input tempInputFile = new Input();\r
private String outputPath;\r
- private File outputFile ;\r
+ private String outputFileName ;\r
private List<Section> gensectList = new ArrayList<Section>();\r
/**\r
Call extern tool\r
///\r
/// check if file exist\r
///\r
- //File OutputFile = new File (this.outPutFileName);\r
+ File outputFile = new File (this.outputFileName);\r
if (!outputFile.exists()) {\r
throw new BuildException("The file " + outputFile.getPath() + " does not exist!\n");\r
}\r
catch (BuildException e) {\r
EdkLog.log(e.getMessage());\r
throw new BuildException ("GenSection failed at Tool!");\r
- } \r
- Do.close();\r
+ } finally {\r
+ if (Do != null){\r
+ Do.close(); \r
+ }\r
+ \r
+ } \r
this.tempInputFile.insFile(outputFile.getPath());\r
} \r
} catch (IOException e){\r
throw new BuildException ("Gensection failed at tool!");\r
- }\r
+ } \r
\r
try {\r
- outputFile = File.createTempFile("temp", null, new File(outputPath));\r
+ Random ran = new Random(9999); \r
+ this.outputFileName = "Temp" + ran.nextInt();\r
argument = toolArgList + inputFiles.toStringWithSinglepPrefix(" -i ") \r
- + tempInputFile.toString(" ")+ " -o " + outputFile.getPath();\r
+ + tempInputFile.toString(" ")+ " -o " + outputFileName;\r
EdkLog.log(this, EdkLog.EDK_VERBOSE, command + " " + argument);\r
+ EdkLog.log(this, EdkLog.EDK_INFO, this.outputFileName);\r
///\r
/// execute command line\r
///\r
file.delete();\r
}\r
}\r
- } catch (Exception e) {\r
- EdkLog.log(e.getMessage());\r
+ } catch (Exception e) {\r EdkLog.log(e.getMessage());\r
throw new BuildException("Execution of externalTool task failed!\n");\r
}\r
}\r