emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r103321: Merge chagnes made in Gnus t


From: Katsumi Yamaoka
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r103321: Merge chagnes made in Gnus trunk.
Date: Thu, 17 Feb 2011 23:46:18 +0000
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 103321
author: Gnus developers <address@hidden>
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Thu 2011-02-17 23:46:18 +0000
message:
  Merge chagnes made in Gnus trunk.
  
  auth.texi (GnuPG and EasyPG Assistant Configuration): Mention the default now 
is to have two files in `auth-sources'.
  nnimap.el (nnimap-open-connection-1): Delete duplicate server names when 
getting credentials.
  gnus-util.el (gnus-delete-duplicates): New function.
  nnimap.el (nnimap-credentials): Instead of picking the first port as a 
creation default, pass the whole port list down.  It will be completed.
  auth-source.el (auth-source-search): Updated docs to talk about multiple 
creation choices.
   (auth-source-netrc-create): Accept a list as a value (from the search 
parameters) and do completion on that list.  Keep a separate netrc line with 
the password obscured for showing the user.
  nnimap.el (nnimap-open-connection-1): Make the `nnimap-address' the first 
choice to `auth-source-search' so it will be used for entry creation instead of 
the server's Gnus-specific name.
   (nnimap-credentials): Rely on the auth-source library to select which port 
is actually wanted in the new netrc entry, so don't override 
`auth-source-creation-defaults'.
modified:
  doc/misc/ChangeLog
  doc/misc/auth.texi
  lisp/gnus/ChangeLog
  lisp/gnus/auth-source.el
  lisp/gnus/gnus-util.el
  lisp/gnus/nnimap.el
=== modified file 'doc/misc/ChangeLog'
--- a/doc/misc/ChangeLog        2011-02-17 12:08:48 +0000
+++ b/doc/misc/ChangeLog        2011-02-17 23:46:18 +0000
@@ -2,6 +2,8 @@
 
        * auth.texi (Help for users): Use :port instead of :protocol for all
        auth-source docs.
+       (GnuPG and EasyPG Assistant Configuration): Mention the default now is
+       to have two files in `auth-sources'.
 
 2011-02-16  Glenn Morris  <address@hidden>
 

=== modified file 'doc/misc/auth.texi'
--- a/doc/misc/auth.texi        2011-02-17 12:08:48 +0000
+++ b/doc/misc/auth.texi        2011-02-17 23:46:18 +0000
@@ -262,7 +262,9 @@
 @appendix GnuPG and EasyPG Assistant Configuration
 
 If you don't customize @code{auth-sources}, the auth-source library
-reads @code{~/.authinfo.gpg}, which is a GnuPG encrypted file.
+reads @code{~/.authinfo.gpg}, which is a GnuPG encrypted file.  Then
+it will check @code{~/.authinfo} but it's not recommended to use such
+an unencrypted file.
 
 In Emacs 23 or later there is an option @code{auto-encryption-mode} to
 automatically decrypt @code{*.gpg} files.  It is enabled by default.

=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2011-02-17 12:50:01 +0000
+++ b/lisp/gnus/ChangeLog       2011-02-17 23:46:18 +0000
@@ -1,5 +1,29 @@
+2011-02-17  Lars Ingebrigtsen  <address@hidden>
+
+       * nnimap.el (nnimap-open-connection-1): Delete duplicate server names
+       when getting credentials.
+
+       * gnus-util.el (gnus-delete-duplicates): New function.
+
 2011-02-17  Teodor Zlatanov  <address@hidden>
 
+       * nnimap.el (nnimap-credentials): Instead of picking the first port as
+       a creation default, pass the whole port list down.  It will be
+       completed.
+
+       * auth-source.el (auth-source-search): Updated docs to talk about
+       multiple creation choices.
+       (auth-source-netrc-create): Accept a list as a value (from the search
+       parameters) and do completion on that list.  Keep a separate netrc line
+       with the password obscured for showing the user.
+
+       * nnimap.el (nnimap-open-connection-1): Make the `nnimap-address' the
+       first choice to `auth-source-search' so it will be used for entry
+       creation instead of the server's Gnus-specific name.
+       (nnimap-credentials): Rely on the auth-source library to select which
+       port is actually wanted in the new netrc entry, so don't override
+       `auth-source-creation-defaults'.
+
        * auth-source.el (auth-source-netrc-parse): Use :port instead of
        :protocol and accept a missing user, host, or port as a wildcard match.
        (auth-source-debug): Default to off.

=== modified file 'lisp/gnus/auth-source.el'
--- a/lisp/gnus/auth-source.el  2011-02-17 12:50:01 +0000
+++ b/lisp/gnus/auth-source.el  2011-02-17 23:46:18 +0000
@@ -453,8 +453,8 @@
  search to find only entries that have P set to 'pppp'.\"
 
 When multiple values are specified in the search parameter, the
-first one is used for creation.  So :host (X Y Z) would create a
-token for host X, for instance.
+user is prompted for which one.  So :host (X Y Z) would ask the
+user to choose between X, Y, and Z.
 
 This creation can fail if the search was not specific enough to
 create a new token (it's up to the backend to decide that).  You
@@ -851,6 +851,7 @@
          (required (append base-required create-extra))
          (file (oref backend source))
          (add "")
+         (show "")
          ;; `valist' is an alist
          valist
          ;; `artificial' will be returned if no creation is needed
@@ -858,12 +859,16 @@
 
     ;; only for base required elements (defined as function parameters):
     ;; fill in the valist with whatever data we may have from the search
-    ;; we take the first value if it's a list, the whole value otherwise
+    ;; we complete the first value if it's a list and use the value otherwise
     (dolist (br base-required)
       (when (symbol-value br)
-        (aput 'valist br (if (listp (symbol-value br))
-                             (nth 0 (symbol-value br))
-                           (symbol-value br)))))
+        (let ((br-choice (cond
+                          ;; all-accepting choice (predicate is t)
+                          ((eq t (symbol-value br)) nil)
+                          ;; just the value otherwise
+                          (t (symbol-value br)))))
+          (when br-choice
+            (aput 'valist br br-choice)))))
 
     ;; for extra required elements, see if the spec includes a value for them
     (dolist (er create-extra)
@@ -894,6 +899,8 @@
              (user-value (aget valist 'user))
              (host-value (aget valist 'host))
              (port-value (aget valist 'port))
+             ;; note this handles lists by just printing them
+             ;; later we allow the user to use completing-read to pick
              (info-so-far (concat (if user-value
                                       (format "%s@" user-value)
                                     "[USER?]")
@@ -921,6 +928,16 @@
                        (format "Enter %s for %s%s: "
                                r info-so-far default-string)
                        nil nil default))
+                     ((listp data)
+                      (completing-read
+                       (format "Enter %s for %s (TAB to see the choices): "
+                               r info-so-far)
+                       data
+                       nil              ; no predicate
+                       t                ; require a match
+                       ;; note the default is nil, but if the user
+                       ;; hits RET we'll get "", which is handled OK later
+                       nil))
                      (t data))))
 
         (when data
@@ -934,20 +951,25 @@
         ;; when r is not an empty string...
         (when (and (stringp data)
                    (< 0 (length data)))
-          ;; append the key (the symbol name of r) and the value in r
-          (setq add (concat add
-                            (format "%s%s %S"
-                                    ;; prepend a space
-                                    (if (zerop (length add)) "" " ")
-                                    ;; remap auth-source tokens to netrc
-                                    (case r
+          (let ((printer (lambda (hide)
+                           ;; append the key (the symbol name of r)
+                           ;; and the value in r
+                           (format "%s%s %S"
+                                   ;; prepend a space
+                                   (if (zerop (length add)) "" " ")
+                                   ;; remap auth-source tokens to netrc
+                                   (case r
                                      ('user "login")
                                      ('host "machine")
                                      ('secret "password")
                                      ('port "port") ; redundant but clearer
                                      (t (symbol-name r)))
-                                    ;; the value will be printed in %S format
-                                    data))))))
+                                   ;; the value will be printed in %S format
+                                   (if (and hide (eq r 'secret))
+                                       "HIDDEN_SECRET"
+                                     data)))))
+            (setq add (concat add (funcall printer nil)))
+            (setq show (concat show (funcall printer t)))))))
 
     (with-temp-buffer
       (when (file-exists-p file)
@@ -964,7 +986,7 @@
       (goto-char (point-max))
 
       ;; ask AFTER we've successfully opened the file
-      (if (y-or-n-p (format "Add to file %s: line [%s]" file add))
+      (if (y-or-n-p (format "Add to file %s: line [%s]" file show))
           (progn
             (unless (bolp)
               (insert "\n"))

=== modified file 'lisp/gnus/gnus-util.el'
--- a/lisp/gnus/gnus-util.el    2011-02-03 23:43:22 +0000
+++ b/lisp/gnus/gnus-util.el    2011-02-17 23:46:18 +0000
@@ -871,6 +871,15 @@
   (when (file-exists-p file)
     (delete-file file)))
 
+(defun gnus-delete-duplicates (list)
+  "Remove duplicate entries from LIST."
+  (let ((result nil))
+    (while list
+      (unless (member (car list) result)
+       (push (car list) result))
+      (pop list))
+    (nreverse result)))
+
 (defun gnus-delete-directory (directory)
   "Delete files in DIRECTORY.  Subdirectories remain.
 If there's no subdirectory, delete DIRECTORY as well."

=== modified file 'lisp/gnus/nnimap.el'
--- a/lisp/gnus/nnimap.el       2011-02-17 12:08:48 +0000
+++ b/lisp/gnus/nnimap.el       2011-02-17 23:46:18 +0000
@@ -277,8 +277,7 @@
     (current-buffer)))
 
 (defun nnimap-credentials (address ports)
-  (let* ((auth-source-creation-defaults `((port . ,(nth 0 ports))))
-         (found (nth 0 (auth-source-search :max 1
+  (let* ((found (nth 0 (auth-source-search :max 1
                                            :host address
                                            :port ports
                                            :create t)))
@@ -385,9 +384,10 @@
                                ;; Look for the credentials based on
                                ;; the virtual server name and the address
                                (nnimap-credentials
-                                (list
-                                 (nnoo-current-server 'nnimap)
-                                 nnimap-address)
+                               (gnus-delete-duplicates
+                                (list
+                                 nnimap-address
+                                 (nnoo-current-server 'nnimap)))
                                 ports))))
                  (setq nnimap-object nil)
                (let ((nnimap-inhibit-logging t))


reply via email to

[Prev in Thread] Current Thread [Next in Thread]