aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2009-02-05 02:34:34 +0000
committerMiles Bader2009-02-05 02:34:34 +0000
commit3b36c17e9d67d74a8bc50e7a53a23da7d5f94e22 (patch)
treec2ca87dc1f8bb06d2b0608ef939d51f0b28e5d2e
parenta9e2203dea54ba2d777e0df0415f65bb105272f1 (diff)
downloademacs-3b36c17e9d67d74a8bc50e7a53a23da7d5f94e22.tar.gz
emacs-3b36c17e9d67d74a8bc50e7a53a23da7d5f94e22.zip
Merge from gnus--devo--0
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1537
-rw-r--r--doc/misc/ChangeLog4
-rw-r--r--doc/misc/gnus-news.texi2
-rw-r--r--etc/GNUS-NEWS4
-rw-r--r--lisp/ChangeLog10
-rw-r--r--lisp/gnus/ChangeLog19
-rw-r--r--lisp/gnus/auth-source.el17
-rw-r--r--lisp/gnus/mail-source.el28
-rw-r--r--lisp/gnus/nnimap.el8
-rw-r--r--lisp/gnus/nntp.el8
-rw-r--r--lisp/net/imap.el44
-rw-r--r--lisp/net/netrc.el21
11 files changed, 121 insertions, 44 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index d67f4d3a1b8..df6e4f88bfc 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,7 @@
12009-02-04 Reiner Steib <Reiner.Steib@gmx.de>
2
3 * gnus-news.texi: Print version about Incoming*.
4
12009-02-02 Carsten Dominik <dominik@science.uva.nl> 52009-02-02 Carsten Dominik <dominik@science.uva.nl>
2 6
3 * org.texi (Structure editing, Handling links) 7 * org.texi (Structure editing, Handling links)
diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi
index f17850113de..09d7be56a7a 100644
--- a/doc/misc/gnus-news.texi
+++ b/doc/misc/gnus-news.texi
@@ -91,7 +91,7 @@ EasyPG is included in Emacs 23 and available separately as well.
91Old intermediate incoming mail files (@file{Incoming*}) are deleted 91Old intermediate incoming mail files (@file{Incoming*}) are deleted
92after a couple of days, not immediately. @xref{Mail Source 92after a couple of days, not immediately. @xref{Mail Source
93Customization}. 93Customization}.
94@c New in Gnus 5.10.10 / No Gnus 0.8 94(New in Gnus 5.10.10 / No Gnus 0.8)
95@c This entry is also present in the node "Oort Gnus". 95@c This entry is also present in the node "Oort Gnus".
96 96
97@end itemize 97@end itemize
diff --git a/etc/GNUS-NEWS b/etc/GNUS-NEWS
index 836c47a62aa..808db0de7b3 100644
--- a/etc/GNUS-NEWS
+++ b/etc/GNUS-NEWS
@@ -83,7 +83,7 @@ with `K H'. *Note MIME Commands::.
83 83
84** International host names (IDNA) can now be decoded inside article bodies 84** International host names (IDNA) can now be decoded inside article bodies
85using `W i' (`gnus-summary-idna-message'). This requires that GNU Libidn 85using `W i' (`gnus-summary-idna-message'). This requires that GNU Libidn
86(<http://www.gnu.org/software/libidn/>) has been installed. 86(`http://www.gnu.org/software/libidn/') has been installed.
87 87
88** The non-ASCII group names handling has been much improved. The back 88** The non-ASCII group names handling has been much improved. The back
89ends that fully support non-ASCII group names are now `nntp', `nnml', 89ends that fully support non-ASCII group names are now `nntp', `nnml',
@@ -131,7 +131,7 @@ From Newsgroups::.
131 131
132** You can replace MIME parts with external bodies. See 132** You can replace MIME parts with external bodies. See
133`gnus-mime-replace-part' and `gnus-article-replace-part'. *Note MIME 133`gnus-mime-replace-part' and `gnus-article-replace-part'. *Note MIME
134Commands::, *Note Using MIME::. 134Commands::, *note Using MIME::.
135 135
136** The option `mm-fill-flowed' can be used to disable treatment of 136** The option `mm-fill-flowed' can be used to disable treatment of
137format=flowed messages. Also, flowed text is disabled when sending 137format=flowed messages. Also, flowed text is disabled when sending
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index a8343d9e12e..dadc4e735dd 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,13 @@
12009-02-04 Dave Love <fx@gnu.org>
2
3 * net/imap.el (imap-fetch-safe): Bind debug-on-error.
4 (imap-debug): Add imap-fetch-safe.
5
62009-02-04 Teodor Zlatanov <tzlatanov@jumptrading.com>
7
8 * net/netrc.el (netrc-machine-user-or-password): Use list of
9 auth-source modes.
10
12009-02-04 Nick Roberts <nickrob@snap.net.nz> 112009-02-04 Nick Roberts <nickrob@snap.net.nz>
2 12
3 * vc-svn.el (vc-svn-diff): Revert previous change but add a test 13 * vc-svn.el (vc-svn-diff): Revert previous change but add a test
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index aefb2fd4cbb..4f244d71522 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -3,6 +3,25 @@
3 * gnus-sum.el (gnus-summary-next-article): XEmacs-friendly version of 3 * gnus-sum.el (gnus-summary-next-article): XEmacs-friendly version of
4 2009-01-09 change. 4 2009-01-09 change.
5 5
62009-01-26 Teodor Zlatanov <tzlatanov@jumptrading.com>
7
8 * auth-source.el (auth-source-forget-user-or-password): Clarify docs.
9 (auth-source-forget-all-cached): New convenience function.
10 (auth-source-user-or-password): Accept list of modes or a single mode.
11
12 * mail-source.el (mail-source-bind, mail-source-set-1): Use list of
13 auth-source modes.
14
15 * nnimap.el (nnimap-open-connection): Use list of
16 auth-source modes.
17
18 * nntp.el (nntp-send-authinfo): Use list of
19 auth-source modes.
20
212009-01-26 Teodor Zlatanov <tzz@lifelogs.com>
22
23 * nntp.el (nntp-send-authinfo):
24
62009-01-16 Teodor Zlatanov <tzz@lifelogs.com> 252009-01-16 Teodor Zlatanov <tzz@lifelogs.com>
7 26
8 * auth-source.el: Update docs to reflect epa-file-enable is to be used 27 * auth-source.el: Update docs to reflect epa-file-enable is to be used
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el
index 27de702b976..1bec08f076f 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/gnus/auth-source.el
@@ -163,12 +163,20 @@ Returns fallback choices (where PROTOCOL or HOST are nil) with FALLBACK t."
163 (interactive "slogin/password: \nsHost: \nsProtocol: \n") ;for testing 163 (interactive "slogin/password: \nsHost: \nsProtocol: \n") ;for testing
164 (remhash (format "%s %s:%s" mode host protocol) auth-source-cache)) 164 (remhash (format "%s %s:%s" mode host protocol) auth-source-cache))
165 165
166(defun auth-source-forget-all-cached ()
167 "Forget all cached auth-source authentication tokens."
168 (interactive)
169 (setq auth-source-cache (make-hash-table :test 'equal)))
170
166(defun auth-source-user-or-password (mode host protocol) 171(defun auth-source-user-or-password (mode host protocol)
167 "Find user or password (from the string MODE) matching HOST and PROTOCOL." 172 "Find MODE (string or list of strings) matching HOST and PROTOCOL.
173MODE can be \"login\" or \"password\" for example."
168 (gnus-message 9 174 (gnus-message 9
169 "auth-source-user-or-password: get %s for %s (%s)" 175 "auth-source-user-or-password: get %s for %s (%s)"
170 mode host protocol) 176 mode host protocol)
171 (let* ((cname (format "%s %s:%s" mode host protocol)) 177 (let* ((listy (listp mode))
178 (mode (if listy mode (list mode)))
179 (cname (format "%s %s:%s" mode host protocol))
172 (found (gethash cname auth-source-cache))) 180 (found (gethash cname auth-source-cache)))
173 (if found 181 (if found
174 (progn 182 (progn
@@ -176,7 +184,7 @@ Returns fallback choices (where PROTOCOL or HOST are nil) with FALLBACK t."
176 "auth-source-user-or-password: cached %s=%s for %s (%s)" 184 "auth-source-user-or-password: cached %s=%s for %s (%s)"
177 mode 185 mode
178 ;; don't show the password 186 ;; don't show the password
179 (if (equal mode "password") "SECRET" found) 187 (if (member "password" mode) "SECRET" found)
180 host protocol) 188 host protocol)
181 found) 189 found)
182 (dolist (choice (auth-source-pick host protocol)) 190 (dolist (choice (auth-source-pick host protocol))
@@ -191,8 +199,9 @@ Returns fallback choices (where PROTOCOL or HOST are nil) with FALLBACK t."
191 "auth-source-user-or-password: found %s=%s for %s (%s)" 199 "auth-source-user-or-password: found %s=%s for %s (%s)"
192 mode 200 mode
193 ;; don't show the password 201 ;; don't show the password
194 (if (equal mode "password") "SECRET" found) 202 (if (member "password" mode) "SECRET" found)
195 host protocol) 203 host protocol)
204 (setq found (if listy found (car-safe found)))
196 (when auth-source-do-cache 205 (when auth-source-do-cache
197 (puthash cname found auth-source-cache))) 206 (puthash cname found auth-source-cache)))
198 (return found))))) 207 (return found)))))
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index f144e910410..7dbe30b91d8 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -453,10 +453,11 @@ the `mail-source-keyword-map' variable."
453(put 'mail-source-bind 'lisp-indent-function 1) 453(put 'mail-source-bind 'lisp-indent-function 1)
454(put 'mail-source-bind 'edebug-form-spec '(sexp body)) 454(put 'mail-source-bind 'edebug-form-spec '(sexp body))
455 455
456;; TODO: use the list format for auth-source-user-or-password modes
456(defun mail-source-set-1 (source) 457(defun mail-source-set-1 (source)
457 (let* ((type (pop source)) 458 (let* ((type (pop source))
458 (defaults (cdr (assq type mail-source-keyword-map))) 459 (defaults (cdr (assq type mail-source-keyword-map)))
459 default value keyword user-auth pass-auth) 460 default value keyword auth-info user-auth pass-auth)
460 (while (setq default (pop defaults)) 461 (while (setq default (pop defaults))
461 ;; for each default :SYMBOL, set SYMBOL to the plist value for :SYMBOL 462 ;; for each default :SYMBOL, set SYMBOL to the plist value for :SYMBOL
462 ;; using `mail-source-value' to evaluate the plist value 463 ;; using `mail-source-value' to evaluate the plist value
@@ -469,20 +470,21 @@ the `mail-source-keyword-map' variable."
469 ((and 470 ((and
470 (eq keyword :user) 471 (eq keyword :user)
471 (setq user-auth 472 (setq user-auth
472 (auth-source-user-or-password 473 (nth 0 (auth-source-user-or-password
473 "login" 474 '("login" "password")
474 ;; this is "host" in auth-sources 475 ;; this is "host" in auth-sources
475 (if (boundp 'server) (symbol-value 'server) "") 476 (if (boundp 'server) (symbol-value 'server) "")
476 type))) 477 type))))
477 user-auth) 478 user-auth)
478 ((and 479 ((and
479 (eq keyword :password) 480 (eq keyword :password)
480 (setq pass-auth 481 (setq pass-auth
481 (auth-source-user-or-password 482 (nth 1
482 "password" 483 (auth-source-user-or-password
483 ;; this is "host" in auth-sources 484 '("login" "password")
484 (if (boundp 'server) (symbol-value 'server) "") 485 ;; this is "host" in auth-sources
485 type))) 486 (if (boundp 'server) (symbol-value 'server) "")
487 type))))
486 pass-auth) 488 pass-auth)
487 (t (if (setq value (plist-get source keyword)) 489 (t (if (setq value (plist-get source keyword))
488 (mail-source-value value) 490 (mail-source-value value)
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 87edde6a77b..cfcad522b45 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -805,8 +805,12 @@ If EXAMINE is non-nil the group is selected read-only."
805 (port (if nnimap-server-port 805 (port (if nnimap-server-port
806 (int-to-string nnimap-server-port) 806 (int-to-string nnimap-server-port)
807 "imap")) 807 "imap"))
808 (auth-info
809 (auth-source-user-or-password '("login" "password") server port))
810 (auth-user (nth 0 auth-info))
811 (auth-passwd (nth 1 auth-info))
808 (user (or 812 (user (or
809 (auth-source-user-or-password "login" server port) ; this is preferred to netrc-* 813 auth-user ; this is preferred to netrc-*
810 (netrc-machine-user-or-password 814 (netrc-machine-user-or-password
811 "login" 815 "login"
812 list 816 list
@@ -816,7 +820,7 @@ If EXAMINE is non-nil the group is selected read-only."
816 (list port) 820 (list port)
817 (list "imap" "imaps" "143" "993")))) 821 (list "imap" "imaps" "143" "993"))))
818 (passwd (or 822 (passwd (or
819 (auth-source-user-or-password "password" server port) ; this is preferred to netrc-* 823 auth-passwd ; this is preferred to netrc-*
820 (netrc-machine-user-or-password 824 (netrc-machine-user-or-password
821 "password" 825 "password"
822 list 826 list
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 6e9978d4c32..8a6c9a2d78a 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -1179,14 +1179,18 @@ If SEND-IF-FORCE, only send authinfo to the server if the
1179 (let* ((list (netrc-parse nntp-authinfo-file)) 1179 (let* ((list (netrc-parse nntp-authinfo-file))
1180 (alist (netrc-machine list nntp-address "nntp")) 1180 (alist (netrc-machine list nntp-address "nntp"))
1181 (force (or (netrc-get alist "force") nntp-authinfo-force)) 1181 (force (or (netrc-get alist "force") nntp-authinfo-force))
1182 (auth-info
1183 (auth-source-user-or-password '("login" "password") nntp-address "nntp"))
1184 (auth-user (nth 0 auth-info))
1185 (auth-passwd (nth 1 auth-info))
1182 (user (or 1186 (user (or
1183 ;; this is preferred to netrc-* 1187 ;; this is preferred to netrc-*
1184 (auth-source-user-or-password "login" nntp-address "nntp") 1188 auth-user
1185 (netrc-get alist "login") 1189 (netrc-get alist "login")
1186 nntp-authinfo-user)) 1190 nntp-authinfo-user))
1187 (passwd (or 1191 (passwd (or
1188 ;; this is preferred to netrc-* 1192 ;; this is preferred to netrc-*
1189 (auth-source-user-or-password "password" nntp-address "nntp") 1193 auth-passwd
1190 (netrc-get alist "password")))) 1194 (netrc-get alist "password"))))
1191 (when (or (not send-if-force) 1195 (when (or (not send-if-force)
1192 force) 1196 force)
diff --git a/lisp/net/imap.el b/lisp/net/imap.el
index 6f2b2d11f97..88e897fa32e 100644
--- a/lisp/net/imap.el
+++ b/lisp/net/imap.el
@@ -1798,25 +1798,38 @@ However, UIDS here is a cons, where the car is the canonical form
1798of the UIDS specification, and the cdr is the one which works with 1798of the UIDS specification, and the cdr is the one which works with
1799Exchange 2007 or, potentially, other buggy servers. 1799Exchange 2007 or, potentially, other buggy servers.
1800See `imap-enable-exchange-bug-workaround'." 1800See `imap-enable-exchange-bug-workaround'."
1801 ;; We don't unconditionally use the alternative (valid) form, since 1801 ;; The first time we get here for a given, we'll try the canonical
1802 ;; this is said to be significantly inefficient. The first time we 1802 ;; form. If we get the known error from the buggy server, set the
1803 ;; get here for a given, we'll try the canonical form. If we get 1803 ;; flag buffer-locally (to account for connections to multiple
1804 ;; the known error from the buggy server, set the flag 1804 ;; servers), then re-try with the alternative UIDS spec. We don't
1805 ;; buffer-locally (to account for connections to multiple servers), 1805 ;; unconditionally use the alternative form, since the
1806 ;; then re-try with the alternative UIDS spec. 1806 ;; currently-used alternatives are seriously inefficient with some
1807 ;; servers (although they are valid).
1808 ;;
1809 ;; FIXME: Maybe it would be cleaner to have a flag to not signal
1810 ;; the error (which otherwise gives a message), and test
1811 ;; `imap-failed-tags'. Also, Other IMAP clients use other forms of
1812 ;; request which work with Exchange, e.g. Claws does "UID FETCH 1:*
1813 ;; (UID)" rather than "FETCH UID 1,*". Is there a good reason not
1814 ;; to do the same?
1807 (condition-case data 1815 (condition-case data
1808 (imap-fetch (if imap-enable-exchange-bug-workaround 1816 ;; Binding `debug-on-error' allows us to get the error from
1809 (cdr uids) 1817 ;; `imap-parse-response' -- it's normally caught by Emacs around
1810 (car uids)) 1818 ;; execution of a process filter.
1811 props receive nouidfetch buffer) 1819 (let ((debug-on-error t))
1820 (imap-fetch (if imap-enable-exchange-bug-workaround
1821 (cdr uids)
1822 (car uids))
1823 props receive nouidfetch buffer))
1812 (error 1824 (error
1813 (if (and (not imap-enable-exchange-bug-workaround) 1825 (if (and (not imap-enable-exchange-bug-workaround)
1814 (string-match 1826 ;; This is the Exchange 2007 response. It may be more
1815 "The specified message set is invalid" 1827 ;; robust just to check for a BAD response to the
1816 (cadr data))) 1828 ;; attempted fetch.
1829 (string-match "The specified message set is invalid"
1830 (cadr data)))
1817 (with-current-buffer (or buffer (current-buffer)) 1831 (with-current-buffer (or buffer (current-buffer))
1818 (set (make-local-variable 1832 (set (make-local-variable 'imap-enable-exchange-bug-workaround)
1819 'imap-enable-exchange-bug-workaround)
1820 t) 1833 t)
1821 (imap-fetch (cdr uids) props receive nouidfetch)) 1834 (imap-fetch (cdr uids) props receive nouidfetch))
1822 (signal (car data) (cdr data)))))) 1835 (signal (car data) (cdr data))))))
@@ -3027,6 +3040,7 @@ Return nil if no complete line has arrived."
3027 imap-list-to-message-set 3040 imap-list-to-message-set
3028 imap-fetch-asynch 3041 imap-fetch-asynch
3029 imap-fetch 3042 imap-fetch
3043 imap-fetch-safe
3030 imap-message-put 3044 imap-message-put
3031 imap-message-get 3045 imap-message-get
3032 imap-message-map 3046 imap-message-map
diff --git a/lisp/net/netrc.el b/lisp/net/netrc.el
index 9c7f0176ef8..80ae1b57ba3 100644
--- a/lisp/net/netrc.el
+++ b/lisp/net/netrc.el
@@ -158,11 +158,22 @@ MODE can be \"login\" or \"password\", suitable for passing to
158 (ports (or ports '(nil))) 158 (ports (or ports '(nil)))
159 (defaults (or defaults '(nil))) 159 (defaults (or defaults '(nil)))
160 info) 160 info)
161 (dolist (machine machines) 161 (if (listp mode)
162 (dolist (default defaults) 162 (setq info
163 (dolist (port ports) 163 (mapcar
164 (let ((alist (netrc-machine authinfo-list machine port default))) 164 (lambda (mode-element)
165 (setq info (or (netrc-get alist mode) info)))))) 165 (netrc-machine-user-or-password
166 mode-element
167 authinfo-list
168 machines
169 ports
170 defaults))
171 mode))
172 (dolist (machine machines)
173 (dolist (default defaults)
174 (dolist (port ports)
175 (let ((alist (netrc-machine authinfo-list machine port default)))
176 (setq info (or (netrc-get alist mode) info)))))))
166 info)) 177 info))
167 178
168(defun netrc-get (alist type) 179(defun netrc-get (alist type)