]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c
ShellPkg/UefiShellDebug1CommandsLib: Remove unnecessary EFIAPI
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / Edit / FileBuffer.c
index 8f7c870bb12cfa5a951a6a920c031638ce383d88..9713ccaf5083dd2f44cf553502cd28fe535db990 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Implements filebuffer interface functions.\r
 \r
 /** @file\r
   Implements filebuffer interface functions.\r
 \r
-  Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved. <BR>\r
+  Copyright (c) 2005 - 2016, Intel Corporation. All rights reserved. <BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -53,7 +53,7 @@ EFI_EDITOR_FILE_BUFFER  FileBufferConst = {
 //\r
 // the whole edit area needs to be refreshed\r
 //\r
 //\r
 // the whole edit area needs to be refreshed\r
 //\r
-STATIC BOOLEAN          FileBufferNeedRefresh;\r
+BOOLEAN          FileBufferNeedRefresh;        \r
 \r
 //\r
 // only the current line in edit area needs to be refresh\r
 \r
 //\r
 // only the current line in edit area needs to be refresh\r
@@ -72,7 +72,6 @@ extern BOOLEAN          EditorMouseAction;
   @param EFI_OUT_OF_RESOURCES   A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
   @param EFI_OUT_OF_RESOURCES   A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferInit (\r
   VOID\r
   )\r
 FileBufferInit (\r
   VOID\r
   )\r
@@ -121,7 +120,6 @@ FileBufferInit (
   @retval EFI_SUCCESS           The backup operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS           The backup operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferBackup (\r
   VOID\r
   )\r
 FileBufferBackup (\r
   VOID\r
   )\r
@@ -155,7 +153,6 @@ FileBufferBackup (
   @return  The line structure after the advance.\r
 **/\r
 EFI_EDITOR_LINE *\r
   @return  The line structure after the advance.\r
 **/\r
 EFI_EDITOR_LINE *\r
-EFIAPI\r
 InternalEditorMiscLineAdvance (\r
   IN CONST UINTN            Count,\r
   IN CONST EFI_EDITOR_LINE  *CurrentLine,\r
 InternalEditorMiscLineAdvance (\r
   IN CONST UINTN            Count,\r
   IN CONST EFI_EDITOR_LINE  *CurrentLine,\r
@@ -195,7 +192,6 @@ InternalEditorMiscLineAdvance (
   @return  The line structure after the retreat.\r
 **/\r
 EFI_EDITOR_LINE *\r
   @return  The line structure after the retreat.\r
 **/\r
 EFI_EDITOR_LINE *\r
-EFIAPI\r
 InternalEditorMiscLineRetreat (\r
   IN CONST UINTN            Count,\r
   IN CONST EFI_EDITOR_LINE  *CurrentLine,\r
 InternalEditorMiscLineRetreat (\r
   IN CONST UINTN            Count,\r
   IN CONST EFI_EDITOR_LINE  *CurrentLine,\r
@@ -262,7 +258,6 @@ MoveLine (
   @retval EFI_SUCCESS           The backup operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS           The backup operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferRestoreMousePosition (\r
   VOID\r
   )\r
 FileBufferRestoreMousePosition (\r
   VOID\r
   )\r
@@ -300,8 +295,9 @@ FileBufferRestoreMousePosition (
       // backup the old screen attributes\r
       //\r
       Orig                  = MainEditor.ColorAttributes;\r
       // backup the old screen attributes\r
       //\r
       Orig                  = MainEditor.ColorAttributes;\r
-      New.Colors.Foreground = Orig.Colors.Background;\r
-      New.Colors.Background = Orig.Colors.Foreground;\r
+      New.Data              = 0;\r
+      New.Colors.Foreground = Orig.Colors.Background & 0xF;\r
+      New.Colors.Background = Orig.Colors.Foreground & 0x7;\r
 \r
       //\r
       // clear the old mouse position\r
 \r
       //\r
       // clear the old mouse position\r
@@ -342,7 +338,7 @@ FileBufferRestoreMousePosition (
       //\r
       // set the new mouse position\r
       //\r
       //\r
       // set the new mouse position\r
       //\r
-      gST->ConOut->SetAttribute (gST->ConOut, New.Data);\r
+      gST->ConOut->SetAttribute (gST->ConOut, New.Data & 0x7F);\r
 \r
       //\r
       // clear the old mouse position\r
 \r
       //\r
       // clear the old mouse position\r
@@ -405,7 +401,6 @@ FileBufferRestoreMousePosition (
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferFreeLines (\r
   VOID\r
   )\r
 FileBufferFreeLines (\r
   VOID\r
   )\r
@@ -449,7 +444,6 @@ FileBufferFreeLines (
   @retval EFI_SUCCESS   The cleanup was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS   The cleanup was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferCleanup (\r
   VOID\r
   )\r
 FileBufferCleanup (\r
   VOID\r
   )\r
@@ -488,7 +482,9 @@ FileBufferPrintLine (
 \r
   CHAR16  *Buffer;\r
   UINTN   Limit;\r
 \r
   CHAR16  *Buffer;\r
   UINTN   Limit;\r
-  CHAR16  PrintLine[200];\r
+  CHAR16  *PrintLine;\r
+  CHAR16  *PrintLine2;\r
+  UINTN   BufLen; \r
 \r
   //\r
   // print start from correct character\r
 \r
   //\r
   // print start from correct character\r
@@ -500,19 +496,30 @@ FileBufferPrintLine (
     Limit = 0;\r
   }\r
 \r
     Limit = 0;\r
   }\r
 \r
-  StrnCpy (PrintLine, Buffer, MIN(MIN(Limit,MainEditor.ScreenSize.Column), 200));\r
-  for (; Limit < MainEditor.ScreenSize.Column; Limit++) {\r
-    PrintLine[Limit] = L' ';\r
-  }\r
+  BufLen = (MainEditor.ScreenSize.Column + 1) * sizeof (CHAR16);\r
+  PrintLine = AllocatePool (BufLen);\r
+  if (PrintLine != NULL) {\r
+    StrnCpyS (PrintLine, BufLen/sizeof(CHAR16), Buffer, MIN(Limit, MainEditor.ScreenSize.Column));\r
+    for (; Limit < MainEditor.ScreenSize.Column; Limit++) {\r
+      PrintLine[Limit] = L' ';\r
+    }\r
 \r
 \r
-  PrintLine[MainEditor.ScreenSize.Column] = CHAR_NULL;\r
+    PrintLine[MainEditor.ScreenSize.Column] = CHAR_NULL;\r
 \r
 \r
-  ShellPrintEx (\r
-    0,\r
-    (INT32)Row - 1,\r
-    L"%s",\r
-    PrintLine\r
-    );\r
+    PrintLine2 = AllocatePool (BufLen * 2);\r
+    if (PrintLine2 != NULL) {\r
+      ShellCopySearchAndReplace(PrintLine, PrintLine2, BufLen * 2, L"%", L"^%", FALSE, FALSE);\r
+\r
+      ShellPrintEx (\r
+        0,\r
+        (INT32)Row - 1,\r
+        L"%s",\r
+        PrintLine2\r
+        );\r
+      FreePool (PrintLine2);\r
+    }\r
+    FreePool (PrintLine);\r
+  }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
@@ -523,7 +530,6 @@ FileBufferPrintLine (
   @retval EFI_SUCCESS           The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS           The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferRestorePosition (\r
   VOID\r
   )\r
 FileBufferRestorePosition (\r
   VOID\r
   )\r
@@ -545,7 +551,6 @@ FileBufferRestorePosition (
   @retval EFI_LOAD_ERROR  There was an error finding what to write.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_LOAD_ERROR  There was an error finding what to write.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferRefresh (\r
   VOID\r
   )\r
 FileBufferRefresh (\r
   VOID\r
   )\r
@@ -627,11 +632,11 @@ FileBufferRefresh (
 \r
       Link = Link->ForwardLink;\r
       Row++;\r
 \r
       Link = Link->ForwardLink;\r
       Row++;\r
-    } while (Link != FileBuffer.ListHead && Row <= (MainEditor.ScreenSize.Row - 4));\r
+    } while (Link != FileBuffer.ListHead && Row <= (MainEditor.ScreenSize.Row - 1));\r
     //\r
     // while not file end and not screen full\r
     //\r
     //\r
     // while not file end and not screen full\r
     //\r
-    while (Row <= (MainEditor.ScreenSize.Row - 4)) {\r
+    while (Row <= (MainEditor.ScreenSize.Row - 1)) {\r
       EditorClearLine (Row, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row);\r
       Row++;\r
     }\r
       EditorClearLine (Row, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row);\r
       Row++;\r
     }\r
@@ -657,7 +662,6 @@ FileBufferRefresh (
   @return         The line created.\r
 **/\r
 EFI_EDITOR_LINE *\r
   @return         The line created.\r
 **/\r
 EFI_EDITOR_LINE *\r
-EFIAPI\r
 FileBufferCreateLine (\r
   VOID\r
   )\r
 FileBufferCreateLine (\r
   VOID\r
   )\r
@@ -712,7 +716,6 @@ FileBufferCreateLine (
   @retval EFI_INVALID_PARAMETER Str is not a valid filename.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_INVALID_PARAMETER Str is not a valid filename.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferSetFileName (\r
   IN CONST CHAR16 *Str\r
   )\r
 FileBufferSetFileName (\r
   IN CONST CHAR16 *Str\r
   )\r
@@ -744,7 +747,6 @@ FileBufferSetFileName (
   @retval EFI_SUCCESS           The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS           The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferFree (\r
   VOID\r
   )\r
 FileBufferFree (\r
   VOID\r
   )\r
@@ -771,7 +773,6 @@ FileBufferFree (
   @retval EFI_INVALID_PARAMETER  FileName is a directory.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_INVALID_PARAMETER  FileName is a directory.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferRead (\r
   IN CONST CHAR16  *FileName,\r
   IN CONST BOOLEAN Recover\r
 FileBufferRead (\r
   IN CONST CHAR16  *FileName,\r
   IN CONST BOOLEAN Recover\r
@@ -1266,7 +1267,6 @@ Done:
   @param[out] Size              The amount of the buffer used on return.\r
 **/\r
 VOID\r
   @param[out] Size              The amount of the buffer used on return.\r
 **/\r
 VOID\r
-EFIAPI\r
 GetNewLine (\r
   IN CONST EE_NEWLINE_TYPE Type,\r
   OUT CHAR8           *Buffer,\r
 GetNewLine (\r
   IN CONST EE_NEWLINE_TYPE Type,\r
   OUT CHAR8           *Buffer,\r
@@ -1373,7 +1373,6 @@ GetNewLine (
   @return The actuall length.\r
 **/\r
 UINTN\r
   @return The actuall length.\r
 **/\r
 UINTN\r
-EFIAPI\r
 UnicodeToAscii (\r
   IN CONST CHAR16   *UStr,\r
   IN CONST UINTN    Length,\r
 UnicodeToAscii (\r
   IN CONST CHAR16   *UStr,\r
   IN CONST UINTN    Length,\r
@@ -1402,7 +1401,6 @@ UnicodeToAscii (
   @retval EFI_OUT_OF_RESOURCES  There were not enough resources to write the file.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_OUT_OF_RESOURCES  There were not enough resources to write the file.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferSave (\r
   IN CONST CHAR16 *FileName\r
   )\r
 FileBufferSave (\r
   IN CONST CHAR16 *FileName\r
   )\r
@@ -1642,7 +1640,6 @@ FileBufferSave (
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferScrollLeft (\r
   VOID\r
   )\r
 FileBufferScrollLeft (\r
   VOID\r
   )\r
@@ -1685,11 +1682,10 @@ FileBufferScrollLeft (
 /**\r
   Delete a char in line\r
 \r
 /**\r
   Delete a char in line\r
 \r
-  @param[in,out] Line   The line to delete in.\r
-  @param[in] Pos        Position to delete the char at ( start from 0 ).\r
+  @param[in, out] Line   The line to delete in.\r
+  @param[in] Pos         Position to delete the char at ( start from 0 ).\r
 **/\r
 VOID\r
 **/\r
 VOID\r
-EFIAPI\r
 LineDeleteAt (\r
   IN  OUT EFI_EDITOR_LINE       *Line,\r
   IN      UINTN                 Pos\r
 LineDeleteAt (\r
   IN  OUT EFI_EDITOR_LINE       *Line,\r
   IN      UINTN                 Pos\r
@@ -1710,11 +1706,10 @@ LineDeleteAt (
 /**\r
   Concatenate Src into Dest.\r
 \r
 /**\r
   Concatenate Src into Dest.\r
 \r
-  @param[in,out] Dest   Destination string\r
-  @param[in] Src        Src String.\r
+  @param[in, out] Dest   Destination string\r
+  @param[in] Src         Src String.\r
 **/\r
 VOID\r
 **/\r
 VOID\r
-EFIAPI\r
 LineCat (\r
   IN  OUT EFI_EDITOR_LINE *Dest,\r
   IN      EFI_EDITOR_LINE *Src\r
 LineCat (\r
   IN  OUT EFI_EDITOR_LINE *Dest,\r
   IN      EFI_EDITOR_LINE *Src\r
@@ -1755,7 +1750,6 @@ LineCat (
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferDoBackspace (\r
   VOID\r
   )\r
 FileBufferDoBackspace (\r
   VOID\r
   )\r
@@ -1827,7 +1821,6 @@ FileBufferDoBackspace (
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferDoReturn (\r
   VOID\r
   )\r
 FileBufferDoReturn (\r
   VOID\r
   )\r
@@ -1924,7 +1917,6 @@ FileBufferDoReturn (
   @retval EFI_SUCCESS\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferDoDelete (\r
   VOID\r
   )\r
 FileBufferDoDelete (\r
   VOID\r
   )\r
@@ -1987,7 +1979,6 @@ FileBufferDoDelete (
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferScrollRight (\r
   VOID\r
   )\r
 FileBufferScrollRight (\r
   VOID\r
   )\r
@@ -2041,7 +2032,6 @@ FileBufferScrollRight (
   @return The new string size ( include CHAR_NULL ) ( unit is Unicode character ).\r
 **/\r
 UINTN\r
   @return The new string size ( include CHAR_NULL ) ( unit is Unicode character ).\r
 **/\r
 UINTN\r
-EFIAPI\r
 LineStrInsert (\r
   IN      EFI_EDITOR_LINE  *Line,\r
   IN      CHAR16           Char,\r
 LineStrInsert (\r
   IN      EFI_EDITOR_LINE  *Line,\r
   IN      CHAR16           Char,\r
@@ -2094,7 +2084,6 @@ LineStrInsert (
   @retval EFI_SUCCESS           The input was succesful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS           The input was succesful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferAddChar (\r
   IN  CHAR16  Char\r
   )\r
 FileBufferAddChar (\r
   IN  CHAR16  Char\r
   )\r
@@ -2142,7 +2131,6 @@ FileBufferAddChar (
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferDoCharInput (\r
   IN CONST CHAR16 Char\r
   )\r
 FileBufferDoCharInput (\r
   IN CONST CHAR16 Char\r
   )\r
@@ -2193,7 +2181,6 @@ FileBufferDoCharInput (
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferScrollDown (\r
   VOID\r
   )\r
 FileBufferScrollDown (\r
   VOID\r
   )\r
@@ -2239,7 +2226,6 @@ FileBufferScrollDown (
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferScrollUp (\r
   VOID\r
   )\r
 FileBufferScrollUp (\r
   VOID\r
   )\r
@@ -2282,7 +2268,6 @@ FileBufferScrollUp (
   @retval EFI_SUCCESS     The operation wa successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS     The operation wa successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferPageDown (\r
   VOID\r
   )\r
 FileBufferPageDown (\r
   VOID\r
   )\r
@@ -2300,8 +2285,8 @@ FileBufferPageDown (
   //\r
   // has next page\r
   //\r
   //\r
   // has next page\r
   //\r
-  if (FileBuffer.NumLines >= FRow + (MainEditor.ScreenSize.Row - 5)) {\r
-    Gap = (MainEditor.ScreenSize.Row - 5);\r
+  if (FileBuffer.NumLines >= FRow + (MainEditor.ScreenSize.Row - 2)) {\r
+    Gap = (MainEditor.ScreenSize.Row - 2);\r
   } else {\r
     //\r
     // MOVE CURSOR TO LAST LINE\r
   } else {\r
     //\r
     // MOVE CURSOR TO LAST LINE\r
@@ -2333,7 +2318,6 @@ FileBufferPageDown (
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferPageUp (\r
   VOID\r
   )\r
 FileBufferPageUp (\r
   VOID\r
   )\r
@@ -2352,8 +2336,8 @@ FileBufferPageUp (
   //\r
   // has previous page\r
   //\r
   //\r
   // has previous page\r
   //\r
-  if (FRow > (MainEditor.ScreenSize.Row - 5)) {\r
-    Gap = (MainEditor.ScreenSize.Row - 5);\r
+  if (FRow > (MainEditor.ScreenSize.Row - 2)) {\r
+    Gap = (MainEditor.ScreenSize.Row - 2);\r
   } else {\r
     //\r
     // the first line of file will displayed on the first line of screen\r
   } else {\r
     //\r
     // the first line of file will displayed on the first line of screen\r
@@ -2389,7 +2373,6 @@ FileBufferPageUp (
   @retval EFI_SUCCESS       The operation was successful.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_SUCCESS       The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferEnd (\r
   VOID\r
   )\r
 FileBufferEnd (\r
   VOID\r
   )\r
@@ -2427,7 +2410,6 @@ FileBufferEnd (
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferHandleInput (\r
   IN CONST EFI_INPUT_KEY *Key\r
   )\r
 FileBufferHandleInput (\r
   IN CONST EFI_INPUT_KEY *Key\r
   )\r
@@ -2543,7 +2525,6 @@ FileBufferHandleInput (
   @retval FALSE   It is not above the current screen.\r
 **/\r
 BOOLEAN\r
   @retval FALSE   It is not above the current screen.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 AboveCurrentScreen (\r
   IN UINTN FileRow\r
   )\r
 AboveCurrentScreen (\r
   IN UINTN FileRow\r
   )\r
@@ -2567,7 +2548,6 @@ AboveCurrentScreen (
   @retval FALSE     It is not under the current screen.\r
 **/\r
 BOOLEAN\r
   @retval FALSE     It is not under the current screen.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 UnderCurrentScreen (\r
   IN UINTN FileRow\r
   )\r
 UnderCurrentScreen (\r
   IN UINTN FileRow\r
   )\r
@@ -2575,7 +2555,7 @@ UnderCurrentScreen (
   //\r
   // if is to the under of the screen\r
   //\r
   //\r
   // if is to the under of the screen\r
   //\r
-  if (FileRow > FileBuffer.LowVisibleRange.Row + (MainEditor.ScreenSize.Row - 5) - 1) {\r
+  if (FileRow > FileBuffer.LowVisibleRange.Row + (MainEditor.ScreenSize.Row - 2) - 1) {\r
     return TRUE;\r
   }\r
 \r
     return TRUE;\r
   }\r
 \r
@@ -2591,7 +2571,6 @@ UnderCurrentScreen (
   @retval FALSE   It is not to the left.\r
 **/\r
 BOOLEAN\r
   @retval FALSE   It is not to the left.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 LeftCurrentScreen (\r
   IN UINTN FileCol\r
   )\r
 LeftCurrentScreen (\r
   IN UINTN FileCol\r
   )\r
@@ -2615,7 +2594,6 @@ LeftCurrentScreen (
   @retval FALSE   It is not to the right.\r
 **/\r
 BOOLEAN\r
   @retval FALSE   It is not to the right.\r
 **/\r
 BOOLEAN\r
-EFIAPI\r
 RightCurrentScreen (\r
   IN UINTN FileCol\r
   )\r
 RightCurrentScreen (\r
   IN UINTN FileCol\r
   )\r
@@ -2641,7 +2619,6 @@ RightCurrentScreen (
   @return The line after advance/retreat.\r
 **/\r
 EFI_EDITOR_LINE *\r
   @return The line after advance/retreat.\r
 **/\r
 EFI_EDITOR_LINE *\r
-EFIAPI\r
 MoveCurrentLine (\r
   IN  INTN Count\r
   )\r
 MoveCurrentLine (\r
   IN  INTN Count\r
   )\r
@@ -2672,7 +2649,6 @@ MoveCurrentLine (
   @param[in] NewFilePosCol    The column of file position ( start from 1 ).\r
 **/\r
 VOID\r
   @param[in] NewFilePosCol    The column of file position ( start from 1 ).\r
 **/\r
 VOID\r
-EFIAPI\r
 FileBufferMovePosition (\r
   IN CONST UINTN NewFilePosRow,\r
   IN CONST UINTN NewFilePosCol\r
 FileBufferMovePosition (\r
   IN CONST UINTN NewFilePosRow,\r
   IN CONST UINTN NewFilePosCol\r
@@ -2788,7 +2764,6 @@ FileBufferMovePosition (
   @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferCutLine (\r
   OUT EFI_EDITOR_LINE **CutLine\r
   )\r
 FileBufferCutLine (\r
   OUT EFI_EDITOR_LINE **CutLine\r
   )\r
@@ -2868,7 +2843,6 @@ FileBufferCutLine (
   @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferPasteLine (\r
   VOID\r
   )\r
 FileBufferPasteLine (\r
   VOID\r
   )\r
@@ -2940,7 +2914,6 @@ FileBufferPasteLine (
   @retval EFI_NOT_FOUND     The string Str was not found.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_NOT_FOUND     The string Str was not found.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferSearch (\r
   IN CONST CHAR16  *Str,\r
   IN CONST UINTN Offset\r
 FileBufferSearch (\r
   IN CONST CHAR16  *Str,\r
   IN CONST UINTN Offset\r
@@ -2956,7 +2929,8 @@ FileBufferSearch (
   BOOLEAN         Found;\r
 \r
   Column = 0;\r
   BOOLEAN         Found;\r
 \r
   Column = 0;\r
-\r
+  Position = 0;\r
+  \r
   //\r
   // search if in current line\r
   //\r
   //\r
   // search if in current line\r
   //\r
@@ -2969,20 +2943,20 @@ FileBufferSearch (
     Current = FileBuffer.CurrentLine->Buffer + FileBuffer.CurrentLine->Size;\r
   }\r
 \r
     Current = FileBuffer.CurrentLine->Buffer + FileBuffer.CurrentLine->Size;\r
   }\r
 \r
+  Found = FALSE;\r
+\r
   CharPos  =  StrStr (Current, Str);\r
   if (CharPos != NULL) {\r
   CharPos  =  StrStr (Current, Str);\r
   if (CharPos != NULL) {\r
-    Position = CharPos - Current;\r
-  } else {\r
-    Position = 0;\r
-  }\r
+    Position = CharPos - Current + 1;\r
+    Found   = TRUE;\r
+  } \r
 \r
   //\r
   // found\r
   //\r
 \r
   //\r
   // found\r
   //\r
-  if (Position != 0) {\r
+  if (Found) {\r
     Column  = (Position - 1) + FileBuffer.FilePosition.Column + Offset;\r
     Row     = FileBuffer.FilePosition.Row;\r
     Column  = (Position - 1) + FileBuffer.FilePosition.Column + Offset;\r
     Row     = FileBuffer.FilePosition.Row;\r
-    Found   = TRUE;\r
   } else {\r
     //\r
     // not found so find through next lines\r
   } else {\r
     //\r
     // not found so find through next lines\r
@@ -2995,9 +2969,11 @@ FileBufferSearch (
 //      Position  = StrStr (Line->Buffer, Str);\r
       CharPos  =  StrStr (Line->Buffer, Str);\r
       if (CharPos != NULL) {\r
 //      Position  = StrStr (Line->Buffer, Str);\r
       CharPos  =  StrStr (Line->Buffer, Str);\r
       if (CharPos != NULL) {\r
-        Position = CharPos - Line->Buffer;\r
-      }\r
-      if (Position != 0) {\r
+        Position = CharPos - Line->Buffer + 1;\r
+        Found   = TRUE;\r
+      } \r
+      \r
+      if (Found) {\r
         //\r
         // found\r
         //\r
         //\r
         // found\r
         //\r
@@ -3043,7 +3019,6 @@ FileBufferSearch (
   @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
   @retval EFI_OUT_OF_RESOURCES    A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferReplace (\r
   IN CONST CHAR16   *Replace,\r
   IN CONST UINTN    SearchLen\r
 FileBufferReplace (\r
   IN CONST CHAR16   *Replace,\r
   IN CONST UINTN    SearchLen\r
@@ -3096,14 +3071,14 @@ FileBufferReplace (
     //\r
     // set replace into it\r
     //\r
     //\r
     // set replace into it\r
     //\r
-    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column;\r
+    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1;\r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
     }\r
   }\r
 \r
   if (ReplaceLen < SearchLen) {\r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
     }\r
   }\r
 \r
   if (ReplaceLen < SearchLen) {\r
-    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column;\r
+    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1;\r
 \r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
 \r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
@@ -3122,7 +3097,7 @@ FileBufferReplace (
   }\r
 \r
   if (ReplaceLen == SearchLen) {\r
   }\r
 \r
   if (ReplaceLen == SearchLen) {\r
-    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column;\r
+    Buffer = FileBuffer.CurrentLine->Buffer + FileBuffer.FilePosition.Column - 1;\r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
     }\r
     for (Index = 0; Index < ReplaceLen; Index++) {\r
       Buffer[Index] = Replace[Index];\r
     }\r
@@ -3148,7 +3123,6 @@ FileBufferReplace (
   @param[in] TextY      The new y-coordinate.\r
 **/\r
 VOID\r
   @param[in] TextY      The new y-coordinate.\r
 **/\r
 VOID\r
-EFIAPI\r
 FileBufferAdjustMousePosition (\r
   IN CONST INT32 TextX,\r
   IN CONST INT32 TextY\r
 FileBufferAdjustMousePosition (\r
   IN CONST INT32 TextX,\r
   IN CONST INT32 TextY\r
@@ -3207,12 +3181,12 @@ FileBufferAdjustMousePosition (
   // check whether new mouse row position is beyond screen\r
   // if not, adjust it\r
   //\r
   // check whether new mouse row position is beyond screen\r
   // if not, adjust it\r
   //\r
-  if (CoordinateY >= 2 && CoordinateY <= (MainEditor.ScreenSize.Row - 4)) {\r
+  if (CoordinateY >= 2 && CoordinateY <= (MainEditor.ScreenSize.Row - 1)) {\r
     FileBuffer.MousePosition.Row = CoordinateY;\r
   } else if (CoordinateY < 2) {\r
     FileBuffer.MousePosition.Row = 2;\r
     FileBuffer.MousePosition.Row = CoordinateY;\r
   } else if (CoordinateY < 2) {\r
     FileBuffer.MousePosition.Row = 2;\r
-  } else if (CoordinateY > (MainEditor.ScreenSize.Row - 4)) {\r
-    FileBuffer.MousePosition.Row = (MainEditor.ScreenSize.Row - 4);\r
+  } else if (CoordinateY > (MainEditor.ScreenSize.Row - 1)) {\r
+    FileBuffer.MousePosition.Row = (MainEditor.ScreenSize.Row - 1);\r
   }\r
 \r
 }\r
   }\r
 \r
 }\r
@@ -3225,7 +3199,6 @@ FileBufferAdjustMousePosition (
   @param[in] Offset       The column to start at.\r
 **/\r
 EFI_STATUS\r
   @param[in] Offset       The column to start at.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 FileBufferReplaceAll (\r
   IN CHAR16 *SearchStr,\r
   IN CHAR16 *ReplaceStr,\r
 FileBufferReplaceAll (\r
   IN CHAR16 *SearchStr,\r
   IN CHAR16 *ReplaceStr,\r
@@ -3343,7 +3316,6 @@ FileBufferReplaceAll (
   Set the modified state to TRUE.\r
 **/\r
 VOID\r
   Set the modified state to TRUE.\r
 **/\r
 VOID\r
-EFIAPI\r
 FileBufferSetModified (\r
   VOID\r
   )\r
 FileBufferSetModified (\r
   VOID\r
   )\r