From: Philip Oakley Date: Sun, 24 Jan 2016 16:36:48 GMT Subject: Re: [PATCH 06/19] mingw: try to delete target directory before renaming Message-ID: <4C2ED807DD184A168C87221809034B70@PhilipOakley> In-Reply-To: From: "Johannes Schindelin" >From: 마누엘 Is this Nalla's preferred email, or just a carry over from cautions of the Github interface? > >When the rename() function tries to move a directory it fails if the >target directory exists. It should check if it can delete the (possibly >empty) target directory and then try again to move the directory. > >This partially fixes t9100-git-svn-basic.sh. > >Signed-off-by: 마누엘 >Signed-off-by: Johannes Schindelin >--- >compat/mingw.c | 7 ++++++- >1 file changed, 6 insertions(+), 1 deletion(-) > >diff --git a/compat/mingw.c b/compat/mingw.c >index db92f5d..e4839b9 100644 >--- a/compat/mingw.c >+++ b/compat/mingw.c >@@ -1603,7 +1603,12 @@ repeat: > if (gle == ERROR_ACCESS_DENIED && > (attrs = GetFileAttributesW(wpnew)) != INVALID_FILE_ATTRIBUTES) { > if (attrs & FILE_ATTRIBUTE_DIRECTORY) { >- errno = EISDIR; >+ DWORD attrsold = GetFileAttributesW(wpold); >+ if (attrsold == INVALID_FILE_ATTRIBUTES || >+ !(attrsold & FILE_ATTRIBUTE_DIRECTORY)) >+ errno = EISDIR; >+ else if (!_wrmdir(wpnew)) >+ goto repeat; > return -1; > } > if ((attrs & FILE_ATTRIBUTE_READONLY) && >-- >2.7.0.windows.1.7.g55a05c8 -- Philip