Fix ShellExecute("\"foo.doc\"") for Internet Explorer 6.
Update the conformance tests accordingly. Tweak a trace because it's very confusing to see the path with no escaped quotes in ShellExecuteA() and then with escaped quotes in ShellExecuteExW32() (due to debugstr_w()).
This commit is contained in:
parent
2b7ae268e5
commit
0b5cc286e3
|
@ -1008,10 +1008,19 @@ BOOL WINAPI ShellExecuteExW32 (LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfun
|
||||||
sei->hProcess = NULL;
|
sei->hProcess = NULL;
|
||||||
|
|
||||||
/* make copies of all path/command strings */
|
/* make copies of all path/command strings */
|
||||||
if (sei_tmp.lpFile)
|
if (!sei_tmp.lpFile)
|
||||||
strcpyW(wszApplicationName, sei_tmp.lpFile);
|
|
||||||
else
|
|
||||||
*wszApplicationName = '\0';
|
*wszApplicationName = '\0';
|
||||||
|
else if (*sei_tmp.lpFile == '\"')
|
||||||
|
{
|
||||||
|
UINT l;
|
||||||
|
strcpyW(wszApplicationName, sei_tmp.lpFile+1);
|
||||||
|
l=lstrlenW(wszApplicationName);
|
||||||
|
if (wszApplicationName[l-1] == '\"')
|
||||||
|
wszApplicationName[l-1] = '\0';
|
||||||
|
TRACE("wszApplicationName=%s\n",debugstr_w(wszApplicationName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
strcpyW(wszApplicationName, sei_tmp.lpFile);
|
||||||
|
|
||||||
if (sei_tmp.lpParameters)
|
if (sei_tmp.lpParameters)
|
||||||
strcpyW(wszParameters, sei_tmp.lpParameters);
|
strcpyW(wszParameters, sei_tmp.lpParameters);
|
||||||
|
@ -1353,7 +1362,8 @@ HINSTANCE WINAPI ShellExecuteA(HWND hWnd, LPCSTR lpOperation,LPCSTR lpFile,
|
||||||
HANDLE hProcess = 0;
|
HANDLE hProcess = 0;
|
||||||
|
|
||||||
TRACE("%p,%s,%s,%s,%s,%d\n",
|
TRACE("%p,%s,%s,%s,%s,%d\n",
|
||||||
hWnd, lpOperation, lpFile, lpParameters, lpDirectory, iShowCmd);
|
hWnd, debugstr_a(lpOperation), debugstr_a(lpFile),
|
||||||
|
debugstr_a(lpParameters), debugstr_a(lpDirectory), iShowCmd);
|
||||||
|
|
||||||
sei.cbSize = sizeof(sei);
|
sei.cbSize = sizeof(sei);
|
||||||
sei.fMask = 0;
|
sei.fMask = 0;
|
||||||
|
|
|
@ -577,16 +577,12 @@ static void test_filename()
|
||||||
rc=shell_execute(NULL, filename, NULL, NULL);
|
rc=shell_execute(NULL, filename, NULL, NULL);
|
||||||
ok(rc>=32, "%s failed: rc=%d err=%ld\n", shell_call, rc,
|
ok(rc>=32, "%s failed: rc=%d err=%ld\n", shell_call, rc,
|
||||||
GetLastError());
|
GetLastError());
|
||||||
todo_wine {
|
|
||||||
okChildInt("argcA", 5);
|
okChildInt("argcA", 5);
|
||||||
}
|
|
||||||
okChildString("argvA3", "Open");
|
okChildString("argvA3", "Open");
|
||||||
sprintf(filename, "%s\\test file.shlexec", tmpdir);
|
sprintf(filename, "%s\\test file.shlexec", tmpdir);
|
||||||
todo_wine {
|
|
||||||
okChildPath("argvA4", filename);
|
okChildPath("argvA4", filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static filename_tests_t lnk_tests[]=
|
static filename_tests_t lnk_tests[]=
|
||||||
|
|
Loading…
Reference in New Issue