diff options
| author | Julien Danjou | 2010-09-22 22:56:17 -0700 |
|---|---|---|
| committer | Glenn Morris | 2010-09-22 22:56:17 -0700 |
| commit | 18d68e52f698880940afc3debd0072cb07e7e135 (patch) | |
| tree | ef995204b8021eb3fbc28f37fdc6fab08e40a50b | |
| parent | 7676efad0e6f8e90306950c8426a56928c4739e0 (diff) | |
| download | emacs-18d68e52f698880940afc3debd0072cb07e7e135.tar.gz emacs-18d68e52f698880940afc3debd0072cb07e7e135.zip | |
Small url-cache update.
* lisp/url/url-cache.el (url-cache-expire-time): New option.
(url-cache-expired): Rewrite.
| -rw-r--r-- | lisp/url/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/url/url-cache.el | 34 |
2 files changed, 24 insertions, 15 deletions
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 9bc9d3110f8..f19c639e930 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2010-09-23 Julien Danjou <julien@danjou.info> | ||
| 2 | |||
| 3 | * url-cache.el (url-cache-expire-time): New option. | ||
| 4 | (url-cache-expired): Rewrite. | ||
| 5 | |||
| 1 | 2010-09-19 Julien Danjou <julien@danjou.info> | 6 | 2010-09-19 Julien Danjou <julien@danjou.info> |
| 2 | 7 | ||
| 3 | * url-cache.el (url-fetch-from-cache): New function. | 8 | * url-cache.el (url-fetch-from-cache): New function. |
diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el index 28d0af761ea..834ad7c2530 100644 --- a/lisp/url/url-cache.el +++ b/lisp/url/url-cache.el | |||
| @@ -32,6 +32,12 @@ | |||
| 32 | :type 'directory | 32 | :type 'directory |
| 33 | :group 'url-file) | 33 | :group 'url-file) |
| 34 | 34 | ||
| 35 | (defcustom url-cache-expire-time 3600 | ||
| 36 | "Maximum time in seconds to keep the documents cached." | ||
| 37 | :version "24.1" | ||
| 38 | :type 'integer | ||
| 39 | :group 'url-cache) | ||
| 40 | |||
| 35 | ;; Cache manager | 41 | ;; Cache manager |
| 36 | (defun url-cache-file-writable-p (file) | 42 | (defun url-cache-file-writable-p (file) |
| 37 | "Follows the documentation of `file-writable-p', unlike `file-writable-p'." | 43 | "Follows the documentation of `file-writable-p', unlike `file-writable-p'." |
| @@ -186,21 +192,19 @@ Very fast if you have an `md5' primitive function, suitably fast otherwise." | |||
| 186 | (insert-file-contents-literally fnam)) | 192 | (insert-file-contents-literally fnam)) |
| 187 | 193 | ||
| 188 | ;;;###autoload | 194 | ;;;###autoload |
| 189 | (defun url-cache-expired (url mod) | 195 | (defun url-cache-expired (url &optional expire-time) |
| 190 | "Return t if a cached file has expired." | 196 | "Return t if a cached URL is more than EXPIRE-TIME old. |
| 191 | (let* ((urlobj (if (vectorp url) url (url-generic-parse-url url))) | 197 | If EXPIRE-TIME is not set, `url-cache-expire-time' is used instead." |
| 192 | (type (url-type urlobj))) | 198 | (cond (url-standalone-mode |
| 193 | (cond | 199 | (not (file-exists-p (url-cache-create-filename url)))) |
| 194 | (url-standalone-mode | 200 | (t (let ((cache-time (url-is-cached url))) |
| 195 | (not (file-exists-p (url-cache-create-filename url)))) | 201 | (if cache-time |
| 196 | ((string= type "http") | 202 | (time-less-p |
| 197 | t) | 203 | (time-add |
| 198 | ((member type '("file" "ftp")) | 204 | (url-is-cached url) |
| 199 | (if (or (equal mod '(0 0)) (not mod)) | 205 | (seconds-to-time (or expire-time url-cache-expire-time))) |
| 200 | t | 206 | (current-time)) |
| 201 | (or (> (nth 0 mod) (nth 0 (current-time))) | 207 | t))))) |
| 202 | (> (nth 1 mod) (nth 1 (current-time)))))) | ||
| 203 | (t nil)))) | ||
| 204 | 208 | ||
| 205 | (provide 'url-cache) | 209 | (provide 'url-cache) |
| 206 | 210 | ||