[PATCH v2 12/17] remove_dir_recurse(): tighten condition for removing unreadable dir
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Jan 6, 2014, 13:45 UTC
- Message-ID
- <1389015935-21936-13-git-send-email-mhagger@alum.mit.edu>
- In-Reply-To
- <1389015935-21936-1-git-send-email-mhagger@alum.mit.edu>
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> --- dir.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dir.c b/dir.c index 23b6de4..11e1520 100644 --- a/dir.c +++ b/dir.c @@ -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;
-- 1.8.5.2