]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/DevicePathDxe/DevicePathFromText.c
Remove NibbleToHexChar() function from BaseLib
[mirror_edk2.git] / MdeModulePkg / Universal / DevicePathDxe / DevicePathFromText.c
index e183abbfe054d3ab51e7fda75f9a17fc052893b2..dbd371ce705c8160fb52d51c4765d38f5b4bd54a 100644 (file)
@@ -308,19 +308,7 @@ Xtoi (
   IN CHAR16  *Str\r
   )\r
 {\r
-  UINTN   Rvalue;\r
-  UINTN   Length;\r
-\r
-  ASSERT (Str != NULL);\r
-\r
-  //\r
-  // convert hex digits\r
-  //\r
-  Rvalue = 0;\r
-  Length = sizeof (UINTN);\r
-  HexStringToBuf ((UINT8 *) &Rvalue, &Length, Str, NULL);\r
-\r
-  return Rvalue;\r
+  return StrHexToUintn (Str);\r
 }\r
 \r
 /**\r
@@ -337,11 +325,7 @@ Xtoi64 (
   OUT UINT64  *Data\r
   )\r
 {\r
-  UINTN  Length;\r
-\r
-  *Data  = 0;\r
-  Length = sizeof (UINT64);\r
-  HexStringToBuf ((UINT8 *) Data, &Length, Str, NULL);\r
+  *Data = StrHexToUint64 (Str);\r
 }\r
 \r
 /**\r
@@ -524,7 +508,15 @@ StrToBuf (
 \r
   for(Index = 0; Index < StrLength; Index++, Str++) {\r
 \r
-    IsHexDigit (&Digit, *Str);\r
+    if ((*Str >= L'a') && (*Str <= L'f')) {\r
+      Digit = (UINT8) (*Str - L'a' + 0x0A);\r
+    } else if ((*Str >= L'A') && (*Str <= L'F')) {\r
+      Digit = (UINT8) (*Str - L'A' + 0x0A);\r
+    } else if ((*Str >= L'0') && (*Str <= L'9')) {\r
+      Digit = (UINT8) (*Str - L'0');\r
+    } else {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
 \r
     //\r
     // For odd charaters, write the upper nibble for each buffer byte,\r
@@ -546,6 +538,7 @@ StrToBuf (
 \r
 /**\r
   Converts a string to GUID value.\r
+  Guid Format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\r
 \r
   @param Str              The registry format GUID string that contains the GUID value.\r
   @param Guid             A pointer to the converted GUID value.\r
@@ -561,46 +554,51 @@ StrToGuid (
   OUT EFI_GUID *Guid\r
   )\r
 {\r
-  UINTN       BufferLength;\r
-  UINTN       ConvertedStrLen;\r
-  EFI_STATUS  Status;\r
-\r
-  BufferLength = sizeof (Guid->Data1);\r
-  Status = HexStringToBuf ((UINT8 *) &Guid->Data1, &BufferLength, Str, &ConvertedStrLen);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
+  //\r
+  // Get the first UINT32 data\r
+  //\r
+  Guid->Data1 = (UINT32) StrHexToUint64  (Str);\r
+  while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) {\r
+    Str ++;\r
   }\r
-  Str += ConvertedStrLen;\r
+  \r
   if (IS_HYPHEN (*Str)) {\r
     Str++;\r
   } else {\r
     return EFI_UNSUPPORTED;\r
   }\r
-\r
-  BufferLength = sizeof (Guid->Data2);\r
-  Status = HexStringToBuf ((UINT8 *) &Guid->Data2, &BufferLength, Str, &ConvertedStrLen);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
+  \r
+  //\r
+  // Get the second UINT16 data\r
+  //\r
+  Guid->Data2 = (UINT16) StrHexToUint64  (Str);\r
+  while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) {\r
+    Str ++;\r
   }\r
-  Str += ConvertedStrLen;\r
+\r
   if (IS_HYPHEN (*Str)) {\r
     Str++;\r
   } else {\r
     return EFI_UNSUPPORTED;\r
   }\r
-\r
-  BufferLength = sizeof (Guid->Data3);\r
-  Status = HexStringToBuf ((UINT8 *) &Guid->Data3, &BufferLength, Str, &ConvertedStrLen);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
+  \r
+  //\r
+  // Get the third UINT16 data\r
+  //\r
+  Guid->Data3 = (UINT16) StrHexToUint64  (Str);\r
+  while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) {\r
+    Str ++;\r
   }\r
-  Str += ConvertedStrLen;\r
+\r
   if (IS_HYPHEN (*Str)) {\r
     Str++;\r
   } else {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
+  //\r
+  // Get the followin 8 bytes data\r
+  //  \r
   StrToBuf (&Guid->Data4[0], 2, Str);\r
   //\r
   // Skip 2 byte hex chars\r