mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 03:03:46 +01:00 
			
		
		
		
	ShellPkg: Refactor Split search to generic function
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jaben Carsey <Jaben.carsey@intel.com> Signed-off-by: Joe Peterson <joe.peterson@intel.com> Reviewed-by: Shumin Qiu <shumin.qiu@intel.com> Reviewed-by: Tapan Shah <tapandshah@hp.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16681 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		
							parent
							
								
									a35ecb7584
								
							
						
					
					
						commit
						00534bc3e2
					
				| @ -189,33 +189,6 @@ IsValidEnvironmentVariableName( | ||||
|   return TRUE; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Find a command line contains a split operation | ||||
| 
 | ||||
|   @param[in] CmdLine      The command line to parse. | ||||
| 
 | ||||
|   @retval                 A pointer to the | character in CmdLine or NULL if not present. | ||||
| **/ | ||||
| CONST CHAR16* | ||||
| EFIAPI | ||||
| FindSplit( | ||||
|   IN CONST CHAR16 *CmdLine | ||||
|   ) | ||||
| { | ||||
|   CONST CHAR16 *TempSpot; | ||||
|   TempSpot = NULL; | ||||
|   if (StrStr(CmdLine, L"|") != NULL) { | ||||
|     for (TempSpot = CmdLine ; TempSpot != NULL && *TempSpot != CHAR_NULL ; TempSpot++) { | ||||
|       if (*TempSpot == L'^' && *(TempSpot+1) == L'|') { | ||||
|         TempSpot++; | ||||
|       } else if (*TempSpot == L'|') { | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   return (TempSpot); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Determine if a command line contains a split operation | ||||
| 
 | ||||
| @ -236,7 +209,7 @@ ContainsSplit( | ||||
| 
 | ||||
|   FirstQuote    = FindNextInstance (CmdLine, L"\"", TRUE); | ||||
|   SecondQuote   = NULL; | ||||
|   TempSpot      = FindSplit(CmdLine); | ||||
|   TempSpot      = FindFirstCharacter(CmdLine, L"|", L'^'); | ||||
| 
 | ||||
|   if (FirstQuote == NULL    ||  | ||||
|       TempSpot == NULL      ||  | ||||
| @ -259,7 +232,7 @@ ContainsSplit( | ||||
|       continue; | ||||
|     } else { | ||||
|       FirstQuote = FindNextInstance (SecondQuote + 1, L"\"", TRUE); | ||||
|       TempSpot = FindSplit(TempSpot + 1); | ||||
|       TempSpot = FindFirstCharacter(TempSpot + 1, L"|", L'^'); | ||||
|       continue; | ||||
|     }  | ||||
|   } | ||||
| @ -1919,7 +1892,7 @@ VerifySplit( | ||||
|   //
 | ||||
|   // recurse to verify the next item
 | ||||
|   //
 | ||||
|   TempSpot = FindSplit(CmdLine)+1; | ||||
|   TempSpot = FindFirstCharacter(CmdLine, L"|", L'^') + 1; | ||||
|   return (VerifySplit(TempSpot)); | ||||
| } | ||||
| 
 | ||||
| @ -2921,3 +2894,38 @@ RunScriptFile ( | ||||
| 
 | ||||
|   return (Status); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Return the pointer to the first occurance of any character from a list of characters | ||||
| 
 | ||||
|   @param[in] String           the string to parse | ||||
|   @param[in] CharacterList    the list of character to look for | ||||
|   @param[in] EscapeCharacter  An escape character to skip | ||||
| 
 | ||||
|   @return the location of the first character in the string | ||||
|   @retval CHAR_NULL no instance of any character in CharacterList was found in String | ||||
| **/ | ||||
| CONST CHAR16* | ||||
| EFIAPI | ||||
| FindFirstCharacter( | ||||
|   IN CONST CHAR16 *String, | ||||
|   IN CONST CHAR16 *CharacterList, | ||||
|   IN CONST CHAR16 EscapeCharacter | ||||
|   ) | ||||
| { | ||||
|   UINT32 WalkChar; | ||||
|   UINT32 WalkStr; | ||||
| 
 | ||||
|   for (WalkStr = 0; WalkStr < StrLen(String); WalkStr++) { | ||||
|     if (String[WalkStr] == EscapeCharacter) { | ||||
|       WalkStr++; | ||||
|       continue; | ||||
|     } | ||||
|     for (WalkChar = 0; WalkChar < StrLen(CharacterList); WalkChar++) { | ||||
|       if (String[WalkStr] == CharacterList[WalkChar]) { | ||||
|         return (&String[WalkStr]); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   return (String + StrLen(String)); | ||||
| } | ||||
| @ -2,7 +2,7 @@ | ||||
|   function definitions for internal to shell functions. | ||||
| 
 | ||||
|   (C) Copyright 2014, Hewlett-Packard Development Company, L.P. | ||||
|   Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR> | ||||
|   Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR> | ||||
|   This program and the accompanying materials | ||||
|   are licensed and made available under the terms and conditions of the BSD License | ||||
|   which accompanies this distribution.  The full text of the license may be found at | ||||
| @ -342,6 +342,23 @@ RunScriptFile ( | ||||
|   IN EFI_SHELL_PARAMETERS_PROTOCOL  *ParamProtocol | ||||
|   ); | ||||
| 
 | ||||
| /**
 | ||||
|   Return the pointer to the first occurance of any character from a list of characters | ||||
| 
 | ||||
|   @param[in] String           the string to parse | ||||
|   @param[in] CharacterList    the list of character to look for | ||||
|   @param[in] EscapeCharacter  An escape character to skip | ||||
| 
 | ||||
|   @return the location of the first character in the string | ||||
|   @retval CHAR_NULL no instance of any character in CharacterList was found in String | ||||
| **/ | ||||
| CONST CHAR16* | ||||
| EFIAPI | ||||
| FindFirstCharacter( | ||||
|   IN CONST CHAR16 *String, | ||||
|   IN CONST CHAR16 *CharacterList, | ||||
|   IN CONST CHAR16 EscapeCharacter | ||||
|   ); | ||||
| 
 | ||||
| #endif //_SHELL_INTERNAL_HEADER_
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user