summaryrefslogtreecommitdiff
path: root/compat
diff options
context:
space:
mode:
authorJohannes Sixt <j6t@kdbg.org>2017-05-29 22:27:35 +0200
committerJunio C Hamano <gitster@pobox.com>2017-06-02 10:40:04 +0900
commite5b313442ab7c700d0851e9dbe7d2b029e3893e5 (patch)
tree33b59e0d9f56bd9b405bcb8a19d84e9c81b1ed03 /compat
parent13b57da83384e9523943ea9d8ecf3ec7993ce56a (diff)
downloadgit-e5b313442ab7c700d0851e9dbe7d2b029e3893e5.tar.gz
mingw_fopen: report ENOENT for invalid file names
On Windows, certain characters are prohibited in file names, most prominently the colon. When fopen() is called with such an invalid file name, the underlying Windows API actually reports a particular error, but since there is no suitable errno value, this error is translated to EINVAL. Detect the case and report ENOENT instead. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat')
-rw-r--r--compat/mingw.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index 3fbfda5978..b604a827e8 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -423,6 +423,8 @@ FILE *mingw_fopen (const char *filename, const char *otype)
return NULL;
}
file = _wfopen(wfilename, wotype);
+ if (!file && GetLastError() == ERROR_INVALID_NAME)
+ errno = ENOENT;
if (file && hide && set_hidden_flag(wfilename, 1))
warning("could not mark '%s' as hidden.", filename);
return file;