diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-04-22 13:42:58 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-04-22 13:42:58 -0700 |
commit | a41b41ca741c79a5e751e1d15fc0af72f46a6388 (patch) | |
tree | 7805410206ccc0f7f8ab6532afeb4866c1e07a38 | |
parent | Merge branch 'js/flush-prompt-before-interative-input' (diff) | |
parent | mingw: cope with the Isilon network file system (diff) | |
download | tgif-a41b41ca741c79a5e751e1d15fc0af72f46a6388.tar.xz |
Merge branch 'js/mingw-isilon-nfs'
* js/mingw-isilon-nfs:
mingw: cope with the Isilon network file system
-rw-r--r-- | compat/mingw.c | 17 |
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 |