}\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
(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
(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
CHAR16 *SidStr;\r
CHAR16 *TidStr;\r
CHAR16 *DidStr;\r
- EFI_GUID PortGid;\r
INFINIBAND_DEVICE_PATH *InfiniBand;\r
\r
FlagsStr = GetNextParamStr (&TextDeviceNode);\r
);\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
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
(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
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
(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
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
CHAR16 *StartStr;\r
CHAR16 *SizeStr;\r
UINT32 Signature32;\r
- EFI_GUID SignatureGuid;\r
HARDDRIVE_DEVICE_PATH *Hd;\r
\r
PartitionStr = GetNextParamStr (&TextDeviceNode);\r
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
(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
(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
(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
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