Main file for BCFG command.\r
\r
(C) Copyright 2014-2015 Hewlett-Packard Development Company, L.P.<BR>\r
- Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\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
#include <Uefi.h>\r
-#include <ShellBase.h>\r
\r
#include <Guid/GlobalVariable.h>\r
#include <Guid/ShellLibHiiGuid.h>\r
\r
-#include <Protocol/EfiShell.h>\r
-#include <Protocol/EfiShellParameters.h>\r
+#include <Protocol/Shell.h>\r
+#include <Protocol/ShellParameters.h>\r
#include <Protocol/DevicePath.h>\r
#include <Protocol/LoadedImage.h>\r
#include <Protocol/UnicodeCollation.h>\r
#include <Library/PrintLib.h>\r
#include <Library/HandleParsingLib.h>\r
#include <Library/DevicePathLib.h>\r
+#include <Library/UefiBootManagerLib.h>\r
\r
STATIC CONST CHAR16 mFileName[] = L"ShellCommands";\r
STATIC EFI_HANDLE gShellBcfgHiiHandle = NULL;\r
BcfgTypeRm = 4,\r
BcfgTypeMv = 5,\r
BcfgTypeOpt = 6,\r
- BcfgTypeMax = 7\r
+ BcfgTypeMod = 7,\r
+ BcfgTypeModf = 8,\r
+ BcfgTypeModp = 9,\r
+ BcfgTypeModh = 10,\r
+ BcfgTypeMax = 11\r
} BCFG_OPERATION_TYPE;\r
\r
typedef struct {\r
@retval other A error occured.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
UpdateOptionalData(\r
- UINT16 Index, \r
- UINTN DataSize, \r
+ UINT16 Index,\r
+ UINTN DataSize,\r
UINT8 *Data,\r
IN CONST BCFG_OPERATION_TARGET Target\r
)\r
UINTN OriginalOptionDataSize;\r
\r
UnicodeSPrint(VariableName, sizeof(VariableName), L"%s%04x", Target == BcfgTargetBootOrder?L"Boot":L"Driver", Index);\r
- \r
+\r
OriginalSize = 0;\r
OriginalData = NULL;\r
NewData = NULL;\r
OriginalOptionDataSize += (*(UINT16*)(OriginalData + sizeof(UINT32)));\r
OriginalOptionDataSize -= OriginalSize;\r
NewSize = OriginalSize - OriginalOptionDataSize + DataSize;\r
- NewData = AllocateCopyPool(NewSize, OriginalData);\r
+ NewData = AllocatePool(NewSize);\r
if (NewData == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
} else {\r
+ CopyMem (NewData, OriginalData, OriginalSize - OriginalOptionDataSize);\r
CopyMem(NewData + OriginalSize - OriginalOptionDataSize, Data, DataSize);\r
}\r
}\r
// put the data back under the variable\r
//\r
Status = gRT->SetVariable(\r
- VariableName, \r
+ VariableName,\r
(EFI_GUID*)&gEfiGlobalVariableGuid,\r
EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS,\r
NewSize,\r
@retval other A error occured.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
GetBootOptionCrc(\r
- UINT32 *Crc, \r
+ UINT32 *Crc,\r
UINT16 BootIndex\r
)\r
{\r
@sa HandleProtocol\r
**/\r
EFI_STATUS\r
-EFIAPI\r
GetDevicePathForDriverHandle (\r
IN EFI_HANDLE TheHandle,\r
IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath\r
return (Status);\r
}\r
\r
+/**\r
+ Functino to get Device Path by a handle.\r
+\r
+ @param[in] TheHandle Use it to get DevicePath.\r
+ @param[in] Target Boot option target.\r
+ @param[in, out] DevicePath On a sucessful return the device path to the handle.\r
+\r
+ @retval SHELL_INVALID_PARAMETER The handle was NULL.\r
+ @retval SHELL_NOT_FOUND Not found device path by handle.\r
+ @retval SHELL_SUCCESS Get device path successfully.\r
+**/\r
+SHELL_STATUS\r
+GetDevicePathByHandle(\r
+ IN EFI_HANDLE TheHandle,\r
+ IN BCFG_OPERATION_TARGET Target,\r
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ SHELL_STATUS ShellStatus;\r
+\r
+ UINTN DriverBindingHandleCount;\r
+ UINTN ParentControllerHandleCount;\r
+ UINTN ChildControllerHandleCount;\r
+\r
+ ShellStatus = SHELL_SUCCESS;\r
+\r
+ if (TheHandle == NULL) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Handle Number");\r
+ return SHELL_INVALID_PARAMETER;\r
+ }\r
+\r
+ Status = PARSE_HANDLE_DATABASE_UEFI_DRIVERS (TheHandle, &DriverBindingHandleCount, NULL);\r
+ if (EFI_ERROR(Status)) {\r
+ DriverBindingHandleCount = 0;\r
+ }\r
+\r
+ Status = PARSE_HANDLE_DATABASE_PARENTS (TheHandle, &ParentControllerHandleCount, NULL);\r
+ if (EFI_ERROR (Status)) {\r
+ ParentControllerHandleCount = 0;\r
+ }\r
+\r
+ Status = ParseHandleDatabaseForChildControllers (TheHandle, &ChildControllerHandleCount, NULL);\r
+ if (EFI_ERROR (Status)) {\r
+ ChildControllerHandleCount = 0;\r
+ }\r
+\r
+ Status = gBS->HandleProtocol (TheHandle, &gEfiDevicePathProtocolGuid, (VOID**)DevicePath);\r
+\r
+ if ( DriverBindingHandleCount > 0 ||\r
+ ParentControllerHandleCount > 0 ||\r
+ ChildControllerHandleCount > 0 ||\r
+ !EFI_ERROR(Status)\r
+ ) {\r
+ //\r
+ // The handle points to a real controller which has a device path.\r
+ //\r
+ if (Target == BcfgTargetDriverOrder) {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,STRING_TOKEN (STR_GEN_PARAM_INV),\r
+ gShellBcfgHiiHandle,\r
+ L"bcfg",\r
+ L"Handle should point to driver image."\r
+ );\r
+ ShellStatus = SHELL_NOT_FOUND;\r
+ }\r
+ } else {\r
+ //\r
+ // The handle points to a driver image.\r
+ //\r
+ if (Target == BcfgTargetBootOrder) {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_GEN_PARAM_INV),\r
+ gShellBcfgHiiHandle,\r
+ L"bcfg",\r
+ L"Handle should point to controller."\r
+ );\r
+ ShellStatus = SHELL_NOT_FOUND;\r
+ } else {\r
+ if (EFI_ERROR (GetDevicePathForDriverHandle (TheHandle, DevicePath))) {\r
+ ShellStatus = SHELL_NOT_FOUND;\r
+ }\r
+ }\r
+ }\r
+\r
+ return (ShellStatus);\r
+}\r
+\r
+/**\r
+ Function to modify an option.\r
+\r
+ @param[in] BcfgOperation Pointer to BCFG operation.\r
+ @param[in] OrderCount The number if items in CurrentOrder.\r
+\r
+ @retval SHELL_SUCCESS The operation was successful.\r
+ @retval SHELL_INVALID_PARAMETER A parameter was invalid.\r
+ @retval SHELL_OUT_OF_RESOUCES A memory allocation failed.\r
+**/\r
+SHELL_STATUS\r
+BcfgMod (\r
+ IN CONST BGFG_OPERATION *BcfgOperation,\r
+ IN CONST UINTN OrderCount\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE CurHandle;\r
+ SHELL_STATUS ShellStatus;\r
+ CHAR16 OptionStr[40];\r
+ EFI_SHELL_FILE_INFO *FileList;\r
+ EFI_SHELL_FILE_INFO *Arg;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePathBuffer;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePathWalker;\r
+ EFI_BOOT_MANAGER_LOAD_OPTION LoadOption;\r
+\r
+ ShellStatus = SHELL_SUCCESS;\r
+ FileList = NULL;\r
+ DevicePath = NULL;\r
+ DevicePathBuffer = NULL;\r
+\r
+ ZeroMem (&LoadOption, sizeof(EFI_BOOT_MANAGER_LOAD_OPTION));\r
+\r
+ if ( (BcfgOperation->Type == BcfgTypeMod && BcfgOperation->Description == NULL) ||\r
+ (BcfgOperation->Type == BcfgTypeModf && BcfgOperation->FileName == NULL) ||\r
+ (BcfgOperation->Type == BcfgTypeModp && BcfgOperation->FileName == NULL) ||\r
+ (BcfgOperation->Type == BcfgTypeModh && BcfgOperation->HandleIndex == 0) ||\r
+ (BcfgOperation->Number1 > OrderCount)\r
+ ) {\r
+ return (SHELL_INVALID_PARAMETER);\r
+ }\r
+\r
+ if (BcfgOperation->Type == BcfgTypeModh) {\r
+ CurHandle = ConvertHandleIndexToHandle (BcfgOperation->HandleIndex);\r
+ ShellStatus = GetDevicePathByHandle (CurHandle, BcfgOperation->Target, &DevicePathBuffer);\r
+ if (ShellStatus == SHELL_SUCCESS) {\r
+ DevicePath = DuplicateDevicePath (DevicePathBuffer);\r
+ }\r
+ } else if (BcfgOperation->Type == BcfgTypeModf || BcfgOperation->Type == BcfgTypeModp) {\r
+ //\r
+ // Get Device Path by FileName.\r
+ //\r
+ ShellOpenFileMetaArg ((CHAR16 *)BcfgOperation->FileName, EFI_FILE_MODE_READ, &FileList);\r
+ if (FileList == NULL) {\r
+ //\r
+ // The name of file matched nothing.\r
+ //\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellBcfgHiiHandle, L"bcfg", BcfgOperation->FileName);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ }\r
+ else if (FileList->Link.ForwardLink != FileList->Link.BackLink) {\r
+ //\r
+ // If the name of file expanded to multiple names, it's fail.\r
+ //\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE), gShellBcfgHiiHandle, L"bcfg", BcfgOperation->FileName);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ Arg = (EFI_SHELL_FILE_INFO *)GetFirstNode (&FileList->Link);\r
+ if (EFI_ERROR (Arg->Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_OPEN), gShellBcfgHiiHandle, L"bcfg", BcfgOperation->FileName);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ DevicePathBuffer = gEfiShellProtocol->GetDevicePathFromFilePath (Arg->FullName);\r
+ if (DevicePathBuffer == NULL) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_DP), gShellBcfgHiiHandle, L"bcfg", Arg->FullName);\r
+ ShellStatus = SHELL_UNSUPPORTED;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (ShellStatus == SHELL_SUCCESS) {\r
+ if (BcfgOperation->Type == BcfgTypeModp) {\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ DevicePathWalker = DevicePathBuffer;\r
+ while (!IsDevicePathEnd (DevicePathWalker)) {\r
+ if ( DevicePathType (DevicePathWalker) == MEDIA_DEVICE_PATH &&\r
+ DevicePathSubType (DevicePathWalker) == MEDIA_HARDDRIVE_DP\r
+ ) {\r
+ //\r
+ // We found the portion of device path starting with the hard driver partition.\r
+ //\r
+ ShellStatus = SHELL_SUCCESS;\r
+ DevicePath = DuplicateDevicePath (DevicePathWalker);\r
+ break;\r
+ } else {\r
+ DevicePathWalker = NextDevicePathNode (DevicePathWalker);\r
+ }\r
+ }\r
+ } else {\r
+ DevicePath = DuplicateDevicePath (DevicePathBuffer);\r
+ }\r
+\r
+ FreePool (DevicePathBuffer);\r
+ }\r
+ }\r
+\r
+ if (ShellStatus == SHELL_SUCCESS) {\r
+ if (BcfgOperation->Target == BcfgTargetBootOrder) {\r
+ UnicodeSPrint (OptionStr, sizeof (OptionStr), L"Boot%04x", BcfgOperation->Order[BcfgOperation->Number1]);\r
+ } else {\r
+ UnicodeSPrint (OptionStr, sizeof (OptionStr), L"Driver%04x", BcfgOperation->Order[BcfgOperation->Number1]);\r
+ }\r
+ Status = EfiBootManagerVariableToLoadOption (OptionStr, &LoadOption);\r
+ if (EFI_ERROR(Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_NONE), gShellBcfgHiiHandle);\r
+ ShellStatus = SHELL_NOT_FOUND;\r
+ }\r
+ }\r
+\r
+ if (ShellStatus == SHELL_SUCCESS) {\r
+ if (BcfgOperation->Type == BcfgTypeMod) {\r
+ SHELL_FREE_NON_NULL (LoadOption.Description);\r
+ LoadOption.Description = AllocateCopyPool (StrSize (BcfgOperation->Description), BcfgOperation->Description);\r
+ } else {\r
+ SHELL_FREE_NON_NULL (LoadOption.FilePath);\r
+ LoadOption.FilePath = DuplicateDevicePath (DevicePath);\r
+ }\r
+\r
+ Status = EfiBootManagerLoadOptionToVariable (&LoadOption);\r
+ if (EFI_ERROR(Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", OptionStr);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ }\r
+ }\r
+\r
+ EfiBootManagerFreeLoadOption (&LoadOption);\r
+\r
+ if (DevicePath != NULL) {\r
+ FreePool (DevicePath);\r
+ }\r
+\r
+ if (FileList != NULL) {\r
+ ShellCloseFileMetaArg (&FileList);\r
+ }\r
+\r
+ return (ShellStatus);\r
+}\r
+\r
/**\r
Function to add a option.\r
\r
@retval SHELL_INVALID_PARAMETER A parameter was invalid.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
BcfgAdd(\r
IN UINTN Position,\r
IN CONST CHAR16 *File,\r
(VOID**)&FilePath);\r
}\r
if (EFI_ERROR (Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_HANDLE), gShellBcfgHiiHandle, L"bcfg", HandleNumber); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_HANDLE), gShellBcfgHiiHandle, L"bcfg", HandleNumber);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
} else {\r
|| ParentControllerHandleCount > 0\r
|| ChildControllerHandleCount > 0\r
|| !EFI_ERROR(Status) ) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Handle Number"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Handle Number");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
//\r
// If filename matched nothing fail\r
//\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellBcfgHiiHandle, L"bcfg", File); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellBcfgHiiHandle, L"bcfg", File);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else if (FileList->Link.ForwardLink != FileList->Link.BackLink) {\r
//\r
// If filename expanded to multiple names, fail\r
//\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE), gShellBcfgHiiHandle, L"bcfg", File); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE), gShellBcfgHiiHandle, L"bcfg", File);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Arg = (EFI_SHELL_FILE_INFO*)GetFirstNode(&FileList->Link);\r
if (EFI_ERROR(Arg->Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_OPEN), gShellBcfgHiiHandle, L"bcfg", File); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_OPEN), gShellBcfgHiiHandle, L"bcfg", File);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
//\r
DevicePath = gEfiShellProtocol->GetDevicePathFromFilePath(Arg->FullName);\r
if (DevicePath == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_DP), gShellBcfgHiiHandle, L"bcfg", Arg->FullName); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_DP), gShellBcfgHiiHandle, L"bcfg", Arg->FullName);\r
ShellStatus = SHELL_UNSUPPORTED;\r
} else {\r
if (UsePath) {\r
}\r
\r
if (TargetLocation == 0xFFFF) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_TARGET_NF), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_TARGET_NF), gShellBcfgHiiHandle, L"bcfg");\r
} else {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_TARGET), gShellBcfgHiiHandle, TargetLocation);\r
}\r
}\r
\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", OptionStr); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", OptionStr);\r
} else {\r
NewOrder = AllocateZeroPool ((OrderCount + 1) * sizeof (NewOrder[0]));\r
if (NewOrder != NULL) {\r
@retval SHELL_INVALID_PARAMETER A parameter was invalid.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
BcfgRemove(\r
IN CONST BCFG_OPERATION_TARGET Target,\r
IN CONST UINT16 *CurrentOrder,\r
0,\r
NULL);\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);\r
return (SHELL_INVALID_PARAMETER);\r
}\r
NewOrder = AllocateZeroPool(OrderCount*sizeof(CurrentOrder[0]));\r
Status = EFI_OUT_OF_RESOURCES;\r
}\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", Target == BcfgTargetBootOrder?(CHAR16*)L"BootOrder":(CHAR16*)L"DriverOrder"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", Target == BcfgTargetBootOrder?(CHAR16*)L"BootOrder":(CHAR16*)L"DriverOrder");\r
return (SHELL_INVALID_PARAMETER);\r
}\r
return (SHELL_SUCCESS);\r
@retval SHELL_INVALID_PARAMETER A parameter was invalid.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
BcfgMove(\r
IN CONST BCFG_OPERATION_TARGET Target,\r
IN CONST UINT16 *CurrentOrder,\r
FreePool(NewOrder);\r
\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", Target == BcfgTargetBootOrder?(CHAR16*)L"BootOrder":(CHAR16*)L"DriverOrder"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", Target == BcfgTargetBootOrder?(CHAR16*)L"BootOrder":(CHAR16*)L"DriverOrder");\r
return (SHELL_INVALID_PARAMETER);\r
}\r
return (SHELL_SUCCESS);\r
@retval SHELL_SUCCESS The operation was succesful.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
BcfgAddOpt(\r
IN CONST CHAR16 *OptData,\r
IN CONST UINT16 *CurrentOrder,\r
//\r
Status = ShellConvertStringToUint64(Walker, &Intermediate, FALSE, TRUE);\r
if (EFI_ERROR(Status) || (((UINT16)Intermediate) != Intermediate) || StrStr(Walker, L" ") == NULL || ((UINT16)Intermediate) > ((UINT16)OrderCount)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Option Index"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Option Index");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
return (ShellStatus);\r
}\r
}\r
\r
//\r
- // determine whether we have file with data, quote delimited information, or a hot-key \r
+ // determine whether we have file with data, quote delimited information, or a hot-key\r
//\r
if (Walker[0] == L'\"') {\r
//\r
//\r
Temp = StrStr(Walker+1, L"\"");\r
if (Temp == NULL || StrLen(Temp) != 1) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
FileName = StrnCatGrow(&FileName, NULL, Walker+1, 0);\r
if (FileName == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_OUT_OF_RESOURCES;\r
return (ShellStatus);\r
}\r
Temp2[0] = CHAR_NULL;\r
Temp2++;\r
if (StrLen(Temp2)>0) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
if (EFI_ERROR(ShellFileExists(Walker))) {\r
// filename\r
//\r
if (EFI_ERROR(ShellFileExists(Walker))) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FIND_FAIL), gShellBcfgHiiHandle, L"bcfg", Walker); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FIND_FAIL), gShellBcfgHiiHandle, L"bcfg", Walker);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
FileName = StrnCatGrow(&FileName, NULL, Walker, 0);\r
}\r
} else {\r
if (Target != BcfgTargetBootOrder) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_BOOT_ONLY), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_BOOT_ONLY), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
\r
//\r
Status = ShellConvertStringToUint64(Walker, &Intermediate, FALSE, TRUE);\r
if (EFI_ERROR(Status) || (((UINT32)Intermediate) != Intermediate) || StrStr(Walker, L" ") == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
NewKeyOption.KeyData.PackedValue = (UINT32)Intermediate;\r
\r
if (ShellStatus == SHELL_SUCCESS) {\r
//\r
- // Now we know how many EFI_INPUT_KEY structs we need to attach to the end of the EFI_KEY_OPTION struct. \r
+ // Now we know how many EFI_INPUT_KEY structs we need to attach to the end of the EFI_KEY_OPTION struct.\r
// Re-allocate with the added information.\r
//\r
- KeyOptionBuffer = AllocateCopyPool(sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount), &NewKeyOption);\r
+ KeyOptionBuffer = AllocatePool (sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount));\r
if (KeyOptionBuffer == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_OUT_OF_RESOURCES;\r
+ return ShellStatus;\r
}\r
+ CopyMem (KeyOptionBuffer, &NewKeyOption, sizeof(EFI_KEY_OPTION));\r
}\r
for (LoopCounter = 0 ; ShellStatus == SHELL_SUCCESS && LoopCounter < NewKeyOption.KeyData.Options.InputKeyCount; LoopCounter++) {\r
//\r
//\r
Status = ShellConvertStringToUint64(Walker, &Intermediate, FALSE, TRUE);\r
if (EFI_ERROR(Status) || (((UINT16)Intermediate) != Intermediate) || StrStr(Walker, L" ") == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
((EFI_INPUT_KEY*)(((UINT8*)KeyOptionBuffer) + sizeof(EFI_KEY_OPTION)))[LoopCounter].ScanCode = (UINT16)Intermediate;\r
//\r
Status = ShellConvertStringToUint64(Walker, &Intermediate, FALSE, TRUE);\r
if (EFI_ERROR(Status) || (((UINT16)Intermediate) != Intermediate)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
((EFI_INPUT_KEY*)(((UINT8*)KeyOptionBuffer) + sizeof(EFI_KEY_OPTION)))[LoopCounter].UnicodeChar = (UINT16)Intermediate;\r
KeyOptionBuffer->BootOption = CurrentOrder[OptionIndex];\r
Status = GetBootOptionCrc(&(KeyOptionBuffer->BootOptionCrc), KeyOptionBuffer->BootOption);\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Option Index"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Option Index");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
- } \r
+ }\r
}\r
\r
if (ShellStatus == SHELL_SUCCESS) {\r
sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount),\r
KeyOptionBuffer);\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
- } \r
+ }\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_VAR_NO_NUM), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_VAR_NO_NUM), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
ASSERT(FileName == NULL && Data == NULL);\r
}\r
Data = AllocateZeroPool((UINTN)Intermediate);\r
if (Data == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_OUT_OF_RESOURCES;\r
}\r
if (!EFI_ERROR(Status)) {\r
if (!EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS && Data != NULL) {\r
Status = UpdateOptionalData(CurrentOrder[OptionIndex], (UINTN)Intermediate, (UINT8*)Data, Target);\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
- } \r
+ }\r
}\r
if (EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
- } \r
+ }\r
}\r
\r
SHELL_FREE_NON_NULL(Data);\r
@retval SHELL_INVALID_PARAMETER A parameter was invalid.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
BcfgDisplayDump(\r
IN CONST CHAR16 *Op,\r
IN CONST UINTN OrderCount,\r
UINTN OptionalDataOffset;\r
\r
if (OrderCount == 0) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_BCFG_NONE), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_BCFG_NONE), gShellBcfgHiiHandle, L"bcfg");\r
return (SHELL_SUCCESS);\r
}\r
\r
}\r
\r
if (EFI_ERROR(Status) || Buffer == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_READ_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_READ_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);\r
++Errors;\r
goto Cleanup;\r
}\r
@param[in] Struct The stuct to initialize.\r
**/\r
VOID\r
-EFIAPI\r
InitBcfgStruct(\r
IN BGFG_OPERATION *Struct\r
)\r
Status = ShellCommandLineParse (ParamList, &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), gShellBcfgHiiHandle, L"bcfg", ProblemParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, L"bcfg", ProblemParam);\r
FreePool(ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
if (ShellCommandLineGetFlag(Package, L"-opt")) {\r
CurrentOperation.OptData = ShellCommandLineGetValue(Package, L"-opt");\r
if (CurrentOperation.OptData == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellBcfgHiiHandle, L"bcfg", L"-opt"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellBcfgHiiHandle, L"bcfg", L"-opt");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
CurrentOperation.Type = BcfgTypeOpt;\r
if ((ShellCommandLineGetCount(Package) < 3 && CurrentOperation.Type != BcfgTypeOpt) ||\r
(ShellCommandLineGetCount(Package) < 2 && CurrentOperation.Type == BcfgTypeOpt)\r
){\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)ShellCommandLineGetRawValue(Package, 1), L"driver") == 0) {\r
CurrentOperation.Target = BcfgTargetDriverOrder;\r
} else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)ShellCommandLineGetRawValue(Package, 1), L"boot") == 0) {\r
CurrentOperation.Target = BcfgTargetBootOrder;\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_DRIVER_BOOT), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_DRIVER_BOOT), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
} else if (ShellCommandLineGetFlag(Package, L"-v")) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"-v (without dump)"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"-v (without dump)");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"add") == 0) {\r
if ((ParamNumber + 3) >= ShellCommandLineGetCount(Package)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
CurrentOperation.Type = BcfgTypeAdd;\r
CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
}\r
} else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"addp") == 0) {\r
if ((ParamNumber + 3) >= ShellCommandLineGetCount(Package)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
CurrentOperation.Type = BcfgTypeAddp;\r
CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
}\r
} else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"addh") == 0) {\r
if ((ParamNumber + 3) >= ShellCommandLineGetCount(Package)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
CurrentOperation.Type = BcfgTypeAddh;\r
CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
CurrentOperation.Number1 = (UINT16)Intermediate;\r
CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
}\r
} else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"rm") == 0) {\r
if ((ParamNumber + 1) >= ShellCommandLineGetCount(Package)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
CurrentOperation.Type = BcfgTypeRm;\r
CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
CurrentOperation.Number1 = (UINT16)Intermediate;\r
if (CurrentOperation.Number1 >= Count){\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
}\r
} else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"mv") == 0) {\r
if ((ParamNumber + 2) >= ShellCommandLineGetCount(Package)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
CurrentOperation.Type = BcfgTypeMv;\r
CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
CurrentOperation.Number1 = (UINT16)Intermediate;\r
if (CurrentOperation.Number1 >= Count){\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
if (CurrentOperation.Number2 == CurrentOperation.Number1\r
||CurrentOperation.Number2 >= Count\r
){\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else if (gUnicodeCollation->StriColl (gUnicodeCollation, (CHAR16*)CurrentParam, L"mod") == 0) {\r
+ if ((ParamNumber + 2) >= ShellCommandLineGetCount (Package)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ CurrentOperation.Type = BcfgTypeMod;\r
+ CurrentParam = ShellCommandLineGetRawValue (Package, ++ParamNumber);\r
+ if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber (CurrentParam, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ Status = ShellConvertStringToUint64 (CurrentParam, &Intermediate, TRUE, FALSE);\r
+ CurrentOperation.Number1 = (UINT16)Intermediate;\r
+ if (CurrentOperation.Number1 >= Count) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ ASSERT (CurrentOperation.Description == NULL);\r
+ CurrentOperation.Description = StrnCatGrow (&CurrentOperation.Description, NULL, ShellCommandLineGetRawValue (Package, ++ParamNumber), 0);\r
+ }\r
+ }\r
+ }\r
+ } else if (gUnicodeCollation->StriColl (gUnicodeCollation, (CHAR16*)CurrentParam, L"modf") == 0) {\r
+ if ((ParamNumber + 2) >= ShellCommandLineGetCount (Package)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ CurrentOperation.Type = BcfgTypeModf;\r
+ CurrentParam = ShellCommandLineGetRawValue (Package, ++ParamNumber);\r
+ if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber (CurrentParam, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ Status = ShellConvertStringToUint64 (CurrentParam, &Intermediate, TRUE, FALSE);\r
+ CurrentOperation.Number1 = (UINT16)Intermediate;\r
+ if (CurrentOperation.Number1 >= Count) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ ASSERT (CurrentOperation.FileName == NULL);\r
+ CurrentOperation.FileName = StrnCatGrow (&CurrentOperation.FileName, NULL, ShellCommandLineGetRawValue (Package, ++ParamNumber), 0);\r
+ }\r
+ }\r
+ }\r
+ } else if (gUnicodeCollation->StriColl (gUnicodeCollation, (CHAR16*)CurrentParam, L"modp") == 0) {\r
+ if ((ParamNumber + 2) >= ShellCommandLineGetCount (Package)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ CurrentOperation.Type = BcfgTypeModp;\r
+ CurrentParam = ShellCommandLineGetRawValue (Package, ++ParamNumber);\r
+ if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber (CurrentParam, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ Status = ShellConvertStringToUint64 (CurrentParam, &Intermediate, TRUE, FALSE);\r
+ CurrentOperation.Number1 = (UINT16)Intermediate;\r
+ if (CurrentOperation.Number1 >= Count) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ ASSERT (CurrentOperation.FileName == NULL);\r
+ CurrentOperation.FileName = StrnCatGrow (&CurrentOperation.FileName, NULL, ShellCommandLineGetRawValue (Package, ++ParamNumber), 0);\r
+ }\r
+ }\r
+ }\r
+ } else if (gUnicodeCollation->StriColl (gUnicodeCollation, (CHAR16*)CurrentParam, L"modh") == 0) {\r
+ if ((ParamNumber + 2) >= ShellCommandLineGetCount (Package)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ CurrentOperation.Type = BcfgTypeModh;\r
+ CurrentParam = ShellCommandLineGetRawValue (Package, ++ParamNumber);\r
+ if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber (CurrentParam, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ }\r
+ else {\r
+ Status = ShellConvertStringToUint64 (CurrentParam, &Intermediate, TRUE, FALSE);\r
+ CurrentOperation.Number1 = (UINT16)Intermediate;\r
+ if (CurrentOperation.Number1 >= Count) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ CurrentParam = ShellCommandLineGetRawValue (Package, ++ParamNumber);\r
+ if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber (CurrentParam, TRUE, FALSE)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ Status = ShellConvertStringToUint64 (CurrentParam, &Intermediate, TRUE, FALSE);\r
+ CurrentOperation.HandleIndex = (UINT16)Intermediate;\r
+ }\r
}\r
}\r
}\r
} else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
}\r
(BOOLEAN)(CurrentOperation.Type == BcfgTypeAddp),\r
CurrentOperation.HandleIndex);\r
break;\r
+ case BcfgTypeMod:\r
+ case BcfgTypeModf:\r
+ case BcfgTypeModp:\r
+ case BcfgTypeModh:\r
+ ShellStatus = BcfgMod (&CurrentOperation, Count);\r
+ break;\r
case BcfgTypeOpt:\r
ShellStatus = BcfgAddOpt(\r
CurrentOperation.OptData,\r