diff --git a/reactos/base/shell/cmd/copy.c b/reactos/base/shell/cmd/copy.c index 9976e557a87..0886db008c9 100644 --- a/reactos/base/shell/cmd/copy.c +++ b/reactos/base/shell/cmd/copy.c @@ -341,14 +341,12 @@ INT cmd_copy(LPTSTR param) WIN32_FIND_DATA findBuffer; HANDLE hFile = NULL; BOOL bTouch = FALSE; - /* Used when something like "copy c*.exe d*.exe" during the process of - figuring out the new name */ /* Pointer to keep track of how far through the append input(file1+file2+file3) we are */ TCHAR * appendPointer = _T("\0"); /* The full path to src and dest. This has drive letter, folders, and filename */ TCHAR tmpDestPath[MAX_PATH]; TCHAR tmpSrcPath[MAX_PATH]; - /* A bool on weather or not the destination name will be taking from the input */ + /* A bool to know whether or not the destination name will be taken from the input */ BOOL bSrcName = FALSE; /* Seems like a waste but it is a pointer used to copy from input to PreserveName */ TCHAR * UseThisName; @@ -357,6 +355,7 @@ INT cmd_copy(LPTSTR param) int size; TCHAR * szTouch; BOOL bHasWildcard, bDone = FALSE, bMoreFiles = FALSE; + /* Used for something like "copy c*.exe d*.exe" */ BOOL bMultipleSource = FALSE, bMultipleDest = FALSE; @@ -369,7 +368,7 @@ INT cmd_copy(LPTSTR param) nErrorLevel = 0; - /* Get the envor value if it exists */ + /* Get the env variable value if it exists */ evar = cmd_alloc(512 * sizeof(TCHAR)); if (evar == NULL) size = 0; @@ -578,7 +577,7 @@ INT cmd_copy(LPTSTR param) bMultipleSource = TRUE; } - /* Reusing the number of files variable */ + /* Reuse the number of files variable */ nFiles = 0; /* Check if no destination argument is passed */ @@ -586,19 +585,19 @@ INT cmd_copy(LPTSTR param) { /* If no destination was entered then just use the current directory as the destination */ - GetCurrentDirectory(MAX_PATH, szDestPath); + GetCurrentDirectory(ARRAYSIZE(szDestPath), szDestPath); } else { /* Check if the destination is 'x:' */ if ((arg[nDes][1] == _T(':')) && (arg[nDes][2] == _T('\0'))) { - GetRootPath(arg[nDes], szDestPath, MAX_PATH); + GetRootPath(arg[nDes], szDestPath, ARRAYSIZE(szDestPath)); } else { /* If the user entered two file names then form the full string path */ - GetFullPathName(arg[nDes], MAX_PATH, szDestPath, NULL); + GetFullPathName(arg[nDes], ARRAYSIZE(szDestPath), szDestPath, NULL); } /* Make sure there is an ending slash to the path if the dest is a folder */ @@ -618,12 +617,12 @@ INT cmd_copy(LPTSTR param) } } - if (nDes != -1) /* you can only append files when there is a destination */ + if (nDes != -1) /* Append files only when there is a destination */ { if (bMultipleSource && !bMultipleDest) { /* We have multiple source files, but not multiple destination - files. This means we are appending the soruce files. */ + files. This means we are appending the source files. */ bAppend = TRUE; if (_tcschr(arg[nSrc], _T('|')) != NULL) appendPointer = arg[nSrc]; @@ -662,7 +661,7 @@ INT cmd_copy(LPTSTR param) szSrcPath[0] = _T('\0'); /* Loop through the source file name and copy all - the chars one at a time until it gets too + */ + the chars one at a time until we reach the separator */ while(TRUE) { if (appendPointer[0] == _T('|')) @@ -685,7 +684,7 @@ INT cmd_copy(LPTSTR param) { /* Only time there is a , in the source is when they are using touch Cant have a destination and can only have on ,, at the end of the string - Cant have more then one file name */ + Cant have more than one file name */ szTouch = _tcsstr(arg[nSrc], _T("|")); if (_tcsncmp(szTouch,_T("|,,\0"), 4) || (nDes != -1)) { @@ -714,8 +713,8 @@ INT cmd_copy(LPTSTR param) } - /* From this point on, we can assume that the shortest path is 3 letters long - and that would be [DriveLetter]:\ */ + /* From this point on, we can assume that the shortest path is + 3 letters long and that would be [DriveLetter]:\ */ /* Check if the path has a wildcard */ bHasWildcard = (_tcschr(szSrcPath, _T('*')) != NULL); @@ -742,10 +741,10 @@ INT cmd_copy(LPTSTR param) /* Get a list of all the files */ hFile = FindFirstFile(szSrcPath, &findBuffer); - /* If it couldnt open the file handle, print out the error */ + /* If we could not open the file handle, print out the error */ if (hFile == INVALID_HANDLE_VALUE) { - /* only print source name when more then one file */ + /* only print source name when more than one file */ if (bMultipleSource) ConOutPrintf(_T("%s\n"), szSrcPath); @@ -757,10 +756,12 @@ INT cmd_copy(LPTSTR param) /* Strip the paths back to the folder they are in */ for (i = (_tcslen(szSrcPath) - 1); i > -1; i--) + { if (szSrcPath[i] != _T('\\')) szSrcPath[i] = _T('\0'); else break; + } do { @@ -803,7 +804,7 @@ INT cmd_copy(LPTSTR param) _tcscat(tmpDestPath, findBuffer.cFileName); else { - /* If there is no wildcard you can use the name the user entered */ + /* If there is no wildcard, use the name the user entered */ if ((_tcschr(UseThisName, _T('*')) == NULL) && (_tcschr(UseThisName, _T('?')) == NULL)) { @@ -836,7 +837,7 @@ INT cmd_copy(LPTSTR param) break; } - /* only print source name when more then one file */ + /* only print source name when more than one file */ if (bMultipleSource) ConOutPrintf(_T("%s\n"), tmpSrcPath); @@ -848,11 +849,10 @@ INT cmd_copy(LPTSTR param) if (nOverwrite == PROMPT_ALL || (nOverwrite == PROMPT_YES && bAppend)) dwFlags |= COPY_NO_PROMPT; - /* Tell weather the copy was successful or not */ + /* Tell whether the copy was successful or not */ if (copy(tmpSrcPath,tmpDestPath, bAppend, dwFlags, bTouch)) { nFiles++; - //LoadString(CMD_ModuleHandle, STRING_MOVE_ERROR1, szMsg, ARRAYSIZE(szMsg)); } else { @@ -865,14 +865,14 @@ INT cmd_copy(LPTSTR param) /* Loop through all wildcard files */ } while (FindNextFile(hFile, &findBuffer)); + FindClose(hFile); + /* Loop through all files in src string with a + */ - } while(!bDone); + } while (!bDone); /* print out the number of files copied */ ConOutResPrintf(STRING_COPY_FILE, bAppend ? 1 : nFiles); - if (hFile) FindClose(hFile); - if (arg != NULL) freep(arg);