From: jwang36 Date: Thu, 10 Aug 2006 06:02:12 +0000 (+0000) Subject: Added stringToInt method to handle hex integer for FFS_ATTRIB_DATA_ALIGNMENT X-Git-Tag: edk2-stable201903~24644 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=1c4725675880a0ef3f313b424d706f0f03d7fc3a;hp=3a5dcc063cd56c8a46703888a3ac51954a37df19 Added stringToInt method to handle hex integer for FFS_ATTRIB_DATA_ALIGNMENT git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1229 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java index 8e0fb4ab72..2c46f09d65 100644 --- a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java +++ b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java @@ -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 0-7"); } else { attributes |= (((byte)this.ffsAttribDataAlignment) << 3); } @@ -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; + } }