X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FFrameworkTasks%2Forg%2Ftianocore%2Fframework%2Ftasks%2FGenFfsFileTask.java;h=117ef393f5309b0daa96cde838c23cdcbc163c1c;hp=8e0fb4ab7260a6de2c0b3eb416e0c6a08f52efa8;hb=3f7b510edbe3c10b533f36f490e591782d14e929;hpb=caf9538f28de46e9ab3712611688e5353402183d diff --git a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java index 8e0fb4ab72..117ef393f5 100644 --- a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java +++ b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java @@ -142,7 +142,7 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { // Check does the BaseName, Guid, FileType set value. // if (this.baseName.equals("")) { - throw new BuildException ("Must set BaseName!\n"); + throw new BuildException ("Must set OutputFileBasename!\n"); } if (this.ffsFileGuid.equals("")) { @@ -296,7 +296,7 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { if (fileSize == ffsHeader.getSize()) { throw new BuildException ( "FFS_ATTRIB_TAIL_PRESENT=TRUE is " + - "invalid for 0-length files" + "invalid for zero length files" ); } fileSize = fileSize + 2; @@ -500,10 +500,10 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { This function is to set ffsAligment @param ffsAligment The value of ffsAligment. **/ - public void setFfsAttribDataAlignment(int ffsAligment) { - this.ffsAttribDataAlignment = ffsAligment; - if (this.ffsAttribDataAlignment > 7) { - throw new BuildException ("FFS_ALIGMENT Scope is 0-7"); + public void setFfsAttribDataAlignment(String ffsAligment) { + this.ffsAttribDataAlignment = stringToInt(ffsAligment.replaceAll(" ", "").toLowerCase()); + if (this.ffsAttribDataAlignment < 0 || this.ffsAttribDataAlignment > 7) { + throw new BuildException ("FFS_ATTRIB_DATA_ALIGMENT must be an integer value from 0 through 7, inclusive"); } else { attributes |= (((byte)this.ffsAttribDataAlignment) << 3); } @@ -664,13 +664,13 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { byte[] buffer = new byte[16]; if (GuidStr.length()!=36) { - throw new BuildException ("Guid length is not correct!"); + throw new BuildException ("The GUID length [" + GuidStr.length() + "] is not correct!"); } SplitStr = GuidStr.split("-"); if (SplitStr.length != 5) { - throw new BuildException ("Guid type is not correct!"); + throw new BuildException ("The GUID format is not correct!"); } @@ -948,4 +948,36 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes { public void setModuleType(String moduleType) { this.moduleType = moduleType; } + + /** + Convert a string to a integer. + + @param intString The string representing a integer + + @retval int The value of integer represented by the + given string; -1 is returned if the format + of the string is wrong. + **/ + private int stringToInt(String intString) { + int value; + int hexPrefixPos = intString.indexOf("0x"); + int radix = 10; + String intStringNoPrefix; + + if (hexPrefixPos >= 0) { + radix = 16; + intStringNoPrefix = intString.substring(hexPrefixPos + 2, intString.length()); + } else { + intStringNoPrefix = intString; + } + + try { + value = Integer.parseInt(intStringNoPrefix, radix); + } catch (NumberFormatException e) { + log("Incorrect format of int [" + intString + "]. -1 is assumed"); + return -1; + } + + return value; + } }