\r
FileBuffer.FileModified = TRUE;\r
\r
- MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row);\r
+ MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row, 0, 0);\r
FileBufferRestorePosition ();\r
FileBufferRefresh ();\r
\r
return Status;\r
}\r
\r
- MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row);\r
+ MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row, 0, 0);\r
FileBufferRestorePosition ();\r
Done = TRUE;\r
break;\r
|| FileBufferBackupVar.FileModified != FileBuffer.FileModified \r
|| FileBufferBackupVar.ReadOnly != FileBuffer.ReadOnly) {\r
\r
- MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row);\r
+ MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row, 0, 0);\r
FileBufferRestorePosition ();\r
FileBufferRefresh ();\r
}\r
@param[in] Modified TRUE if the file was modified. FALSE otherwise.\r
@param[in] LastCol The last printable column.\r
@param[in] LastRow The last printable row.\r
+ @param[in] Offset The offset into the file. (only for mem/disk)\r
+ @param[in] Size The file's size. (only for mem/disk)\r
\r
@retval EFI_SUCCESS The operation was successful.\r
**/\r
MainTitleBarRefresh (\r
IN CONST CHAR16 *FileName OPTIONAL,\r
IN CONST EDIT_FILE_TYPE FileType,\r
- IN BOOLEAN ReadOnly,\r
- IN BOOLEAN Modified,\r
- IN UINTN LastCol,\r
- IN UINTN LastRow\r
+ IN CONST BOOLEAN ReadOnly,\r
+ IN CONST BOOLEAN Modified,\r
+ IN CONST UINTN LastCol,\r
+ IN CONST UINTN LastRow,\r
+ IN CONST UINTN Offset,\r
+ IN CONST UINTN Size\r
)\r
{\r
TITLE_BAR_COLOR_UNION Orig;\r
@param[in] Modified TRUE if the file was modified. FALSE otherwise.\r
@param[in] LastCol The last printable column.\r
@param[in] LastRow The last printable row.\r
+ @param[in] Offset The offset into the file. (only for mem/disk)\r
+ @param[in] Size The file's size. (only for mem/disk)\r
\r
@retval EFI_SUCCESS The operation was successful.\r
**/\r
MainTitleBarRefresh (\r
IN CONST CHAR16 *FileName OPTIONAL,\r
IN CONST EDIT_FILE_TYPE FileType,\r
- IN BOOLEAN ReadOnly,\r
- IN BOOLEAN Modified,\r
- IN UINTN LastCol,\r
- IN UINTN LastRow\r
+ IN CONST BOOLEAN ReadOnly,\r
+ IN CONST BOOLEAN Modified,\r
+ IN CONST UINTN LastCol,\r
+ IN CONST UINTN LastRow,\r
+ IN CONST UINTN Offset,\r
+ IN CONST UINTN Size\r
);\r
\r
#endif\r
// variable initialization\r
//\r
Status = EFI_SUCCESS;\r
+ HBufferImage.BufferType = BufferType;\r
\r
//\r
// three types of buffer supported\r
{\r
CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
EFI_DEVICE_PATH_PROTOCOL *DupDevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *DupDevicePathForFree;\r
EFI_HANDLE Handle;\r
EFI_BLOCK_IO_PROTOCOL *BlkIo;\r
EFI_STATUS Status;\r
return EFI_INVALID_PARAMETER;\r
}\r
DupDevicePath = DuplicateDevicePath(DevicePath);\r
+ DupDevicePathForFree = DupDevicePath;\r
//\r
// get blkio interface\r
//\r
Status = gBS->LocateDevicePath(&gEfiBlockIoProtocolGuid,&DupDevicePath,&Handle);\r
- FreePool(DupDevicePath);\r
+ FreePool(DupDevicePathForFree);\r
if (EFI_ERROR (Status)) {\r
StatusBarSetStatusString (L"Read Disk Failed");\r
return Status;\r
HBufferImage.HighBits = TRUE;\r
HBufferImage.BufferPosition.Row = 1;\r
HBufferImage.BufferPosition.Column = 1;\r
+ HBufferImage.BufferType = FileTypeFileBuffer;\r
\r
if (!Recover) {\r
UnicodeBuffer = CatSPrint(NULL, L"%d Lines Read", HBufferImage.NumLines);\r
SHELL_STATUS ShellStatus;\r
LIST_ENTRY *Package;\r
CONST CHAR16 *Cwd;\r
- CHAR16 *NFS;\r
+ CHAR16 *NewName;\r
CHAR16 *Spot;\r
CONST CHAR16 *Name;\r
UINTN Offset;\r
\r
Buffer = NULL;\r
ShellStatus = SHELL_SUCCESS;\r
- NFS = NULL;\r
+ NewName = NULL;\r
Cwd = NULL;\r
Buffer = NULL;\r
Name = NULL;\r
// Check for -d\r
//\r
if (ShellCommandLineGetFlag(Package, L"-d")){\r
- if (ShellCommandLineGetCount(Package) < 4) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
- ShellStatus = SHELL_INVALID_PARAMETER;\r
- } else if (ShellCommandLineGetCount(Package) > 4) {\r
+ if (ShellCommandLineGetCount(Package) > 4) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Size = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 2));\r
}\r
}\r
- ShellCommandLineFreeVarList (Package);\r
+ if (WhatToDo == FileTypeNone && ShellCommandLineGetRawValue(Package, 1) != NULL) {\r
+ Name = ShellCommandLineGetRawValue(Package, 1);\r
+ if (!IsValidFileName(Name)) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, Name);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ WhatToDo = FileTypeFileBuffer;\r
+ }\r
+ } else if (WhatToDo == FileTypeNone) {\r
+ if (gEfiShellProtocol->GetCurDir(NULL) == NULL) {\r
+ ShellStatus = SHELL_NOT_FOUND;\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellDebug1HiiHandle);\r
+ } else {\r
+ NewName = EditGetDefaultFileName(L"bin");\r
+ Name = NewName;\r
+ WhatToDo = FileTypeFileBuffer;\r
+ }\r
+ }\r
\r
if (ShellStatus == SHELL_SUCCESS && WhatToDo == FileTypeNone) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
}\r
}\r
}\r
+ ShellCommandLineFreeVarList (Package);\r
}\r
\r
SHELL_FREE_NON_NULL (Buffer);\r
+ SHELL_FREE_NON_NULL (NewName);\r
return ShellStatus;\r
}\r
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
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
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
\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
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
if (ShellCommandLineGetCount(Package) > 1) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else if (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetValue(Package, L"-t") == NULL) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"-t");\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else if (ShellCommandLineGetFlag(Package, L"-h") && ShellCommandLineGetValue(Package, L"-h") == NULL) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"-h");\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
} else if (\r
(ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-h")) ||\r
(ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-s")) ||\r
Pci.h\r
DmpStore.c\r
Dblk.c\r
- ./SmbiosView/EventLogInfo.c\r
- ./SmbiosView/PrintInfo.c\r
- ./SmbiosView/QueryTable.c\r
- ./SmbiosView/SmbiosView.c\r
- ./SmbiosView/Smbios.c\r
- ./SmbiosView/SmbiosViewStrings.uni\r
- ./SmbiosView/LibSmbiosView.c\r
+ SmbiosView/EventLogInfo.c\r
+ SmbiosView/PrintInfo.c\r
+ SmbiosView/QueryTable.c\r
+ SmbiosView/SmbiosView.c\r
+ SmbiosView/Smbios.c\r
+ SmbiosView/SmbiosViewStrings.uni\r
+ SmbiosView/LibSmbiosView.c\r
UefiShellDebug1CommandsLib.c\r
UefiShellDebug1CommandsLib.h\r
UefiShellDebug1CommandsLib.uni\r
EditMenuBar.c\r
\r
## Files specific to the text editor \r
- ./Edit/Edit.c\r
- ./Edit/TextEditor.h\r
- ./Edit/TextEditorTypes.h\r
- ./Edit/FileBuffer.h\r
- ./Edit/FileBuffer.c\r
- ./Edit/MainTextEditor.h\r
- ./Edit/MainTextEditor.c\r
- ./Edit/Misc.h\r
- ./Edit/Misc.c\r
- ./Edit/TextEditStrings.uni\r
+ Edit/Edit.c\r
+ Edit/TextEditor.h\r
+ Edit/TextEditorTypes.h\r
+ Edit/FileBuffer.h\r
+ Edit/FileBuffer.c\r
+ Edit/MainTextEditor.h\r
+ Edit/MainTextEditor.c\r
+ Edit/Misc.h\r
+ Edit/Misc.c\r
+ Edit/TextEditStrings.uni\r
\r
## Files specific to the HEX editor\r
- ./HexEdit/BufferImage.h\r
- ./HexEdit/BufferImage.c\r
- ./HexEdit/Clipboard.h\r
- ./HexEdit/Clipboard.c\r
- ./HexEdit/DiskImage.h\r
- ./HexEdit/DiskImage.c\r
- ./HexEdit/FileImage.h\r
- ./HexEdit/FileImage.c\r
- ./HexEdit/HexEdit.c\r
- ./HexEdit/HexEditor.h\r
- ./HexEdit/HexEditorTypes.h\r
- ./HexEdit/HexeditStrings.uni\r
- ./HexEdit/MainHexEditor.h\r
- ./HexEdit/MainHexEditor.c\r
- ./HexEdit/MemImage.h\r
- ./HexEdit/MemImage.c\r
- ./HexEdit/Misc.h\r
- ./HexEdit/Misc.c\r
+ HexEdit/BufferImage.h\r
+ HexEdit/BufferImage.c\r
+ HexEdit/Clipboard.h\r
+ HexEdit/Clipboard.c\r
+ HexEdit/DiskImage.h\r
+ HexEdit/DiskImage.c\r
+ HexEdit/FileImage.h\r
+ HexEdit/FileImage.c\r
+ HexEdit/HexEdit.c\r
+ HexEdit/HexEditor.h\r
+ HexEdit/HexEditorTypes.h\r
+ HexEdit/HexeditStrings.uni\r
+ HexEdit/MainHexEditor.h\r
+ HexEdit/MainHexEditor.c\r
+ HexEdit/MemImage.h\r
+ HexEdit/MemImage.c\r
+ HexEdit/Misc.h\r
+ HexEdit/Misc.c\r
\r
[Packages]\r
MdePkg/MdePkg.dec\r