Merge branch 'ef/mingw-rmdir'
authorJunio C Hamano <gitster@pobox.com>
Tue, 11 Dec 2012 23:51:14 +0000 (15:51 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 11 Dec 2012 23:51:14 +0000 (15:51 -0800)
MinGW has a workaround when rmdir unnecessarily fails to retry with
a prompt, but the logic was kicking in when the rmdir failed with
ENOTEMPTY, i.e. was expected to fail and there is no point retrying.

* ef/mingw-rmdir:
mingw_rmdir: do not prompt for retry when non-empty

compat/mingw.c
index 34724c27815803c4440f7223a1bd84c1c2ba041a..b67362558046f354b167fe185369b3d2b98879c1 100644 (file)
@@ -256,6 +256,8 @@ int mingw_rmdir(const char *pathname)
 
        while ((ret = rmdir(pathname)) == -1 && tries < ARRAY_SIZE(delay)) {
                if (!is_file_in_use_error(GetLastError()))
+                       errno = err_win_to_posix(GetLastError());
+               if (errno != EACCES)
                        break;
                if (!is_dir_empty(pathname)) {
                        errno = ENOTEMPTY;
@@ -271,7 +273,7 @@ int mingw_rmdir(const char *pathname)
                Sleep(delay[tries]);
                tries++;
        }
-       while (ret == -1 && is_file_in_use_error(GetLastError()) &&
+       while (ret == -1 && errno == EACCES && is_file_in_use_error(GetLastError()) &&
               ask_yes_no_if_possible("Deletion of directory '%s' failed. "
                        "Should I try again?", pathname))
               ret = rmdir(pathname);