Michael Stefaniuc : xcopy: Use wide-char string literals.
Alexandre Julliard
julliard at winehq.org
Wed Oct 21 15:15:13 CDT 2020
Module: wine
Branch: master
Commit: 73aed88c69dca069cf071bc8ff7b326eb8420d74
URL: https://source.winehq.org/git/wine.git/?a=commit;h=73aed88c69dca069cf071bc8ff7b326eb8420d74
Author: Michael Stefaniuc <mstefani at winehq.org>
Date: Wed Oct 21 01:02:40 2020 +0200
xcopy: Use wide-char string literals.
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/xcopy/xcopy.c | 57 ++++++++++++++++++--------------------------------
1 file changed, 20 insertions(+), 37 deletions(-)
diff --git a/programs/xcopy/xcopy.c b/programs/xcopy/xcopy.c
index a8614f979ac..7c1bc1f472d 100644
--- a/programs/xcopy/xcopy.c
+++ b/programs/xcopy/xcopy.c
@@ -63,10 +63,6 @@ typedef struct _EXCLUDELIST
static ULONG filesCopied = 0; /* Number of files copied */
static EXCLUDELIST *excludeList = NULL; /* Excluded strings list */
static FILETIME dateRange; /* Date range to copy after*/
-static const WCHAR wchr_slash[] = {'\\', 0};
-static const WCHAR wchr_star[] = {'*', 0};
-static const WCHAR wchr_dot[] = {'.', 0};
-static const WCHAR wchr_dotdot[] = {'.', '.', 0};
/* To minimize stack usage during recursion, some temporary variables
@@ -81,11 +77,10 @@ static WCHAR copyTo[MAX_PATH];
* ========================================================================= */
static WCHAR *XCOPY_LoadMessage(UINT id) {
static WCHAR msg[MAXSTRING];
- const WCHAR failedMsg[] = {'F', 'a', 'i', 'l', 'e', 'd', '!', 0};
if (!LoadStringW(GetModuleHandleW(NULL), id, msg, ARRAY_SIZE(msg))) {
WINE_FIXME("LoadString failed with %d\n", GetLastError());
- lstrcpyW(msg, failedMsg);
+ lstrcpyW(msg, L"Failed!");
}
return msg;
}
@@ -186,8 +181,7 @@ static void XCOPY_FailMessage(DWORD err) {
WINE_FIXME("FIXME: Cannot display message for error %d, status %d\n",
err, GetLastError());
} else {
- const WCHAR infostr[] = {'%', '1', '\n', 0};
- XCOPY_wprintf(infostr, lpMsgBuf);
+ XCOPY_wprintf(L"%1\n", lpMsgBuf);
LocalFree ((HLOCAL)lpMsgBuf);
}
}
@@ -252,14 +246,13 @@ static BOOL XCOPY_ProcessExcludeFile(WCHAR* filename, WCHAR* endOfName) {
WCHAR endChar = *endOfName;
WCHAR buffer[MAXSTRING];
FILE *inFile = NULL;
- const WCHAR readTextMode[] = {'r', 't', 0};
/* Null terminate the filename (temporarily updates the filename hence
parms not const) */
*endOfName = 0x00;
/* Open the file */
- inFile = _wfopen(filename, readTextMode);
+ inFile = _wfopen(filename, L"rt");
if (inFile == NULL) {
XCOPY_wprintf(XCOPY_LoadMessage(STRING_OPENFAIL), filename);
*endOfName = endChar;
@@ -371,8 +364,8 @@ static int XCOPY_DoCopy(WCHAR *srcstem, WCHAR *srcspec,
skipFile = FALSE;
/* Ignore . and .. */
- if (lstrcmpW(finddata->cFileName, wchr_dot)==0 ||
- lstrcmpW(finddata->cFileName, wchr_dotdot)==0 ||
+ if (lstrcmpW(finddata->cFileName, L".")==0 ||
+ lstrcmpW(finddata->cFileName, L"..")==0 ||
finddata->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
WINE_TRACE("Skipping directory, . or .. (%s)\n", wine_dbgstr_w(finddata->cFileName));
@@ -606,7 +599,7 @@ static int XCOPY_DoCopy(WCHAR *srcstem, WCHAR *srcspec,
}
lstrcpyW(inputpath, srcstem);
- lstrcatW(inputpath, wchr_star);
+ lstrcatW(inputpath, L"*");
findres = TRUE;
WINE_TRACE("Processing subdirs with spec: %s\n", wine_dbgstr_w(inputpath));
@@ -615,20 +608,20 @@ static int XCOPY_DoCopy(WCHAR *srcstem, WCHAR *srcspec,
/* Only looking for dirs */
if ((finddata->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
- (lstrcmpW(finddata->cFileName, wchr_dot) != 0) &&
- (lstrcmpW(finddata->cFileName, wchr_dotdot) != 0)) {
+ (lstrcmpW(finddata->cFileName, L".") != 0) &&
+ (lstrcmpW(finddata->cFileName, L"..") != 0)) {
WINE_TRACE("Handling subdir: %s\n", wine_dbgstr_w(finddata->cFileName));
/* Make up recursive information */
lstrcpyW(inputpath, srcstem);
lstrcatW(inputpath, finddata->cFileName);
- lstrcatW(inputpath, wchr_slash);
+ lstrcatW(inputpath, L"\\");
lstrcpyW(outputpath, deststem);
if (*destspec == 0x00) {
lstrcatW(outputpath, finddata->cFileName);
- lstrcatW(outputpath, wchr_slash);
+ lstrcatW(outputpath, L"\\");
}
XCOPY_DoCopy(inputpath, srcspec, outputpath, destspec, flags);
@@ -713,7 +706,6 @@ static void strip_quotes(WCHAR *word, WCHAR **end)
static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
WCHAR *supplieddestination, DWORD *pflags)
{
- const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0};
DWORD flags = *pflags;
WCHAR *cmdline, *word, *end, *next;
int rc = RC_INITERROR;
@@ -781,10 +773,8 @@ static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
OPT_REMOVEARCH; break;
/* E can be /E or /EXCLUDE */
- case 'E': if (CompareStringW(LOCALE_USER_DEFAULT,
- NORM_IGNORECASE | SORT_STRINGSORT,
- &word[1], 8,
- EXCLUDE, -1) == CSTR_EQUAL) {
+ case 'E': if (CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE | SORT_STRINGSORT,
+ &word[1], 8, L"EXCLUDE:", -1) == CSTR_EQUAL) {
if (XCOPY_ProcessExcludeList(&word[9])) {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
goto out;
@@ -889,7 +879,7 @@ static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
/* Default the destination if not supplied */
if (supplieddestination[0] == 0x00)
- lstrcpyW(supplieddestination, wchr_dot);
+ lstrcpyW(supplieddestination, L".");
*pflags = flags;
rc = RC_OK;
@@ -959,10 +949,9 @@ static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem,
WINE_TRACE("Directory supplied\n");
lstrcpyW(stem, suppliedsource);
lastChar = stem[lstrlenW(stem)-1];
- if (lastChar != '\\' && lastChar != ':') {
- lstrcatW(stem, wchr_slash);
- }
- lstrcpyW(spec, wchr_star);
+ if (lastChar != '\\' && lastChar != ':')
+ lstrcatW(stem, L"\\");
+ lstrcpyW(spec, L"*");
/* File or wildcard search:
stem should be:
@@ -1062,9 +1051,8 @@ static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, WCHAR
*spec = 0x00;
/* Ensure ends with a '\' */
- if (stem[lstrlenW(stem)-1] != '\\') {
- lstrcatW(stem, wchr_slash);
- }
+ if (stem[lstrlenW(stem)-1] != '\\')
+ lstrcatW(stem, L"\\");
} else {
WCHAR drive[MAX_PATH];
@@ -1097,16 +1085,11 @@ int __cdecl wmain (int argc, WCHAR *argvW[])
WCHAR destinationspec[MAX_PATH] = {0}; /* Filespec of destination */
WCHAR copyCmd[MAXSTRING]; /* COPYCMD env var */
DWORD flags = 0; /* Option flags */
- const WCHAR PROMPTSTR1[] = {'/', 'Y', 0};
- const WCHAR PROMPTSTR2[] = {'/', 'y', 0};
- const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0};
/* Preinitialize flags based on COPYCMD */
- if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) {
- if (wcsstr(copyCmd, PROMPTSTR1) != NULL ||
- wcsstr(copyCmd, PROMPTSTR2) != NULL) {
+ if (GetEnvironmentVariableW(L"COPYCMD", copyCmd, MAXSTRING)) {
+ if (wcsstr(copyCmd, L"/Y") != NULL || wcsstr(copyCmd, L"/y") != NULL)
flags |= OPT_NOPROMPT;
- }
}
/* FIXME: On UNIX, files starting with a '.' are treated as hidden under
More information about the wine-cvs
mailing list