summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ShellPkg/Application/Shell/ShellProtocol.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/ShellPkg/Application/Shell/ShellProtocol.c b/ShellPkg/Application/Shell/ShellProtocol.c
index 347e162..b3b8acc 100644
--- a/ShellPkg/Application/Shell/ShellProtocol.c
+++ b/ShellPkg/Application/Shell/ShellProtocol.c
@@ -3463,40 +3463,40 @@ InternalSetAlias(
{
EFI_STATUS Status;
CHAR16 *AliasLower;
+ BOOLEAN DeleteAlias;
- // Convert to lowercase to make aliases case-insensitive
- if (Alias != NULL) {
- AliasLower = AllocateCopyPool (StrSize (Alias), Alias);
- if (AliasLower == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
- ToLower (AliasLower);
- } else {
- AliasLower = NULL;
- }
-
- //
- // We must be trying to remove one if Alias is NULL
- //
+ DeleteAlias = FALSE;
if (Alias == NULL) {
//
+ // We must be trying to remove one if Alias is NULL
// remove an alias (but passed in COMMAND parameter)
//
- Status = (gRT->SetVariable((CHAR16*)Command, &gShellAliasGuid, 0, 0, NULL));
- } else {
- //
- // Add and replace are the same
- //
-
- // We dont check the error return on purpose since the variable may not exist.
- gRT->SetVariable((CHAR16*)Command, &gShellAliasGuid, 0, 0, NULL);
+ Alias = Command;
+ DeleteAlias = TRUE;
+ }
+ ASSERT (Alias != NULL);
- Status = (gRT->SetVariable((CHAR16*)Alias, &gShellAliasGuid, EFI_VARIABLE_BOOTSERVICE_ACCESS|(Volatile?0:EFI_VARIABLE_NON_VOLATILE), StrSize(Command), (VOID*)Command));
+ //
+ // Convert to lowercase to make aliases case-insensitive
+ //
+ AliasLower = AllocateCopyPool (StrSize (Alias), Alias);
+ if (AliasLower == NULL) {
+ return EFI_OUT_OF_RESOURCES;
}
+ ToLower (AliasLower);
- if (Alias != NULL) {
- FreePool (AliasLower);
+ if (DeleteAlias) {
+ Status = gRT->SetVariable (AliasLower, &gShellAliasGuid, 0, 0, NULL);
+ } else {
+ Status = gRT->SetVariable (
+ AliasLower, &gShellAliasGuid,
+ EFI_VARIABLE_BOOTSERVICE_ACCESS | (Volatile ? 0 : EFI_VARIABLE_NON_VOLATILE),
+ StrSize (Command), (VOID *) Command
+ );
}
+
+ FreePool (AliasLower);
+
return Status;
}