summaryrefslogtreecommitdiff
path: root/Tools/Source
diff options
context:
space:
mode:
authorjwang36 <jwang36@6f19259b-4bc3-4df7-8a09-765794883524>2006-08-10 06:02:12 +0000
committerjwang36 <jwang36@6f19259b-4bc3-4df7-8a09-765794883524>2006-08-10 06:02:12 +0000
commit1c4725675880a0ef3f313b424d706f0f03d7fc3a (patch)
treef9cd7f060d2b000d4cf283b19f84d74930b17842 /Tools/Source
parent3a5dcc063cd56c8a46703888a3ac51954a37df19 (diff)
downloadedk2-platforms-1c4725675880a0ef3f313b424d706f0f03d7fc3a.tar.xz
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
Diffstat (limited to 'Tools/Source')
-rw-r--r--Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenFfsFileTask.java40
1 files changed, 36 insertions, 4 deletions
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;
+ }
}