sieve-manage.el (sieve-manage-capability): Do not bug out when the server-value of...
[bpt/emacs.git] / lisp / gnus / sieve-manage.el
index 0f16444..69f21b0 100644 (file)
@@ -162,6 +162,12 @@ for doing the actual authentication."
   :type 'integer
   :group 'sieve-manage)
 
+(defcustom sieve-manage-default-stream 'network
+  "Default stream type to use for `sieve-manage'.
+Must be a name of a stream in `sieve-manage-stream-alist'."
+  :type 'symbol
+  :group 'sieve-manage)
+
 ;; Internal variables:
 
 (defconst sieve-manage-local-variables '(sieve-manage-server
@@ -174,7 +180,6 @@ for doing the actual authentication."
                                         sieve-manage-client-eol
                                         sieve-manage-server-eol
                                         sieve-manage-capability))
-(defconst sieve-manage-default-stream 'network)
 (defconst sieve-manage-coding-system-for-read 'binary)
 (defconst sieve-manage-coding-system-for-write 'binary)
 (defvar sieve-manage-stream nil)
@@ -548,13 +553,18 @@ password is remembered in the buffer."
          (setq sieve-manage-state 'auth)))))
 
 (defun sieve-manage-capability (&optional name value buffer)
+  "Check if capability NAME of server BUFFER match VALUE.
+If it does, return the server value of NAME. If not returns nil.
+If VALUE is nil, do not check VALUE and return server value.
+If NAME is nil, return the full server list of capabilities."
   (with-current-buffer (or buffer (current-buffer))
     (if (null name)
        sieve-manage-capability
-      (if (null value)
-         (nth 1 (assoc name sieve-manage-capability))
-       (when (string-match value (nth 1 (assoc name sieve-manage-capability)))
-         (nth 1 (assoc name sieve-manage-capability)))))))
+      (let ((server-value (cadr (assoc name sieve-manage-capability))))
+        (when (or (null value)
+                  (and server-value
+                       (string-match value server-value)))
+          server-value)))))
 
 (defun sieve-manage-listscripts (&optional buffer)
   (with-current-buffer (or buffer (current-buffer))