From 3b960a1c2146a96d3ee74184f2e10fe3ec45243b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 11 Jul 2020 23:50:36 +0200 Subject: [PATCH] [CMD] MOVE: Set the errorlevel on failure. CORE-14261 --- base/shell/cmd/move.c | 51 ++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/base/shell/cmd/move.c b/base/shell/cmd/move.c index dd7143d2cc0..d355914ae93 100644 --- a/base/shell/cmd/move.c +++ b/base/shell/cmd/move.c @@ -158,16 +158,16 @@ INT cmd_move (LPTSTR param) { /* there must be at least one pathspec */ error_req_param_missing(); - freep(arg); - return 1; + nErrorLevel = 1; + goto Quit; } if (nFiles > 2) { /* there are more than two pathspecs */ error_too_many_parameters(param); - freep(arg); - return 1; + nErrorLevel = 1; + goto Quit; } /* If no destination is given, default to current directory */ @@ -178,8 +178,8 @@ INT cmd_move (LPTSTR param) { /* '*'/'?' in dest, this doesnt happen. give folder name instead*/ error_invalid_parameter_format(pszDest); - freep(arg); - return 1; + nErrorLevel = 1; + goto Quit; } if (_tcschr(arg[i], _T('*')) != NULL || _tcschr(arg[i], _T('?')) != NULL) { @@ -199,9 +199,9 @@ INT cmd_move (LPTSTR param) hFile = FindFirstFile (arg[i], &findBuffer); if (hFile == INVALID_HANDLE_VALUE) { - ErrorMessage (GetLastError (), arg[i]); - freep (arg); - return 1; + ErrorMessage(GetLastError(), arg[i]); + nErrorLevel = 1; + goto Quit; } /* check for special cases "." and ".." and if found skip them */ @@ -216,8 +216,8 @@ INT cmd_move (LPTSTR param) /* what? we don't have anything to move? */ error_file_not_found(); FindClose(hFile); - freep(arg); - return 1; + nErrorLevel = 1; + goto Quit; } OnlyOneFile = TRUE; @@ -247,9 +247,9 @@ INT cmd_move (LPTSTR param) hFile = FindFirstFile (arg[i], &findBuffer); if (hFile == INVALID_HANDLE_VALUE) { - ErrorMessage (GetLastError (), arg[i]); - freep (arg); - return 1; + ErrorMessage(GetLastError(), arg[i]); + nErrorLevel = 1; + goto Quit; } /* check for special cases "." and ".." and if found skip them */ @@ -264,8 +264,8 @@ INT cmd_move (LPTSTR param) /* huh? somebody removed files and/or folders which were there */ error_file_not_found(); FindClose(hFile); - freep(arg); - return 1; + nErrorLevel = 1; + goto Quit; } /* check if source and destination paths are on different volumes */ @@ -340,8 +340,8 @@ INT cmd_move (LPTSTR param) /* We are not allowed to have existing source and destination dir when there is wildcard in source */ error_syntax(NULL); FindClose(hFile); - freep(arg); - return 1; + nErrorLevel = 1; + goto Quit; } if (!(dwMoveStatusFlags & (MOVE_DEST_IS_FILE | MOVE_DEST_IS_DIR))) { @@ -360,8 +360,8 @@ INT cmd_move (LPTSTR param) /*source has many files but there is only one destination file*/ error_invalid_parameter_format(pszDest); FindClose(hFile); - freep (arg); - return 1; + nErrorLevel = 1; + goto Quit; } /*checks to make sure user wanted/wants the override*/ @@ -495,10 +495,16 @@ INT cmd_move (LPTSTR param) } } } + if (MoveStatus) + { ConOutResPrintf(STRING_MOVE_ERROR1); + } else + { ConOutResPrintf(STRING_MOVE_ERROR2); + nErrorLevel = 1; + } } while ((!OnlyOneFile || dwMoveStatusFlags & MOVE_SRC_CURRENT_IS_DIR ) && !(dwMoveStatusFlags & MOVE_SOURCE_IS_DIR) && @@ -508,8 +514,9 @@ INT cmd_move (LPTSTR param) if(hDestFile && hDestFile != INVALID_HANDLE_VALUE) FindClose(hDestFile); - freep (arg); - return 0; +Quit: + freep(arg); + return nErrorLevel; } #endif /* INCLUDE_CMD_MOVE */