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