//\r
// build the full device path\r
//\r
- DevicePathForReturn = FileDevicePath(Handle, Path+StrLen(MapName)+1);\r
+ if (*(Path+StrLen(MapName)+1) == CHAR_NULL) {\r
+ DevicePathForReturn = FileDevicePath(Handle, L"\\");\r
+ } else {\r
+ DevicePathForReturn = FileDevicePath(Handle, Path+StrLen(MapName)+1);\r
+ }\r
\r
FreePool(MapName);\r
if (DevicePathCopyForFree != NULL) {\r
}\r
}\r
\r
- SysInfo = AllocateZeroPool(SysInfoSize);\r
+ SysInfoSize = 0;\r
+ SysInfo = NULL;\r
+\r
Status = EfiFpHandle->GetInfo(\r
EfiFpHandle,\r
&gEfiFileSystemInfoGuid,\r
&SysInfoSize,\r
SysInfo);\r
\r
+ if (Status == EFI_BUFFER_TOO_SMALL) {\r
+ SysInfo = AllocateZeroPool(SysInfoSize);\r
+ Status = EfiFpHandle->GetInfo(\r
+ EfiFpHandle,\r
+ &gEfiFileSystemInfoGuid,\r
+ &SysInfoSize,\r
+ SysInfo);\r
+ }\r
+\r
gEfiShellProtocol->CloseFile(ShellFileHandle);\r
\r
//\r
CONST CHAR16 *CurDir;\r
BOOLEAN DeleteMode;\r
CHAR16 *FullPath;\r
+ CHAR16 *TempSpot;\r
UINTN Length;\r
\r
Length = 0;\r
}\r
}\r
if (PathName != NULL) {\r
- StrnCatGrow(&FullPath, &Length, PathName, StrStr(PathName, L"\\")==NULL?0:StrStr(PathName, L"\\")-PathName+1);\r
- if (StrStr(FullPath, L":\\") == NULL) {\r
- StrnCatGrow(&FullPath, &Length, L":\\", 0);\r
+ TempSpot = StrStr(PathName, L":");\r
+ if (TempSpot != NULL) {\r
+ *TempSpot = CHAR_NULL;\r
+ }\r
+ TempSpot = StrStr(PathName, L"\\");\r
+ if (TempSpot != NULL) {\r
+ *TempSpot = CHAR_NULL;\r
}\r
+ StrnCatGrow(&FullPath, &Length, PathName, 0);\r
+ StrnCatGrow(&FullPath, &Length, L":\\", 0);\r
DeleteMode = ShellCommandLineGetFlag(Package, L"-d");\r
if (DeleteMode && ShellCommandLineGetFlag(Package, L"-n")) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CON), gShellLevel2HiiHandle);\r