]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/MainHexEditor.c
smbiosview - add user input verification.
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / HexEdit / MainHexEditor.c
index 387a1e2d1e9c8850f8ce3c90d8a148b48891e337..961e0cca68f6f08cef73b1212f6c73c476c5430c 100644 (file)
@@ -933,7 +933,9 @@ Returns:
           HMainEditor.BufferImage->FileImage->ReadOnly,\r
           FALSE,\r
           HMainEditor.ScreenSize.Column,\r
-          HMainEditor.ScreenSize.Row\r
+          HMainEditor.ScreenSize.Row,\r
+          HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,\r
+          HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size  :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size  :0\r
           );\r
         Done = TRUE;\r
         break;\r
@@ -1158,7 +1160,9 @@ Returns:
           HMainEditor.BufferImage->FileImage->ReadOnly,\r
           FALSE,\r
           HMainEditor.ScreenSize.Column,\r
-          HMainEditor.ScreenSize.Row\r
+          HMainEditor.ScreenSize.Row,\r
+          HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,\r
+          HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size  :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size  :0\r
           );\r
         Done = TRUE;\r
         break;\r
@@ -1409,7 +1413,9 @@ Returns:
           HMainEditor.BufferImage->FileImage->ReadOnly,\r
           FALSE,\r
           HMainEditor.ScreenSize.Column,\r
-          HMainEditor.ScreenSize.Row\r
+          HMainEditor.ScreenSize.Row,\r
+          HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,\r
+          HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size  :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size  :0\r
           );\r
         Done = TRUE;\r
         break;\r
@@ -1827,6 +1833,25 @@ Returns:
 \r
 --*/\r
 {\r
+  BOOLEAN NameChange;\r
+  BOOLEAN ReadChange;\r
+\r
+  NameChange = FALSE;\r
+  ReadChange = FALSE;\r
+\r
+  if ( HMainEditor.BufferImage->FileImage != NULL && \r
+       HMainEditor.BufferImage->FileImage->FileName != NULL && \r
+       HBufferImageBackupVar.FileImage != NULL && \r
+       HBufferImageBackupVar.FileImage->FileName != NULL && \r
+       StrCmp (HMainEditor.BufferImage->FileImage->FileName, HBufferImageBackupVar.FileImage->FileName) != 0 ) {\r
+    NameChange = TRUE;\r
+  }\r
+  if ( HMainEditor.BufferImage->FileImage != NULL && \r
+       HBufferImageBackupVar.FileImage != NULL && \r
+       HMainEditor.BufferImage->FileImage->ReadOnly != HBufferImageBackupVar.FileImage->ReadOnly ) {\r
+    ReadChange = TRUE;\r
+  }\r
+\r
   //\r
   // to aVOID screen flicker\r
   // the stall value is from experience\r
@@ -1834,28 +1859,48 @@ Returns:
   gBS->Stall (50);\r
 \r
   //\r
-  // call the four components refresh function\r
+  // call the components refresh function\r
   //\r
-  MainTitleBarRefresh (\r
-    HMainEditor.BufferImage->BufferType == FileTypeFileBuffer?HMainEditor.BufferImage->FileImage->FileName:HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Name:NULL,\r
-    HMainEditor.BufferImage->BufferType,\r
-    HMainEditor.BufferImage->FileImage->ReadOnly,\r
-    HMainEditor.BufferImage->Modified,\r
-    HMainEditor.ScreenSize.Column,\r
-    HMainEditor.ScreenSize.Row\r
-    );\r
-  HBufferImageRefresh ();\r
-  StatusBarRefresh (\r
-    HEditorFirst,\r
-    HMainEditor.ScreenSize.Row,\r
-    HMainEditor.ScreenSize.Column,\r
-    0,\r
-    0,\r
-    TRUE\r
-    );\r
-  MenuBarRefresh (    \r
-    HMainEditor.ScreenSize.Row,\r
-    HMainEditor.ScreenSize.Column);\r
+  if (HEditorFirst \r
+    || NameChange\r
+    || HMainEditor.BufferImage->BufferType != HBufferImageBackupVar.BufferType \r
+    || HBufferImageBackupVar.Modified != HMainEditor.BufferImage->Modified \r
+    || ReadChange ) {\r
+\r
+    MainTitleBarRefresh (\r
+      HMainEditor.BufferImage->BufferType == FileTypeFileBuffer?HMainEditor.BufferImage->FileImage->FileName:HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Name:NULL,\r
+      HMainEditor.BufferImage->BufferType,\r
+      HMainEditor.BufferImage->FileImage->ReadOnly,\r
+      HMainEditor.BufferImage->Modified,\r
+      HMainEditor.ScreenSize.Column,\r
+      HMainEditor.ScreenSize.Row,\r
+      HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,\r
+      HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size  :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size  :0\r
+      );\r
+    HBufferImageRefresh ();\r
+  }\r
+  if (HEditorFirst\r
+    || HBufferImageBackupVar.DisplayPosition.Row != HMainEditor.BufferImage->DisplayPosition.Row \r
+    || HBufferImageBackupVar.DisplayPosition.Column != HMainEditor.BufferImage->DisplayPosition.Column \r
+    || StatusBarGetRefresh()) {\r
+\r
+    StatusBarRefresh (\r
+      HEditorFirst,\r
+      HMainEditor.ScreenSize.Row,\r
+      HMainEditor.ScreenSize.Column,\r
+      0,\r
+      0,\r
+      TRUE\r
+      );\r
+    HBufferImageRefresh ();\r
+  }\r
+\r
+  if (HEditorFirst) {\r
+    MenuBarRefresh (    \r
+      HMainEditor.ScreenSize.Row,\r
+      HMainEditor.ScreenSize.Column);\r
+    HBufferImageRefresh ();\r
+  }\r
 \r
   //\r
   // EditorFirst is now set to FALSE\r