Module: wine Branch: master Commit: 8e13333cb732c2f37b79be74c16d56a35813a3db URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=8e13333cb732c2f37b79be74...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Aug 18 20:54:13 2006 +0200
explorer: Specify an explicit path when launching winefile.
---
programs/explorer/explorer.c | 24 +++++++++--------------- 1 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/programs/explorer/explorer.c b/programs/explorer/explorer.c index 9a3bf7c..021259f 100644 --- a/programs/explorer/explorer.c +++ b/programs/explorer/explorer.c @@ -157,7 +157,7 @@ int WINAPI WinMain(HINSTANCE hinstance, PROCESS_INFORMATION info; parameters_struct parameters; BOOL rc; - static const WCHAR winefile[] = {'w','i','n','e','f','i','l','e','.','e','x','e',0}; + static const WCHAR winefile[] = {'\','w','i','n','e','f','i','l','e','.','e','x','e',0}; static const WCHAR space[] = {' ',0}; LPWSTR winefile_commandline = NULL; DWORD len = 0; @@ -166,23 +166,22 @@ int WINAPI WinMain(HINSTANCE hinstance, memset(&si,0,sizeof(STARTUPINFOW));
ParseCommandLine(cmdline,¶meters); - len = lstrlenW(winefile) +1; + len = GetSystemDirectoryW( NULL, 0 ) + sizeof(winefile)/sizeof(WCHAR); + + if (parameters.selection[0]) len += lstrlenW(parameters.selection) + 2; + else if (parameters.root[0]) len += lstrlenW(parameters.root) + 3; + + winefile_commandline = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); + GetSystemDirectoryW( winefile_commandline, len ); + lstrcatW(winefile_commandline,winefile);
if (parameters.selection[0]) { - len += lstrlenW(parameters.selection) + 2; - winefile_commandline = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); - - lstrcpyW(winefile_commandline,winefile); lstrcatW(winefile_commandline,space); lstrcatW(winefile_commandline,parameters.selection); } else if (parameters.root[0]) { - len += lstrlenW(parameters.root) + 3; - winefile_commandline = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); - - lstrcpyW(winefile_commandline,winefile); lstrcatW(winefile_commandline,space); lstrcatW(winefile_commandline,parameters.root); if (winefile_commandline[lstrlenW(winefile_commandline)-1]!='\') @@ -191,11 +190,6 @@ int WINAPI WinMain(HINSTANCE hinstance, lstrcatW(winefile_commandline,slash); } } - else - { - winefile_commandline = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); - lstrcpyW(winefile_commandline,winefile); - }
rc = CreateProcessW(NULL, winefile_commandline, NULL, NULL, FALSE, 0, NULL, parameters.root, &si, &info);