From c493be6c9d2829c73e2e884846d098d955738f62 Mon Sep 17 00:00:00 2001 From: qouyang Date: Fri, 22 Sep 2006 08:16:10 +0000 Subject: Modify GenFfsFileTask. If GenFfsFileTask is failed, the *.ffs file will not be create. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1598 6f19259b-4bc3-4df7-8a09-765794883524 --- .../tianocore/framework/tasks/GenFfsFileTask.java | 17 ++++++++++++--- .../tianocore/framework/tasks/GenSectionTask.java | 9 ++++---- .../org/tianocore/framework/tasks/Tool.java | 24 ++++++++++++++-------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java index cbe20f0..4cbbfab 100644 --- a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java +++ b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java @@ -150,7 +150,6 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { if (this.ffsFileType.equals("")) { throw new BuildException ("Must set ffsFileType!\n"); } - // // Create ffs file. File name = FfsFileGuid + BaseName + ffsSuffix. // If outputDir's value was set, file will output to the outputDir. @@ -169,7 +168,16 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { String ffsFilePath = outputPath + this.ffsFileGuid + '-' + this.baseName + ffsSuffix; File ffsFile = new File (ffsFilePath); - genFfs(ffsFile); + try{ + genFfs(ffsFile); + }catch (BuildException e){ + if (ffsFile != null && ffsFile.exists()){ + ffsFile.deleteOnExit(); + } + throw new BuildException(e.getMessage()); + + } + } /** @@ -742,7 +750,7 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { @param ffsFile Name of FFS file. @param isOrg Flag to indicate generate ORG ffs file or not. **/ - private void genFfs(File ffsFile) { + private void genFfs(File ffsFile) throws BuildException { Section sect; int fileSize; int fileDataSize; @@ -772,6 +780,9 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { // sect.toBuffer((DataOutputStream)dataBuffer); } catch (Exception e) { + if (dataBuffer != null){ + dataBuffer.close(); + } throw new BuildException (e.getMessage()); } } diff --git a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenSectionTask.java b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenSectionTask.java index a2bbf4f..4cd7a96 100644 --- a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenSectionTask.java +++ b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenSectionTask.java @@ -303,11 +303,12 @@ public class GenSectionTask extends Task implements EfiDefine, Section, FfsTypes System.out.print(e.getMessage()); throw new BuildException( "Compress.toBuffer failed at section"); + } finally { + if (Do != null){ + Do.close(); + } } - } - Do.close(); - // // Call compress // @@ -364,7 +365,7 @@ public class GenSectionTask extends Task implements EfiDefine, Section, FfsTypes } } catch (Exception e) { throw new BuildException("compress.toBuffer failed!\n"); - } + } } else { Section sect; Iterator sectionIter = this.sectFileList.iterator(); diff --git a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/Tool.java b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/Tool.java index a7d28f5..17e6298 100644 --- a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/Tool.java +++ b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/Tool.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Random; import org.apache.tools.ant.BuildException; import org.tianocore.common.logger.EdkLog; @@ -36,7 +37,7 @@ public class Tool implements EfiDefine, Section { private Input inputFiles = new Input(); private Input tempInputFile = new Input(); private String outputPath; - private File outputFile ; + private String outputFileName ; private List
gensectList = new ArrayList
(); /** Call extern tool @@ -56,7 +57,7 @@ public class Tool implements EfiDefine, Section { /// /// check if file exist /// - //File OutputFile = new File (this.outPutFileName); + File outputFile = new File (this.outputFileName); if (!outputFile.exists()) { throw new BuildException("The file " + outputFile.getPath() + " does not exist!\n"); } @@ -133,19 +134,25 @@ public class Tool implements EfiDefine, Section { catch (BuildException e) { EdkLog.log(e.getMessage()); throw new BuildException ("GenSection failed at Tool!"); - } - Do.close(); + } finally { + if (Do != null){ + Do.close(); + } + + } this.tempInputFile.insFile(outputFile.getPath()); } } catch (IOException e){ throw new BuildException ("Gensection failed at tool!"); - } + } try { - outputFile = File.createTempFile("temp", null, new File(outputPath)); + Random ran = new Random(9999); + this.outputFileName = "Temp" + ran.nextInt(); argument = toolArgList + inputFiles.toStringWithSinglepPrefix(" -i ") - + tempInputFile.toString(" ")+ " -o " + outputFile.getPath(); + + tempInputFile.toString(" ")+ " -o " + outputFileName; EdkLog.log(this, EdkLog.EDK_VERBOSE, command + " " + argument); + EdkLog.log(this, EdkLog.EDK_INFO, this.outputFileName); /// /// execute command line /// @@ -158,8 +165,7 @@ public class Tool implements EfiDefine, Section { file.delete(); } } - } catch (Exception e) { - EdkLog.log(e.getMessage()); + } catch (Exception e) { EdkLog.log(e.getMessage()); throw new BuildException("Execution of externalTool task failed!\n"); } } -- cgit v1.1