summaryrefslogtreecommitdiff
path: root/compat
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-09-30 04:19:26 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-09-30 04:19:26 (GMT)
commit6f21347f118f6c0c49d10485aa4bc1daaddee303 (patch)
treea3c8e37f24fd0e30c6de47896765ecc175074f84 /compat
parent430439536bd8a334188460bbb9da9ce81ef95630 (diff)
parent4e1a641ee345bbc877ed82962e12c45f09b6617b (diff)
downloadgit-6f21347f118f6c0c49d10485aa4bc1daaddee303.zip
git-6f21347f118f6c0c49d10485aa4bc1daaddee303.tar.gz
git-6f21347f118f6c0c49d10485aa4bc1daaddee303.tar.bz2
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
Diffstat (limited to 'compat')
-rw-r--r--compat/mingw.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index a3b1e9e..7a0d619 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;
}