changeset 7793:4a683dc76931

(gnus-newsrc-to-gnus-format): In main loop, don't try to match the ranges with the regexp. Match just the group name and the subscribed-flag.
author Richard M. Stallman <rms@gnu.org>
date Sun, 05 Jun 1994 12:05:05 +0000
parents 1335cec8a016
children 10ed4c75936b
files lisp/=gnus.el
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/=gnus.el	Sun Jun 05 12:01:16 1994 +0000
+++ b/lisp/=gnus.el	Sun Jun 05 12:05:05 1994 +0000
@@ -6586,18 +6586,17 @@
     ;; Before supporting continuation lines, " newsgroup ! 1-5" was
     ;; okay, but now it is invalid.  It should be "newsgroup! 1-5".
     (goto-char (point-min))
-    ;; Due to overflows in regex.c, change the following regexp:
+    ;; We used this regexp, but it caused overflows.
     ;; "^\\([^:! \t\n]+\\)\\([:!]\\)[ \t]*\\(.*\\)$"
     ;; Suggested by composer@bucsf.bu.edu (Jeff Kellem)
     ;; but no longer viable because of extensive backtracking in Emacs 19:
     ;; "^\\([^:! \t\n]+\\)\\([:!]\\)[ \t]*\\(\\(...\\)*.*\\)$"
     ;; but, the following causes trouble on some case:
     ;; "^\\([^:! \t\n]+\\)\\([:!]\\)[ \t]*\\(\\|[^ \t\n].*\\)$"
-    (while (re-search-forward
-	    (if (= gnus-emacs-version 18)
-		"^\\([^:! \t\n]+\\)\\([:!]\\)[ \t]*\\(\\(...\\)*.*\\)$"
-	      "^\\([^:! \t\n]+\\)\\([:!]\\)[ \t]*\\(.*\\)$")
-	    nil t)
+    ;; So now we don't try to match the tail of the line at all.
+    ;; It's just as easy to extract it later.
+    (while (re-search-forward "^\\([^:! \t\n]+\\)\\([:!]\\)"
+			      nil t)
       (setq newsgroup (buffer-substring (match-beginning 1) (match-end 1)))
       ;; Check duplications of newsgroups.
       ;; Note: Checking the duplications takes very long time.
@@ -6606,7 +6605,9 @@
 	(setq subscribe
 	      (string-equal
 	       ":" (buffer-substring (match-beginning 2) (match-end 2))))
-	(setq ranges (buffer-substring (match-beginning 3) (match-end 3)))
+	(skip-chars-forward " \t")
+	(setq ranges (buffer-substring (point) (save-excursion
+						 (end-of-line) (point))))
 	(setq read-list nil)
 	(while (string-match "^[, \t]*\\([0-9-]+\\)" ranges)
 	  (setq subrange (substring ranges (match-beginning 1) (match-end 1)))