]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge changes made in Gnus trunk.
authorTeodor Zlatanov <tzz@lifelogs.com>
Fri, 25 Feb 2011 23:52:19 +0000 (23:52 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Fri, 25 Feb 2011 23:52:19 +0000 (23:52 +0000)
auth-source.el (auth-source-search): Cache empty result sets.
password-cache.el (password-in-cache-p): Convenience function to check if a key is in the cache, even if the value is nil.

lisp/ChangeLog
lisp/gnus/ChangeLog
lisp/gnus/auth-source.el
lisp/password-cache.el

index b59b11590d0e279a45f6aa9363ea288d463dc90e..f5df9a26c37001bd28e016d857297f8526d3d21c 100644 (file)
@@ -1,3 +1,8 @@
+2011-02-25  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * password-cache.el (password-in-cache-p): Convenience function to
+       check if a key is in the cache, even if the value is nil.
+
 2011-02-25  Jambunathan K  <kjambunathan@gmail.com>
 
        * emacs-lisp/package-x.el (package--archive-contents-from-url)
index 7e39a369714c4e6c609354ace0465d407128d8ab..3eb7a477dd1243b941475fb066a3d9ad8d9cc29d 100644 (file)
@@ -1,5 +1,7 @@
 2011-02-25  Teodor Zlatanov  <tzz@lifelogs.com>
 
+       * auth-source.el (auth-source-search): Cache empty result sets.
+
        * auth-source.el (auth-source-save-behavior): New variable to replace
        `auth-source-never-create'.
        (auth-source-netrc-create): Use it.
index e4d4fd4c83b56f02576523898fd26e201964b297..500de10b71c77f481bd5f979ad2e26d5ebd4ed32 100644 (file)
@@ -524,10 +524,13 @@ must call it to obtain the actual value."
          (keys (loop for i below (length spec) by 2
                      unless (memq (nth i spec) ignored-keys)
                      collect (nth i spec)))
+         (cached (auth-source-remembered-p spec))
+         ;; note that we may have cached results but found is still nil
+         ;; (there were no results from the search)
          (found (auth-source-recall spec))
          filtered-backends accessor-key backend)
 
-    (if (and found auth-source-do-cache)
+    (if (and cached auth-source-do-cache)
         (auth-source-do-debug
          "auth-source-search: found %d CACHED results matching %S"
          (length found) spec)
@@ -580,7 +583,8 @@ must call it to obtain the actual value."
          "auth-source-search: CREATED %d results (max %d) matching %S"
          (length found) max spec))
 
-      (when (and found auth-source-do-cache)
+      ;; note we remember the lack of result too, if it's applicable
+      (when auth-source-do-cache
         (auth-source-remember spec found)))
 
       found))
@@ -654,6 +658,11 @@ Returns the deleted entries."
   (password-read-from-cache
    (concat auth-source-magic (format "%S" spec))))
 
+(defun auth-source-remembered-p (spec)
+  "Check if SPEC is remembered."
+  (password-in-cache-p
+   (concat auth-source-magic (format "%S" spec))))
+
 (defun auth-source-forget (spec)
   "Forget any cached data matching SPEC exactly.
 
@@ -664,7 +673,10 @@ Returns t or nil for forgotten or not found."
 ;;; (loop for sym being the symbols of password-data when (string-match (concat "^" auth-source-magic) (symbol-name sym)) collect (symbol-name sym))
 
 ;;; (auth-source-remember '(:host "wedd") '(4 5 6))
+;;; (auth-source-remembered-p '(:host "wedd"))
 ;;; (auth-source-remember '(:host "xedd") '(1 2 3))
+;;; (auth-source-remembered-p '(:host "xedd"))
+;;; (auth-source-remembered-p '(:host "zedd"))
 ;;; (auth-source-recall '(:host "xedd"))
 ;;; (auth-source-recall '(:host t))
 ;;; (auth-source-forget+ :host t)
index 8738aa65a9f457f46e97c85d10375e8066c59a84..a7f75a03addcaeb07d88375faac3030510396fdf 100644 (file)
@@ -76,6 +76,12 @@ regulate cache behavior."
        key
        (symbol-value (intern-soft key password-data))))
 
+(defun password-in-cache-p (key)
+  "Check if KEY is in the cache."
+  (and password-cache
+       key
+       (intern-soft key password-data)))
+
 (defun password-read (prompt &optional key)
   "Read password, for use with KEY, from user, or from cache if wanted.
 KEY indicate the purpose of the password, so the cache can