https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5830ccb85ee4083d7f0f0…
commit 5830ccb85ee4083d7f0f0c482e5420a33993fc0c
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Wed Jul 1 02:39:25 2020 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Wed Aug 19 20:36:05 2020 +0200
[CMD] Improve the way the ErrorMessage() helper and the MKDIR and RMDIR commands
report their errors.
For MKDIR, also properly support the case of ERROR_FILE_EXISTS and
ERROR_ALREADY_EXISTS last-errors by displaying the standard error
"A subdirectory or file XXX already exists.\n"
---
base/shell/cmd/error.c | 2 +-
base/shell/cmd/internal.c | 21 +++++++++++++++------
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/base/shell/cmd/error.c b/base/shell/cmd/error.c
index 193f785caca..be422f33cf4 100644
--- a/base/shell/cmd/error.c
+++ b/base/shell/cmd/error.c
@@ -50,7 +50,7 @@ ErrorMessage(
NULL, dwErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&szError, 0, NULL))
{
- ConErrPrintf(_T("%s %s\n"), szError, szMessage);
+ ConErrPrintf(_T("%s%s%s"), szError, szMessage, (*szMessage ?
_T("\n") : _T("")));
if (szError)
LocalFree(szError);
return;
diff --git a/base/shell/cmd/internal.c b/base/shell/cmd/internal.c
index 8798eecdd31..95416b4278b 100644
--- a/base/shell/cmd/internal.c
+++ b/base/shell/cmd/internal.c
@@ -327,6 +327,8 @@ INT cmd_mkdir (LPTSTR param)
{
LPTSTR *p;
INT argc, i;
+ DWORD dwLastError;
+
if (!_tcsncmp (param, _T("/?"), 2))
{
ConOutResPaging(TRUE,STRING_MKDIR_HELP);
@@ -347,13 +349,20 @@ INT cmd_mkdir (LPTSTR param)
{
if (!MakeFullPath(p[i]))
{
- if (GetLastError() == ERROR_PATH_NOT_FOUND)
+ dwLastError = GetLastError();
+ switch (dwLastError)
{
+ case ERROR_PATH_NOT_FOUND:
ConErrResPuts(STRING_MD_ERROR2);
- }
- else
- {
- ErrorMessage (GetLastError(), _T("MD"));
+ break;
+
+ case ERROR_FILE_EXISTS:
+ case ERROR_ALREADY_EXISTS:
+ ConErrResPrintf(STRING_MD_ERROR, p[i]);
+ break;
+
+ default:
+ ErrorMessage(GetLastError(), NULL);
}
nErrorLevel = 1;
}
@@ -504,7 +513,7 @@ INT cmd_rmdir(LPTSTR param)
{
/* Couldn't delete the folder, print out the error */
nError = GetLastError();
- ErrorMessage(nError, _T("RD"));
+ ErrorMessage(nError, NULL);
}
}