Am 26.05.2017 um 05:35 schrieb Junio C Hamano: > When asked to open/fopen a path, e.g. "a/b:/c", which does not exist > on the filesystem, Windows (correctly) fails to open it but sets > EINVAL to errno because the pathname has characters that cannot be > stored in its filesystem. > > As this is an expected failure, teach is_missing_file_error() helper > about this case. > > This is RFC, as there may be a case where we get EINVAL from > open/fopen for reasons other than "the filesystem does not like this > pathname" that may be worth reporting to the user, and this change > is sweeping such an error under the rug. > > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > --- > wrapper.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/wrapper.c b/wrapper.c > index f1c87ec7ea..74aa3b7803 100644 > --- a/wrapper.c > +++ b/wrapper.c > @@ -434,6 +434,10 @@ static void warn_on_inaccessible(const char *path) > * see if the errno indicates a missing file that we can safely ignore. > */ > static int is_missing_file_error(int errno_) { > +#ifdef GIT_WINDOWS_NATIVE > + if (errno_ == EINVAL) > + return 1; > +#endif > return (errno_ == ENOENT || errno_ == ENOTDIR); > } I would prefer to catch the case in the compatibility layer. Here is a two patch series that would replace your 12/13 and 13/13. ---- 8< ---- From: Johannes Schindelin <Johannes.Schindelin@xxxxxx> Subject: mingw: verify that paths are not mistaken for remote nicknames This added test case simply verifies that users will not be bothered with bogus complaints à la warning: unable to access '.git/remotes/D:\repo': Invalid argument when fetching from a Windows path (in this case, D:\repo). [j6t: mark the new test as test_expect_failure] Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> Signed-off-by: Johannes Sixt <j6t@xxxxxxxx> --- t/t5580-clone-push-unc.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/t/t5580-clone-push-unc.sh b/t/t5580-clone-push-unc.sh index b195f71ea9..fd719a209e 100755 --- a/t/t5580-clone-push-unc.sh +++ b/t/t5580-clone-push-unc.sh @@ -1,13 +1,19 @@ #!/bin/sh -test_description='various UNC path tests (Windows-only)' +test_description='various Windows-only path tests' . ./test-lib.sh if ! test_have_prereq MINGW; then - skip_all='skipping UNC path tests, requires Windows' + skip_all='skipping Windows-only path tests' test_done fi +test_expect_failure 'remote nick cannot contain backslashes' ' + BACKSLASHED="$(pwd | tr / \\\\)" && + git ls-remote "$BACKSLASHED" >out 2>err && + ! grep "unable to access" err +' + UNCPATH="$(pwd)" case "$UNCPATH" in [A-Z]:*) -- 2.13.0.55.g17b7d13330