summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2019-09-30 13:19:26 +0900
committerLibravatar Junio C Hamano <gitster@pobox.com>2019-09-30 13:19:26 +0900
commit6f21347f118f6c0c49d10485aa4bc1daaddee303 (patch)
treea3c8e37f24fd0e30c6de47896765ecc175074f84
parentMerge branch 'rs/parse-tree-indirect' (diff)
parentmingw: fix launching of externals from Unicode paths (diff)
downloadtgif-6f21347f118f6c0c49d10485aa4bc1daaddee303.tar.xz
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 paths
-rw-r--r--compat/mingw.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index a3b1e9e3bb..7a0d619fb6 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -1161,14 +1161,21 @@ static char *lookup_prog(const char *dir, int dirlen, const char *cmd,
int isexe, int exe_only)
{
char path[MAX_PATH];
+ wchar_t wpath[MAX_PATH];
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);
- path[strlen(path)-4] = '\0';
- if ((!exe_only || isexe) && access(path, F_OK) == 0)
- if (!(GetFileAttributes(path) & FILE_ATTRIBUTE_DIRECTORY))
+ wpath[wcslen(wpath)-4] = '\0';
+ if ((!exe_only || isexe) && _waccess(wpath, F_OK) == 0) {
+ if (!(GetFileAttributesW(wpath) & FILE_ATTRIBUTE_DIRECTORY)) {
+ path[strlen(path)-4] = '\0';
return xstrdup(path);
+ }
+ }
return NULL;
}