summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-10-03 11:28:27 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2021-10-03 11:28:34 +0200
commitb47d7ce1b87ee8bbbb04ce2b784af57ece17177f (patch)
tree1967313786eb55e1d7fcfc2ee8596ddb1ce33a91
parentb1a8a66fb0f28cba607831862fa673666a47bb2c (diff)
downloademacs-b47d7ce1b87ee8bbbb04ce2b784af57ece17177f.tar.gz
Fix agent directory deletion
* lisp/gnus/gnus-agent.el (gnus-agent-expire-unagentized-dirs): Delete directories in a simpler way that actually works (bug#50986).
-rw-r--r--lisp/gnus/gnus-agent.el31
1 files changed, 6 insertions, 25 deletions
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 19d05120045..6426d825465 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -3553,32 +3553,13 @@ articles in every agentized group? "))
(when (and to-remove
(or gnus-expert-user
(gnus-y-or-n-p
- "gnus-agent-expire has identified local directories that are\
- not currently required by any agentized group. Do you wish to consider\
- deleting them?")))
- (while to-remove
- (let ((dir (pop to-remove)))
- (if (or gnus-expert-user
+ "gnus-agent-expire has identified local directories that are
+not currently required by any agentized group. Do you wish to consider
+deleting them?")))
+ (dolist (dir to-remove)
+ (when (or gnus-expert-user
(gnus-y-or-n-p (format "Delete %s? " dir)))
- (let* (delete-recursive
- files f
- (delete-recursive
- (lambda (f-or-d)
- (ignore-errors
- (if (file-directory-p f-or-d)
- (condition-case nil
- (delete-directory f-or-d)
- (file-error
- (setq files (directory-files f-or-d))
- (while files
- (setq f (pop files))
- (or (member f '("." ".."))
- (funcall delete-recursive
- (nnheader-concat
- f-or-d f))))
- (delete-directory f-or-d)))
- (delete-file f-or-d))))))
- (funcall delete-recursive dir)))))))))
+ (delete-directory dir t)))))))
;;;###autoload
(defun gnus-agent-batch ()