[PATCH 3/4] cmd: Use wide-char string literals in builtins.c.

Michael Stefaniuc mstefani at winehq.org
Sun Nov 29 16:30:29 CST 2020


Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
 programs/cmd/builtins.c | 386 ++++++++++++++++------------------------
 1 file changed, 149 insertions(+), 237 deletions(-)

diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index e4b1fed613f..e99dd24ac72 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -39,67 +39,59 @@ extern BOOL echo_mode;
 extern BOOL interactive;
 
 struct env_stack *pushd_directories;
-const WCHAR wildcardsW[] = {'*','?','\0'};
-const WCHAR slashstarW[] = {'\\','*','\0'};
-const WCHAR deviceW[] = {'\\','\\','.','\\','\0'};
 const WCHAR inbuilt[][10] = {
-        {'C','A','L','L','\0'},
-        {'C','D','\0'},
-        {'C','H','D','I','R','\0'},
-        {'C','L','S','\0'},
-        {'C','O','P','Y','\0'},
-        {'C','T','T','Y','\0'},
-        {'D','A','T','E','\0'},
-        {'D','E','L','\0'},
-        {'D','I','R','\0'},
-        {'E','C','H','O','\0'},
-        {'E','R','A','S','E','\0'},
-        {'F','O','R','\0'},
-        {'G','O','T','O','\0'},
-        {'H','E','L','P','\0'},
-        {'I','F','\0'},
-        {'L','A','B','E','L','\0'},
-        {'M','D','\0'},
-        {'M','K','D','I','R','\0'},
-        {'M','O','V','E','\0'},
-        {'P','A','T','H','\0'},
-        {'P','A','U','S','E','\0'},
-        {'P','R','O','M','P','T','\0'},
-        {'R','E','M','\0'},
-        {'R','E','N','\0'},
-        {'R','E','N','A','M','E','\0'},
-        {'R','D','\0'},
-        {'R','M','D','I','R','\0'},
-        {'S','E','T','\0'},
-        {'S','H','I','F','T','\0'},
-        {'S','T','A','R','T','\0'},
-        {'T','I','M','E','\0'},
-        {'T','I','T','L','E','\0'},
-        {'T','Y','P','E','\0'},
-        {'V','E','R','I','F','Y','\0'},
-        {'V','E','R','\0'},
-        {'V','O','L','\0'},
-        {'E','N','D','L','O','C','A','L','\0'},
-        {'S','E','T','L','O','C','A','L','\0'},
-        {'P','U','S','H','D','\0'},
-        {'P','O','P','D','\0'},
-        {'A','S','S','O','C','\0'},
-        {'C','O','L','O','R','\0'},
-        {'F','T','Y','P','E','\0'},
-        {'M','O','R','E','\0'},
-        {'C','H','O','I','C','E','\0'},
-        {'M','K','L','I','N','K','\0'},
-        {'E','X','I','T','\0'}
+        L"CALL",
+        L"CD",
+        L"CHDIR",
+        L"CLS",
+        L"COPY",
+        L"CTTY",
+        L"DATE",
+        L"DEL",
+        L"DIR",
+        L"ECHO",
+        L"ERASE",
+        L"FOR",
+        L"GOTO",
+        L"HELP",
+        L"IF",
+        L"LABEL",
+        L"MD",
+        L"MKDIR",
+        L"MOVE",
+        L"PATH",
+        L"PAUSE",
+        L"PROMPT",
+        L"REM",
+        L"REN",
+        L"RENAME",
+        L"RD",
+        L"RMDIR",
+        L"SET",
+        L"SHIFT",
+        L"START",
+        L"TIME",
+        L"TITLE",
+        L"TYPE",
+        L"VERIFY",
+        L"VER",
+        L"VOL",
+        L"ENDLOCAL",
+        L"SETLOCAL",
+        L"PUSHD",
+        L"POPD",
+        L"ASSOC",
+        L"COLOR",
+        L"FTYPE",
+        L"MORE",
+        L"CHOICE",
+        L"MKLINK",
+        L"EXIT"
 };
 static const WCHAR externals[][10] = {
-        {'A','T','T','R','I','B','\0'},
-        {'X','C','O','P','Y','\0'}
+        L"ATTRIB",
+        L"XCOPY"
 };
-static const WCHAR onW[]  = {'O','N','\0'};
-static const WCHAR offW[] = {'O','F','F','\0'};
-static const WCHAR parmY[] = {'/','Y','\0'};
-static const WCHAR parmNoY[] = {'/','-','Y','\0'};
-static const WCHAR eqeqW[]   = {'=','=','\0'};
 
 static HINSTANCE hinst;
 struct env_stack *saved_environment;
@@ -261,11 +253,6 @@ void WCMD_change_tty (void) {
  */
 
 void WCMD_choice (const WCHAR * args) {
-
-    static const WCHAR bellW[] = {7,0};
-    static const WCHAR commaW[] = {',',0};
-    static const WCHAR bracket_open[] = {'[',0};
-    static const WCHAR bracket_close[] = {']','?',0};
     WCHAR answer[16];
     WCHAR buffer[16];
     WCHAR *ptr = NULL;
@@ -381,15 +368,15 @@ void WCMD_choice (const WCHAR * args) {
 
     if (!opt_n) {
         /* print a list of all allowed answers inside brackets */
-        WCMD_output_asis(bracket_open);
+        WCMD_output_asis(L"[");
         ptr = opt_c;
         answer[1] = 0;
         while ((answer[0] = *ptr++)) {
             WCMD_output_asis(answer);
             if (*ptr)
-                WCMD_output_asis(commaW);
+                WCMD_output_asis(L",");
         }
-        WCMD_output_asis(bracket_close);
+        WCMD_output_asis(L"]?");
     }
 
     while (TRUE) {
@@ -417,7 +404,7 @@ void WCMD_choice (const WCHAR * args) {
         {
             /* key not allowed: play the bell */
             WINE_TRACE("key not allowed: %s\n", wine_dbgstr_w(answer));
-            WCMD_output_asis(bellW);
+            WCMD_output_asis(L"\a");
         }
     }
 }
@@ -598,7 +585,6 @@ void WCMD_copy(WCHAR * args) {
   WCHAR   copycmd[4];
   DWORD   len;
   BOOL    dstisdevice = FALSE;
-  static const WCHAR copyCmdW[] = {'C','O','P','Y','C','M','D','\0'};
 
   typedef struct _COPY_FILES
   {
@@ -787,11 +773,11 @@ void WCMD_copy(WCHAR * args) {
     /* If COPYCMD is set, then we force the overwrite with /Y and ask for
      * confirmation with /-Y. If COPYCMD is neither of those, then we use the
      * default behavior. */
-    len = GetEnvironmentVariableW(copyCmdW, copycmd, ARRAY_SIZE(copycmd));
+    len = GetEnvironmentVariableW(L"COPYCMD", copycmd, ARRAY_SIZE(copycmd));
     if (len && len < ARRAY_SIZE(copycmd)) {
-      if (!lstrcmpiW (copycmd, parmY))
+      if (!lstrcmpiW(copycmd, L"/Y"))
         prompt = FALSE;
-      else if (!lstrcmpiW (copycmd, parmNoY))
+      else if (!lstrcmpiW(copycmd, L"/-Y"))
         prompt = TRUE;
     }
   }
@@ -851,7 +837,7 @@ void WCMD_copy(WCHAR * args) {
   } else if (!destisdirectory) {
     /* We have been asked to copy to a filename. Default to ascii IF the
        source contains wildcards (true even if only one match)           */
-    if (wcspbrk(sourcelist->name, wildcardsW) != NULL) {
+    if (wcspbrk(sourcelist->name, L"*?") != NULL) {
       anyconcats = TRUE;  /* We really are concatenating to a single file */
       if (destination->binarycopy == -1) {
         destination->binarycopy = 0;
@@ -870,7 +856,7 @@ void WCMD_copy(WCHAR * args) {
              wine_dbgstr_w(destname), appendfirstsource);
 
   /* Remember if the destination is a device */
-  if (wcsncmp(destination->name, deviceW, lstrlenW(deviceW)) == 0) {
+  if (wcsncmp(destination->name, L"\\\\.\\", lstrlenW(L"\\\\.\\")) == 0) {
     WINE_TRACE("Destination is a device\n");
     dstisdevice = TRUE;
   }
@@ -914,13 +900,13 @@ void WCMD_copy(WCHAR * args) {
       GetFullPathNameW(thiscopy->name, ARRAY_SIZE(srcpath), srcpath, &filenamepart);
       WINE_TRACE("Directory, so full name is now '%s'\n", wine_dbgstr_w(srcpath));
 
-    } else if ((wcspbrk(srcpath, wildcardsW) == NULL) &&
+    } else if ((wcspbrk(srcpath, L"*?") == NULL) &&
                (attributes != INVALID_FILE_ATTRIBUTES) &&
                (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
 
       /* We need to know where the filename part starts, so append \* and
          recalculate the full resulting path                              */
-      lstrcatW(thiscopy->name, slashstarW);
+      lstrcatW(thiscopy->name, L"\\*");
       GetFullPathNameW(thiscopy->name, ARRAY_SIZE(srcpath), srcpath, &filenamepart);
       WINE_TRACE("Directory, so full name is now '%s'\n", wine_dbgstr_w(srcpath));
     }
@@ -929,7 +915,7 @@ void WCMD_copy(WCHAR * args) {
                     wine_dbgstr_w(srcpath), anyconcats);
 
     /* If the source is a device, just use it, otherwise search */
-    if (wcsncmp(srcpath, deviceW, lstrlenW(deviceW)) == 0) {
+    if (wcsncmp(srcpath, L"\\\\.\\", lstrlenW(L"\\\\.\\")) == 0) {
       WINE_TRACE("Source is a device\n");
       srcisdevice = TRUE;
       srcname  = &srcpath[4]; /* After the \\.\ prefix */
@@ -1148,7 +1134,6 @@ void WCMD_create_dir (WCHAR *args) {
  * and a bitmask of unwanted attributes (*wantClear).
  */
 static void WCMD_delete_parse_attributes(DWORD *wantSet, DWORD *wantClear) {
-    static const WCHAR parmA[] = {'/','A','\0'};
     WCHAR *p;
 
     /* both are strictly 'out' parameters */
@@ -1156,7 +1141,7 @@ static void WCMD_delete_parse_attributes(DWORD *wantSet, DWORD *wantClear) {
     *wantClear=0;
 
     /* For each /A argument */
-    for (p=wcsstr(quals, parmA); p != NULL; p=wcsstr(p, parmA)) {
+    for (p=wcsstr(quals, L"/A"); p != NULL; p=wcsstr(p, L"/A")) {
         /* Skip /A itself */
         p += 2;
 
@@ -1198,10 +1183,7 @@ static void WCMD_delete_parse_attributes(DWORD *wantSet, DWORD *wantClear) {
  * (If /P supplied, del will prompt for individual files later.)
  */
 static BOOL WCMD_delete_confirm_wildcard(const WCHAR *filename, BOOL *pPrompted) {
-    static const WCHAR parmP[] = {'/','P','\0'};
-    static const WCHAR parmQ[] = {'/','Q','\0'};
-
-    if ((wcsstr(quals, parmQ) == NULL) && (wcsstr(quals, parmP) == NULL)) {
+    if ((wcsstr(quals, L"/Q") == NULL) && (wcsstr(quals, L"/P") == NULL)) {
         WCHAR drive[10];
         WCHAR dir[MAX_PATH];
         WCHAR fname[MAX_PATH];
@@ -1216,13 +1198,12 @@ static BOOL WCMD_delete_confirm_wildcard(const WCHAR *filename, BOOL *pPrompted)
         if ((lstrcmpW(fname, L"*") == 0) && (*ext == 0x00 || (lstrcmpW(ext, L".*") == 0))) {
 
             WCHAR question[MAXSTRING];
-            static const WCHAR fmt[] = {'%','s',' ','\0'};
 
             /* Caller uses this to suppress "file not found" warning later */
             *pPrompted = TRUE;
 
             /* Ask for confirmation */
-            wsprintfW(question, fmt, fpath);
+            wsprintfW(question, L"%s ", fpath);
             return WCMD_ask_confirm(question, TRUE, NULL);
         }
     }
@@ -1236,10 +1217,6 @@ static BOOL WCMD_delete_confirm_wildcard(const WCHAR *filename, BOOL *pPrompted)
  * Returns TRUE if a file was deleted.
  */
 static BOOL WCMD_delete_one (const WCHAR *thisArg) {
-
-    static const WCHAR parmP[] = {'/','P','\0'};
-    static const WCHAR parmS[] = {'/','S','\0'};
-    static const WCHAR parmF[] = {'/','F','\0'};
     DWORD wanted_attrs;
     DWORD unwanted_attrs;
     BOOL found = FALSE;
@@ -1276,10 +1253,9 @@ static BOOL WCMD_delete_one (const WCHAR *thisArg) {
         && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
     {
       WCHAR modifiedParm[MAX_PATH];
-      static const WCHAR slashStar[] = {'\\','*','\0'};
 
       lstrcpyW(modifiedParm, argCopy);
-      lstrcatW(modifiedParm, slashStar);
+      lstrcatW(modifiedParm, L"\\*");
       FindClose(hff);
       found = TRUE;
       WCMD_delete_one(modifiedParm);
@@ -1303,7 +1279,7 @@ static BOOL WCMD_delete_one (const WCHAR *thisArg) {
              && ((fd.dwFileAttributes & unwanted_attrs) == 0);
 
           /* /P means prompt for each file */
-          if (ok && wcsstr (quals, parmP) != NULL) {
+          if (ok && wcsstr(quals, L"/P") != NULL) {
             WCHAR* question;
 
             /* Ask for confirmation */
@@ -1318,7 +1294,7 @@ static BOOL WCMD_delete_one (const WCHAR *thisArg) {
             /* If file is read only, and /A:r or /F supplied, delete it */
             if (fd.dwFileAttributes & FILE_ATTRIBUTE_READONLY &&
                 ((wanted_attrs & FILE_ATTRIBUTE_READONLY) ||
-                wcsstr (quals, parmF) != NULL)) {
+                wcsstr(quals, L"/F") != NULL)) {
                 SetFileAttributesW(fpath, fd.dwFileAttributes & ~FILE_ATTRIBUTE_READONLY);
             }
 
@@ -1332,7 +1308,7 @@ static BOOL WCMD_delete_one (const WCHAR *thisArg) {
     }
 
     /* Now recurse into all subdirectories handling the parameter in the same way */
-    if (wcsstr (quals, parmS) != NULL) {
+    if (wcsstr(quals, L"/S") != NULL) {
 
       WCHAR thisDir[MAX_PATH];
       int cPos;
@@ -1505,15 +1481,15 @@ void WCMD_echo (const WCHAR *args)
   count = lstrlenW(trimmed);
   if (count == 0 && origcommand[0]!='.' && origcommand[0]!=':'
                  && origcommand[0]!=';' && origcommand[0]!='/') {
-    if (echo_mode) WCMD_output (WCMD_LoadMessage(WCMD_ECHOPROMPT), onW);
-    else WCMD_output (WCMD_LoadMessage(WCMD_ECHOPROMPT), offW);
+    if (echo_mode) WCMD_output(WCMD_LoadMessage(WCMD_ECHOPROMPT), L"ON");
+    else WCMD_output (WCMD_LoadMessage(WCMD_ECHOPROMPT), L"OFF");
     heap_free(trimmed);
     return;
   }
 
-  if (lstrcmpiW(trimmed, onW) == 0)
+  if (lstrcmpiW(trimmed, L"ON") == 0)
     echo_mode = TRUE;
-  else if (lstrcmpiW(trimmed, offW) == 0)
+  else if (lstrcmpiW(trimmed, L"OFF") == 0)
     echo_mode = FALSE;
   else {
     WCMD_output_asis (args);
@@ -1665,12 +1641,10 @@ static BOOL WCMD_parse_forf_options(WCHAR *options, WCHAR *eol, int *skip,
   static const WCHAR tokensW[] = {'t','o','k','e','n','s','='};
   static const WCHAR delimsW[] = {'d','e','l','i','m','s','='};
   static const WCHAR usebackqW[] = {'u','s','e','b','a','c','k','q'};
-  static const WCHAR forf_defaultdelims[] = {' ', '\t', '\0'};
-  static const WCHAR forf_defaulttokens[] = {'1', '\0'};
 
   /* Initialize to defaults */
-  lstrcpyW(delims, forf_defaultdelims);
-  lstrcpyW(tokens, forf_defaulttokens);
+  lstrcpyW(delims, L" \t");
+  lstrcpyW(tokens, L"1");
   *eol      = 0;
   *skip     = 0;
   *usebackq = FALSE;
@@ -1768,7 +1742,7 @@ static void WCMD_add_dirstowalk(DIRECTORY_STACK *dirsToWalk) {
   /* Build a generic search and add all directories on the list of directories
      still to walk                                                             */
   lstrcpyW(fullitem, dirsToWalk->dirName);
-  lstrcatW(fullitem, slashstarW);
+  lstrcatW(fullitem, L"\\*");
   hff = FindFirstFileW(fullitem, &fd);
   if (hff != INVALID_HANDLE_VALUE) {
     do {
@@ -2072,10 +2046,6 @@ static HANDLE WCMD_forf_getinputhandle(BOOL usebackq, WCHAR *itemstr, BOOL iscmd
   WCHAR  temp_cmd[MAXSTRING];
   WCHAR *trimmed = NULL;
   HANDLE hinput = INVALID_HANDLE_VALUE;
-  static const WCHAR redirOutW[]  = {'>','%','s','\0'};
-  static const WCHAR cmdW[]       = {'C','M','D','\0'};
-  static const WCHAR cmdslashcW[] = {'C','M','D','.','E','X','E',' ',
-                                     '/','C',' ','%','s','\0'};
 
   /* Remove leading and trailing character (but there may be trailing whitespace too) */
   if ((iscmd && (itemstr[0] == '`' && usebackq)) ||
@@ -2093,11 +2063,11 @@ static HANDLE WCMD_forf_getinputhandle(BOOL usebackq, WCHAR *itemstr, BOOL iscmd
   if (iscmd) {
     /* Get temp filename */
     GetTempPathW(ARRAY_SIZE(temp_str), temp_str);
-    GetTempFileNameW(temp_str, cmdW, 0, temp_file);
+    GetTempFileNameW(temp_str, L"CMD", 0, temp_file);
 
     /* Redirect output to the temporary file */
-    wsprintfW(temp_str, redirOutW, temp_file);
-    wsprintfW(temp_cmd, cmdslashcW, itemstr);
+    wsprintfW(temp_str, L">%s", temp_file);
+    wsprintfW(temp_cmd, L"CMD.EXE /C %s", itemstr);
     WINE_TRACE("Issuing '%s' with redirs '%s'\n",
                wine_dbgstr_w(temp_cmd), wine_dbgstr_w(temp_str));
     WCMD_execute (temp_cmd, temp_str, NULL, FALSE);
@@ -2299,7 +2269,6 @@ void WCMD_for (WCHAR *p, CMD_LIST **cmdList) {
          * If the parameter within the set has a wildcard then search for matching files
          * otherwise do a literal substitution.
          */
-        static const WCHAR wildcards[] = {'*','?','\0'};
 
         /* Take a copy of the item returned from WCMD_parameter as it is held in a
            static buffer which can be overwritten during parsing of the for body   */
@@ -2327,7 +2296,7 @@ void WCMD_for (WCHAR *p, CMD_LIST **cmdList) {
               lstrcpyW(fullitem, item);
             }
 
-            if (wcspbrk (fullitem, wildcards)) {
+            if (wcspbrk(fullitem, L"*?")) {
               hff = FindFirstFileW(fullitem, &fd);
               if (hff != INVALID_HANDLE_VALUE) {
                 do {
@@ -2469,7 +2438,6 @@ void WCMD_for (WCHAR *p, CMD_LIST **cmdList) {
     /* If /L is provided, now run the for loop */
     if (useNumbers) {
         WCHAR thisNum[20];
-        static const WCHAR fmt[] = {'%','d','\0'};
 
         WINE_TRACE("FOR /L provided range from %d to %d step %d\n",
                    numbers[0], numbers[2], numbers[1]);
@@ -2477,7 +2445,7 @@ void WCMD_for (WCHAR *p, CMD_LIST **cmdList) {
              (numbers[1]<0)? i>=numbers[2] : i<=numbers[2];
              i=i + numbers[1]) {
 
-            swprintf(thisNum, ARRAY_SIZE(thisNum), fmt, i);
+            swprintf(thisNum, ARRAY_SIZE(thisNum), L"%d", i);
             WINE_TRACE("Processing FOR number %s\n", wine_dbgstr_w(thisNum));
 
             thisCmdStart = cmdStart;
@@ -2556,9 +2524,8 @@ void WCMD_give_help (const WCHAR *args)
       if (CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE | SORT_STRINGSORT,
 	  args, -1, externals[i], -1) == CSTR_EQUAL) {
         WCHAR cmd[128];
-        static const WCHAR helpW[] = {' ', '/','?','\0'};
         lstrcpyW(cmd, args);
-        lstrcatW(cmd, helpW);
+        lstrcatW(cmd, L" /?");
         WCMD_run_program(cmd, FALSE);
         return;
       }
@@ -2581,14 +2548,13 @@ void WCMD_goto (CMD_LIST **cmdList) {
 
   WCHAR string[MAX_PATH];
   WCHAR *labelend = NULL;
-  const WCHAR labelEndsW[] = {'>','<','|','&',' ',':','\t','\0'};
+  const WCHAR labelEndsW[] = L"><|& :\t";
 
   /* Do not process any more parts of a processed multipart or multilines command */
   if (cmdList) *cmdList = NULL;
 
   if (context != NULL) {
     WCHAR *paramStart = param1, *str;
-    static const WCHAR eofW[] = {':','e','o','f','\0'};
 
     if (param1[0] == 0x00) {
       WCMD_output_stderr(WCMD_LoadMessage(WCMD_NOARG));
@@ -2596,7 +2562,7 @@ void WCMD_goto (CMD_LIST **cmdList) {
     }
 
     /* Handle special :EOF label */
-    if (lstrcmpiW (eofW, param1) == 0) {
+    if (lstrcmpiW(L":eof", param1) == 0) {
       context -> skip_rest = TRUE;
       return;
     }
@@ -2678,7 +2644,6 @@ void WCMD_pushd (const WCHAR *args)
 {
     struct env_stack *curdir;
     WCHAR *thisdir;
-    static const WCHAR parmD[] = {'/','D','\0'};
 
     if (wcschr(args, '/') != NULL) {
       SetLastError(ERROR_INVALID_PARAMETER);
@@ -2696,7 +2661,7 @@ void WCMD_pushd (const WCHAR *args)
     }
 
     /* Change directory using CD code with /D parameter */
-    lstrcpyW(quals, parmD);
+    lstrcpyW(quals, L"/D");
     GetCurrentDirectoryW (1024, thisdir);
     errorlevel = 0;
     WCMD_setshow_default(args);
@@ -2758,15 +2723,9 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato
     WCHAR *endptr_leftOp, *endptr_rightOp;
     long int leftOperand_int, rightOperand_int;
     BOOL int_operands;
-    static const WCHAR lssW[]  = {'l','s','s','\0'};
-    static const WCHAR leqW[]  = {'l','e','q','\0'};
-    static const WCHAR equW[]  = {'e','q','u','\0'};
-    static const WCHAR neqW[]  = {'n','e','q','\0'};
-    static const WCHAR geqW[]  = {'g','e','q','\0'};
-    static const WCHAR gtrW[]  = {'g','t','r','\0'};
 
     /* == is a special case, as it always compares strings */
-    if (!lstrcmpiW(operator, eqeqW))
+    if (!lstrcmpiW(operator, L"=="))
         return caseInsensitive ? lstrcmpiW(leftOperand, rightOperand) == 0
                                : lstrcmpW (leftOperand, rightOperand) == 0;
 
@@ -2776,7 +2735,7 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato
     int_operands = (!*endptr_leftOp) && (!*endptr_rightOp);
 
     /* Perform actual (integer or string) comparison */
-    if (!lstrcmpiW(operator, lssW)) {
+    if (!lstrcmpiW(operator, L"lss")) {
         if (int_operands)
             return leftOperand_int < rightOperand_int;
         else
@@ -2784,7 +2743,7 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato
                                    : lstrcmpW (leftOperand, rightOperand) < 0;
     }
 
-    if (!lstrcmpiW(operator, leqW)) {
+    if (!lstrcmpiW(operator, L"leq")) {
         if (int_operands)
             return leftOperand_int <= rightOperand_int;
         else
@@ -2792,7 +2751,7 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato
                                    : lstrcmpW (leftOperand, rightOperand) <= 0;
     }
 
-    if (!lstrcmpiW(operator, equW)) {
+    if (!lstrcmpiW(operator, L"equ")) {
         if (int_operands)
             return leftOperand_int == rightOperand_int;
         else
@@ -2800,7 +2759,7 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato
                                    : lstrcmpW (leftOperand, rightOperand) == 0;
     }
 
-    if (!lstrcmpiW(operator, neqW)) {
+    if (!lstrcmpiW(operator, L"neq")) {
         if (int_operands)
             return leftOperand_int != rightOperand_int;
         else
@@ -2808,7 +2767,7 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato
                                    : lstrcmpW (leftOperand, rightOperand) != 0;
     }
 
-    if (!lstrcmpiW(operator, geqW)) {
+    if (!lstrcmpiW(operator, L"geq")) {
         if (int_operands)
             return leftOperand_int >= rightOperand_int;
         else
@@ -2816,7 +2775,7 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato
                                    : lstrcmpW (leftOperand, rightOperand) >= 0;
     }
 
-    if (!lstrcmpiW(operator, gtrW)) {
+    if (!lstrcmpiW(operator, L"gtr")) {
         if (int_operands)
             return leftOperand_int > rightOperand_int;
         else
@@ -2830,18 +2789,13 @@ static int evaluate_if_comparison(const WCHAR *leftOperand, const WCHAR *operato
 int evaluate_if_condition(WCHAR *p, WCHAR **command, int *test, int *negate)
 {
   WCHAR condition[MAX_PATH];
-  static const WCHAR notW[]    = {'n','o','t','\0'};
-  static const WCHAR errlvlW[] = {'e','r','r','o','r','l','e','v','e','l','\0'};
-  static const WCHAR existW[]  = {'e','x','i','s','t','\0'};
-  static const WCHAR defdW[]   = {'d','e','f','i','n','e','d','\0'};
-  static const WCHAR parmI[]   = {'/','I','\0'};
-  int caseInsensitive = (wcsstr(quals, parmI) != NULL);
-
-  *negate = !lstrcmpiW(param1,notW);
+  int caseInsensitive = (wcsstr(quals, L"/I") != NULL);
+
+  *negate = !lstrcmpiW(param1,L"not");
   lstrcpyW(condition, (*negate ? param2 : param1));
   WINE_TRACE("Condition: %s\n", wine_dbgstr_w(condition));
 
-  if (!lstrcmpiW (condition, errlvlW)) {
+  if (!lstrcmpiW(condition, L"errorlevel")) {
     WCHAR *param = WCMD_parameter(p, 1+(*negate), NULL, FALSE, FALSE);
     WCHAR *endptr;
     long int param_int = wcstol(param, &endptr, 10);
@@ -2849,7 +2803,7 @@ int evaluate_if_condition(WCHAR *p, WCHAR **command, int *test, int *negate)
     *test = ((long int)errorlevel >= param_int);
     WCMD_parameter(p, 2+(*negate), command, FALSE, FALSE);
   }
-  else if (!lstrcmpiW (condition, existW)) {
+  else if (!lstrcmpiW(condition, L"exist")) {
     WIN32_FIND_DATAW fd;
     HANDLE hff;
     WCHAR *param = WCMD_parameter(p, 1+(*negate), NULL, FALSE, FALSE);
@@ -2864,7 +2818,7 @@ int evaluate_if_condition(WCHAR *p, WCHAR **command, int *test, int *negate)
 
     WCMD_parameter(p, 2+(*negate), command, FALSE, FALSE);
   }
-  else if (!lstrcmpiW (condition, defdW)) {
+  else if (!lstrcmpiW(condition, L"defined")) {
     *test = (GetEnvironmentVariableW(WCMD_parameter(p, 1+(*negate), NULL, FALSE, FALSE),
                                     NULL, 0) > 0);
     WCMD_parameter(p, 2+(*negate), command, FALSE, FALSE);
@@ -2882,8 +2836,8 @@ int evaluate_if_condition(WCHAR *p, WCHAR **command, int *test, int *negate)
     while (*p == ' ' || *p == '\t')
       p++;
 
-    if (!wcsncmp(p, eqeqW, lstrlenW(eqeqW)))
-      lstrcpyW(operator, eqeqW);
+    if (!wcsncmp(p, L"==", lstrlenW(L"==")))
+      lstrcpyW(operator, L"==");
     else {
       lstrcpyW(operator, WCMD_parameter(p, 0, &paramStart, FALSE, FALSE));
       if (!*operator) goto syntax_err;
@@ -3026,23 +2980,22 @@ void WCMD_move (void)
       /* Default whether automatic overwriting is on. If we are interactive then
          we prompt by default, otherwise we overwrite by default
          /-Y has the highest priority, then /Y and finally the COPYCMD env. variable */
-      if (wcsstr (quals, parmNoY))
+      if (wcsstr(quals, L"/-Y"))
         force = FALSE;
-      else if (wcsstr (quals, parmY))
+      else if (wcsstr(quals, L"/Y"))
         force = TRUE;
       else {
-        static const WCHAR copyCmdW[] = {'C','O','P','Y','C','M','D','\0'};
         /* By default, we will force the overwrite in batch mode and ask for
          * confirmation in interactive mode. */
         force = !interactive;
         /* If COPYCMD is set, then we force the overwrite with /Y and ask for
          * confirmation with /-Y. If COPYCMD is neither of those, then we use the
          * default behavior. */
-        len = GetEnvironmentVariableW(copyCmdW, copycmd, ARRAY_SIZE(copycmd));
+        len = GetEnvironmentVariableW(L"COPYCMD", copycmd, ARRAY_SIZE(copycmd));
         if (len && len < ARRAY_SIZE(copycmd)) {
-          if (!lstrcmpiW (copycmd, parmY))
+          if (!lstrcmpiW(copycmd, L"/Y"))
             force = TRUE;
-          else if (!lstrcmpiW (copycmd, parmNoY))
+          else if (!lstrcmpiW(copycmd, L"/-Y"))
             force = FALSE;
         }
       }
@@ -3111,8 +3064,6 @@ void WCMD_remove_dir (WCHAR *args) {
   int   argno         = 0;
   int   argsProcessed = 0;
   WCHAR *argN          = args;
-  static const WCHAR parmS[] = {'/','S','\0'};
-  static const WCHAR parmQ[] = {'/','Q','\0'};
 
   /* Loop through all args */
   while (argN) {
@@ -3124,7 +3075,7 @@ void WCMD_remove_dir (WCHAR *args) {
 
       /* If subdirectory search not supplied, just try to remove
          and report error if it fails (eg if it contains a file) */
-      if (wcsstr (quals, parmS) == NULL) {
+      if (wcsstr(quals, L"/S") == NULL) {
         if (!RemoveDirectoryW(thisArg)) WCMD_print_error ();
 
       /* Otherwise use ShFileOp to recursively remove a directory */
@@ -3133,13 +3084,12 @@ void WCMD_remove_dir (WCHAR *args) {
         SHFILEOPSTRUCTW lpDir;
 
         /* Ask first */
-        if (wcsstr (quals, parmQ) == NULL) {
+        if (wcsstr(quals, L"/Q") == NULL) {
           BOOL  ok;
           WCHAR  question[MAXSTRING];
-          static const WCHAR fmt[] = {'%','s',' ','\0'};
 
           /* Ask for confirmation */
-          wsprintfW(question, fmt, thisArg);
+          wsprintfW(question, L"%s ", thisArg);
           ok = WCMD_ask_confirm(question, TRUE, NULL);
 
           /* Abort if answer is 'N' */
@@ -3310,12 +3260,6 @@ void WCMD_setlocal (const WCHAR *s) {
   struct env_stack *env_copy;
   WCHAR cwd[MAX_PATH];
   BOOL newdelay;
-  static const WCHAR ondelayW[]     = {'E','N','A','B','L','E','D','E','L','A',
-                                       'Y','E','D','E','X','P','A','N','S','I',
-                                       'O','N','\0'};
-  static const WCHAR offdelayW[]    = {'D','I','S','A','B','L','E','D','E','L',
-                                       'A','Y','E','D','E','X','P','A','N','S',
-                                       'I','O','N','\0'};
 
   /* setlocal does nothing outside of batch programs */
   if (!context) return;
@@ -3324,9 +3268,9 @@ void WCMD_setlocal (const WCHAR *s) {
 
   /* ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION could be parm1 or parm2
      (if both ENABLEEXTENSIONS and ENABLEDELAYEDEXPANSION supplied for example) */
-  if (!wcsicmp(param1, ondelayW) || !wcsicmp(param2, ondelayW)) {
+  if (!wcsicmp(param1, L"ENABLEDELAYEDEXPANSION") || !wcsicmp(param2, L"ENABLEDELAYEDEXPANSION")) {
     newdelay = TRUE;
-  } else if (!wcsicmp(param1, offdelayW) || !wcsicmp(param2, offdelayW)) {
+  } else if (!wcsicmp(param1, L"DISABLEDELAYEDEXPANSION") || !wcsicmp(param2, L"DISABLEDELAYEDEXPANSION")) {
     newdelay = FALSE;
   } else {
     newdelay = delayedsubst;
@@ -3422,9 +3366,8 @@ void WCMD_endlocal (void) {
   if (IsCharAlphaW(temp->u.cwd)) {
     WCHAR envvar[4];
     WCHAR cwd[MAX_PATH];
-    static const WCHAR fmt[] = {'=','%','c',':','\0'};
 
-    wsprintfW(envvar, fmt, temp->u.cwd);
+    wsprintfW(envvar, L"=%c:", temp->u.cwd);
     if (GetEnvironmentVariableW(envvar, cwd, MAX_PATH)) {
       WINE_TRACE("Resetting cwd to %s\n", wine_dbgstr_w(cwd));
       SetCurrentDirectoryW(cwd);
@@ -3449,7 +3392,6 @@ void WCMD_setshow_default (const WCHAR *args) {
   WCHAR *pos;
   WIN32_FIND_DATAW fd;
   HANDLE hff;
-  static const WCHAR parmD[] = {'/','D','\0'};
 
   WINE_TRACE("Request change to directory '%s'\n", wine_dbgstr_w(args));
 
@@ -3457,7 +3399,7 @@ void WCMD_setshow_default (const WCHAR *args) {
   if (lstrlenW(args) >= 2 &&
       CompareStringW(LOCALE_USER_DEFAULT,
                      NORM_IGNORECASE | SORT_STRINGSORT,
-                     args, 2, parmD, -1) == CSTR_EQUAL) {
+                     args, 2, L"/D", -1) == CSTR_EQUAL) {
     args += 2;
     while (*args && (*args==' ' || *args=='\t'))
       args++;
@@ -3492,14 +3434,13 @@ void WCMD_setshow_default (const WCHAR *args) {
           WCHAR dir[MAX_PATH];
           WCHAR fname[MAX_PATH];
           WCHAR ext[MAX_PATH];
-          static const WCHAR fmt[] = {'%','s','%','s','%','s','\0'};
 
           /* Convert path into actual directory spec */
           GetFullPathNameW(string, ARRAY_SIZE(fpath), fpath, NULL);
           _wsplitpath(fpath, drive, dir, fname, ext);
 
           /* Rebuild path */
-          wsprintfW(string, fmt, drive, dir, fd.cFileName);
+          wsprintfW(string, L"%s%s%s", drive, dir, fd.cFileName);
           break;
         }
       } while (FindNextFileW(hff, &fd) != 0);
@@ -3521,7 +3462,7 @@ void WCMD_setshow_default (const WCHAR *args) {
 
       /* Restore old directory if drive letter would change, and
            CD x:\directory /D (or pushd c:\directory) not supplied */
-      if ((wcsstr(quals, parmD) == NULL) &&
+      if ((wcsstr(quals, L"/D") == NULL) &&
           (param1[1] == ':') && (toupper(param1[0]) != toupper(cwd[0]))) {
         SetCurrentDirectoryW(cwd);
       }
@@ -3555,12 +3496,11 @@ void WCMD_setshow_date (void) {
 
   WCHAR curdate[64], buffer[64];
   DWORD count;
-  static const WCHAR parmT[] = {'/','T','\0'};
 
   if (!*param1) {
     if (GetDateFormatW(LOCALE_USER_DEFAULT, 0, NULL, NULL, curdate, ARRAY_SIZE(curdate))) {
       WCMD_output (WCMD_LoadMessage(WCMD_CURRENTDATE), curdate);
-      if (wcsstr (quals, parmT) == NULL) {
+      if (wcsstr(quals, L"/T") == NULL) {
         WCMD_output (WCMD_LoadMessage(WCMD_NEWDATE));
         WCMD_ReadFile(GetStdHandle(STD_INPUT_HANDLE), buffer, ARRAY_SIZE(buffer), &count);
         if (count > 2) {
@@ -3905,11 +3845,10 @@ static int WCMD_reduce(OPSTACK **opstack, VARSTACK **varstack) {
 
   case '=':
         {
-          WCHAR  intFormat[] = {'%','d','\0'};
           WCHAR  result[MAXSTRING];
 
           /* Build the result, then push it onto the stack */
-          swprintf(result, ARRAY_SIZE(result), intFormat, var1);
+          swprintf(result, ARRAY_SIZE(result), L"%d", var1);
           WINE_TRACE("Assigning %s a value %s\n", wine_dbgstr_w((*varstack)->variable),
                      wine_dbgstr_w(result));
           SetEnvironmentVariableW((*varstack)->variable, result);
@@ -3932,8 +3871,7 @@ static int WCMD_reduce(OPSTACK **opstack, VARSTACK **varstack) {
  */
 static int WCMD_handleExpression(WCHAR **expr, int *ret, int depth)
 {
-  static const WCHAR mathDelims[] = {' ','\t','(',')','!','~','-','*','/','%',
-                                     '+','<','>','&','^','|','=',',','\0' };
+  static const WCHAR mathDelims[] = L" \t()!~-*/%+<>&^|=,";
   int       rc = 0;
   WCHAR    *pos;
   BOOL      lastwasnumber = FALSE;  /* FALSE makes a minus at the start of the expression easier to handle */
@@ -4165,8 +4103,6 @@ void WCMD_setshow_env (WCHAR *s) {
   LPVOID env;
   WCHAR *p;
   BOOL status;
-  static const WCHAR parmP[] = {'/','P','\0'};
-  static const WCHAR parmA[] = {'/','A','\0'};
   WCHAR string[MAXSTRING];
 
   if (param1[0] == 0x00 && quals[0] == 0x00) {
@@ -4178,7 +4114,7 @@ void WCMD_setshow_env (WCHAR *s) {
   /* See if /P supplied, and if so echo the prompt, and read in a reply */
   if (CompareStringW(LOCALE_USER_DEFAULT,
                      NORM_IGNORECASE | SORT_STRINGSORT,
-                     s, 2, parmP, -1) == CSTR_EQUAL) {
+                     s, 2, L"/P", -1) == CSTR_EQUAL) {
     DWORD count;
 
     s += 2;
@@ -4214,7 +4150,7 @@ void WCMD_setshow_env (WCHAR *s) {
   /* See if /A supplied, and if so calculate the results of all the expressions */
   } else if (CompareStringW(LOCALE_USER_DEFAULT,
                             NORM_IGNORECASE | SORT_STRINGSORT,
-                            s, 2, parmA, -1) == CSTR_EQUAL) {
+                            s, 2, L"/A", -1) == CSTR_EQUAL) {
     /* /A supplied, so evaluate expressions and set variables appropriately */
     /* Syntax is set /a var=1,var2=var+4 etc, and it echos back the result  */
     /* of the final computation                                             */
@@ -4246,8 +4182,7 @@ void WCMD_setshow_env (WCHAR *s) {
 
     /* If we have no context (interactive or cmd.exe /c) print the final result */
     if (!context) {
-      static const WCHAR fmt[] = {'%','d','\0'};
-      swprintf(string, ARRAY_SIZE(string), fmt, result);
+      swprintf(string, ARRAY_SIZE(string), L"%d", result);
       WCMD_output_asis(string);
     }
 
@@ -4295,13 +4230,11 @@ void WCMD_setshow_path (const WCHAR *args) {
 
   WCHAR string[1024];
   DWORD status;
-  static const WCHAR pathW[] = {'P','A','T','H','\0'};
-  static const WCHAR pathEqW[] = {'P','A','T','H','=','\0'};
 
   if (!*param1 && !*param2) {
-    status = GetEnvironmentVariableW(pathW, string, ARRAY_SIZE(string));
+    status = GetEnvironmentVariableW(L"PATH", string, ARRAY_SIZE(string));
     if (status != 0) {
-      WCMD_output_asis ( pathEqW);
+      WCMD_output_asis(L"PATH=");
       WCMD_output_asis ( string);
       WCMD_output_asis(L"\r\n");
     }
@@ -4311,7 +4244,7 @@ void WCMD_setshow_path (const WCHAR *args) {
   }
   else {
     if (*args == '=') args++; /* Skip leading '=' */
-    status = SetEnvironmentVariableW(pathW, args);
+    status = SetEnvironmentVariableW(L"PATH", args);
     if (!status) WCMD_print_error();
   }
 }
@@ -4325,18 +4258,17 @@ void WCMD_setshow_path (const WCHAR *args) {
 void WCMD_setshow_prompt (void) {
 
   WCHAR *s;
-  static const WCHAR promptW[] = {'P','R','O','M','P','T','\0'};
 
   if (!*param1) {
-    SetEnvironmentVariableW(promptW, NULL);
+    SetEnvironmentVariableW(L"PROMPT", NULL);
   }
   else {
     s = param1;
     while ((*s == '=') || (*s == ' ') || (*s == '\t')) s++;
     if (!*s) {
-      SetEnvironmentVariableW(promptW, NULL);
+      SetEnvironmentVariableW(L"PROMPT", NULL);
     }
-    else SetEnvironmentVariableW(promptW, s);
+    else SetEnvironmentVariableW(L"PROMPT", s);
   }
 }
 
@@ -4352,13 +4284,12 @@ void WCMD_setshow_time (void) {
   WCHAR curtime[64], buffer[64];
   DWORD count;
   SYSTEMTIME st;
-  static const WCHAR parmT[] = {'/','T','\0'};
 
   if (!*param1) {
     GetLocalTime(&st);
     if (GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &st, NULL, curtime, ARRAY_SIZE(curtime))) {
       WCMD_output (WCMD_LoadMessage(WCMD_CURRENTTIME), curtime);
-      if (wcsstr (quals, parmT) == NULL) {
+      if (wcsstr(quals, L"/T") == NULL) {
         WCMD_output (WCMD_LoadMessage(WCMD_NEWTIME));
         WCMD_ReadFile(GetStdHandle(STD_INPUT_HANDLE), buffer, ARRAY_SIZE(buffer), &count);
         if (count > 2) {
@@ -4411,11 +4342,6 @@ void WCMD_shift (const WCHAR *args) {
  */
 void WCMD_start(WCHAR *args)
 {
-    static const WCHAR exeW[] = {'\\','c','o','m','m','a','n','d',
-                                 '\\','s','t','a','r','t','.','e','x','e',0};
-    static const WCHAR startDelims[] = { ' ', '\t', '/', '\0' };
-    static const WCHAR prefixQuote[] = {'"','\\','"','\0'};
-    static const WCHAR postfixQuote[] = {'\\','"','"','\0'};
     int argno;
     int have_title;
     WCHAR file[MAX_PATH];
@@ -4424,7 +4350,7 @@ void WCMD_start(WCHAR *args)
     PROCESS_INFORMATION pi;
 
     GetWindowsDirectoryW( file, MAX_PATH );
-    lstrcatW( file, exeW );
+    lstrcatW(file, L"\\command\\start.exe");
     cmdline = heap_xalloc( (lstrlenW(file) + lstrlenW(args) + 8) * sizeof(WCHAR) );
     lstrcpyW( cmdline, file );
     lstrcatW(cmdline, L" ");
@@ -4468,7 +4394,7 @@ void WCMD_start(WCHAR *args)
         WCHAR *thisArg, *argN;
 
         argN = NULL;
-        thisArg = WCMD_parameter_with_delims(args, argno, &argN, FALSE, FALSE, startDelims);
+        thisArg = WCMD_parameter_with_delims(args, argno, &argN, FALSE, FALSE, L" \t/");
 
         /* No more parameters */
         if (!argN)
@@ -4484,12 +4410,12 @@ void WCMD_start(WCHAR *args)
             cmdline_params[argN - args] = '\0';
 
             /* Add quoted title */
-            lstrcatW(cmdline_params, prefixQuote);
+            lstrcatW(cmdline_params, L"\"\\\"");
             lstrcatW(cmdline_params, thisArg);
-            lstrcatW(cmdline_params, postfixQuote);
+            lstrcatW(cmdline_params, L"\\\"\"");
 
             /* Concatenate remaining command-line */
-            thisArg = WCMD_parameter_with_delims(args, argno, &argN, TRUE, FALSE, startDelims);
+            thisArg = WCMD_parameter_with_delims(args, argno, &argN, TRUE, FALSE, L" \t/");
             lstrcatW(cmdline_params, argN + lstrlenW(thisArg));
 
             break;
@@ -4579,8 +4505,7 @@ void WCMD_type (WCHAR *args) {
       errorlevel = 1;
     } else {
       if (writeHeaders) {
-        static const WCHAR fmt[] = {'\n','%','1','\n','\n','\n','\0'};
-        WCMD_output_stderr(fmt, thisArg);
+        WCMD_output_stderr(L"\n%1\n\n\n", thisArg);
       }
       while (WCMD_ReadFile(h, buffer, ARRAY_SIZE(buffer) - 1, &count)) {
         if (count == 0) break;	/* ReadFile reports success on EOF! */
@@ -4606,15 +4531,10 @@ void WCMD_more (WCHAR *args) {
   WCHAR  moreStrPage[100];
   WCHAR  buffer[512];
   DWORD count;
-  static const WCHAR moreStart[] = {'-','-',' ','\0'};
-  static const WCHAR moreFmt[]   = {'%','s',' ','-','-','\n','\0'};
-  static const WCHAR moreFmt2[]  = {'%','s',' ','(','%','2','.','2','d','%','%',
-                                    ')',' ','-','-','\n','\0'};
-  static const WCHAR conInW[]    = {'C','O','N','I','N','$','\0'};
 
   /* Prefix the NLS more with '-- ', then load the text */
   errorlevel = 0;
-  lstrcpyW(moreStr, moreStart);
+  lstrcpyW(moreStr, L"-- ");
   LoadStringW(hinst, WCMD_MORESTR, &moreStr[3], ARRAY_SIZE(moreStr)-3);
 
   if (param1[0] == 0x00) {
@@ -4624,7 +4544,7 @@ void WCMD_more (WCHAR *args) {
        more are satisfied by the next line from the input (file). To
        avoid this, ensure stdin is to the console                    */
     HANDLE hstdin  = GetStdHandle(STD_INPUT_HANDLE);
-    HANDLE hConIn = CreateFileW(conInW, GENERIC_READ | GENERIC_WRITE,
+    HANDLE hConIn = CreateFileW(L"CONIN$", GENERIC_READ | GENERIC_WRITE,
                          FILE_SHARE_READ, NULL, OPEN_EXISTING,
                          FILE_ATTRIBUTE_NORMAL, 0);
     WINE_TRACE("No parms - working probably in pipe mode\n");
@@ -4632,7 +4552,7 @@ void WCMD_more (WCHAR *args) {
 
     /* Warning: No easy way of ending the stream (ctrl+z on windows) so
        once you get in this bit unless due to a pipe, it's going to end badly...  */
-    wsprintfW(moreStrPage, moreFmt, moreStr);
+    wsprintfW(moreStrPage, L"%s --\n", moreStr);
 
     WCMD_enter_paged_mode(moreStrPage);
     while (WCMD_ReadFile(hstdin, buffer, ARRAY_SIZE(buffer)-1, &count)) {
@@ -4663,7 +4583,7 @@ void WCMD_more (WCHAR *args) {
       if (needsPause) {
 
         /* Wait */
-        wsprintfW(moreStrPage, moreFmt2, moreStr, 100);
+        wsprintfW(moreStrPage, L"%s (%2.2d%%) --\n", moreStr, 100);
         WCMD_leave_paged_mode();
         WCMD_output_asis(moreStrPage);
         WCMD_ReadFile(GetStdHandle(STD_INPUT_HANDLE), buffer, ARRAY_SIZE(buffer), &count);
@@ -4694,7 +4614,7 @@ void WCMD_more (WCHAR *args) {
           curPos += count;
 
           /* Update % count (would be used in WCMD_output_asis as prompt) */
-          wsprintfW(moreStrPage, moreFmt2, moreStr, (int) min(99, (curPos * 100)/fileLen));
+          wsprintfW(moreStrPage, L"%s (%2.2d%%) --\n", moreStr, (int) min(99, (curPos * 100)/fileLen));
 
           WCMD_output_asis (buffer);
         }
@@ -4720,15 +4640,15 @@ void WCMD_verify (const WCHAR *args) {
 
   count = lstrlenW(args);
   if (count == 0) {
-    if (verify_mode) WCMD_output (WCMD_LoadMessage(WCMD_VERIFYPROMPT), onW);
-    else WCMD_output (WCMD_LoadMessage(WCMD_VERIFYPROMPT), offW);
+    if (verify_mode) WCMD_output(WCMD_LoadMessage(WCMD_VERIFYPROMPT), L"ON");
+    else WCMD_output (WCMD_LoadMessage(WCMD_VERIFYPROMPT), L"OFF");
     return;
   }
-  if (lstrcmpiW(args, onW) == 0) {
+  if (lstrcmpiW(args, L"ON") == 0) {
     verify_mode = TRUE;
     return;
   }
-  else if (lstrcmpiW(args, offW) == 0) {
+  else if (lstrcmpiW(args, L"OFF") == 0) {
     verify_mode = FALSE;
     return;
   }
@@ -4770,12 +4690,11 @@ int WCMD_volume(BOOL set_label, const WCHAR *path)
     status = GetVolumeInformationW(NULL, label, ARRAY_SIZE(label), &serial, NULL, NULL, NULL, 0);
   }
   else {
-    static const WCHAR fmt[] = {'%','s','\\','\0'};
     if ((path[1] != ':') || (lstrlenW(path) != 2)) {
       WCMD_output_stderr(WCMD_LoadMessage(WCMD_SYNTAXERR));
       return 0;
     }
-    wsprintfW (curdir, fmt, path);
+    wsprintfW (curdir, L"%s\\", path);
     status = GetVolumeInformationW(curdir, label, ARRAY_SIZE(label), &serial, NULL, NULL, NULL, 0);
   }
   if (!status) {
@@ -4817,11 +4736,9 @@ int WCMD_volume(BOOL set_label, const WCHAR *path)
  */
 
 void WCMD_exit (CMD_LIST **cmdList) {
-
-    static const WCHAR parmB[] = {'/','B','\0'};
     int rc = wcstol(param1, NULL, 10); /* Note: wcstol of empty parameter is 0 */
 
-    if (context && lstrcmpiW(quals, parmB) == 0) {
+    if (context && lstrcmpiW(quals, L"/B") == 0) {
         errorlevel = rc;
         context -> skip_rest = TRUE;
         *cmdList = NULL;
@@ -4846,8 +4763,6 @@ void WCMD_assoc (const WCHAR *args, BOOL assoc) {
     WCHAR    keyValue[MAXSTRING];
     DWORD   valueLen = MAXSTRING;
     HKEY    readKey;
-    static const WCHAR shOpCmdW[] = {'\\','S','h','e','l','l','\\',
-                                     'O','p','e','n','\\','C','o','m','m','a','n','d','\0'};
 
     /* See if parameter includes '=' */
     errorlevel = 0;
@@ -4882,7 +4797,7 @@ void WCMD_assoc (const WCHAR *args, BOOL assoc) {
           {
             WCHAR subkey[MAXSTRING];
             lstrcpyW(subkey, keyName);
-            if (!assoc) lstrcatW(subkey, shOpCmdW);
+            if (!assoc) lstrcatW(subkey, L"\\Shell\\Open\\Command");
 
             if (RegOpenKeyExW(key, subkey, 0, accessOptions, &readKey) == ERROR_SUCCESS) {
 
@@ -4915,7 +4830,7 @@ void WCMD_assoc (const WCHAR *args, BOOL assoc) {
 
         /* Set up key name */
         lstrcpyW(subkey, keyValue);
-        if (!assoc) lstrcatW(subkey, shOpCmdW);
+        if (!assoc) lstrcatW(subkey, L"\\Shell\\Open\\Command");
 
         if (RegOpenKeyExW(key, subkey, 0, accessOptions, &readKey) == ERROR_SUCCESS) {
 
@@ -4951,7 +4866,7 @@ void WCMD_assoc (const WCHAR *args, BOOL assoc) {
 
         /* Set up key name */
         lstrcpyW(subkey, args);
-        if (!assoc) lstrcatW(subkey, shOpCmdW);
+        if (!assoc) lstrcatW(subkey, L"\\Shell\\Open\\Command");
 
         /* If nothing after '=' then clear value - only valid for ASSOC */
         if (*newValue == 0x00) {
@@ -5066,9 +4981,6 @@ void WCMD_mklink(WCHAR *args)
     BOOL ret = FALSE;
     WCHAR file1[MAX_PATH];
     WCHAR file2[MAX_PATH];
-    static const WCHAR optD[] = {'/', 'D', '\0'};
-    static const WCHAR optH[] = {'/', 'H', '\0'};
-    static const WCHAR optJ[] = {'/', 'J', '\0'};
 
     if (param1[0] == 0x00 || param2[0] == 0x00) {
         WCMD_output_stderr(WCMD_LoadMessage(WCMD_NOARG));
@@ -5084,11 +4996,11 @@ void WCMD_mklink(WCHAR *args)
 
         WINE_TRACE("mklink: Processing arg '%s'\n", wine_dbgstr_w(thisArg));
 
-        if(lstrcmpiW(thisArg, optD) == 0)
+        if (lstrcmpiW(thisArg, L"/D") == 0)
             isdir = TRUE;
-        else if(lstrcmpiW(thisArg, optH) == 0)
+        else if (lstrcmpiW(thisArg, L"/H") == 0)
             hard = TRUE;
-        else if(lstrcmpiW(thisArg, optJ) == 0)
+        else if (lstrcmpiW(thisArg, L"/J") == 0)
             junction = TRUE;
         else {
             if(!file1[0])
-- 
2.26.2




More information about the wine-devel mailing list