diff options
author | 2014-01-18 23:48:56 +0100 | |
---|---|---|
committer | 2014-01-21 13:46:32 -0800 | |
commit | ecb2c282c0d6cdd9938ba9cf228316ebc91b397e (patch) | |
tree | 4483f19a2e45868e62fcbaf2ccfd19513baf8889 | |
parent | lock_ref_sha1_basic(): if locking fails with ENOENT, retry (diff) | |
download | tgif-ecb2c282c0d6cdd9938ba9cf228316ebc91b397e.tar.xz |
remove_dir_recurse(): tighten condition for removing unreadable dir
If opendir() fails on the top-level directory, it makes sense to try
to delete it anyway--but only if the failure was due to EACCES.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | dir.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -1476,8 +1476,11 @@ static int remove_dir_recurse(struct strbuf *path, int flag, int *kept_up) flag &= ~REMOVE_DIR_KEEP_TOPLEVEL; dir = opendir(path->buf); if (!dir) { - /* an empty dir could be removed even if it is unreadble */ - if (!keep_toplevel) + if (errno == EACCES && !keep_toplevel) + /* + * An empty dir could be removable even if it + * is unreadable: + */ return rmdir(path->buf); else return -1; |