Author: janderwald Date: Mon Dec 1 08:57:34 2008 New Revision: 37791
URL: http://svn.reactos.org/svn/reactos?rev=37791&view=rev Log: - revert 37497 - use FindFirstFileW to obtain to original filename which is passed to CreateProcess - fixes bug 3875
Modified: trunk/reactos/base/shell/cmd/where.c
Modified: trunk/reactos/base/shell/cmd/where.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/where.c?rev=... ============================================================================== --- trunk/reactos/base/shell/cmd/where.c [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/where.c [iso-8859-1] Mon Dec 1 08:57:34 2008 @@ -141,10 +141,12 @@ BOOL SearchForExecutable (LPCTSTR pFileName, LPTSTR pFullName) { - static TCHAR pszDefaultPathExt[] = _T(".com;.exe;.bat;.cmd"); + static TCHAR pszDefaultPathExt[] = _T(".COM;.EXE;.BAT;.CMD"); LPTSTR pszPathExt, pszPath; LPTSTR pCh; DWORD dwBuffer; + HANDLE hFile; + WIN32_FIND_DATAW FindData; TRACE ("SearchForExecutable: '%s'\n", debugstr_aw(pFileName));
/* load environment varable PATHEXT */ @@ -154,20 +156,21 @@ { pszPathExt = (LPTSTR)cmd_realloc (pszPathExt, dwBuffer * sizeof (TCHAR)); GetEnvironmentVariable (_T("PATHEXT"), pszPathExt, dwBuffer); - _tcslwr(pszPathExt); } else if (0 == dwBuffer) { _tcscpy(pszPathExt, pszDefaultPathExt); - } - else - { - _tcslwr(pszPathExt); }
/* Check if valid directly on specified path */ if (SearchForExecutableSingle(pFileName, pFullName, pszPathExt, NULL)) { + hFile = FindFirstFileW(pFullName, &FindData); + if (hFile) + { + _tcscpy(pFullName, FindData.cFileName); + } + FindClose(hFile); cmd_free(pszPathExt); return TRUE; } @@ -196,6 +199,12 @@ { if (SearchForExecutableSingle(pFileName, pFullName, pszPathExt, pCh)) { + hFile = FindFirstFileW(pFullName, &FindData); + if (hFile) + { + _tcscpy(pFullName, FindData.cFileName); + } + FindClose(hFile); cmd_free(pszPath); cmd_free(pszPathExt); return TRUE;