http://bugs.winehq.org/show_bug.cgi?id=25901 Summary: Incorrect command line parsing in cmd Product: Wine Version: 1.3.12 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: cmd AssignedTo: wine-bugs(a)winehq.org ReportedBy: atohom(a)gmail.com #include <stdio.h> #include <windows.h> int main(int nargs, char *args[]) { if(nargs>1) { char *cl=GetCommandLine(); printf("%s\n", cl); } else { STARTUPINFO si={sizeof(STARTUPINFO)}; PROCESS_INFORMATION pi; CreateProcess(NULL, "cmd /C \"\"test.exe\" \"1 2 3\"\"", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); WaitForSingleObject(pi.hProcess, INFINITE); CreateProcess(NULL, "cmd /C \"\"test.exe\" \"\"1 2 3\"\"\"", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); WaitForSingleObject(pi.hProcess, INFINITE); CreateProcess(NULL, "cmd /C test.exe \" 1", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); WaitForSingleObject(pi.hProcess, INFINITE); CreateProcess(NULL, "cmd /C test.exe \"\\\"", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); WaitForSingleObject(pi.hProcess, INFINITE); CreateProcess(NULL, "cmd /C test.exe \"/\"", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); WaitForSingleObject(pi.hProcess, INFINITE); } return 0; } On Windows this test program prints: "test.exe" "1 2 3" "test.exe" ""1 2 3"" test.exe " 1 test.exe "\" test.exe "/" but in wine you get: test.exe 1 2 3 test.exe 1 2 3 test.exe " 1" test.exe \" test.exe / quote from cmd help on how it is supposed to work: If /C or /K is specified, then the remainder of the command line after the switch is processed as a command line, where the following logic is used to process quote (") characters: 1. If all of the following conditions are met, then quote characters on the command line are preserved: - no /S switch - exactly two quote characters - no special characters between the two quote characters, where special is one of: &<>()@^| - there are one or more whitespace characters between the two quote characters - the string between the two quote characters is the name of an executable file. 2. Otherwise, old behavior is to see if the first character is a quote character and if so, strip the leading character and remove the last quote character on the command line, preserving any text after the last quote character. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.