]> git.eshelyaron.com Git - emacs.git/commitdiff
lisp/gnus/auth-source.el: When a data token is "machine", abort parsing the current...
authorTeodor Zlatanov <tzz@lifelogs.com>
Mon, 17 Jun 2013 23:35:46 +0000 (23:35 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Mon, 17 Jun 2013 23:35:46 +0000 (23:35 +0000)
lisp/gnus/ChangeLog
lisp/gnus/auth-source.el

index c2ce39633b53d017380cfe4e97e596509cd0487a..53db82cd5b3df930987b21e19dcf5c6be0ce85de 100644 (file)
@@ -1,3 +1,9 @@
+2013-06-17  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * auth-source.el (auth-source-current-line): New function.
+       (auth-source-netrc-parse-entries): When a data token is "machine",
+       assume we're in the wrong place and abort parsing the current line.
+
 2013-06-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * eww.el (eww-tag-select): Don't render totally empty <select> forms.
index cce18e0c0334eb4b7bdb333b6699ed78c35a9848..a58d023163fd0be5378b63aea65c22cce33aafc6 100644 (file)
@@ -1055,6 +1055,13 @@ Note that the MAX parameter is used so we can exit the parse early."
     (auth-source-netrc-parse-next-interesting)
     (match-string-no-properties 1)))
 
+;; with thanks to org-mode
+(defsubst auth-source-current-line (&optional pos)
+  (save-excursion
+    (and pos (goto-char pos))
+    ;; works also in narrowed buffer, because we start at 1, not point-min
+    (+ (if (bolp) 1 0) (count-lines 1 (point)))))
+
 (defun auth-source-netrc-parse-entries(check max)
   "Parse up to MAX netrc entries, passed by CHECK, from the current buffer."
   (let ((adder (lambda(check alist all)
@@ -1071,6 +1078,8 @@ Note that the MAX parameter is used so we can exit the parse early."
       (when (and alist
                  (or default
                      (equal item "machine")))
+        (auth-source-do-trivia
+         "auth-source-netrc-parse-entries: got entry %S" alist)
         (setq all (funcall adder check alist all)
               alist nil))
       ;; In default entries, we don't have a next token.
@@ -1079,11 +1088,21 @@ Note that the MAX parameter is used so we can exit the parse early."
           (push (cons "machine" t) alist)
         ;; Not a default entry.  Grab the next item.
         (when (setq item2 (auth-source-netrc-parse-one))
-          (push (cons item item2) alist))))
+          ;; Did we get a "machine" value?
+          (if (equal item2 "machine")
+              (progn
+                (gnus-error 1
+                 "%s: Unexpected 'machine' token at line %d"
+                 "auth-source-netrc-parse-entries"
+                 (auth-source-current-line))
+                (forward-line 1))
+            (push (cons item item2) alist)))))
 
     ;; Clean up: if there's an entry left over, use it.
     (when alist
-      (setq all (funcall adder check alist all)))
+      (setq all (funcall adder check alist all))
+      (auth-source-do-trivia
+       "auth-source-netrc-parse-entries: got2 entry %S" alist))
     (nreverse all)))
 
 (defvar auth-source-passphrase-alist nil)