mirror of
https://github.com/git-for-windows/git.git
synced 2026-03-16 19:41:56 -05:00
Merge branch 'work-around-isilon'
It would appear that least the Isilon network filesystem (and possibly other network filesystems, too), report non-standard error values when trying to access a non-existing directory. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
@@ -460,8 +460,19 @@ 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 a unknow error. If
|
||||
* so, the error is now forced to be an ERROR_PATH_NOT_FOUND
|
||||
* error instead.
|
||||
*/
|
||||
if (err == ERROR_INVALID_PARAMETER)
|
||||
err = ERROR_PATH_NOT_FOUND;
|
||||
return errno = err_win_to_posix(err), -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* No O_APPEND here, because the CRT uses it only to reset the
|
||||
|
||||
Reference in New Issue
Block a user