Give a better error message in the "go offline" case.
[gnus] / lisp / auth-source.el
index 89b2ef3..a0be0ca 100644 (file)
@@ -107,7 +107,8 @@ Only relevant if `auth-source-debug' is not nil."
   :version "23.2" ;; No Gnus
   :type `boolean)
 
-(defcustom auth-sources '((:source "~/.authinfo.gpg"))
+(defcustom auth-sources '((:source "~/.authinfo.gpg")
+                         (:source "~/.authinfo"))
   "List of authentication sources.
 
 The default will get login and password information from a .gpg
@@ -229,7 +230,8 @@ matched as a regex."
             ;; Check keywords.
             (dolist (k keys match)
               (let* ((v (plist-get spec k))
-                     (choicev (plist-get choice k)))
+                     (choicev (if (plist-member choice k)
+                                  (plist-get choice k) t)))
                 (setq match
                       (and match
                            (or
@@ -310,20 +312,23 @@ Return structure as specified by MODE."
     (setq result
          (mapcar
           (lambda (m)
-            (if (equal "password" m)
-                (let ((passwd (read-passwd "Password: ")))
-                  (cond
-                   ;; Secret Service API.
-                   ((consp source)
-                    (apply
-                     'secrets-create-item
-                     (auth-get-source entry) name passwd spec))
-                   (t)) ;; netrc not implemented yes.
-                  passwd)
-              (or
-               ;; the originally requested :user
-               user
-               "unknown-user")))
+            (cond
+             ((equal "password" m)
+              (let ((passwd (read-passwd
+                             (format "Password for %s on %s: " prot host))))
+                (cond
+                 ;; Secret Service API.
+                 ((consp source)
+                  (apply
+                   'secrets-create-item
+                   (auth-get-source entry) name passwd spec))
+                 (t)) ;; netrc not implemented yes.
+                passwd))
+             ((equal "login" m)
+              (or user
+                  (read-string (format "User name for %s on %s: " prot host))))
+             (t
+              "unknownuser")))
           (if (consp mode) mode (list mode))))
     (if (consp mode) result (car result))))
 
@@ -464,5 +469,4 @@ MODE can be \"login\" or \"password\"."
 
 (provide 'auth-source)
 
-;; arch-tag: ff1afe78-06e9-42c2-b693-e9f922cbe4ab
 ;;; auth-source.el ends here