Synch to No Gnus 200506270911.
[elisp/gnus.git-] / lisp / netrc.el
index c3be996..632a682 100644 (file)
@@ -1,5 +1,5 @@
 ;;; netrc.el --- .netrc parsing functionality
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;; .netrc and .authinfo rc parsing
 ;;;
 
-;; autoload gnus-encrypt
+;; autoload encrypt
 (eval-and-compile
-  (autoload 'gnus-encrypt-find-model "gnus-encrypt")
-  (autoload 'gnus-encrypt-insert-file-contents "gnus-encrypt"))
+  (autoload 'encrypt-find-model "encrypt")
+  (autoload 'encrypt-insert-file-contents "encrypt"))
 
 (defgroup netrc nil
- "Netrc configuration.")
+ "Netrc configuration."
+ :group 'comm)
 
 (defvar netrc-services-file "/etc/services"
   "The name of the services file.")
       (let ((tokens '("machine" "default" "login"
                      "password" "account" "macdef" "force"
                      "port"))
-           (encryption-model (gnus-encrypt-find-model file))
+           (encryption-model (encrypt-find-model file))
            alist elem result pair)
 
        (if encryption-model
-           (gnus-encrypt-insert-file-contents file encryption-model)
+           (encrypt-insert-file-contents file encryption-model)
          (insert-file-contents file))
 
        (goto-char (point-min))
@@ -131,6 +132,26 @@ Entries without port tokens default to DEFAULTPORT."
        (pop result))
       (car result))))
 
+(defun netrc-machine-user-or-password (mode authinfo-file-or-list machines ports defaults)
+  "Get the user name or password according to MODE from AUTHINFO-FILE-OR-LIST.
+Matches a machine from MACHINES and a port from PORTS, giving
+default ports DEFAULTS to `netrc-machine'.
+
+MODE can be \"login\" or \"password\", suitable for passing to
+`netrc-get'."
+  (let ((authinfo-list (if (stringp authinfo-file-or-list)
+                          (netrc-parse authinfo-file-or-list)
+                        authinfo-file-or-list))
+       (ports (or ports '(nil)))
+       (defaults (or defaults '(nil)))
+       info)
+    (dolist (machine machines)
+      (dolist (default defaults)
+       (dolist (port ports)
+         (let ((alist (netrc-machine authinfo-list machine port default)))
+         (setq info (or (netrc-get alist mode) info))))))
+    info))
+
 (defun netrc-get (alist type)
   "Return the value of token TYPE from ALIST."
   (cdr (assoc type alist)))