+/**\r
+ Fix a string to only have the file name, removing starting at the first space of whatever is quoted.\r
+\r
+ @param[in] FileName The filename to start with.\r
+\r
+ @retval NULL FileName was invalid.\r
+ @return The modified FileName.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+FixFileName (\r
+ IN CHAR16 *FileName\r
+ )\r
+{\r
+ CHAR16 *Copy;\r
+ CHAR16 *TempLocation;\r
+\r
+ if (FileName == NULL) {\r
+ return (NULL);\r
+ }\r
+\r
+ if (FileName[0] == L'\"') {\r
+ Copy = FileName+1;\r
+ if ((TempLocation = StrStr(Copy , L"\"")) != NULL) {\r
+ TempLocation[0] = CHAR_NULL;\r
+ } \r
+ } else {\r
+ Copy = FileName;\r
+ while(Copy[0] == L' ') {\r
+ Copy++;\r
+ }\r
+ if ((TempLocation = StrStr(Copy , L" ")) != NULL) {\r
+ TempLocation[0] = CHAR_NULL;\r
+ } \r
+ }\r
+\r
+ if (Copy[0] == CHAR_NULL) {\r
+ return (NULL);\r
+ }\r
+\r
+ return (Copy);\r
+}\r
+\r
+/**\r
+ Fix a string to only have the environment variable name, removing starting at the first space of whatever is quoted and removing the leading and trailing %.\r
+\r
+ @param[in] FileName The filename to start with.\r
+\r
+ @retval NULL FileName was invalid.\r
+ @return The modified FileName.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+FixVarName (\r
+ IN CHAR16 *FileName\r
+ )\r
+{\r
+ CHAR16 *Copy;\r
+ CHAR16 *TempLocation;\r
+\r
+ Copy = FileName;\r
+\r
+ if (FileName[0] == L'%') {\r
+ Copy = FileName+1;\r
+ if ((TempLocation = StrStr(Copy , L"%")) != NULL) {\r
+ TempLocation[0] = CHAR_NULL;\r
+ } \r
+ }\r
+\r
+ return (FixFileName(Copy));\r
+}\r
+\r
+/**\r
+ Remove the unicode file tag from the begining of the file buffer since that will not be\r
+ used by StdIn.\r
+ \r
+ @param[in] Handle Pointer to the handle of the file to be processed.\r
+ \r
+ @retval EFI_SUCCESS The unicode file tag has been moved successfully.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+RemoveFileTag(\r
+ IN SHELL_FILE_HANDLE *Handle\r
+ )\r
+{\r
+ UINTN CharSize;\r
+ CHAR16 CharBuffer;\r
+\r
+ CharSize = sizeof(CHAR16);\r
+ CharBuffer = 0;\r
+ gEfiShellProtocol->ReadFile(*Handle, &CharSize, &CharBuffer);\r
+ if (CharBuffer != gUnicodeFileTag) {\r
+ gEfiShellProtocol->SetFilePosition(*Handle, 0);\r
+ }\r
+ return (EFI_SUCCESS);\r
+}\r
+\r