//\r
// look for the mEfiShellEnvironment2 protocol at a higher level\r
//\r
- if (EFI_ERROR (Status) || !(CompareGuid (&mEfiShellEnvironment2->SESGuid, &gEfiShellEnvironment2ExtGuid) != FALSE &&\r
- (mEfiShellEnvironment2->MajorVersion > EFI_SHELL_MAJOR_VER ||\r
- (mEfiShellEnvironment2->MajorVersion == EFI_SHELL_MAJOR_VER && mEfiShellEnvironment2->MinorVersion >= EFI_SHELL_MINOR_VER)))) {\r
+ if (EFI_ERROR (Status) || !(CompareGuid (&mEfiShellEnvironment2->SESGuid, &gEfiShellEnvironment2ExtGuid) != FALSE)){\r
//\r
// figure out how big of a buffer we need.\r
//\r
NULL,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
);\r
- if (CompareGuid (&mEfiShellEnvironment2->SESGuid, &gEfiShellEnvironment2ExtGuid) != FALSE &&\r
- (mEfiShellEnvironment2->MajorVersion > EFI_SHELL_MAJOR_VER ||\r
- (mEfiShellEnvironment2->MajorVersion == EFI_SHELL_MAJOR_VER && mEfiShellEnvironment2->MinorVersion >= EFI_SHELL_MINOR_VER))) {\r
+ if (CompareGuid (&mEfiShellEnvironment2->SESGuid, &gEfiShellEnvironment2ExtGuid) != FALSE) {\r
mEfiShellEnvironment2Handle = Buffer[HandleIndex];\r
Status = EFI_SUCCESS;\r
break;\r
//\r
for (TempListItem = (SHELL_PARAM_ITEM*)CheckList ; TempListItem->Name != NULL ; TempListItem++) {\r
//\r
- // If the Name matches set the type and return TRUE\r
+ // If the Type is TypeStart only check the first characters of the passed in param\r
+ // If it matches set the type and return TRUE\r
//\r
- if (StrCmp(Name, TempListItem->Name) == 0) {\r
+ if (TempListItem->Type == TypeStart && StrnCmp(Name, TempListItem->Name, StrLen(TempListItem->Name)) == 0) {\r
+ *Type = TempListItem->Type;\r
+ return (TRUE);\r
+ } else if (StrCmp(Name, TempListItem->Name) == 0) {\r
*Type = TempListItem->Type;\r
return (TRUE);\r
}\r
//\r
// for each node in the list\r
//\r
- for (Node = GetFirstNode(CheckPackage); Node != CheckPackage ; Node = GetFirstNode(CheckPackage)) {\r
+ for ( Node = GetFirstNode(CheckPackage)\r
+ ; Node != CheckPackage \r
+ ; Node = GetFirstNode(CheckPackage)\r
+ ){\r
//\r
// Remove it from the list\r
//\r
//\r
// enumerate through the list of parametrs\r
//\r
- for (Node = GetFirstNode(CheckPackage) ; !IsNull (CheckPackage, Node) ; Node = GetNextNode(CheckPackage, Node) ) {\r
+ for ( Node = GetFirstNode(CheckPackage) \r
+ ; !IsNull (CheckPackage, Node) \r
+ ; Node = GetNextNode(CheckPackage, Node) \r
+ ){\r
//\r
// If the Name matches, return TRUE (and there may be NULL name)\r
//\r
if (((SHELL_PARAM_PACKAGE*)Node)->Name != NULL) {\r
- if (StrCmp(KeyString, ((SHELL_PARAM_PACKAGE*)Node)->Name) == 0) {\r
+ //\r
+ // If Type is TypeStart then only compare the begining of the strings\r
+ //\r
+ if ( ((SHELL_PARAM_PACKAGE*)Node)->Type == TypeStart \r
+ && StrnCmp(KeyString, ((SHELL_PARAM_PACKAGE*)Node)->Name, StrLen(KeyString)) == 0\r
+ ){\r
+ return (TRUE);\r
+ } else if (StrCmp(KeyString, ((SHELL_PARAM_PACKAGE*)Node)->Name) == 0) {\r
return (TRUE);\r
}\r
}\r
//\r
// enumerate through the list of parametrs\r
//\r
- for (Node = GetFirstNode(CheckPackage) ; !IsNull (CheckPackage, Node) ; Node = GetNextNode(CheckPackage, Node) ) {\r
+ for ( Node = GetFirstNode(CheckPackage) \r
+ ; !IsNull (CheckPackage, Node) \r
+ ; Node = GetNextNode(CheckPackage, Node) \r
+ ){\r
//\r
// If the Name matches, return the value (name can be NULL)\r
//\r
if (((SHELL_PARAM_PACKAGE*)Node)->Name != NULL) {\r
- if (StrCmp(KeyString, ((SHELL_PARAM_PACKAGE*)Node)->Name) == 0) {\r
+ //\r
+ // If Type is TypeStart then only compare the begining of the strings\r
+ //\r
+ if ( ((SHELL_PARAM_PACKAGE*)Node)->Type == TypeStart \r
+ && StrnCmp(KeyString, ((SHELL_PARAM_PACKAGE*)Node)->Name, StrLen(KeyString)) == 0\r
+ ){\r
+ //\r
+ // return the string part after the flag\r
+ //\r
+ return (((SHELL_PARAM_PACKAGE*)Node)->Name + StrLen(KeyString));\r
+ } else if (StrCmp(KeyString, ((SHELL_PARAM_PACKAGE*)Node)->Name) == 0) {\r
+ //\r
+ // return the value\r
+ //\r
return (((SHELL_PARAM_PACKAGE*)Node)->Value);\r
}\r
}\r
while (*SourceString != L'\0') {\r
if (StrnCmp(SourceString, FindTarget, StrLen(FindTarget)) == 0) {\r
SourceString += StrLen(FindTarget);\r
- if (StrSize(NewString) + (StrLen(ReplaceWith)*sizeof(CHAR16)) > NewSize) {\r
+ if ((StrSize(NewString) + (StrLen(ReplaceWith)*sizeof(CHAR16))) > NewSize) {\r
return (EFI_BUFFER_TOO_SMALL);\r
}\r
StrCat(NewString, ReplaceWith);\r