#include "Shell.h"\r
#include "FileHandleInternal.h"\r
\r
-#define MEM_WRITE_REALLOC_OVERHEAD 1024\r
+#define MEM_WRITE_REALLOC_OVERHEAD 1024\r
\r
/**\r
File style interface for console (Open).\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceOpenNotFound(\r
- IN EFI_FILE_PROTOCOL *This,\r
- OUT EFI_FILE_PROTOCOL **NewHandle,\r
- IN CHAR16 *FileName,\r
- IN UINT64 OpenMode,\r
- IN UINT64 Attributes\r
+FileInterfaceOpenNotFound (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ OUT EFI_FILE_PROTOCOL **NewHandle,\r
+ IN CHAR16 *FileName,\r
+ IN UINT64 OpenMode,\r
+ IN UINT64 Attributes\r
)\r
{\r
return (EFI_NOT_FOUND);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceNopGeneric(\r
- IN EFI_FILE_PROTOCOL *This\r
+FileInterfaceNopGeneric (\r
+ IN EFI_FILE_PROTOCOL *This\r
)\r
{\r
return (EFI_SUCCESS);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceNopGetPosition(\r
- IN EFI_FILE_PROTOCOL *This,\r
- OUT UINT64 *Position\r
+FileInterfaceNopGetPosition (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ OUT UINT64 *Position\r
)\r
{\r
return (EFI_UNSUPPORTED);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceNopSetPosition(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN UINT64 Position\r
+FileInterfaceNopSetPosition (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN UINT64 Position\r
)\r
{\r
return (EFI_UNSUPPORTED);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceNopGetInfo(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN EFI_GUID *InformationType,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceNopGetInfo (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN EFI_GUID *InformationType,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
return (EFI_UNSUPPORTED);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceNopSetInfo(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN EFI_GUID *InformationType,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceNopSetInfo (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN EFI_GUID *InformationType,\r
+ IN UINTN BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
return (EFI_UNSUPPORTED);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceStdOutWrite(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceStdOutWrite (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
if (ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleOut) {\r
return (EFI_UNSUPPORTED);\r
}\r
+\r
if (*((CHAR16 *)Buffer) == gUnicodeFileTag) {\r
- return (gST->ConOut->OutputString(gST->ConOut, (CHAR16 *)Buffer + 1));\r
+ return (gST->ConOut->OutputString (gST->ConOut, (CHAR16 *)Buffer + 1));\r
}\r
- return (gST->ConOut->OutputString(gST->ConOut, Buffer));\r
+\r
+ return (gST->ConOut->OutputString (gST->ConOut, Buffer));\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceStdInWrite(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceStdInWrite (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
return (EFI_UNSUPPORTED);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceStdErrWrite(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceStdErrWrite (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
- return (gST->StdErr->OutputString(gST->StdErr, Buffer));\r
+ return (gST->StdErr->OutputString (gST->StdErr, Buffer));\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceStdOutRead(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceStdOutRead (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
return (EFI_UNSUPPORTED);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceStdErrRead(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceStdErrRead (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
return (EFI_UNSUPPORTED);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceNulRead(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceNulRead (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
*BufferSize = 0;\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceNulWrite(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceNulWrite (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
return (EFI_SUCCESS);\r
IN CONST UINTN BufferSize,\r
IN OUT EFI_SHELL_FILE_INFO **TabCompletionList,\r
IN OUT UINTN *TabUpdatePos\r
-)\r
+ )\r
{\r
- BOOLEAN InQuotation;\r
- UINTN TabPos;\r
- UINTN Index;\r
- CONST CHAR16 *Cwd;\r
- EFI_STATUS Status;\r
- CHAR16 *TabStr;\r
- EFI_SHELL_FILE_INFO *FileList;\r
- EFI_SHELL_FILE_INFO *FileInfo;\r
- EFI_SHELL_FILE_INFO *TempFileInfo;\r
+ BOOLEAN InQuotation;\r
+ UINTN TabPos;\r
+ UINTN Index;\r
+ CONST CHAR16 *Cwd;\r
+ EFI_STATUS Status;\r
+ CHAR16 *TabStr;\r
+ EFI_SHELL_FILE_INFO *FileList;\r
+ EFI_SHELL_FILE_INFO *FileInfo;\r
+ EFI_SHELL_FILE_INFO *TempFileInfo;\r
\r
//\r
// Allocate buffers\r
InQuotation = FALSE;\r
for (Index = 0; Index < StringLen; Index++) {\r
switch (InputString[Index]) {\r
- case L'\"':\r
- InQuotation = (BOOLEAN) (!InQuotation);\r
- break;\r
+ case L'\"':\r
+ InQuotation = (BOOLEAN)(!InQuotation);\r
+ break;\r
\r
- case L' ':\r
- if (!InQuotation) {\r
- TabPos = Index + 1;\r
- *TabUpdatePos = TabPos;\r
- }\r
- break;\r
+ case L' ':\r
+ if (!InQuotation) {\r
+ TabPos = Index + 1;\r
+ *TabUpdatePos = TabPos;\r
+ }\r
+\r
+ break;\r
\r
- case L':':\r
+ case L':':\r
//\r
// handle the case "fs0:<TAB>"\r
// Update the TabUpdatePos as well.\r
//\r
- case L'\\':\r
- *TabUpdatePos = Index + 1;\r
- break;\r
+ case L'\\':\r
+ *TabUpdatePos = Index + 1;\r
+ break;\r
\r
- default:\r
- break;\r
+ default:\r
+ break;\r
}\r
}\r
\r
}\r
}\r
}\r
+\r
StrnCatS (TabStr, (BufferSize) / sizeof (CHAR16), InputString + TabPos, StringLen - TabPos);\r
StrnCatS (TabStr, (BufferSize) / sizeof (CHAR16), L"*", (BufferSize) / sizeof (CHAR16) - 1 - StrLen (TabStr));\r
- Status = ShellInfoObject.NewEfiShellProtocol->FindFiles(TabStr, &FileList);\r
+ Status = ShellInfoObject.NewEfiShellProtocol->FindFiles (TabStr, &FileList);\r
\r
//\r
// Filter out the non-directory for "CD" command\r
// Filter "." and ".." for all\r
//\r
- if (!EFI_ERROR (Status) && FileList != NULL) {\r
+ if (!EFI_ERROR (Status) && (FileList != NULL)) {\r
//\r
// Skip the spaces in the beginning\r
//\r
InputString++;\r
}\r
\r
- for (FileInfo = (EFI_SHELL_FILE_INFO *) GetFirstNode (&FileList->Link); !IsNull (&FileList->Link, &FileInfo->Link); ) {\r
+ for (FileInfo = (EFI_SHELL_FILE_INFO *)GetFirstNode (&FileList->Link); !IsNull (&FileList->Link, &FileInfo->Link); ) {\r
if (((StrCmp (FileInfo->FileName, L".") == 0) || (StrCmp (FileInfo->FileName, L"..") == 0)) ||\r
- (((InputString[0] == L'c' || InputString[0] == L'C') && (InputString[1] == L'd' || InputString[1] == L'D')) &&\r
- (ShellIsDirectory (FileInfo->FullName) != EFI_SUCCESS))) {\r
+ ((((InputString[0] == L'c') || (InputString[0] == L'C')) && ((InputString[1] == L'd') || (InputString[1] == L'D'))) &&\r
+ (ShellIsDirectory (FileInfo->FullName) != EFI_SUCCESS)))\r
+ {\r
TempFileInfo = FileInfo;\r
- FileInfo = (EFI_SHELL_FILE_INFO *) RemoveEntryList (&FileInfo->Link);\r
+ FileInfo = (EFI_SHELL_FILE_INFO *)RemoveEntryList (&FileInfo->Link);\r
InternalFreeShellFileInfoNode (TempFileInfo);\r
} else {\r
- FileInfo = (EFI_SHELL_FILE_INFO *) GetNextNode (&FileList->Link, &FileInfo->Link);\r
+ FileInfo = (EFI_SHELL_FILE_INFO *)GetNextNode (&FileList->Link, &FileInfo->Link);\r
}\r
}\r
}\r
\r
- if (FileList != NULL && !IsListEmpty (&FileList->Link)) {\r
+ if ((FileList != NULL) && !IsListEmpty (&FileList->Link)) {\r
Status = EFI_SUCCESS;\r
} else {\r
ShellInfoObject.NewEfiShellProtocol->FreeFileList (&FileList);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceStdInRead(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceStdInRead (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
- CHAR16 *CurrentString;\r
- BOOLEAN Done;\r
- UINTN TabUpdatePos; // Start index of the string updated by TAB stroke\r
- UINTN Column; // Column of current cursor\r
- UINTN Row; // Row of current cursor\r
- UINTN StartColumn; // Column at the beginning of the line\r
- UINTN Update; // Line index for update\r
- UINTN Delete; // Num of chars to delete from console after update\r
- UINTN StringLen; // Total length of the line\r
- UINTN StringCurPos; // Line index corresponding to the cursor\r
- UINTN MaxStr; // Maximum possible line length\r
- UINTN TotalColumn; // Num of columns in the console\r
- UINTN TotalRow; // Num of rows in the console\r
- UINTN SkipLength;\r
- UINTN OutputLength; // Length of the update string\r
- UINTN TailRow; // Row of end of line\r
- UINTN TailColumn; // Column of end of line\r
- EFI_INPUT_KEY Key;\r
-\r
- BUFFER_LIST *LinePos;\r
- BUFFER_LIST *NewPos;\r
- BOOLEAN InScrolling;\r
- EFI_STATUS Status;\r
- BOOLEAN InTabScrolling; // Whether in TAB-completion state\r
- EFI_SHELL_FILE_INFO *TabCompleteList;\r
- EFI_SHELL_FILE_INFO *TabCurrent;\r
- UINTN EventIndex;\r
- CHAR16 *TabOutputStr;\r
+ CHAR16 *CurrentString;\r
+ BOOLEAN Done;\r
+ UINTN TabUpdatePos; // Start index of the string updated by TAB stroke\r
+ UINTN Column; // Column of current cursor\r
+ UINTN Row; // Row of current cursor\r
+ UINTN StartColumn; // Column at the beginning of the line\r
+ UINTN Update; // Line index for update\r
+ UINTN Delete; // Num of chars to delete from console after update\r
+ UINTN StringLen; // Total length of the line\r
+ UINTN StringCurPos; // Line index corresponding to the cursor\r
+ UINTN MaxStr; // Maximum possible line length\r
+ UINTN TotalColumn; // Num of columns in the console\r
+ UINTN TotalRow; // Num of rows in the console\r
+ UINTN SkipLength;\r
+ UINTN OutputLength; // Length of the update string\r
+ UINTN TailRow; // Row of end of line\r
+ UINTN TailColumn; // Column of end of line\r
+ EFI_INPUT_KEY Key;\r
+\r
+ BUFFER_LIST *LinePos;\r
+ BUFFER_LIST *NewPos;\r
+ BOOLEAN InScrolling;\r
+ EFI_STATUS Status;\r
+ BOOLEAN InTabScrolling; // Whether in TAB-completion state\r
+ EFI_SHELL_FILE_INFO *TabCompleteList;\r
+ EFI_SHELL_FILE_INFO *TabCurrent;\r
+ UINTN EventIndex;\r
+ CHAR16 *TabOutputStr;\r
\r
//\r
// If buffer is not large enough to hold a CHAR16, return minimum buffer size\r
return (EFI_BUFFER_TOO_SMALL);\r
}\r
\r
- Done = FALSE;\r
- CurrentString = Buffer;\r
- StringLen = 0;\r
- StringCurPos = 0;\r
- OutputLength = 0;\r
- Update = 0;\r
- Delete = 0;\r
- LinePos = NewPos = (BUFFER_LIST*)(&ShellInfoObject.ViewingSettings.CommandHistory);\r
- InScrolling = FALSE;\r
- InTabScrolling = FALSE;\r
- Status = EFI_SUCCESS;\r
- TabOutputStr = NULL;\r
- TabUpdatePos = 0;\r
- TabCompleteList = NULL;\r
- TabCurrent = NULL;\r
+ Done = FALSE;\r
+ CurrentString = Buffer;\r
+ StringLen = 0;\r
+ StringCurPos = 0;\r
+ OutputLength = 0;\r
+ Update = 0;\r
+ Delete = 0;\r
+ LinePos = NewPos = (BUFFER_LIST *)(&ShellInfoObject.ViewingSettings.CommandHistory);\r
+ InScrolling = FALSE;\r
+ InTabScrolling = FALSE;\r
+ Status = EFI_SUCCESS;\r
+ TabOutputStr = NULL;\r
+ TabUpdatePos = 0;\r
+ TabCompleteList = NULL;\r
+ TabCurrent = NULL;\r
\r
//\r
// Get the screen setting and the current cursor location\r
//\r
- Column = StartColumn = gST->ConOut->Mode->CursorColumn;\r
- Row = gST->ConOut->Mode->CursorRow;\r
+ Column = StartColumn = gST->ConOut->Mode->CursorColumn;\r
+ Row = gST->ConOut->Mode->CursorRow;\r
gST->ConOut->QueryMode (gST->ConOut, gST->ConOut->Mode->Mode, &TotalColumn, &TotalRow);\r
\r
//\r
if (MaxStr > *BufferSize / sizeof (CHAR16)) {\r
MaxStr = *BufferSize / sizeof (CHAR16);\r
}\r
+\r
ZeroMem (CurrentString, MaxStr * sizeof (CHAR16));\r
do {\r
//\r
gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);\r
Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
if (EFI_ERROR (Status)) {\r
-\r
- if (Status == EFI_NOT_READY)\r
+ if (Status == EFI_NOT_READY) {\r
continue;\r
+ }\r
\r
- ZeroMem (CurrentString, MaxStr * sizeof(CHAR16));\r
+ ZeroMem (CurrentString, MaxStr * sizeof (CHAR16));\r
StringLen = 0;\r
break;\r
}\r
// Press PageUp or PageDown to scroll the history screen up or down.\r
// Press any other key to quit scrolling.\r
//\r
- if (Key.UnicodeChar == 0 && (Key.ScanCode == SCAN_PAGE_UP || Key.ScanCode == SCAN_PAGE_DOWN)) {\r
+ if ((Key.UnicodeChar == 0) && ((Key.ScanCode == SCAN_PAGE_UP) || (Key.ScanCode == SCAN_PAGE_DOWN))) {\r
if (Key.ScanCode == SCAN_PAGE_UP) {\r
- ConsoleLoggerDisplayHistory(FALSE, 0, ShellInfoObject.ConsoleInfo);\r
+ ConsoleLoggerDisplayHistory (FALSE, 0, ShellInfoObject.ConsoleInfo);\r
} else if (Key.ScanCode == SCAN_PAGE_DOWN) {\r
- ConsoleLoggerDisplayHistory(TRUE, 0, ShellInfoObject.ConsoleInfo);\r
+ ConsoleLoggerDisplayHistory (TRUE, 0, ShellInfoObject.ConsoleInfo);\r
}\r
\r
InScrolling = TRUE;\r
} else {\r
if (InScrolling) {\r
- ConsoleLoggerStopHistory(ShellInfoObject.ConsoleInfo);\r
+ ConsoleLoggerStopHistory (ShellInfoObject.ConsoleInfo);\r
InScrolling = FALSE;\r
}\r
}\r
//\r
// If we are quitting TAB scrolling...\r
//\r
- if (InTabScrolling && Key.UnicodeChar != CHAR_TAB) {\r
+ if (InTabScrolling && (Key.UnicodeChar != CHAR_TAB)) {\r
if (TabCompleteList != NULL) {\r
ShellInfoObject.NewEfiShellProtocol->FreeFileList (&TabCompleteList);\r
- DEBUG_CODE(TabCompleteList = NULL;);\r
+ DEBUG_CODE (\r
+ TabCompleteList = NULL;\r
+ );\r
}\r
+\r
InTabScrolling = FALSE;\r
}\r
\r
switch (Key.UnicodeChar) {\r
- case CHAR_CARRIAGE_RETURN:\r
- //\r
- // All done, print a newline at the end of the string\r
- //\r
- TailRow = Row + (StringLen - StringCurPos + Column) / TotalColumn;\r
- TailColumn = (StringLen - StringCurPos + Column) % TotalColumn;\r
- ShellPrintEx ((INT32)TailColumn, (INT32)TailRow, L"%N\n");\r
- Done = TRUE;\r
- break;\r
-\r
- case CHAR_BACKSPACE:\r
- if (StringCurPos != 0) {\r
- //\r
- // If not move back beyond string beginning, move all characters behind\r
- // the current position one character forward\r
- //\r
- StringCurPos--;\r
- Update = StringCurPos;\r
- Delete = 1;\r
- CopyMem (CurrentString + StringCurPos, CurrentString + StringCurPos + 1, sizeof (CHAR16) * (StringLen - StringCurPos));\r
-\r
- //\r
- // Adjust the current column and row\r
- //\r
- MoveCursorBackward (TotalColumn, &Column, &Row);\r
- }\r
- break;\r
-\r
- case CHAR_TAB:\r
- if (!InTabScrolling) {\r
- TabCurrent = NULL;\r
- //\r
- // Initialize a tab complete operation.\r
- //\r
- Status = CreateTabCompletionList (CurrentString, StringLen, *BufferSize, &TabCompleteList, &TabUpdatePos);\r
- if (!EFI_ERROR(Status)) {\r
- InTabScrolling = TRUE;\r
- }\r
-\r
- //\r
- // We do not set up the replacement.\r
- // The next section will do that.\r
- //\r
- }\r
-\r
- if (InTabScrolling) {\r
+ case CHAR_CARRIAGE_RETURN:\r
//\r
- // We are in a tab complete operation.\r
- // set up the next replacement.\r
+ // All done, print a newline at the end of the string\r
//\r
- ASSERT(TabCompleteList != NULL);\r
- if (TabCurrent == NULL) {\r
- TabCurrent = (EFI_SHELL_FILE_INFO*) GetFirstNode (&TabCompleteList->Link);\r
- } else {\r
- TabCurrent = (EFI_SHELL_FILE_INFO*) GetNextNode (&TabCompleteList->Link, &TabCurrent->Link);\r
- }\r
+ TailRow = Row + (StringLen - StringCurPos + Column) / TotalColumn;\r
+ TailColumn = (StringLen - StringCurPos + Column) % TotalColumn;\r
+ ShellPrintEx ((INT32)TailColumn, (INT32)TailRow, L"%N\n");\r
+ Done = TRUE;\r
+ break;\r
\r
- //\r
- // Skip over the empty list beginning node\r
- //\r
- if (IsNull(&TabCompleteList->Link, &TabCurrent->Link)) {\r
- TabCurrent = (EFI_SHELL_FILE_INFO*) GetNextNode (&TabCompleteList->Link, &TabCurrent->Link);\r
- }\r
- }\r
- break;\r
+ case CHAR_BACKSPACE:\r
+ if (StringCurPos != 0) {\r
+ //\r
+ // If not move back beyond string beginning, move all characters behind\r
+ // the current position one character forward\r
+ //\r
+ StringCurPos--;\r
+ Update = StringCurPos;\r
+ Delete = 1;\r
+ CopyMem (CurrentString + StringCurPos, CurrentString + StringCurPos + 1, sizeof (CHAR16) * (StringLen - StringCurPos));\r
\r
- default:\r
- if (Key.UnicodeChar >= ' ') {\r
- //\r
- // If we are at the buffer's end, drop the key\r
- //\r
- if (StringLen == MaxStr - 1 && (ShellInfoObject.ViewingSettings.InsertMode || StringCurPos == StringLen)) {\r
- break;\r
- }\r
- //\r
- // If in insert mode, make space by moving each other character 1\r
- // space higher in the array\r
- //\r
- if (ShellInfoObject.ViewingSettings.InsertMode) {\r
- CopyMem(CurrentString + StringCurPos + 1, CurrentString + StringCurPos, (StringLen - StringCurPos)*sizeof(CurrentString[0]));\r
+ //\r
+ // Adjust the current column and row\r
+ //\r
+ MoveCursorBackward (TotalColumn, &Column, &Row);\r
}\r
\r
- CurrentString[StringCurPos] = Key.UnicodeChar;\r
- Update = StringCurPos;\r
+ break;\r
\r
- StringCurPos += 1;\r
- OutputLength = 1;\r
- }\r
- break;\r
+ case CHAR_TAB:\r
+ if (!InTabScrolling) {\r
+ TabCurrent = NULL;\r
+ //\r
+ // Initialize a tab complete operation.\r
+ //\r
+ Status = CreateTabCompletionList (CurrentString, StringLen, *BufferSize, &TabCompleteList, &TabUpdatePos);\r
+ if (!EFI_ERROR (Status)) {\r
+ InTabScrolling = TRUE;\r
+ }\r
\r
- case 0:\r
- switch (Key.ScanCode) {\r
- case SCAN_DELETE:\r
- //\r
- // Move characters behind current position one character forward\r
- //\r
- if (StringLen != 0) {\r
- Update = StringCurPos;\r
- Delete = 1;\r
- CopyMem (CurrentString + StringCurPos, CurrentString + StringCurPos + 1, sizeof (CHAR16) * (StringLen - StringCurPos));\r
+ //\r
+ // We do not set up the replacement.\r
+ // The next section will do that.\r
+ //\r
}\r
- break;\r
\r
- case SCAN_UP:\r
- //\r
- // Prepare to print the previous command\r
- //\r
- NewPos = (BUFFER_LIST*)GetPreviousNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);\r
- if (IsNull(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link)) {\r
- NewPos = (BUFFER_LIST*)GetPreviousNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);\r
- }\r
- break;\r
+ if (InTabScrolling) {\r
+ //\r
+ // We are in a tab complete operation.\r
+ // set up the next replacement.\r
+ //\r
+ ASSERT (TabCompleteList != NULL);\r
+ if (TabCurrent == NULL) {\r
+ TabCurrent = (EFI_SHELL_FILE_INFO *)GetFirstNode (&TabCompleteList->Link);\r
+ } else {\r
+ TabCurrent = (EFI_SHELL_FILE_INFO *)GetNextNode (&TabCompleteList->Link, &TabCurrent->Link);\r
+ }\r
\r
- case SCAN_DOWN:\r
- //\r
- // Prepare to print the next command\r
- //\r
- NewPos = (BUFFER_LIST*)GetNextNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);\r
- if (NewPos == (BUFFER_LIST*)(&ShellInfoObject.ViewingSettings.CommandHistory)) {\r
- NewPos = (BUFFER_LIST*)GetNextNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);\r
+ //\r
+ // Skip over the empty list beginning node\r
+ //\r
+ if (IsNull (&TabCompleteList->Link, &TabCurrent->Link)) {\r
+ TabCurrent = (EFI_SHELL_FILE_INFO *)GetNextNode (&TabCompleteList->Link, &TabCurrent->Link);\r
+ }\r
}\r
- break;\r
\r
- case SCAN_LEFT:\r
- //\r
- // Adjust current cursor position\r
- //\r
- if (StringCurPos != 0) {\r
- --StringCurPos;\r
- MoveCursorBackward (TotalColumn, &Column, &Row);\r
- }\r
break;\r
\r
- case SCAN_RIGHT:\r
- //\r
- // Adjust current cursor position\r
- //\r
- if (StringCurPos < StringLen) {\r
- ++StringCurPos;\r
- MoveCursorForward (TotalColumn, TotalRow, &Column, &Row);\r
- }\r
- break;\r
+ default:\r
+ if (Key.UnicodeChar >= ' ') {\r
+ //\r
+ // If we are at the buffer's end, drop the key\r
+ //\r
+ if ((StringLen == MaxStr - 1) && (ShellInfoObject.ViewingSettings.InsertMode || (StringCurPos == StringLen))) {\r
+ break;\r
+ }\r
\r
- case SCAN_HOME:\r
- //\r
- // Move current cursor position to the beginning of the command line\r
- //\r
- Row -= (StringCurPos + StartColumn) / TotalColumn;\r
- Column = StartColumn;\r
- StringCurPos = 0;\r
- break;\r
+ //\r
+ // If in insert mode, make space by moving each other character 1\r
+ // space higher in the array\r
+ //\r
+ if (ShellInfoObject.ViewingSettings.InsertMode) {\r
+ CopyMem (CurrentString + StringCurPos + 1, CurrentString + StringCurPos, (StringLen - StringCurPos)*sizeof (CurrentString[0]));\r
+ }\r
\r
- case SCAN_END:\r
- //\r
- // Move current cursor position to the end of the command line\r
- //\r
- TailRow = Row + (StringLen - StringCurPos + Column) / TotalColumn;\r
- TailColumn = (StringLen - StringCurPos + Column) % TotalColumn;\r
- Row = TailRow;\r
- Column = TailColumn;\r
- StringCurPos = StringLen;\r
- break;\r
+ CurrentString[StringCurPos] = Key.UnicodeChar;\r
+ Update = StringCurPos;\r
\r
- case SCAN_ESC:\r
- //\r
- // Prepare to clear the current command line\r
- //\r
- CurrentString[0] = 0;\r
- Update = 0;\r
- Delete = StringLen;\r
- Row -= (StringCurPos + StartColumn) / TotalColumn;\r
- Column = StartColumn;\r
- OutputLength = 0;\r
- break;\r
+ StringCurPos += 1;\r
+ OutputLength = 1;\r
+ }\r
\r
- case SCAN_INSERT:\r
- //\r
- // Toggle the SEnvInsertMode flag\r
- //\r
- ShellInfoObject.ViewingSettings.InsertMode = (BOOLEAN)!ShellInfoObject.ViewingSettings.InsertMode;\r
break;\r
\r
- case SCAN_F7:\r
- //\r
- // Print command history\r
- //\r
- PrintCommandHistory (TotalColumn, TotalRow, 4);\r
- *CurrentString = CHAR_NULL;\r
- Done = TRUE;\r
- break;\r
- }\r
+ case 0:\r
+ switch (Key.ScanCode) {\r
+ case SCAN_DELETE:\r
+ //\r
+ // Move characters behind current position one character forward\r
+ //\r
+ if (StringLen != 0) {\r
+ Update = StringCurPos;\r
+ Delete = 1;\r
+ CopyMem (CurrentString + StringCurPos, CurrentString + StringCurPos + 1, sizeof (CHAR16) * (StringLen - StringCurPos));\r
+ }\r
+\r
+ break;\r
+\r
+ case SCAN_UP:\r
+ //\r
+ // Prepare to print the previous command\r
+ //\r
+ NewPos = (BUFFER_LIST *)GetPreviousNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);\r
+ if (IsNull (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link)) {\r
+ NewPos = (BUFFER_LIST *)GetPreviousNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);\r
+ }\r
+\r
+ break;\r
+\r
+ case SCAN_DOWN:\r
+ //\r
+ // Prepare to print the next command\r
+ //\r
+ NewPos = (BUFFER_LIST *)GetNextNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);\r
+ if (NewPos == (BUFFER_LIST *)(&ShellInfoObject.ViewingSettings.CommandHistory)) {\r
+ NewPos = (BUFFER_LIST *)GetNextNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &LinePos->Link);\r
+ }\r
+\r
+ break;\r
+\r
+ case SCAN_LEFT:\r
+ //\r
+ // Adjust current cursor position\r
+ //\r
+ if (StringCurPos != 0) {\r
+ --StringCurPos;\r
+ MoveCursorBackward (TotalColumn, &Column, &Row);\r
+ }\r
+\r
+ break;\r
+\r
+ case SCAN_RIGHT:\r
+ //\r
+ // Adjust current cursor position\r
+ //\r
+ if (StringCurPos < StringLen) {\r
+ ++StringCurPos;\r
+ MoveCursorForward (TotalColumn, TotalRow, &Column, &Row);\r
+ }\r
+\r
+ break;\r
+\r
+ case SCAN_HOME:\r
+ //\r
+ // Move current cursor position to the beginning of the command line\r
+ //\r
+ Row -= (StringCurPos + StartColumn) / TotalColumn;\r
+ Column = StartColumn;\r
+ StringCurPos = 0;\r
+ break;\r
+\r
+ case SCAN_END:\r
+ //\r
+ // Move current cursor position to the end of the command line\r
+ //\r
+ TailRow = Row + (StringLen - StringCurPos + Column) / TotalColumn;\r
+ TailColumn = (StringLen - StringCurPos + Column) % TotalColumn;\r
+ Row = TailRow;\r
+ Column = TailColumn;\r
+ StringCurPos = StringLen;\r
+ break;\r
+\r
+ case SCAN_ESC:\r
+ //\r
+ // Prepare to clear the current command line\r
+ //\r
+ CurrentString[0] = 0;\r
+ Update = 0;\r
+ Delete = StringLen;\r
+ Row -= (StringCurPos + StartColumn) / TotalColumn;\r
+ Column = StartColumn;\r
+ OutputLength = 0;\r
+ break;\r
+\r
+ case SCAN_INSERT:\r
+ //\r
+ // Toggle the SEnvInsertMode flag\r
+ //\r
+ ShellInfoObject.ViewingSettings.InsertMode = (BOOLEAN) !ShellInfoObject.ViewingSettings.InsertMode;\r
+ break;\r
+\r
+ case SCAN_F7:\r
+ //\r
+ // Print command history\r
+ //\r
+ PrintCommandHistory (TotalColumn, TotalRow, 4);\r
+ *CurrentString = CHAR_NULL;\r
+ Done = TRUE;\r
+ break;\r
+ }\r
}\r
\r
if (Done) {\r
}\r
}\r
\r
- if (InTabScrolling && TabOutputStr != NULL) {\r
-\r
+ if (InTabScrolling && (TabOutputStr != NULL)) {\r
//\r
// Adjust the column and row to the start of TAB-completion string.\r
//\r
- Column = (StartColumn + TabUpdatePos) % TotalColumn;\r
- Row -= (StartColumn + StringCurPos) / TotalColumn - (StartColumn + TabUpdatePos) / TotalColumn;\r
+ Column = (StartColumn + TabUpdatePos) % TotalColumn;\r
+ Row -= (StartColumn + StringCurPos) / TotalColumn - (StartColumn + TabUpdatePos) / TotalColumn;\r
OutputLength = StrLen (TabCurrent->FileName);\r
//\r
// if the output string contains blank space, quotation marks L'\"'\r
// should be added to the output.\r
//\r
- if (StrStr(TabCurrent->FileName, L" ") != NULL){\r
+ if (StrStr (TabCurrent->FileName, L" ") != NULL) {\r
TabOutputStr[0] = L'\"';\r
CopyMem (TabOutputStr + 1, TabCurrent->FileName, OutputLength * sizeof (CHAR16));\r
TabOutputStr[OutputLength + 1] = L'\"';\r
CopyMem (TabOutputStr, TabCurrent->FileName, OutputLength * sizeof (CHAR16));\r
TabOutputStr[OutputLength] = CHAR_NULL;\r
}\r
+\r
OutputLength = StrLen (TabOutputStr) < MaxStr - 1 ? StrLen (TabOutputStr) : MaxStr - 1;\r
CopyMem (CurrentString + TabUpdatePos, TabOutputStr, OutputLength * sizeof (CHAR16));\r
CurrentString[TabUpdatePos + OutputLength] = CHAR_NULL;\r
- StringCurPos = TabUpdatePos + OutputLength;\r
- Update = TabUpdatePos;\r
+ StringCurPos = TabUpdatePos + OutputLength;\r
+ Update = TabUpdatePos;\r
if (StringLen > TabUpdatePos + OutputLength) {\r
Delete = StringLen - TabUpdatePos - OutputLength;\r
}\r
\r
- FreePool(TabOutputStr);\r
+ FreePool (TabOutputStr);\r
}\r
\r
//\r
// If we have a new position, we are preparing to print a previous or\r
// next command.\r
//\r
- if (NewPos != (BUFFER_LIST*)(&ShellInfoObject.ViewingSettings.CommandHistory)) {\r
+ if (NewPos != (BUFFER_LIST *)(&ShellInfoObject.ViewingSettings.CommandHistory)) {\r
Column = StartColumn;\r
- Row -= (StringCurPos + StartColumn) / TotalColumn;\r
+ Row -= (StringCurPos + StartColumn) / TotalColumn;\r
\r
- LinePos = NewPos;\r
- NewPos = (BUFFER_LIST*)(&ShellInfoObject.ViewingSettings.CommandHistory);\r
+ LinePos = NewPos;\r
+ NewPos = (BUFFER_LIST *)(&ShellInfoObject.ViewingSettings.CommandHistory);\r
\r
- OutputLength = StrLen (LinePos->Buffer) < MaxStr - 1 ? StrLen (LinePos->Buffer) : MaxStr - 1;\r
+ OutputLength = StrLen (LinePos->Buffer) < MaxStr - 1 ? StrLen (LinePos->Buffer) : MaxStr - 1;\r
CopyMem (CurrentString, LinePos->Buffer, OutputLength * sizeof (CHAR16));\r
CurrentString[OutputLength] = CHAR_NULL;\r
\r
- StringCurPos = OutputLength;\r
+ StringCurPos = OutputLength;\r
\r
//\r
// Draw new input string\r
Delete = StringLen - OutputLength;\r
}\r
}\r
+\r
//\r
// If we need to update the output do so now\r
//\r
- if (Update != (UINTN) -1) {\r
+ if (Update != (UINTN)-1) {\r
ShellPrintEx ((INT32)Column, (INT32)Row, L"%s%.*s", CurrentString + Update, Delete, L"");\r
StringLen = StrLen (CurrentString);\r
\r
StringCurPos = StringLen;\r
}\r
\r
- Update = (UINTN) -1;\r
+ Update = (UINTN)-1;\r
\r
//\r
// After using print to reflect newly updates, if we're not using\r
// BACKSPACE and DELETE, we need to move the cursor position forward,\r
// so adjust row and column here.\r
//\r
- if (Key.UnicodeChar != CHAR_BACKSPACE && !(Key.UnicodeChar == 0 && Key.ScanCode == SCAN_DELETE)) {\r
+ if ((Key.UnicodeChar != CHAR_BACKSPACE) && !((Key.UnicodeChar == 0) && (Key.ScanCode == SCAN_DELETE))) {\r
//\r
// Calculate row and column of the tail of current string\r
//\r
- TailRow = Row + (StringLen - StringCurPos + Column + OutputLength) / TotalColumn;\r
- TailColumn = (StringLen - StringCurPos + Column + OutputLength) % TotalColumn;\r
+ TailRow = Row + (StringLen - StringCurPos + Column + OutputLength) / TotalColumn;\r
+ TailColumn = (StringLen - StringCurPos + Column + OutputLength) % TotalColumn;\r
\r
//\r
// If the tail of string reaches screen end, screen rolls up, so if\r
// (if we are recalling commands using UPPER and DOWN key, and if the\r
// old command is too long to fit the screen, TailColumn must be 79.\r
//\r
- if (TailColumn == 0 && TailRow >= TotalRow && Row != TailRow) {\r
+ if ((TailColumn == 0) && (TailRow >= TotalRow) && (Row != TailRow)) {\r
Row--;\r
}\r
+\r
//\r
// Calculate the cursor position after current operation. If cursor\r
// reaches line end, update both row and column, otherwise, only\r
\r
Delete = 0;\r
}\r
+\r
//\r
// Set the cursor position for this key\r
//\r
gST->ConOut->SetCursorPosition (gST->ConOut, Column, Row);\r
} while (!Done);\r
\r
- if (CurrentString != NULL && StrLen(CurrentString) > 0) {\r
+ if ((CurrentString != NULL) && (StrLen (CurrentString) > 0)) {\r
//\r
// add the line to the history buffer\r
//\r
- AddLineToCommandHistory(CurrentString);\r
+ AddLineToCommandHistory (CurrentString);\r
}\r
\r
//\r
if (TabCompleteList != NULL) {\r
ShellInfoObject.NewEfiShellProtocol->FreeFileList (&TabCompleteList);\r
}\r
- ASSERT(TabCompleteList == NULL);\r
+\r
+ ASSERT (TabCompleteList == NULL);\r
\r
return Status;\r
}\r
//\r
// FILE style interfaces for StdIn/StdOut/StdErr\r
//\r
-EFI_FILE_PROTOCOL FileInterfaceStdIn = {\r
+EFI_FILE_PROTOCOL FileInterfaceStdIn = {\r
EFI_FILE_REVISION,\r
FileInterfaceOpenNotFound,\r
FileInterfaceNopGeneric,\r
FileInterfaceNopGeneric\r
};\r
\r
-EFI_FILE_PROTOCOL FileInterfaceStdOut = {\r
+EFI_FILE_PROTOCOL FileInterfaceStdOut = {\r
EFI_FILE_REVISION,\r
FileInterfaceOpenNotFound,\r
FileInterfaceNopGeneric,\r
FileInterfaceNopGeneric\r
};\r
\r
-EFI_FILE_PROTOCOL FileInterfaceStdErr = {\r
+EFI_FILE_PROTOCOL FileInterfaceStdErr = {\r
EFI_FILE_REVISION,\r
FileInterfaceOpenNotFound,\r
FileInterfaceNopGeneric,\r
FileInterfaceNopGeneric\r
};\r
\r
-EFI_FILE_PROTOCOL FileInterfaceNulFile = {\r
+EFI_FILE_PROTOCOL FileInterfaceNulFile = {\r
EFI_FILE_REVISION,\r
FileInterfaceOpenNotFound,\r
FileInterfaceNopGeneric,\r
FileInterfaceNopGeneric\r
};\r
\r
-\r
-\r
-\r
//\r
// This is identical to EFI_FILE_PROTOCOL except for the additional member\r
// for the name.\r
//\r
\r
typedef struct {\r
- UINT64 Revision;\r
- EFI_FILE_OPEN Open;\r
- EFI_FILE_CLOSE Close;\r
- EFI_FILE_DELETE Delete;\r
- EFI_FILE_READ Read;\r
- EFI_FILE_WRITE Write;\r
- EFI_FILE_GET_POSITION GetPosition;\r
- EFI_FILE_SET_POSITION SetPosition;\r
- EFI_FILE_GET_INFO GetInfo;\r
- EFI_FILE_SET_INFO SetInfo;\r
- EFI_FILE_FLUSH Flush;\r
- CHAR16 Name[1];\r
+ UINT64 Revision;\r
+ EFI_FILE_OPEN Open;\r
+ EFI_FILE_CLOSE Close;\r
+ EFI_FILE_DELETE Delete;\r
+ EFI_FILE_READ Read;\r
+ EFI_FILE_WRITE Write;\r
+ EFI_FILE_GET_POSITION GetPosition;\r
+ EFI_FILE_SET_POSITION SetPosition;\r
+ EFI_FILE_GET_INFO GetInfo;\r
+ EFI_FILE_SET_INFO SetInfo;\r
+ EFI_FILE_FLUSH Flush;\r
+ CHAR16 Name[1];\r
} EFI_FILE_PROTOCOL_ENVIRONMENT;\r
-//ANSI compliance helper to get size of the struct.\r
-#define SIZE_OF_EFI_FILE_PROTOCOL_ENVIRONMENT EFI_FIELD_OFFSET (EFI_FILE_PROTOCOL_ENVIRONMENT, Name)\r
+// ANSI compliance helper to get size of the struct.\r
+#define SIZE_OF_EFI_FILE_PROTOCOL_ENVIRONMENT EFI_FIELD_OFFSET (EFI_FILE_PROTOCOL_ENVIRONMENT, Name)\r
\r
/**\r
File style interface for Environment Variable (Close).\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceEnvClose(\r
- IN EFI_FILE_PROTOCOL *This\r
+FileInterfaceEnvClose (\r
+ IN EFI_FILE_PROTOCOL *This\r
)\r
{\r
- VOID* NewBuffer;\r
+ VOID *NewBuffer;\r
UINTN NewSize;\r
EFI_STATUS Status;\r
BOOLEAN Volatile;\r
// keep this. So, before closing, strip the trailing '\r\n' from the variable\r
// if it exists.\r
//\r
- NewBuffer = NULL;\r
- NewSize = 0;\r
- TotalSize = 0;\r
+ NewBuffer = NULL;\r
+ NewSize = 0;\r
+ TotalSize = 0;\r
\r
- Status = IsVolatileEnv (((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name, &Volatile);\r
+ Status = IsVolatileEnv (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name, &Volatile);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
- Status = SHELL_GET_ENVIRONMENT_VARIABLE(((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name, &NewSize, NewBuffer);\r
+ Status = SHELL_GET_ENVIRONMENT_VARIABLE (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name, &NewSize, NewBuffer);\r
if (Status == EFI_BUFFER_TOO_SMALL) {\r
TotalSize = NewSize + sizeof (CHAR16);\r
NewBuffer = AllocateZeroPool (TotalSize);\r
if (NewBuffer == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- Status = SHELL_GET_ENVIRONMENT_VARIABLE(((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name, &NewSize, NewBuffer);\r
- }\r
\r
- if (!EFI_ERROR(Status) && NewBuffer != NULL) {\r
+ Status = SHELL_GET_ENVIRONMENT_VARIABLE (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name, &NewSize, NewBuffer);\r
+ }\r
\r
+ if (!EFI_ERROR (Status) && (NewBuffer != NULL)) {\r
if (TotalSize / sizeof (CHAR16) >= 3) {\r
- if ( (((CHAR16*)NewBuffer)[TotalSize / sizeof (CHAR16) - 2] == CHAR_LINEFEED) &&\r
- (((CHAR16*)NewBuffer)[TotalSize / sizeof (CHAR16) - 3] == CHAR_CARRIAGE_RETURN)\r
- ) {\r
- ((CHAR16*)NewBuffer)[TotalSize / sizeof (CHAR16) - 3] = CHAR_NULL;\r
+ if ((((CHAR16 *)NewBuffer)[TotalSize / sizeof (CHAR16) - 2] == CHAR_LINEFEED) &&\r
+ (((CHAR16 *)NewBuffer)[TotalSize / sizeof (CHAR16) - 3] == CHAR_CARRIAGE_RETURN)\r
+ )\r
+ {\r
+ ((CHAR16 *)NewBuffer)[TotalSize / sizeof (CHAR16) - 3] = CHAR_NULL;\r
//\r
// If the NewBuffer end with \r\n\0, We will replace '\r' by '\0' and then update TotalSize.\r
//\r
- TotalSize -= sizeof(CHAR16) * 2;\r
+ TotalSize -= sizeof (CHAR16) * 2;\r
}\r
\r
if (Volatile) {\r
Status = SHELL_SET_ENVIRONMENT_VARIABLE_V (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
TotalSize - sizeof (CHAR16),\r
NewBuffer\r
);\r
\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
Status = ShellAddEnvVarToList (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
NewBuffer,\r
TotalSize,\r
EFI_VARIABLE_BOOTSERVICE_ACCESS\r
}\r
} else {\r
Status = SHELL_SET_ENVIRONMENT_VARIABLE_NV (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
TotalSize - sizeof (CHAR16),\r
NewBuffer\r
);\r
\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
Status = ShellAddEnvVarToList (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
NewBuffer,\r
TotalSize,\r
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS\r
}\r
}\r
\r
- SHELL_FREE_NON_NULL(NewBuffer);\r
- FreePool((EFI_FILE_PROTOCOL_ENVIRONMENT*)This);\r
+ SHELL_FREE_NON_NULL (NewBuffer);\r
+ FreePool ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This);\r
return (Status);\r
}\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceEnvDelete(\r
- IN EFI_FILE_PROTOCOL *This\r
+FileInterfaceEnvDelete (\r
+ IN EFI_FILE_PROTOCOL *This\r
)\r
{\r
- SHELL_DELETE_ENVIRONMENT_VARIABLE(((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name);\r
- return (FileInterfaceEnvClose(This));\r
+ SHELL_DELETE_ENVIRONMENT_VARIABLE (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name);\r
+ return (FileInterfaceEnvClose (This));\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceEnvRead(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceEnvRead (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
*BufferSize = *BufferSize / sizeof (CHAR16) * sizeof (CHAR16);\r
if (*BufferSize != 0) {\r
}\r
\r
Status = SHELL_GET_ENVIRONMENT_VARIABLE (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
BufferSize,\r
Buffer\r
);\r
//\r
*BufferSize += sizeof (gUnicodeFileTag);\r
}\r
+\r
return Status;\r
}\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceEnvVolWrite(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceEnvVolWrite (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
- VOID* NewBuffer;\r
+ VOID *NewBuffer;\r
UINTN NewSize;\r
EFI_STATUS Status;\r
UINTN TotalSize;\r
\r
- NewBuffer = NULL;\r
- NewSize = 0;\r
- TotalSize = 0;\r
+ NewBuffer = NULL;\r
+ NewSize = 0;\r
+ TotalSize = 0;\r
\r
- Status = SHELL_GET_ENVIRONMENT_VARIABLE(((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name, &NewSize, NewBuffer);\r
+ Status = SHELL_GET_ENVIRONMENT_VARIABLE (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name, &NewSize, NewBuffer);\r
if (Status == EFI_BUFFER_TOO_SMALL) {\r
TotalSize = NewSize + *BufferSize + sizeof (CHAR16);\r
} else if (Status == EFI_NOT_FOUND) {\r
- TotalSize = *BufferSize + sizeof(CHAR16);\r
+ TotalSize = *BufferSize + sizeof (CHAR16);\r
} else {\r
return Status;\r
}\r
}\r
\r
if (Status == EFI_BUFFER_TOO_SMALL) {\r
- Status = SHELL_GET_ENVIRONMENT_VARIABLE(((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name, &NewSize, NewBuffer);\r
+ Status = SHELL_GET_ENVIRONMENT_VARIABLE (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name, &NewSize, NewBuffer);\r
}\r
\r
- if (EFI_ERROR (Status) && Status != EFI_NOT_FOUND) {\r
+ if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
FreePool (NewBuffer);\r
return Status;\r
}\r
\r
- CopyMem ((UINT8*)NewBuffer + NewSize, Buffer, *BufferSize);\r
+ CopyMem ((UINT8 *)NewBuffer + NewSize, Buffer, *BufferSize);\r
Status = ShellAddEnvVarToList (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
NewBuffer,\r
TotalSize,\r
EFI_VARIABLE_BOOTSERVICE_ACCESS\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
FreePool (NewBuffer);\r
return Status;\r
}\r
\r
Status = SHELL_SET_ENVIRONMENT_VARIABLE_V (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
TotalSize - sizeof (CHAR16),\r
NewBuffer\r
);\r
- if (EFI_ERROR(Status)) {\r
- ShellRemvoeEnvVarFromList (((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name);\r
+ if (EFI_ERROR (Status)) {\r
+ ShellRemvoeEnvVarFromList (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name);\r
}\r
\r
FreePool (NewBuffer);\r
return Status;\r
}\r
\r
-\r
/**\r
File style interface for Non Volatile Environment Variable (Write).\r
This function also caches the environment variable into gShellEnvVarList.\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceEnvNonVolWrite(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceEnvNonVolWrite (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
- VOID* NewBuffer;\r
+ VOID *NewBuffer;\r
UINTN NewSize;\r
EFI_STATUS Status;\r
UINTN TotalSize;\r
\r
- NewBuffer = NULL;\r
- NewSize = 0;\r
- TotalSize = 0;\r
+ NewBuffer = NULL;\r
+ NewSize = 0;\r
+ TotalSize = 0;\r
\r
- Status = SHELL_GET_ENVIRONMENT_VARIABLE(((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name, &NewSize, NewBuffer);\r
+ Status = SHELL_GET_ENVIRONMENT_VARIABLE (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name, &NewSize, NewBuffer);\r
if (Status == EFI_BUFFER_TOO_SMALL) {\r
TotalSize = NewSize + *BufferSize + sizeof (CHAR16);\r
} else if (Status == EFI_NOT_FOUND) {\r
}\r
\r
if (Status == EFI_BUFFER_TOO_SMALL) {\r
- Status = SHELL_GET_ENVIRONMENT_VARIABLE(((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name, &NewSize, NewBuffer);\r
+ Status = SHELL_GET_ENVIRONMENT_VARIABLE (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name, &NewSize, NewBuffer);\r
}\r
\r
- if (EFI_ERROR(Status) && Status != EFI_NOT_FOUND) {\r
+ if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
FreePool (NewBuffer);\r
return Status;\r
}\r
\r
- CopyMem ((UINT8*) NewBuffer + NewSize, Buffer, *BufferSize);\r
+ CopyMem ((UINT8 *)NewBuffer + NewSize, Buffer, *BufferSize);\r
Status = ShellAddEnvVarToList (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
NewBuffer,\r
TotalSize,\r
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS\r
}\r
\r
Status = SHELL_SET_ENVIRONMENT_VARIABLE_NV (\r
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,\r
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name,\r
TotalSize - sizeof (CHAR16),\r
NewBuffer\r
);\r
if (EFI_ERROR (Status)) {\r
- ShellRemvoeEnvVarFromList (((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name);\r
+ ShellRemvoeEnvVarFromList (((EFI_FILE_PROTOCOL_ENVIRONMENT *)This)->Name);\r
}\r
\r
FreePool (NewBuffer);\r
@retval NULL Memory could not be allocated.\r
@return other a pointer to an EFI_FILE_PROTOCOL structure\r
**/\r
-EFI_FILE_PROTOCOL*\r
-CreateFileInterfaceEnv(\r
- IN CONST CHAR16 *EnvName\r
+EFI_FILE_PROTOCOL *\r
+CreateFileInterfaceEnv (\r
+ IN CONST CHAR16 *EnvName\r
)\r
{\r
EFI_STATUS Status;\r
//\r
// Get some memory\r
//\r
- EnvNameSize = StrSize(EnvName);\r
- EnvFileInterface = AllocateZeroPool(sizeof(EFI_FILE_PROTOCOL_ENVIRONMENT)+EnvNameSize);\r
- if (EnvFileInterface == NULL){\r
+ EnvNameSize = StrSize (EnvName);\r
+ EnvFileInterface = AllocateZeroPool (sizeof (EFI_FILE_PROTOCOL_ENVIRONMENT)+EnvNameSize);\r
+ if (EnvFileInterface == NULL) {\r
return (NULL);\r
}\r
\r
EnvFileInterface->Delete = FileInterfaceEnvDelete;\r
EnvFileInterface->Read = FileInterfaceEnvRead;\r
\r
- CopyMem(EnvFileInterface->Name, EnvName, EnvNameSize);\r
+ CopyMem (EnvFileInterface->Name, EnvName, EnvNameSize);\r
\r
//\r
// Assign the different members for Volatile and Non-Volatile variables\r
//\r
if (Volatile) {\r
- EnvFileInterface->Write = FileInterfaceEnvVolWrite;\r
+ EnvFileInterface->Write = FileInterfaceEnvVolWrite;\r
} else {\r
- EnvFileInterface->Write = FileInterfaceEnvNonVolWrite;\r
+ EnvFileInterface->Write = FileInterfaceEnvNonVolWrite;\r
}\r
+\r
return ((EFI_FILE_PROTOCOL *)EnvFileInterface);\r
}\r
\r
**/\r
VOID\r
MoveCursorBackward (\r
- IN UINTN LineLength,\r
- IN OUT UINTN *Column,\r
- IN OUT UINTN *Row\r
+ IN UINTN LineLength,\r
+ IN OUT UINTN *Column,\r
+ IN OUT UINTN *Row\r
)\r
{\r
//\r
if (*Row > 0) {\r
(*Row)--;\r
}\r
+\r
return;\r
}\r
+\r
(*Column)--;\r
}\r
\r
**/\r
VOID\r
MoveCursorForward (\r
- IN UINTN LineLength,\r
- IN UINTN TotalRow,\r
- IN OUT UINTN *Column,\r
- IN OUT UINTN *Row\r
+ IN UINTN LineLength,\r
+ IN UINTN TotalRow,\r
+ IN OUT UINTN *Column,\r
+ IN OUT UINTN *Row\r
)\r
{\r
//\r
**/\r
VOID\r
PrintCommandHistory (\r
- IN CONST UINTN TotalCols,\r
- IN CONST UINTN TotalRows,\r
- IN CONST UINTN StartColumn\r
+ IN CONST UINTN TotalCols,\r
+ IN CONST UINTN TotalRows,\r
+ IN CONST UINTN StartColumn\r
)\r
{\r
- BUFFER_LIST *Node;\r
- UINTN Index;\r
- UINTN LineNumber;\r
- UINTN LineCount;\r
+ BUFFER_LIST *Node;\r
+ UINTN Index;\r
+ UINTN LineNumber;\r
+ UINTN LineCount;\r
\r
ShellPrintEx (-1, -1, L"\n");\r
- Index = 0;\r
- LineNumber = 0;\r
+ Index = 0;\r
+ LineNumber = 0;\r
//\r
// go through history list...\r
//\r
- for ( Node = (BUFFER_LIST*)GetFirstNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link)\r
- ; !IsNull(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link)\r
- ; Node = (BUFFER_LIST*)GetNextNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link)\r
- ){\r
+ for ( Node = (BUFFER_LIST *)GetFirstNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link)\r
+ ; !IsNull (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link)\r
+ ; Node = (BUFFER_LIST *)GetNextNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link)\r
+ )\r
+ {\r
Index++;\r
LineCount = ((StrLen (Node->Buffer) + StartColumn + 1) / TotalCols) + 1;\r
\r
if (LineNumber + LineCount >= TotalRows) {\r
- ShellPromptForResponseHii(\r
+ ShellPromptForResponseHii (\r
ShellPromptResponseTypeEnterContinue,\r
STRING_TOKEN (STR_SHELL_ENTER_TO_CONT),\r
ShellInfoObject.HiiHandle,\r
NULL\r
- );\r
+ );\r
LineNumber = 0;\r
}\r
+\r
ShellPrintEx (-1, -1, L"%2d. %s\n", Index, Node->Buffer);\r
LineNumber += LineCount;\r
}\r
}\r
\r
-\r
-\r
-\r
-\r
-\r
//\r
// This is identical to EFI_FILE_PROTOCOL except for the additional members\r
// for the buffer, size, and position.\r
//\r
\r
typedef struct {\r
- UINT64 Revision;\r
- EFI_FILE_OPEN Open;\r
- EFI_FILE_CLOSE Close;\r
- EFI_FILE_DELETE Delete;\r
- EFI_FILE_READ Read;\r
- EFI_FILE_WRITE Write;\r
- EFI_FILE_GET_POSITION GetPosition;\r
- EFI_FILE_SET_POSITION SetPosition;\r
- EFI_FILE_GET_INFO GetInfo;\r
- EFI_FILE_SET_INFO SetInfo;\r
- EFI_FILE_FLUSH Flush;\r
- VOID *Buffer;\r
- UINT64 Position;\r
- UINT64 BufferSize;\r
- BOOLEAN Unicode;\r
- UINT64 FileSize;\r
+ UINT64 Revision;\r
+ EFI_FILE_OPEN Open;\r
+ EFI_FILE_CLOSE Close;\r
+ EFI_FILE_DELETE Delete;\r
+ EFI_FILE_READ Read;\r
+ EFI_FILE_WRITE Write;\r
+ EFI_FILE_GET_POSITION GetPosition;\r
+ EFI_FILE_SET_POSITION SetPosition;\r
+ EFI_FILE_GET_INFO GetInfo;\r
+ EFI_FILE_SET_INFO SetInfo;\r
+ EFI_FILE_FLUSH Flush;\r
+ VOID *Buffer;\r
+ UINT64 Position;\r
+ UINT64 BufferSize;\r
+ BOOLEAN Unicode;\r
+ UINT64 FileSize;\r
} EFI_FILE_PROTOCOL_MEM;\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceMemSetPosition(\r
- IN EFI_FILE_PROTOCOL *This,\r
- OUT UINT64 Position\r
+FileInterfaceMemSetPosition (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ OUT UINT64 Position\r
)\r
{\r
- if (Position <= ((EFI_FILE_PROTOCOL_MEM*)This)->FileSize) {\r
- ((EFI_FILE_PROTOCOL_MEM*)This)->Position = Position;\r
+ if (Position <= ((EFI_FILE_PROTOCOL_MEM *)This)->FileSize) {\r
+ ((EFI_FILE_PROTOCOL_MEM *)This)->Position = Position;\r
return (EFI_SUCCESS);\r
} else {\r
return (EFI_INVALID_PARAMETER);\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceMemGetPosition(\r
- IN EFI_FILE_PROTOCOL *This,\r
- OUT UINT64 *Position\r
+FileInterfaceMemGetPosition (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ OUT UINT64 *Position\r
)\r
{\r
- *Position = ((EFI_FILE_PROTOCOL_MEM*)This)->Position;\r
+ *Position = ((EFI_FILE_PROTOCOL_MEM *)This)->Position;\r
return (EFI_SUCCESS);\r
}\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceMemGetInfo(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN EFI_GUID *InformationType,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceMemGetInfo (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN EFI_GUID *InformationType,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
- EFI_FILE_INFO *FileInfo;\r
+ EFI_FILE_INFO *FileInfo;\r
\r
if (CompareGuid (InformationType, &gEfiFileInfoGuid)) {\r
if (*BufferSize < sizeof (EFI_FILE_INFO)) {\r
*BufferSize = sizeof (EFI_FILE_INFO);\r
return EFI_BUFFER_TOO_SMALL;\r
}\r
+\r
if (Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
- FileInfo = (EFI_FILE_INFO *)Buffer;\r
+\r
+ FileInfo = (EFI_FILE_INFO *)Buffer;\r
FileInfo->Size = sizeof (*FileInfo);\r
ZeroMem (FileInfo, sizeof (*FileInfo));\r
- FileInfo->FileSize = ((EFI_FILE_PROTOCOL_MEM*)This)->FileSize;\r
+ FileInfo->FileSize = ((EFI_FILE_PROTOCOL_MEM *)This)->FileSize;\r
FileInfo->PhysicalSize = FileInfo->FileSize;\r
return EFI_SUCCESS;\r
}\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceMemWrite(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceMemWrite (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
CHAR8 *AsciiBuffer;\r
EFI_FILE_PROTOCOL_MEM *MemFile;\r
\r
- MemFile = (EFI_FILE_PROTOCOL_MEM *) This;\r
+ MemFile = (EFI_FILE_PROTOCOL_MEM *)This;\r
if (MemFile->Unicode) {\r
//\r
// Unicode\r
//\r
if ((UINTN)(MemFile->Position + (*BufferSize)) > (UINTN)(MemFile->BufferSize)) {\r
- MemFile->Buffer = ReallocatePool((UINTN)(MemFile->BufferSize), (UINTN)(MemFile->BufferSize) + (*BufferSize) + MEM_WRITE_REALLOC_OVERHEAD, MemFile->Buffer);\r
- if (MemFile->Buffer == NULL){\r
+ MemFile->Buffer = ReallocatePool ((UINTN)(MemFile->BufferSize), (UINTN)(MemFile->BufferSize) + (*BufferSize) + MEM_WRITE_REALLOC_OVERHEAD, MemFile->Buffer);\r
+ if (MemFile->Buffer == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
MemFile->BufferSize += (*BufferSize) + MEM_WRITE_REALLOC_OVERHEAD;\r
}\r
- CopyMem(((UINT8*)MemFile->Buffer) + MemFile->Position, Buffer, *BufferSize);\r
+\r
+ CopyMem (((UINT8 *)MemFile->Buffer) + MemFile->Position, Buffer, *BufferSize);\r
MemFile->Position += (*BufferSize);\r
- MemFile->FileSize = MemFile->Position;\r
+ MemFile->FileSize = MemFile->Position;\r
return (EFI_SUCCESS);\r
} else {\r
//\r
// Ascii\r
//\r
- AsciiBuffer = AllocateZeroPool(*BufferSize);\r
+ AsciiBuffer = AllocateZeroPool (*BufferSize);\r
if (AsciiBuffer == NULL) {\r
return (EFI_OUT_OF_RESOURCES);\r
}\r
- AsciiSPrint(AsciiBuffer, *BufferSize, "%S", Buffer);\r
- if ((UINTN)(MemFile->Position + AsciiStrSize(AsciiBuffer)) > (UINTN)(MemFile->BufferSize)) {\r
- MemFile->Buffer = ReallocatePool((UINTN)(MemFile->BufferSize), (UINTN)(MemFile->BufferSize) + AsciiStrSize(AsciiBuffer) + MEM_WRITE_REALLOC_OVERHEAD, MemFile->Buffer);\r
- if (MemFile->Buffer == NULL){\r
- FreePool(AsciiBuffer);\r
+\r
+ AsciiSPrint (AsciiBuffer, *BufferSize, "%S", Buffer);\r
+ if ((UINTN)(MemFile->Position + AsciiStrSize (AsciiBuffer)) > (UINTN)(MemFile->BufferSize)) {\r
+ MemFile->Buffer = ReallocatePool ((UINTN)(MemFile->BufferSize), (UINTN)(MemFile->BufferSize) + AsciiStrSize (AsciiBuffer) + MEM_WRITE_REALLOC_OVERHEAD, MemFile->Buffer);\r
+ if (MemFile->Buffer == NULL) {\r
+ FreePool (AsciiBuffer);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- MemFile->BufferSize += AsciiStrSize(AsciiBuffer) + MEM_WRITE_REALLOC_OVERHEAD;\r
+\r
+ MemFile->BufferSize += AsciiStrSize (AsciiBuffer) + MEM_WRITE_REALLOC_OVERHEAD;\r
}\r
- CopyMem(((UINT8*)MemFile->Buffer) + MemFile->Position, AsciiBuffer, AsciiStrSize(AsciiBuffer));\r
- MemFile->Position += (*BufferSize / sizeof(CHAR16));\r
- MemFile->FileSize = MemFile->Position;\r
- FreePool(AsciiBuffer);\r
+\r
+ CopyMem (((UINT8 *)MemFile->Buffer) + MemFile->Position, AsciiBuffer, AsciiStrSize (AsciiBuffer));\r
+ MemFile->Position += (*BufferSize / sizeof (CHAR16));\r
+ MemFile->FileSize = MemFile->Position;\r
+ FreePool (AsciiBuffer);\r
return (EFI_SUCCESS);\r
}\r
}\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceMemRead(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceMemRead (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
EFI_FILE_PROTOCOL_MEM *MemFile;\r
\r
- MemFile = (EFI_FILE_PROTOCOL_MEM *) This;\r
+ MemFile = (EFI_FILE_PROTOCOL_MEM *)This;\r
if (*BufferSize > (UINTN)((MemFile->FileSize) - (UINTN)(MemFile->Position))) {\r
(*BufferSize) = (UINTN)((MemFile->FileSize) - (UINTN)(MemFile->Position));\r
}\r
- CopyMem(Buffer, ((UINT8*)MemFile->Buffer) + MemFile->Position, (*BufferSize));\r
+\r
+ CopyMem (Buffer, ((UINT8 *)MemFile->Buffer) + MemFile->Position, (*BufferSize));\r
MemFile->Position = MemFile->Position + (*BufferSize);\r
return (EFI_SUCCESS);\r
}\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceMemClose(\r
- IN EFI_FILE_PROTOCOL *This\r
+FileInterfaceMemClose (\r
+ IN EFI_FILE_PROTOCOL *This\r
)\r
{\r
- SHELL_FREE_NON_NULL(((EFI_FILE_PROTOCOL_MEM*)This)->Buffer);\r
- SHELL_FREE_NON_NULL(This);\r
+ SHELL_FREE_NON_NULL (((EFI_FILE_PROTOCOL_MEM *)This)->Buffer);\r
+ SHELL_FREE_NON_NULL (This);\r
return (EFI_SUCCESS);\r
}\r
\r
@retval NULL Memory could not be allocated.\r
@return other A pointer to an EFI_FILE_PROTOCOL structure.\r
**/\r
-EFI_FILE_PROTOCOL*\r
-CreateFileInterfaceMem(\r
- IN CONST BOOLEAN Unicode\r
+EFI_FILE_PROTOCOL *\r
+CreateFileInterfaceMem (\r
+ IN CONST BOOLEAN Unicode\r
)\r
{\r
EFI_FILE_PROTOCOL_MEM *FileInterface;\r
//\r
// Get some memory\r
//\r
- FileInterface = AllocateZeroPool(sizeof(EFI_FILE_PROTOCOL_MEM));\r
- if (FileInterface == NULL){\r
+ FileInterface = AllocateZeroPool (sizeof (EFI_FILE_PROTOCOL_MEM));\r
+ if (FileInterface == NULL) {\r
return (NULL);\r
}\r
\r
FileInterface->Write = FileInterfaceMemWrite;\r
FileInterface->Unicode = Unicode;\r
\r
- ASSERT(FileInterface->Buffer == NULL);\r
- ASSERT(FileInterface->BufferSize == 0);\r
- ASSERT(FileInterface->Position == 0);\r
+ ASSERT (FileInterface->Buffer == NULL);\r
+ ASSERT (FileInterface->BufferSize == 0);\r
+ ASSERT (FileInterface->Position == 0);\r
\r
if (Unicode) {\r
- FileInterface->Buffer = AllocateZeroPool(sizeof(gUnicodeFileTag));\r
+ FileInterface->Buffer = AllocateZeroPool (sizeof (gUnicodeFileTag));\r
if (FileInterface->Buffer == NULL) {\r
FreePool (FileInterface);\r
return NULL;\r
}\r
- *((CHAR16 *) (FileInterface->Buffer)) = EFI_UNICODE_BYTE_ORDER_MARK;\r
- FileInterface->BufferSize = 2;\r
- FileInterface->Position = 2;\r
+\r
+ *((CHAR16 *)(FileInterface->Buffer)) = EFI_UNICODE_BYTE_ORDER_MARK;\r
+ FileInterface->BufferSize = 2;\r
+ FileInterface->Position = 2;\r
}\r
\r
return ((EFI_FILE_PROTOCOL *)FileInterface);\r
}\r
\r
typedef struct {\r
- UINT64 Revision;\r
- EFI_FILE_OPEN Open;\r
- EFI_FILE_CLOSE Close;\r
- EFI_FILE_DELETE Delete;\r
- EFI_FILE_READ Read;\r
- EFI_FILE_WRITE Write;\r
- EFI_FILE_GET_POSITION GetPosition;\r
- EFI_FILE_SET_POSITION SetPosition;\r
- EFI_FILE_GET_INFO GetInfo;\r
- EFI_FILE_SET_INFO SetInfo;\r
- EFI_FILE_FLUSH Flush;\r
- BOOLEAN Unicode;\r
- EFI_FILE_PROTOCOL *Orig;\r
+ UINT64 Revision;\r
+ EFI_FILE_OPEN Open;\r
+ EFI_FILE_CLOSE Close;\r
+ EFI_FILE_DELETE Delete;\r
+ EFI_FILE_READ Read;\r
+ EFI_FILE_WRITE Write;\r
+ EFI_FILE_GET_POSITION GetPosition;\r
+ EFI_FILE_SET_POSITION SetPosition;\r
+ EFI_FILE_GET_INFO GetInfo;\r
+ EFI_FILE_SET_INFO SetInfo;\r
+ EFI_FILE_FLUSH Flush;\r
+ BOOLEAN Unicode;\r
+ EFI_FILE_PROTOCOL *Orig;\r
} EFI_FILE_PROTOCOL_FILE;\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileSetPosition(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN UINT64 Position\r
+FileInterfaceFileSetPosition (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN UINT64 Position\r
)\r
{\r
- return ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->SetPosition(((EFI_FILE_PROTOCOL_FILE*)This)->Orig, Position);\r
+ return ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->SetPosition (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, Position);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileGetPosition(\r
- IN EFI_FILE_PROTOCOL *This,\r
- OUT UINT64 *Position\r
+FileInterfaceFileGetPosition (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ OUT UINT64 *Position\r
)\r
{\r
- return ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->GetPosition(((EFI_FILE_PROTOCOL_FILE*)This)->Orig, Position);\r
+ return ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->GetPosition (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, Position);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileGetInfo(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN EFI_GUID *InformationType,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceFileGetInfo (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN EFI_GUID *InformationType,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
- return ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->GetInfo(((EFI_FILE_PROTOCOL_FILE*)This)->Orig, InformationType, BufferSize, Buffer);\r
+ return ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->GetInfo (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, InformationType, BufferSize, Buffer);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileSetInfo(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN EFI_GUID *InformationType,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer\r
+FileInterfaceFileSetInfo (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN EFI_GUID *InformationType,\r
+ IN UINTN BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
- return ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->SetInfo(((EFI_FILE_PROTOCOL_FILE*)This)->Orig, InformationType, BufferSize, Buffer);\r
+ return ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->SetInfo (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, InformationType, BufferSize, Buffer);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileFlush(\r
+FileInterfaceFileFlush (\r
IN EFI_FILE_PROTOCOL *This\r
)\r
{\r
- return ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->Flush(((EFI_FILE_PROTOCOL_FILE*)This)->Orig);\r
+ return ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->Flush (((EFI_FILE_PROTOCOL_FILE *)This)->Orig);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileRead(\r
- IN EFI_FILE_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+FileInterfaceFileRead (\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
EFI_STATUS Status;\r
CHAR8 *AsciiStrBuffer;\r
CHAR16 *UscStrBuffer;\r
UINTN Size;\r
- if (((EFI_FILE_PROTOCOL_FILE*)This)->Unicode) {\r
+\r
+ if (((EFI_FILE_PROTOCOL_FILE *)This)->Unicode) {\r
//\r
// Unicode\r
// There might be different file tag for the Unicode file. We cannot unconditionally insert the \xFEFF.\r
// So we choose to leave the file content as is.\r
//\r
- return (((EFI_FILE_PROTOCOL_FILE*)This)->Orig->Read(((EFI_FILE_PROTOCOL_FILE*)This)->Orig, BufferSize, Buffer));\r
+ return (((EFI_FILE_PROTOCOL_FILE *)This)->Orig->Read (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, BufferSize, Buffer));\r
} else {\r
//\r
// Ascii\r
if (*BufferSize == 0) {\r
return EFI_SUCCESS;\r
}\r
- Status = ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->GetPosition (((EFI_FILE_PROTOCOL_FILE*)This)->Orig, &Position);\r
+\r
+ Status = ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->GetPosition (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, &Position);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
if (Position == 0) {\r
//\r
// First two bytes in Buffer is for the Unicode file tag.\r
//\r
*(CHAR16 *)Buffer = gUnicodeFileTag;\r
- Buffer = (CHAR16 *)Buffer + 1;\r
- Size = *BufferSize / sizeof (CHAR16) - 1;\r
+ Buffer = (CHAR16 *)Buffer + 1;\r
+ Size = *BufferSize / sizeof (CHAR16) - 1;\r
} else {\r
- Size = *BufferSize / sizeof (CHAR16);\r
+ Size = *BufferSize / sizeof (CHAR16);\r
}\r
+\r
AsciiStrBuffer = AllocateZeroPool (Size + 1);\r
if (AsciiStrBuffer == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- UscStrBuffer = AllocateZeroPool ((Size + 1) * sizeof(CHAR16));\r
- if (UscStrBuffer== NULL) {\r
- SHELL_FREE_NON_NULL(AsciiStrBuffer);\r
+\r
+ UscStrBuffer = AllocateZeroPool ((Size + 1) * sizeof (CHAR16));\r
+ if (UscStrBuffer == NULL) {\r
+ SHELL_FREE_NON_NULL (AsciiStrBuffer);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- Status = ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->Read (((EFI_FILE_PROTOCOL_FILE*)This)->Orig, &Size, AsciiStrBuffer);\r
- if (!EFI_ERROR(Status)) {\r
+\r
+ Status = ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->Read (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, &Size, AsciiStrBuffer);\r
+ if (!EFI_ERROR (Status)) {\r
AsciiStrToUnicodeStrS (AsciiStrBuffer, UscStrBuffer, Size + 1);\r
*BufferSize = Size * sizeof (CHAR16);\r
CopyMem (Buffer, UscStrBuffer, *BufferSize);\r
}\r
+\r
SHELL_FREE_NON_NULL (AsciiStrBuffer);\r
SHELL_FREE_NON_NULL (UscStrBuffer);\r
return Status;\r
EFI_STATUS\r
EFIAPI\r
FileInterfaceFileOpen (\r
- IN EFI_FILE_PROTOCOL *This,\r
- OUT EFI_FILE_PROTOCOL **NewHandle,\r
- IN CHAR16 *FileName,\r
- IN UINT64 OpenMode,\r
- IN UINT64 Attributes\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ OUT EFI_FILE_PROTOCOL **NewHandle,\r
+ IN CHAR16 *FileName,\r
+ IN UINT64 OpenMode,\r
+ IN UINT64 Attributes\r
)\r
{\r
- return ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->Open(((EFI_FILE_PROTOCOL_FILE*)This)->Orig, NewHandle, FileName, OpenMode, Attributes);\r
+ return ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->Open (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, NewHandle, FileName, OpenMode, Attributes);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileDelete(\r
+FileInterfaceFileDelete (\r
IN EFI_FILE_PROTOCOL *This\r
)\r
{\r
- EFI_STATUS Status;\r
- Status = ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->Delete(((EFI_FILE_PROTOCOL_FILE*)This)->Orig);\r
- FreePool(This);\r
+ EFI_STATUS Status;\r
+\r
+ Status = ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->Delete (((EFI_FILE_PROTOCOL_FILE *)This)->Orig);\r
+ FreePool (This);\r
return (Status);\r
}\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileClose(\r
- IN EFI_FILE_PROTOCOL *This\r
+FileInterfaceFileClose (\r
+ IN EFI_FILE_PROTOCOL *This\r
)\r
{\r
- EFI_STATUS Status;\r
- Status = ((EFI_FILE_PROTOCOL_FILE*)This)->Orig->Close(((EFI_FILE_PROTOCOL_FILE*)This)->Orig);\r
- FreePool(This);\r
+ EFI_STATUS Status;\r
+\r
+ Status = ((EFI_FILE_PROTOCOL_FILE *)This)->Orig->Close (((EFI_FILE_PROTOCOL_FILE *)This)->Orig);\r
+ FreePool (This);\r
return (Status);\r
}\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FileInterfaceFileWrite(\r
+FileInterfaceFileWrite (\r
IN EFI_FILE_PROTOCOL *This,\r
IN OUT UINTN *BufferSize,\r
IN VOID *Buffer\r
CHAR8 *AsciiBuffer;\r
UINTN Size;\r
EFI_STATUS Status;\r
- if (((EFI_FILE_PROTOCOL_FILE*)This)->Unicode) {\r
+\r
+ if (((EFI_FILE_PROTOCOL_FILE *)This)->Unicode) {\r
//\r
// Unicode\r
//\r
- return (((EFI_FILE_PROTOCOL_FILE*)This)->Orig->Write(((EFI_FILE_PROTOCOL_FILE*)This)->Orig, BufferSize, Buffer));\r
+ return (((EFI_FILE_PROTOCOL_FILE *)This)->Orig->Write (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, BufferSize, Buffer));\r
} else {\r
//\r
// Ascii\r
//\r
- AsciiBuffer = AllocateZeroPool(*BufferSize);\r
- AsciiSPrint(AsciiBuffer, *BufferSize, "%S", Buffer);\r
- Size = AsciiStrSize(AsciiBuffer) - 1; // (we dont need the null terminator)\r
- Status = (((EFI_FILE_PROTOCOL_FILE*)This)->Orig->Write(((EFI_FILE_PROTOCOL_FILE*)This)->Orig, &Size, AsciiBuffer));\r
- FreePool(AsciiBuffer);\r
+ AsciiBuffer = AllocateZeroPool (*BufferSize);\r
+ AsciiSPrint (AsciiBuffer, *BufferSize, "%S", Buffer);\r
+ Size = AsciiStrSize (AsciiBuffer) - 1; // (we dont need the null terminator)\r
+ Status = (((EFI_FILE_PROTOCOL_FILE *)This)->Orig->Write (((EFI_FILE_PROTOCOL_FILE *)This)->Orig, &Size, AsciiBuffer));\r
+ FreePool (AsciiBuffer);\r
return (Status);\r
}\r
}\r
\r
@return a new EFI_FILE_PROTOCOL object to be used instead of the template.\r
**/\r
-EFI_FILE_PROTOCOL*\r
-CreateFileInterfaceFile(\r
+EFI_FILE_PROTOCOL *\r
+CreateFileInterfaceFile (\r
IN CONST EFI_FILE_PROTOCOL *Template,\r
IN CONST BOOLEAN Unicode\r
)\r
{\r
- EFI_FILE_PROTOCOL_FILE *NewOne;\r
+ EFI_FILE_PROTOCOL_FILE *NewOne;\r
\r
- NewOne = AllocateZeroPool(sizeof(EFI_FILE_PROTOCOL_FILE));\r
+ NewOne = AllocateZeroPool (sizeof (EFI_FILE_PROTOCOL_FILE));\r
if (NewOne == NULL) {\r
return (NULL);\r
}\r
- CopyMem(NewOne, Template, sizeof(EFI_FILE_PROTOCOL_FILE));\r
+\r
+ CopyMem (NewOne, Template, sizeof (EFI_FILE_PROTOCOL_FILE));\r
NewOne->Orig = (EFI_FILE_PROTOCOL *)Template;\r
NewOne->Unicode = Unicode;\r
NewOne->Open = FileInterfaceFileOpen;\r