Commit 7e9d498d authored by Jason Edmeades's avatar Jason Edmeades Committed by Alexandre Julliard

cmd.exe: Add support for cmd.exe /u (Unicode from internal pgms).

parent c960cae9
...@@ -92,6 +92,7 @@ extern struct env_stack *pushd_directories; ...@@ -92,6 +92,7 @@ extern struct env_stack *pushd_directories;
static const WCHAR *pagedMessage = NULL; static const WCHAR *pagedMessage = NULL;
static char *output_bufA = NULL; static char *output_bufA = NULL;
#define MAX_WRITECONSOLE_SIZE 65535 #define MAX_WRITECONSOLE_SIZE 65535
BOOL unicodePipes = FALSE;
static WCHAR *WCMD_expand_envvar(WCHAR *start); static WCHAR *WCMD_expand_envvar(WCHAR *start);
...@@ -141,6 +142,10 @@ int wmain (int argc, WCHAR *argvW[]) ...@@ -141,6 +142,10 @@ int wmain (int argc, WCHAR *argvW[])
opt_k=1; opt_k=1;
} else if (tolowerW(c)=='s') { } else if (tolowerW(c)=='s') {
opt_s=1; opt_s=1;
} else if (tolowerW(c)=='a') {
unicodePipes=FALSE;
} else if (tolowerW(c)=='u') {
unicodePipes=TRUE;
} else if (tolowerW(c)=='t' && (*argvW)[2]==':') { } else if (tolowerW(c)=='t' && (*argvW)[2]==':') {
opt_t=strtoulW(&(*argvW)[3], NULL, 16); opt_t=strtoulW(&(*argvW)[3], NULL, 16);
} else if (tolowerW(c)=='x' || tolowerW(c)=='y') { } else if (tolowerW(c)=='x' || tolowerW(c)=='y') {
...@@ -1306,6 +1311,7 @@ static void WCMD_output_asis_len(const WCHAR *message, int len) { ...@@ -1306,6 +1311,7 @@ static void WCMD_output_asis_len(const WCHAR *message, int len) {
BOOL usedDefaultChar = FALSE; BOOL usedDefaultChar = FALSE;
DWORD convertedChars; DWORD convertedChars;
if (!unicodePipes) {
/* /*
* Allocate buffer to use when writing to file. (Not freed, as one off) * Allocate buffer to use when writing to file. (Not freed, as one off)
*/ */
...@@ -1322,6 +1328,10 @@ static void WCMD_output_asis_len(const WCHAR *message, int len) { ...@@ -1322,6 +1328,10 @@ static void WCMD_output_asis_len(const WCHAR *message, int len) {
"?", &usedDefaultChar); "?", &usedDefaultChar);
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), output_bufA, convertedChars, WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), output_bufA, convertedChars,
&nOut, FALSE); &nOut, FALSE);
} else {
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), message, len*sizeof(WCHAR),
&nOut, FALSE);
}
} }
return; return;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment