From: Lars Ingebrigtsen Date: Mon, 21 Feb 2011 01:34:09 +0000 (-0800) Subject: Add an in-memory netrc cache (for now) to make ~/.authinfo.gpg files usable. X-Git-Url: https://cgit.sxemacs.org/?p=gnus;a=commitdiff_plain;h=cf58cf0756669ae18adb68155540bf5cf3f437a4 Add an in-memory netrc cache (for now) to make ~/.authinfo.gpg files usable. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 616ed3460..16e1fa335 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2011-02-21 Lars Ingebrigtsen + * auth-source.el (auth-source-netrc-parse): Add an in-memory netrc + cache (for now) to make ~/.authinfo.gpg files usable. + * nnfolder.el (copyright-update): Define for the compiler. * auth-source.el (auth-source-search): Fix unbound variable. diff --git a/lisp/auth-source.el b/lisp/auth-source.el index eaed8e824..3fe31b588 100644 --- a/lisp/auth-source.el +++ b/lisp/auth-source.el @@ -690,6 +690,8 @@ while \(:host t) would find all host entries." ;;; Backend specific parsing: netrc/authinfo backend +(defvar auth-source-netrc-cache nil) + ;;; (auth-source-netrc-parse "~/.authinfo.gpg") (defun* auth-source-netrc-parse (&rest spec @@ -708,7 +710,19 @@ Note that the MAX parameter is used so we can exit the parse early." (max (or max 5000)) ; sanity check: default to stop at 5K (modified 0) alist elem result pair) - (insert-file-contents file) + (if (and auth-source-netrc-cache + (equal (car auth-source-netrc-cache) + (nth 5 (file-attributes file)))) + (insert (base64-decode-string + (rot13-string (cdr auth-source-netrc-cache)))) + (insert-file-contents file) + (when (string-match "\\.gpg\\'" file) + ;; Store the contents of the file heavily encrypted in memory. + (setq auth-source-netrc-cache + (cons (nth 5 (file-attributes file)) + (rot13-string + (base64-encode-string + (buffer-string))))))) (goto-char (point-min)) ;; Go through the file, line by line. (while (and (not (eobp))