Merge branch 'ar/mingw-run-external-with-non-ascii-path'
Windows update. * ar/mingw-run-external-with-non-ascii-path: mingw: fix launching of externals from Unicode pathsmaint
commit
6f21347f11
|
@ -1161,14 +1161,21 @@ static char *lookup_prog(const char *dir, int dirlen, const char *cmd,
|
||||||
int isexe, int exe_only)
|
int isexe, int exe_only)
|
||||||
{
|
{
|
||||||
char path[MAX_PATH];
|
char path[MAX_PATH];
|
||||||
|
wchar_t wpath[MAX_PATH];
|
||||||
snprintf(path, sizeof(path), "%.*s\\%s.exe", dirlen, dir, cmd);
|
snprintf(path, sizeof(path), "%.*s\\%s.exe", dirlen, dir, cmd);
|
||||||
|
|
||||||
if (!isexe && access(path, F_OK) == 0)
|
if (xutftowcs_path(wpath, path) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!isexe && _waccess(wpath, F_OK) == 0)
|
||||||
return xstrdup(path);
|
return xstrdup(path);
|
||||||
path[strlen(path)-4] = '\0';
|
wpath[wcslen(wpath)-4] = '\0';
|
||||||
if ((!exe_only || isexe) && access(path, F_OK) == 0)
|
if ((!exe_only || isexe) && _waccess(wpath, F_OK) == 0) {
|
||||||
if (!(GetFileAttributes(path) & FILE_ATTRIBUTE_DIRECTORY))
|
if (!(GetFileAttributesW(wpath) & FILE_ATTRIBUTE_DIRECTORY)) {
|
||||||
|
path[strlen(path)-4] = '\0';
|
||||||
return xstrdup(path);
|
return xstrdup(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue