CHAR16 *ProblemParam;\r
SHELL_STATUS ShellStatus;\r
LIST_ENTRY *Package;\r
- CONST CHAR16 *Cwd;\r
- CHAR16 *NFS;\r
- CHAR16 *Spot;\r
+ CHAR16 *NewName;\r
CONST CHAR16 *Name;\r
UINTN Offset;\r
UINTN Size;\r
- UINT64 LastOffset;\r
EDIT_FILE_TYPE WhatToDo;\r
\r
Buffer = NULL;\r
ShellStatus = SHELL_SUCCESS;\r
- NFS = NULL;\r
- Cwd = NULL;\r
+ NewName = NULL;\r
Buffer = NULL;\r
Name = NULL;\r
- Spot = NULL;\r
Offset = 0;\r
Size = 0;\r
- LastOffset = 0;\r
WhatToDo = FileTypeNone;\r
\r
//\r
Offset = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 2));\r
Size = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 3));\r
}\r
+ if (Offset == (UINTN)-1 || Size == (UINTN)-1) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"-d");\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ }\r
}\r
\r
//\r
// check for -f\r
//\r
if (ShellCommandLineGetFlag(Package, L"-f") && (WhatToDo == FileTypeNone)){\r
- if (ShellCommandLineGetCount(Package) > 2) {\r
+ if (ShellCommandLineGetCount(Package) < 2) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else if (ShellCommandLineGetCount(Package) > 2) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Name = ShellCommandLineGetRawValue(Package, 1);\r
- if (!IsValidFileName(Name)) {\r
+ if (Name == NULL || !IsValidFileName(Name)) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, Name);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Size = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 2));\r
}\r
}\r
- ShellCommandLineFreeVarList (Package);\r
+ Name = ShellCommandLineGetRawValue(Package, 1);\r
+ if (WhatToDo == FileTypeNone && Name != NULL) {\r
+ if (ShellCommandLineGetCount(Package) > 2) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else 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
ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else if (WhatToDo == FileTypeFileBuffer && ShellGetCurrentDir(NULL) == NULL) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellDebug1HiiHandle);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
\r
if (ShellStatus == SHELL_SUCCESS) {\r
switch (WhatToDo) {\r
case FileTypeFileBuffer:\r
Status = HBufferImageRead (\r
- Name,\r
+ Name==NULL?L"":Name,\r
NULL,\r
0,\r
0,\r
case FileTypeDiskBuffer:\r
Status = HBufferImageRead (\r
NULL,\r
- Name,\r
+ Name==NULL?L"":Name,\r
Offset,\r
Size,\r
0,\r
);\r
break;\r
\r
+ default:\r
+ Status = EFI_NOT_FOUND;\r
+ break;\r
}\r
if (!EFI_ERROR (Status)) {\r
HMainEditorRefresh ();\r
//\r
// back up the status string\r
//\r
- Buffer = CatSPrint (NULL, L"%s", StatusBarGetString());\r
+ Buffer = CatSPrint (NULL, L"%s\r\n", StatusBarGetString());\r
}\r
}\r
\r
//\r
// print out the status string\r
//\r
- ShellPrintEx(-1, -1, L"%s", gShellDebug1HiiHandle, Buffer);\r
+ ShellPrintEx(-1, -1, L"%s", Buffer);\r
} else {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), gShellDebug1HiiHandle);\r
}\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