aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2012-02-06 22:37:56 +0100
committerLars Ingebrigtsen2012-02-06 22:37:56 +0100
commit7dd679eb09f65d0a83e14168b005ffc8270e7d05 (patch)
treeee98c391e49decb888d019c85693f554259fac3d
parent1968bb1b5cc35ba315a741ad27de71e04b6c5aa2 (diff)
downloademacs-7dd679eb09f65d0a83e14168b005ffc8270e7d05.tar.gz
emacs-7dd679eb09f65d0a83e14168b005ffc8270e7d05.zip
Add extra checks before expiring the URL cache
(url-cache-prune-cache): Check that the directory exists before trying to delete it.
-rw-r--r--lisp/url/ChangeLog2
-rw-r--r--lisp/url/url-cache.el38
2 files changed, 22 insertions, 18 deletions
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 4e748fbd99e..f4cca618b49 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,6 +1,8 @@
12012-02-06 Lars Ingebrigtsen <larsi@gnus.org> 12012-02-06 Lars Ingebrigtsen <larsi@gnus.org>
2 2
3 * url-cache.el (url-cache-prune-cache): New function. 3 * url-cache.el (url-cache-prune-cache): New function.
4 (url-cache-prune-cache): Check that the directory exists before
5 trying to delete it.
4 6
5 * url.el (url-retrieve-number-of-calls): New variable. 7 * url.el (url-retrieve-number-of-calls): New variable.
6 (url-retrieve-internal): Use it to expire the cache once in a 8 (url-retrieve-internal): Use it to expire the cache once in a
diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el
index 8fec2495675..6559de4deb7 100644
--- a/lisp/url/url-cache.el
+++ b/lisp/url/url-cache.el
@@ -216,24 +216,26 @@ considered \"expired\"."
216 (let ((current-time (current-time)) 216 (let ((current-time (current-time))
217 (total-files 0) 217 (total-files 0)
218 (deleted-files 0)) 218 (deleted-files 0))
219 (dolist (file (directory-files (or directory url-cache-directory) t)) 219 (setq directory (or directory url-cache-directory))
220 (unless (member (file-name-nondirectory file) '("." "..")) 220 (when (file-exists-p directory)
221 (setq total-files (1+ total-files)) 221 (dolist (file (directory-files directory t))
222 (cond 222 (unless (member (file-name-nondirectory file) '("." ".."))
223 ((file-directory-p file) 223 (setq total-files (1+ total-files))
224 (when (url-cache-prune-cache file) 224 (cond
225 (setq deleted-files (1+ deleted-files)))) 225 ((file-directory-p file)
226 ((time-less-p 226 (when (url-cache-prune-cache file)
227 (time-add 227 (setq deleted-files (1+ deleted-files))))
228 (nth 5 (file-attributes file)) 228 ((time-less-p
229 (seconds-to-time url-cache-expire-time)) 229 (time-add
230 current-time) 230 (nth 5 (file-attributes file))
231 (delete-file file) 231 (seconds-to-time url-cache-expire-time))
232 (setq deleted-files (1+ deleted-files)))))) 232 current-time)
233 (if (< deleted-files total-files) 233 (delete-file file)
234 nil 234 (setq deleted-files (1+ deleted-files))))))
235 (delete-directory directory) 235 (if (< deleted-files total-files)
236 t))) 236 nil
237 (delete-directory directory)
238 t))))
237 239
238(provide 'url-cache) 240(provide 'url-cache)
239 241