diff options
| author | Lars Ingebrigtsen | 2012-02-06 22:37:56 +0100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2012-02-06 22:37:56 +0100 |
| commit | 7dd679eb09f65d0a83e14168b005ffc8270e7d05 (patch) | |
| tree | ee98c391e49decb888d019c85693f554259fac3d | |
| parent | 1968bb1b5cc35ba315a741ad27de71e04b6c5aa2 (diff) | |
| download | emacs-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/ChangeLog | 2 | ||||
| -rw-r--r-- | lisp/url/url-cache.el | 38 |
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 @@ | |||
| 1 | 2012-02-06 Lars Ingebrigtsen <larsi@gnus.org> | 1 | 2012-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 | ||