MdePkg/UefiDevicePathLib: Use BaseLib string conversion services
authorRuiyu Ni <ruiyu.ni@intel.com>
Fri, 17 Feb 2017 08:52:54 +0000 (16:52 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Tue, 28 Feb 2017 03:30:33 +0000 (11:30 +0800)
Update UefiDevicePathLib to use StrToGuid/StrHexToBytes
/StrToIpv4Address/StrToIpv6Address provided by BaseLib.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c

index e2b06a2d32d797515b89d053039bc85cb9583a3f..ae38859542de4b3ecac969bd7777e8acc08784b7 100644 (file)
@@ -325,187 +325,6 @@ Strtoi64 (
   }\r
 }\r
 \r
-/**\r
-  Converts a list of string to a specified buffer.\r
-\r
-  @param Buf             The output buffer that contains the string.\r
-  @param BufferLength    The length of the buffer\r
-  @param Str             The input string that contains the hex number\r
-\r
-  @retval EFI_SUCCESS    The string was successfully converted to the buffer.\r
-\r
-**/\r
-EFI_STATUS\r
-StrToBuf (\r
-  OUT UINT8    *Buf,\r
-  IN  UINTN    BufferLength,\r
-  IN  CHAR16   *Str\r
-  )\r
-{\r
-  UINTN       Index;\r
-  UINTN       StrLength;\r
-  UINT8       Digit;\r
-  UINT8       Byte;\r
-\r
-  Digit = 0;\r
-\r
-  //\r
-  // Two hex char make up one byte\r
-  //\r
-  StrLength = BufferLength * sizeof (CHAR16);\r
-\r
-  for(Index = 0; Index < StrLength; Index++, Str++) {\r
-\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 characters, write the upper nibble for each buffer byte,\r
-    // and for even characters, the lower nibble.\r
-    //\r
-    if ((Index & 1) == 0) {\r
-      Byte = (UINT8) (Digit << 4);\r
-    } else {\r
-      Byte = Buf[Index / 2];\r
-      Byte &= 0xF0;\r
-      Byte = (UINT8) (Byte | Digit);\r
-    }\r
-\r
-    Buf[Index / 2] = Byte;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\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
-\r
-  @retval EFI_SUCCESS     The GUID string was successfully converted to the GUID value.\r
-  @retval EFI_UNSUPPORTED The input string is not in registry format.\r
-  @return others          Some error occurred when converting part of GUID value.\r
-\r
-**/\r
-EFI_STATUS\r
-DevicePathLibStrToGuid (\r
-  IN  CHAR16   *Str,\r
-  OUT EFI_GUID *Guid\r
-  )\r
-{\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
-  \r
-  if (IS_HYPHEN (*Str)) {\r
-    Str++;\r
-  } else {\r
-    return EFI_UNSUPPORTED;\r
-  }\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
-\r
-  if (IS_HYPHEN (*Str)) {\r
-    Str++;\r
-  } else {\r
-    return EFI_UNSUPPORTED;\r
-  }\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
-\r
-  if (IS_HYPHEN (*Str)) {\r
-    Str++;\r
-  } else {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // Get the following 8 bytes data\r
-  //  \r
-  StrToBuf (&Guid->Data4[0], 2, Str);\r
-  //\r
-  // Skip 2 byte hex chars\r
-  //\r
-  Str += 2 * 2;\r
-\r
-  if (IS_HYPHEN (*Str)) {\r
-    Str++;\r
-  } else {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-  StrToBuf (&Guid->Data4[2], 6, Str);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Converts a string to IPv4 address\r
-\r
-  @param Str             A string representation of IPv4 address.\r
-  @param IPv4Addr        A pointer to the converted IPv4 address.\r
-\r
-**/\r
-VOID\r
-StrToIPv4Addr (\r
-  IN OUT CHAR16           **Str,\r
-  OUT    EFI_IPv4_ADDRESS *IPv4Addr\r
-  )\r
-{\r
-  UINTN  Index;\r
-\r
-  for (Index = 0; Index < 4; Index++) {\r
-    IPv4Addr->Addr[Index] = (UINT8) Strtoi (SplitStr (Str, L'.'));\r
-  }\r
-}\r
-\r
-/**\r
-  Converts a string to IPv4 address\r
-\r
-  @param Str             A string representation of IPv6 address.\r
-  @param IPv6Addr        A pointer to the converted IPv6 address.\r
-\r
-**/\r
-VOID\r
-StrToIPv6Addr (\r
-  IN OUT CHAR16           **Str,\r
-  OUT    EFI_IPv6_ADDRESS *IPv6Addr\r
-  )\r
-{\r
-  UINTN  Index;\r
-  UINT16 Data;\r
-\r
-  for (Index = 0; Index < 8; Index++) {\r
-    Data = (UINT16) StrHexToUintn (SplitStr (Str, L':'));\r
-    IPv6Addr->Addr[Index * 2] = (UINT8) (Data >> 8);\r
-    IPv6Addr->Addr[Index * 2 + 1] = (UINT8) (Data & 0xff);\r
-  }\r
-}\r
-\r
 /**\r
   Converts a Unicode string to ASCII string.\r
 \r
@@ -567,9 +386,7 @@ DevPathFromTextGenericPath (
            (UINT16) (sizeof (EFI_DEVICE_PATH_PROTOCOL) + DataLength)\r
            );\r
 \r
-  if (DataLength != 0) {\r
-    StrToBuf ((UINT8 *) (Node + 1), DataLength, DataStr);\r
-  }\r
+  StrHexToBytes (DataStr, DataLength * 2, (UINT8 *) (Node + 1), DataLength);\r
   return Node;\r
 }\r
 \r
@@ -740,8 +557,8 @@ ConvertFromTextVendor (
                                      (UINT16) (sizeof (VENDOR_DEVICE_PATH) + Length)\r
                                      );\r
 \r
-  DevicePathLibStrToGuid (GuidStr, &Vendor->Guid);\r
-  StrToBuf (((UINT8 *) Vendor) + sizeof (VENDOR_DEVICE_PATH), Length, DataStr);\r
+  StrToGuid (GuidStr, &Vendor->Guid);\r
+  StrHexToBytes (DataStr, Length * 2, (UINT8 *) (Vendor + 1), Length);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
 }\r
@@ -1438,7 +1255,6 @@ DevPathFromTextInfiniband (
   CHAR16                  *SidStr;\r
   CHAR16                  *TidStr;\r
   CHAR16                  *DidStr;\r
-  EFI_GUID                PortGid;\r
   INFINIBAND_DEVICE_PATH  *InfiniBand;\r
 \r
   FlagsStr   = GetNextParamStr (&TextDeviceNode);\r
@@ -1453,8 +1269,7 @@ DevPathFromTextInfiniband (
                                             );\r
 \r
   InfiniBand->ResourceFlags = (UINT32) Strtoi (FlagsStr);\r
-  DevicePathLibStrToGuid (GuidStr, &PortGid);\r
-  CopyMem (InfiniBand->PortGid, &PortGid, sizeof (EFI_GUID));\r
+  StrToGuid (GuidStr, (EFI_GUID *) InfiniBand->PortGid);\r
   Strtoi64 (SidStr, &InfiniBand->ServiceId);\r
   Strtoi64 (TidStr, &InfiniBand->TargetPortId);\r
   Strtoi64 (DidStr, &InfiniBand->DeviceId);\r
@@ -1985,7 +1800,7 @@ DevPathFromTextMAC (
   MACDevPath->IfType   = (UINT8) Strtoi (IfTypeStr);\r
 \r
   Length = sizeof (EFI_MAC_ADDRESS);\r
-  StrToBuf (&MACDevPath->MacAddress.Addr[0], Length, AddressStr);\r
+  StrHexToBytes (AddressStr, Length * 2, MACDevPath->MacAddress.Addr, Length);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) MACDevPath;\r
 }\r
@@ -2049,7 +1864,7 @@ DevPathFromTextIPv4 (
                                                  (UINT16) sizeof (IPv4_DEVICE_PATH)\r
                                                  );\r
 \r
-  StrToIPv4Addr (&RemoteIPStr, &IPv4->RemoteIpAddress);\r
+  StrToIpv4Address (RemoteIPStr, NULL, &IPv4->RemoteIpAddress, NULL);\r
   IPv4->Protocol = (UINT16) NetworkProtocolFromText (ProtocolStr);\r
   if (StrCmp (TypeStr, L"Static") == 0) {\r
     IPv4->StaticIpAddress = TRUE;\r
@@ -2057,10 +1872,10 @@ DevPathFromTextIPv4 (
     IPv4->StaticIpAddress = FALSE;\r
   }\r
 \r
-  StrToIPv4Addr (&LocalIPStr, &IPv4->LocalIpAddress);\r
+  StrToIpv4Address (LocalIPStr, NULL, &IPv4->LocalIpAddress, NULL);\r
   if (!IS_NULL (*GatewayIPStr) && !IS_NULL (*SubnetMaskStr)) {\r
-    StrToIPv4Addr (&GatewayIPStr,  &IPv4->GatewayIpAddress);\r
-    StrToIPv4Addr (&SubnetMaskStr, &IPv4->SubnetMask);\r
+    StrToIpv4Address (GatewayIPStr,  NULL, &IPv4->GatewayIpAddress, NULL);\r
+    StrToIpv4Address (SubnetMaskStr, NULL, &IPv4->SubnetMask,       NULL);\r
   } else {\r
     ZeroMem (&IPv4->GatewayIpAddress, sizeof (IPv4->GatewayIpAddress));\r
     ZeroMem (&IPv4->SubnetMask,    sizeof (IPv4->SubnetMask));\r
@@ -2105,7 +1920,7 @@ DevPathFromTextIPv6 (
                                                  (UINT16) sizeof (IPv6_DEVICE_PATH)\r
                                                  );\r
 \r
-  StrToIPv6Addr (&RemoteIPStr, &IPv6->RemoteIpAddress);\r
+  StrToIpv6Address (RemoteIPStr, NULL, &IPv6->RemoteIpAddress, NULL);\r
   IPv6->Protocol        = (UINT16) NetworkProtocolFromText (ProtocolStr);\r
   if (StrCmp (TypeStr, L"Static") == 0) {\r
     IPv6->IpAddressOrigin = 0;\r
@@ -2115,9 +1930,9 @@ DevPathFromTextIPv6 (
     IPv6->IpAddressOrigin = 2;\r
   }\r
 \r
-  StrToIPv6Addr (&LocalIPStr, &IPv6->LocalIpAddress);\r
+  StrToIpv6Address (LocalIPStr, NULL, &IPv6->LocalIpAddress, NULL);\r
   if (!IS_NULL (*GatewayIPStr) && !IS_NULL (*PrefixLengthStr)) {\r
-    StrToIPv6Addr (&GatewayIPStr, &IPv6->GatewayIpAddress);\r
+    StrToIpv6Address (GatewayIPStr, NULL, &IPv6->GatewayIpAddress, NULL);\r
     IPv6->PrefixLength = (UINT8) Strtoi (PrefixLengthStr);\r
   } else {\r
     ZeroMem (&IPv6->GatewayIpAddress, sizeof (IPv6->GatewayIpAddress));\r
@@ -2947,7 +2762,6 @@ DevPathFromTextHD (
   CHAR16                *StartStr;\r
   CHAR16                *SizeStr;\r
   UINT32                Signature32;\r
-  EFI_GUID              SignatureGuid;\r
   HARDDRIVE_DEVICE_PATH *Hd;\r
 \r
   PartitionStr        = GetNextParamStr (&TextDeviceNode);\r
@@ -2976,8 +2790,7 @@ DevPathFromTextHD (
     Hd->SignatureType = SIGNATURE_TYPE_GUID;\r
     Hd->MBRType       = 0x02;\r
 \r
-    DevicePathLibStrToGuid (SignatureStr, &SignatureGuid);\r
-    CopyMem (Hd->Signature, &SignatureGuid, sizeof (EFI_GUID));\r
+    StrToGuid (SignatureStr, (EFI_GUID *) Hd->Signature);\r
   } else {\r
     Hd->SignatureType = (UINT8) Strtoi (TypeStr);\r
   }\r
@@ -3091,7 +2904,7 @@ DevPathFromTextMedia (
                                              (UINT16) sizeof (MEDIA_PROTOCOL_DEVICE_PATH)\r
                                              );\r
 \r
-  DevicePathLibStrToGuid (GuidStr, &Media->Protocol);\r
+  StrToGuid (GuidStr, &Media->Protocol);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) Media;\r
 }\r
@@ -3119,7 +2932,7 @@ DevPathFromTextFv (
                                            (UINT16) sizeof (MEDIA_FW_VOL_DEVICE_PATH)\r
                                            );\r
 \r
-  DevicePathLibStrToGuid (GuidStr, &Fv->FvName);\r
+  StrToGuid (GuidStr, &Fv->FvName);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) Fv;\r
 }\r
@@ -3147,7 +2960,7 @@ DevPathFromTextFvFile (
                                                     (UINT16) sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH)\r
                                                     );\r
 \r
-  DevicePathLibStrToGuid (GuidStr, &FvFile->FvFileName);\r
+  StrToGuid (GuidStr, &FvFile->FvFileName);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) FvFile;\r
 }\r
@@ -3219,7 +3032,7 @@ DevPathFromTextRamDisk (
   Strtoi64 (EndingAddrStr, &EndingAddr);\r
   WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);\r
   RamDisk->Instance = (UINT16) Strtoi (InstanceStr);\r
-  DevicePathLibStrToGuid (TypeGuidStr, &RamDisk->TypeGuid);\r
+  StrToGuid (TypeGuidStr, &RamDisk->TypeGuid);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;\r
 }\r