EFI_DHCP4_MODE_DATA Dhcp4Mode;\r
EFI_MTFTP4_CONFIG_DATA Mtftp4CfgData;\r
IPv4_DEVICE_PATH *IPv4DevicePathNode;\r
- FILEPATH_DEVICE_PATH *FilePathDevicePathNode;\r
+ CHAR16 *PathName;\r
CHAR8 *AsciiFilePath;\r
EFI_MTFTP4_TOKEN Mtftp4Token;\r
UINT64 FileSize;\r
goto Error;\r
}\r
\r
- //\r
- // Convert the Unicode path of the file to Ascii\r
- //\r
-\r
- FilePathDevicePathNode = (FILEPATH_DEVICE_PATH*)(IPv4DevicePathNode + 1);\r
- AsciiFilePath = AllocatePool ((StrLen (FilePathDevicePathNode->PathName) + 1) * sizeof (CHAR8));\r
- if (AsciiFilePath == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto Error;\r
- }\r
- UnicodeStrToAsciiStr (FilePathDevicePathNode->PathName, AsciiFilePath);\r
+ // The Device Path might contain multiple FilePath nodes\r
+ PathName = ConvertDevicePathToText ((EFI_DEVICE_PATH_PROTOCOL*)(IPv4DevicePathNode + 1), FALSE, FALSE);\r
+ AsciiFilePath = AllocatePool (StrLen (PathName) + 1);\r
+ UnicodeStrToAsciiStr (PathName, AsciiFilePath);\r
\r
//\r
// Try to get the size of the file in bytes from the server. If it fails,\r
Mtftp4Token.CheckPacket = Mtftp4CheckPacket;\r
Mtftp4Token.Context = (VOID*)TftpContext;\r
\r
- Print (L"Downloading the file <%s> from the TFTP server\n", FilePathDevicePathNode->PathName);\r
+ Print (L"Downloading the file <%a> from the TFTP server\n", AsciiFilePath);\r
Status = Mtftp4->ReadFile (Mtftp4, &Mtftp4Token);\r
Print (L"\n");\r
if (EFI_ERROR (Status)) {\r
}\r
\r
if (EFI_ERROR (Status)) {\r
+ *Image = 0;\r
Print (L"Failed to download the file - Error=%r\n", Status);\r
}\r
\r