/** @file\r
Main file for map shell level 2 command.\r
\r
- (C) Copyright 2013-2014, Hewlett-Packard Development Company, L.P.\r
- Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
+ \r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
)\r
{\r
CHAR16 *NewSpecific;\r
+ RETURN_STATUS Status;\r
+ \r
//\r
// specific has priority\r
//\r
if (Specific != NULL) {\r
- NewSpecific = AllocateZeroPool(StrSize(Specific) + sizeof(CHAR16));\r
+ NewSpecific = AllocateCopyPool(StrSize(Specific) + sizeof(CHAR16), Specific);\r
if (NewSpecific == NULL){\r
return FALSE;\r
}\r
- StrCpy(NewSpecific, Specific);\r
if (NewSpecific[StrLen(NewSpecific)-1] != L':') {\r
- StrCat(NewSpecific, L":");\r
+ Status = StrnCatS(NewSpecific, (StrSize(Specific) + sizeof(CHAR16))/sizeof(CHAR16), L":", StrLen(L":"));\r
+ if (EFI_ERROR (Status)) {\r
+ FreePool(NewSpecific);\r
+ return FALSE;\r
+ }\r
}\r
\r
if (SearchList(MapList, NewSpecific, NULL, TRUE, FALSE, L";")) {\r
BOOLEAN Found;\r
\r
if (!Consist && !Normal && Specific == NULL && TypeString == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"map"); \r
return (SHELL_INVALID_PARAMETER);\r
}\r
\r
if (StrnCmp(TypeString, Test, StrLen(Test)-1) != 0) {\r
Test = (CHAR16*)Fp;\r
if (StrnCmp(TypeString, Test, StrLen(Test)-1) != 0) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, TypeString);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle, L"map", TypeString); \r
return (SHELL_INVALID_PARAMETER);\r
}\r
} else if (Test == NULL) {\r
}\r
if (!Found) {\r
if (Specific != NULL) {\r
- ShellPrintHiiEx(gST->ConOut->Mode->CursorColumn, gST->ConOut->Mode->CursorRow-1, NULL, STRING_TOKEN (STR_MAP_NF), gShellLevel2HiiHandle, Specific);\r
+ ShellPrintHiiEx(gST->ConOut->Mode->CursorColumn, gST->ConOut->Mode->CursorRow-1, NULL, STRING_TOKEN (STR_MAP_NF), gShellLevel2HiiHandle, L"map", Specific); \r
} else {\r
- ShellPrintHiiEx(gST->ConOut->Mode->CursorColumn, gST->ConOut->Mode->CursorRow-1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(gST->ConOut->Mode->CursorColumn, gST->ConOut->Mode->CursorRow-1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle, L"map"); \r
}\r
}\r
return (SHELL_SUCCESS);\r
CONST EFI_DEVICE_PATH_PROTOCOL *DevPath;\r
EFI_STATUS Status;\r
CHAR16 *NewSName;\r
+ RETURN_STATUS StrRetStatus;\r
\r
- NewSName = AllocateZeroPool(StrSize(SName) + sizeof(CHAR16));\r
+ NewSName = AllocateCopyPool(StrSize(SName) + sizeof(CHAR16), SName);\r
if (NewSName == NULL) {\r
return (SHELL_OUT_OF_RESOURCES);\r
}\r
- StrCpy(NewSName, SName);\r
if (NewSName[StrLen(NewSName)-1] != L':') {\r
- StrCat(NewSName, L":");\r
+ StrRetStatus = StrnCatS(NewSName, (StrSize(SName) + sizeof(CHAR16))/sizeof(CHAR16), L":", StrLen(L":"));\r
+ if (EFI_ERROR(StrRetStatus)) {\r
+ FreePool(NewSName);\r
+ return ((SHELL_STATUS) (StrRetStatus & (~MAX_BIT)));\r
+ }\r
}\r
\r
if (!IsNumberLetterOnly(NewSName, StrLen(NewSName)-1)) {\r
EFI_DEVICE_PATH_PROTOCOL *DevPath;\r
EFI_STATUS Status;\r
CHAR16 *NewSName;\r
+ RETURN_STATUS StrRetStatus;\r
\r
- NewSName = AllocateZeroPool(StrSize(SName) + sizeof(CHAR16));\r
+ NewSName = AllocateCopyPool(StrSize(SName) + sizeof(CHAR16), SName);\r
if (NewSName == NULL) {\r
return (SHELL_OUT_OF_RESOURCES);\r
}\r
- StrCpy(NewSName, SName);\r
if (NewSName[StrLen(NewSName)-1] != L':') {\r
- StrCat(NewSName, L":");\r
+ StrRetStatus = StrnCatS(NewSName, (StrSize(SName) + sizeof(CHAR16))/sizeof(CHAR16), L":", StrLen(L":"));\r
+ if (EFI_ERROR(StrRetStatus)) {\r
+ FreePool(NewSName);\r
+ return ((SHELL_STATUS) (StrRetStatus & (~MAX_BIT)));\r
+ }\r
}\r
\r
if (!IsNumberLetterOnly(NewSName, StrLen(NewSName)-1)) {\r
Status = ShellCommandLineParse (MapParamList, &Package, &ProblemParam, TRUE);\r
if (EFI_ERROR(Status)) {\r
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, ProblemParam);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, L"map", ProblemParam); \r
FreePool(ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
if (ShellCommandLineGetFlag(Package, L"-?")) {\r
ASSERT(FALSE);\r
} else if (ShellCommandLineGetRawValue(Package, 3) != NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel2HiiHandle, L"map"); \r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
|| ShellCommandLineGetFlag(Package, L"-u")\r
|| ShellCommandLineGetFlag(Package, L"-t")\r
){\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CON), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CON), gShellLevel2HiiHandle, L"map"); \r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
SName = ShellCommandLineGetValue(Package, L"-d");\r
Status = PerformMappingDelete(SName);\r
if (EFI_ERROR(Status)) {\r
if (Status == EFI_ACCESS_DENIED) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), gShellLevel2HiiHandle, L"map"); \r
ShellStatus = SHELL_ACCESS_DENIED;\r
} else if (Status == EFI_NOT_FOUND) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MAP_NF), gShellLevel2HiiHandle, SName);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MAP_NF), gShellLevel2HiiHandle, L"map", SName); \r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_UK), gShellLevel2HiiHandle, Status);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_UK), gShellLevel2HiiHandle, L"map", Status); \r
ShellStatus = SHELL_UNSUPPORTED;\r
}\r
}\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"map"); \r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
}\r
//\r
Status = ShellCommandCreateInitialMappingsAndPaths();\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_UK), gShellLevel2HiiHandle, Status);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_UK), gShellLevel2HiiHandle, L"map", Status); \r
ShellStatus = SHELL_UNSUPPORTED;\r
}\r
}\r
//\r
Status = ShellCommandUpdateMapping ();\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_UK), gShellLevel2HiiHandle, Status);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_UK), gShellLevel2HiiHandle, L"map", Status); \r
ShellStatus = SHELL_UNSUPPORTED;\r
}\r
}\r
MapAsHandle = NULL;\r
}\r
if (MapAsHandle == NULL && Mapping[StrLen(Mapping)-1] != L':') {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, Mapping);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle, L"map", Mapping); \r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- if (MapAsHandle != NULL) {\r
- TempStringLength = StrLen(SName);\r
- if (!IsNumberLetterOnly(SName, TempStringLength-(SName[TempStringLength-1]==L':'?1:0))) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, SName);\r
- ShellStatus = SHELL_INVALID_PARAMETER;\r
- } else {\r
+ TempStringLength = StrLen(SName);\r
+ if (!IsNumberLetterOnly(SName, TempStringLength-(SName[TempStringLength-1]==L':'?1:0))) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle, L"map", SName);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ }\r
+\r
+ if (ShellStatus == SHELL_SUCCESS) {\r
+ if (MapAsHandle != NULL) {\r
ShellStatus = AddMappingFromHandle(MapAsHandle, SName);\r
- }\r
- } else {\r
- TempStringLength = StrLen(SName);\r
- if (!IsNumberLetterOnly(SName, TempStringLength-(SName[TempStringLength-1]==L':'?1:0))) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, SName);\r
- ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
ShellStatus = AddMappingFromMapping(Mapping, SName);\r
}\r
+\r
+ if (ShellStatus != SHELL_SUCCESS) {\r
+ switch (ShellStatus) {\r
+ case SHELL_ACCESS_DENIED:\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), gShellLevel2HiiHandle, L"map");\r
+ break;\r
+ case SHELL_INVALID_PARAMETER:\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle, L"map", Mapping);\r
+ break;\r
+ case SHELL_DEVICE_ERROR:\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MAP_NOF), gShellLevel2HiiHandle, L"map", Mapping);\r
+ break;\r
+ default:\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_UK), gShellLevel2HiiHandle, L"map", ShellStatus|MAX_BIT);\r
+ }\r
+ } else {\r
+ //\r
+ // now do the display...\r
+ //\r
+ ShellStatus = PerformMappingDisplay(\r
+ FALSE,\r
+ FALSE,\r
+ FALSE,\r
+ NULL,\r
+ SfoMode,\r
+ SName,\r
+ TRUE\r
+ );\r
+ } // we were sucessful so do an output\r
}\r
- if (ShellStatus != SHELL_SUCCESS) {\r
- switch (ShellStatus) {\r
- case SHELL_ACCESS_DENIED:\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), gShellLevel2HiiHandle);\r
- break;\r
- case SHELL_INVALID_PARAMETER:\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle);\r
- break;\r
- case SHELL_DEVICE_ERROR:\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MAP_NOF), gShellLevel2HiiHandle, Mapping);\r
- break;\r
- default:\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_UK), gShellLevel2HiiHandle, ShellStatus|MAX_BIT);\r
- }\r
- } else {\r
- //\r
- // now do the display...\r
- //\r
- ShellStatus = PerformMappingDisplay(\r
- FALSE,\r
- FALSE,\r
- FALSE,\r
- NULL,\r
- SfoMode,\r
- SName,\r
- TRUE\r
- );\r
- } // we were sucessful so do an output\r
} // got a valid map target\r
} // got 2 variables\r
} // we are adding a mapping\r