diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2014-01-18 23:48:56 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-01-21 13:46:32 -0800 |
commit | ecb2c282c0d6cdd9938ba9cf228316ebc91b397e (patch) | |
tree | 4483f19a2e45868e62fcbaf2ccfd19513baf8889 | |
parent | e5c223e98b985d9faa274039aefa4391d2da25a6 (diff) | |
download | git-ecb2c282c0d6cdd9938ba9cf228316ebc91b397e.tar.gz git-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; |