emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-26 5e42c34: Fix bugs in `auth-source-netrc-parse-one


From: Noam Postavsky
Subject: [Emacs-diffs] emacs-26 5e42c34: Fix bugs in `auth-source-netrc-parse-one'.
Date: Fri, 10 Aug 2018 08:38:02 -0400 (EDT)

branch: emacs-26
commit 5e42c349a0533602c23bf651d6b28eca25e95a46
Author: Filipp Gunbin <address@hidden>
Commit: Noam Postavsky <address@hidden>

    Fix bugs in `auth-source-netrc-parse-one'.
    
    * lisp/auth-source.el (auth-source-netrc-parse-one): Ensure that match
      data is not overwritten in `auth-source-netrc-parse-next-interesting'.
      Ensure that blanks are skipped before and after going over comments
      and eols.
    * test/lisp/auth-source-tests.el (auth-source-test-netrc-parse-one): New 
test.
    
    (cherry picked from commit 60ff8101449eea3a5ca4961299501efd83d011bd)
---
 lisp/auth-source.el            | 12 +++++++-----
 test/lisp/auth-source-tests.el | 19 +++++++++++++++++++
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/lisp/auth-source.el b/lisp/auth-source.el
index 374b7f1..afb35c8 100644
--- a/lisp/auth-source.el
+++ b/lisp/auth-source.el
@@ -984,12 +984,13 @@ Note that the MAX parameter is used so we can exit the 
parse early."
 
 (defun auth-source-netrc-parse-next-interesting ()
   "Advance to the next interesting position in the current buffer."
+  (skip-chars-forward "\t ")
   ;; If we're looking at a comment or are at the end of the line, move forward
-  (while (or (looking-at "#")
+  (while (or (eq (char-after) ?#)
              (and (eolp)
                   (not (eobp))))
-    (forward-line 1))
-  (skip-chars-forward "\t "))
+    (forward-line 1)
+    (skip-chars-forward "\t ")))
 
 (defun auth-source-netrc-parse-one ()
   "Read one thing from the current buffer."
@@ -999,8 +1000,9 @@ Note that the MAX parameter is used so we can exit the 
parse early."
             (looking-at "\"\\([^\"]*\\)\"")
             (looking-at "\\([^ \t\n]+\\)"))
     (forward-char (length (match-string 0)))
-    (auth-source-netrc-parse-next-interesting)
-    (match-string-no-properties 1)))
+    (prog1
+        (match-string-no-properties 1)
+      (auth-source-netrc-parse-next-interesting))))
 
 ;; with thanks to org-mode
 (defsubst auth-source-current-line (&optional pos)
diff --git a/test/lisp/auth-source-tests.el b/test/lisp/auth-source-tests.el
index c1ee909..90caac8 100644
--- a/test/lisp/auth-source-tests.el
+++ b/test/lisp/auth-source-tests.el
@@ -210,6 +210,25 @@
                     ("login" . "user1")
                     ("machine" . "mymachine1"))))))
 
+(ert-deftest auth-source-test-netrc-parse-one ()
+  (should (equal (auth-source--test-netrc-parse-one--all
+                  "machine host1\n# comment\n")
+                 '("machine" "host1")))
+  (should (equal (auth-source--test-netrc-parse-one--all
+                  "machine host1\n  \n  \nmachine host2\n")
+                 '("machine" "host1" "machine" "host2"))))
+
+(defun auth-source--test-netrc-parse-one--all (text)
+  "Parse TEXT with `auth-source-netrc-parse-one' until end,return list."
+  (with-temp-buffer
+    (insert text)
+    (goto-char (point-min))
+    (let ((one (auth-source-netrc-parse-one)) all)
+      (while one
+        (push one all)
+        (setq one (auth-source-netrc-parse-one)))
+      (nreverse all))))
+
 (ert-deftest auth-source-test-format-prompt ()
   (should (equal (auth-source-format-prompt "test %u %h %p" '((?u "user") (?h 
"host")))
                  "test user host %p")))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]