Merge from emacs-23
[bpt/emacs.git] / lisp / gnus / nntp.el
index ea05353..03e0168 100644 (file)
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 1987, 1988, 1989, 1990, 1992, 1993,
 ;;   1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
 
 ;;; Code:
 
+;; For Emacs < 22.2.
+(eval-and-compile
+  (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
+
 (require 'nnheader)
 (require 'nnoo)
 (require 'gnus-util)
@@ -36,8 +40,7 @@
 
 (eval-when-compile (require 'cl))
 
-(eval-and-compile
-  (autoload 'auth-source-user-or-password "auth-source"))
+(autoload 'auth-source-user-or-password "auth-source")
 
 (defgroup nntp nil
   "NNTP access for Gnus."
@@ -1169,6 +1172,11 @@ It will make innd servers spawn an nnrpd process to allow actual article
 reading."
   (nntp-send-command "^.*\n" "MODE READER"))
 
+(declare-function netrc-parse "netrc" (file))
+(declare-function netrc-machine "netrc"
+                 (list machine &optional port defaultport))
+(declare-function netrc-get "netrc" (alist type))
+
 (defun nntp-send-authinfo (&optional send-if-force)
   "Send the AUTHINFO to the nntp server.
 It will look in the \"~/.authinfo\" file for matching entries.  If
@@ -1177,17 +1185,22 @@ and a password.
 
 If SEND-IF-FORCE, only send authinfo to the server if the
 .authinfo file has the FORCE token."
+  (require 'netrc)
   (let* ((list (netrc-parse nntp-authinfo-file))
         (alist (netrc-machine list nntp-address "nntp"))
         (force (or (netrc-get alist "force") nntp-authinfo-force))
-        (user (or 
+        (auth-info
+         (auth-source-user-or-password '("login" "password") nntp-address "nntp"))
+        (auth-user (nth 0 auth-info))
+        (auth-passwd (nth 1 auth-info))
+        (user (or
                ;; this is preferred to netrc-*
-               (auth-source-user-or-password "login" nntp-address "nntp")
-               (netrc-get alist "login") 
+               auth-user
+               (netrc-get alist "login")
                nntp-authinfo-user))
         (passwd (or
                  ;; this is preferred to netrc-*
-                 (auth-source-user-or-password "password" nntp-address "nntp")
+                 auth-passwd
                  (netrc-get alist "password"))))
     (when (or (not send-if-force)
              force)
@@ -1302,10 +1315,9 @@ password contained in '~/.nntp-authinfo'."
 (defun nntp-open-network-stream (buffer)
   (open-network-stream "nntpd" buffer nntp-address nntp-port-number))
 
-(eval-and-compile
-  (autoload 'format-spec "format-spec")
-  (autoload 'format-spec-make "format-spec")
-  (autoload 'open-tls-stream "tls"))
+(autoload 'format-spec "format-spec")
+(autoload 'format-spec-make "format-spec")
+(autoload 'open-tls-stream "tls")
 
 (defun nntp-open-ssl-stream (buffer)
   (let* ((process-connection-type nil)
@@ -1814,13 +1826,13 @@ via telnet.")
 (defun nntp-service-to-port (svc)
   (cond
    ((integerp svc) (number-to-string svc))
-   ((string-match "\\`[[:digit:]]\\'" svc) svc)
+   ((string-match "\\`[0-9]+\\'" svc) svc)
    (t
     (with-temp-buffer
       (ignore-errors (insert-file-contents "/etc/services"))
       (goto-char (point-min))
       (if (re-search-forward (concat "^" (regexp-quote svc)
-                                     "[ \t]+\\([[:digit:]]+\\)/tcp"))
+                                     "[ \t]+\\([0-9]+\\)/tcp"))
           (match-string 1)
         svc)))))
 
@@ -2120,8 +2132,7 @@ Please refer to the following variables to customize the connection:
       (make-directory (directory-file-name dir) t)
       (nnheader-message 5 "Creating nntp marks directory %s" dir))))
 
-(eval-and-compile
-  (autoload 'time-less-p "time-date"))
+(autoload 'time-less-p "time-date")
 
 (defun nntp-marks-changed-p (group server)
   (let ((file (nntp-group-pathname server group nntp-marks-file-name))