summaryrefslogtreecommitdiff
path: root/BaseTools/Source/C
diff options
context:
space:
mode:
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2011-05-25 10:45:15 +0000
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2011-05-25 10:45:15 +0000
commit9fd2164e34b9f3e1aa6bde07f513f43a6a08e588 (patch)
treee01f800ba4a6e59616e8690b5cd113b9982ea00d /BaseTools/Source/C
parent46cc3885e68cc19981a4756e1a2d40d35f2eb92f (diff)
downloadedk2-platforms-9fd2164e34b9f3e1aa6bde07f513f43a6a08e588.tar.xz
Sync BaseTools Branch (version r2157) to EDKII main trunk.
BaseTool Branch: https://edk2-buildtools.svn.sourceforge.net/svnroot/edk2-buildtools/branches/Releases/BaseTools_r2100 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11702 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'BaseTools/Source/C')
-rw-r--r--BaseTools/Source/C/GenVtf/GenVtf.c37
1 files changed, 23 insertions, 14 deletions
diff --git a/BaseTools/Source/C/GenVtf/GenVtf.c b/BaseTools/Source/C/GenVtf/GenVtf.c
index 428158ebb8..035c268a2c 100644
--- a/BaseTools/Source/C/GenVtf/GenVtf.c
+++ b/BaseTools/Source/C/GenVtf/GenVtf.c
@@ -119,28 +119,37 @@ Returns:
--*/
{
- CHAR8 StrPtr[40];
- CHAR8 *Token;
+ CHAR8 TemStr[5] = "0000";
unsigned Major;
unsigned Minor;
+ UINTN Length;
Major = 0;
Minor = 0;
- memset (StrPtr, 0, 40);
- Token = strtok (Str, ".");
- while (Token != NULL) {
- strcat (StrPtr, Token);
- Token = strtok (NULL, ".");
+ if (strstr (Str, ".") != NULL) {
+ sscanf (
+ Str,
+ "%02x.%02x",
+ &Major,
+ &Minor
+ );
+ } else {
+ Length = strlen(Str);
+ if (Length < 4) {
+ strncpy (TemStr + 4 - Length, Str, Length);
+ } else {
+ strncpy (TemStr, Str + Length - 4, 4);
+ }
+
+ sscanf (
+ TemStr,
+ "%02x%02x",
+ &Major,
+ &Minor
+ );
}
- sscanf (
- StrPtr,
- "%02d%02d",
- &Major,
- &Minor
- );
-
*MajorVer = (UINT8) Major;
*MinorVer = (UINT8) Minor;
return EFI_SUCCESS;