summaryrefslogtreecommitdiff
path: root/compat
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2020-04-22 13:42:58 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-04-22 13:42:58 -0700
commita41b41ca741c79a5e751e1d15fc0af72f46a6388 (patch)
tree7805410206ccc0f7f8ab6532afeb4866c1e07a38 /compat
parentMerge branch 'js/flush-prompt-before-interative-input' (diff)
parentmingw: cope with the Isilon network file system (diff)
downloadtgif-a41b41ca741c79a5e751e1d15fc0af72f46a6388.tar.xz
Merge branch 'js/mingw-isilon-nfs'
* js/mingw-isilon-nfs: mingw: cope with the Isilon network file system
Diffstat (limited to 'compat')
-rw-r--r--compat/mingw.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index 178a70df61..8ee0b6408e 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -460,8 +460,21 @@ static int mingw_open_append(wchar_t const *wfilename, int oflags, ...)
handle = CreateFileW(wfilename, FILE_APPEND_DATA,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL, create, FILE_ATTRIBUTE_NORMAL, NULL);
- if (handle == INVALID_HANDLE_VALUE)
- return errno = err_win_to_posix(GetLastError()), -1;
+ if (handle == INVALID_HANDLE_VALUE) {
+ DWORD err = GetLastError();
+
+ /*
+ * Some network storage solutions (e.g. Isilon) might return
+ * ERROR_INVALID_PARAMETER instead of expected error
+ * ERROR_PATH_NOT_FOUND, which results in an unknown error. If
+ * so, let's turn the error to ERROR_PATH_NOT_FOUND instead.
+ */
+ if (err == ERROR_INVALID_PARAMETER)
+ err = ERROR_PATH_NOT_FOUND;
+
+ errno = err_win_to_posix(err);
+ return -1;
+ }
/*
* No O_APPEND here, because the CRT uses it only to reset the