]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellLib/UefiShellLib.c
fixing build errors
[mirror_edk2.git] / ShellPkg / Library / UefiShellLib / UefiShellLib.c
index 20805725fcec08578277bbdb393c6991d75449e5..7b7533a32739ec92fcb4e066aef914148f49077d 100644 (file)
@@ -79,9 +79,7 @@ ShellFindSE2 (
   //\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
@@ -113,9 +111,7 @@ ShellFindSE2 (
                                    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
@@ -1484,9 +1480,13 @@ InternalIsOnCheckList (
   //\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
@@ -1767,7 +1767,10 @@ ShellCommandLineFreeVarList (
   //\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
@@ -1835,12 +1838,22 @@ ShellCommandLineGetFlag (
   //\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
@@ -1879,12 +1892,28 @@ ShellCommandLineGetValue (
   //\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
@@ -1981,7 +2010,7 @@ CopyReplace(
   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