(woman-mode-line-format): Delete constant.
[bpt/emacs.git] / lisp / mail / rfc822.el
index 4204d21..1a5dfad 100644 (file)
 ;;; Commentary:
 
 ;; Support functions for parsing RFC-822 headers, used by mail and news
-;; modes.  
+;; modes.
 
 ;;; Code:
 
-;; uses address-start free, throws to address
+(defvar rfc822-address-start)
+
+;; uses rfc822-address-start free, throws to address
 (defun rfc822-bad-address (reason)
   (save-restriction
     (insert "_^_")
-    (narrow-to-region address-start
+    (narrow-to-region rfc822-address-start
                      (if (re-search-forward "[,;]" nil t)
                          (max (point-min) (1- (point)))
                        (point-max)))
        (setq losers (cdr losers))))
     (goto-char (point-min)) (insert "(Unparsable address -- "
                                    reason
-                                   ":\n\t  \"")
+                                   ": \"")
     (goto-char (point-max)) (insert "\")"))
   (rfc822-nuke-whitespace)
-  (throw 'address (buffer-substring address-start (point))))
+  (throw 'address (buffer-substring rfc822-address-start (point))))
 
 (defun rfc822-nuke-whitespace (&optional leave-space)
   (let (ch)
@@ -75,7 +77,7 @@
                  (forward-char -1)
                  (delete-char 2)
                  t)
-                ((memq ch '(?\ ?\t ?\n))
+                ((memq ch '(?\  ?\t ?\n))
                  (delete-region (point)
                                 (progn (skip-chars-forward " \t\n") (point)))
                  t)
                        t))))
       (let ((tem (match-data)))
        (rfc822-nuke-whitespace leave-space)
-       (store-match-data tem)
+       (set-match-data tem)
        t)))
 
 (defun rfc822-snarf-word ()
         ;; quoted-string
         (or (rfc822-looking-at "\"\\([^\"\\\n]\\|\\\\.\\|\\\\\n\\)*\"")
             (rfc822-bad-address "Unterminated quoted string")))
-       ((rfc822-looking-at "[^][\000-\037\177-\377 ()<>@,;:\\\".]+")
+       ((rfc822-looking-at "[^][\000-\037 ()<>@,;:\\\".]+")
         ;; atom
         )
        (t
         ;; domain-ref
         (or (rfc822-looking-at "\\[\\([^][\\\n]\\|\\\\.\\|\\\\\n\\)*\\]")
             (rfc822-bad-address "Unterminated domain literal [...]")))
-       ((rfc822-looking-at "[^][\000-\037\177-\377 ()<>@,;:\\\".]+")
+       ((rfc822-looking-at "[^][\000-\037 ()<>@,;:\\\".]+")
         ;; domain-literal = atom
         )
        (t
   ;;  domain-literal is  "[" *(dtext | quoted-pair) "]"
   ;;  dtext is "[^][\\n"
   ;;  domain-ref is atom
-  (let ((address-start (point))
+  (let ((rfc822-address-start (point))
        (n 0))
     (catch 'address
       ;; optimize common cases:
       ;;  foo bar <foo.bar@baz.zap>
       ;;  "foo bar" <foo.bar@baz.zap>
       ;;  those aren't hacked yet.
-      (if (and (rfc822-looking-at "[^][\000-\037\177-\377 ()<>@,;:\\\"]+\\(\\|@[^][\000-\037\177-\377 ()<>@,;:\\\"]+\\)" t)
+      (if (and (rfc822-looking-at "[^][\000-\037 ()<>@,;:\\\"]+\\(\\|@[^][\000-\037 ()<>@,;:\\\"]+\\)" t)
               (progn (or (eobp)
                          (rfc822-looking-at ?,))))
          (progn
            (or (bobp) (/= (preceding-char) ?\ ) (delete-char -1))
            ;; relying on the fact that rfc822-looking-at <char>
            ;;  doesn't mung match-data
-           (throw 'address (buffer-substring address-start (match-end 0)))))
-      (goto-char address-start)
+           (throw 'address (buffer-substring rfc822-address-start (match-end 0)))))
+      (goto-char rfc822-address-start)
       (while t
        (cond ((and (= n 1) (rfc822-looking-at ?@))
               ;; local-part@domain
               (rfc822-snarf-domain)
               (throw 'address
-                (buffer-substring address-start (point))))
+                (buffer-substring rfc822-address-start (point))))
              ((rfc822-looking-at ?:)
               (cond ((not allow-groups)
                      (rfc822-bad-address "A group name may not appear here"))
                         (buffer-substring (if strip start (1- start))
                                           (if strip end (1+ end))))
                     (rfc822-bad-address "Unterminated <...> address")))))
-             ((looking-at "[^][\000-\037\177-\377 ()<>@,;:\\.]")
+             ((looking-at "[^][\000-\037 ()<>@,;:\\.]")
               ;; this allows "." to be part of the words preceding
               ;; an addr-spec, since many broken mailers output
               ;; "Hern K. Herklemeyer III
                    (rfc822-snarf-words)
                    (setq n (1+ n))
                    (setq again (or (rfc822-looking-at ?.)
-                                   (looking-at "[^][\000-\037\177-\377 ()<>@,;:\\.]"))))))
+                                   (looking-at "[^][\000-\037 ()<>@,;:\\.]"))))))
              ((= n 0)
               (throw 'address nil))
              ((= n 1) ; allow "foo" (losing unix seems to do this)
               (throw 'address
-                (buffer-substring address-start (point))))
+                (buffer-substring rfc822-address-start (point))))
               ((> n 1)
                (rfc822-bad-address "Missing comma between addresses or badly-formatted address"))
              ((or (eobp) (= (following-char) ?,))
              (t
               (rfc822-bad-address "Strange character or missing comma")))))))
 
-                          
+
 (defun rfc822-addresses (header-text)
-  (if (string-match "\\`[ \t]*\\([^][\000-\037\177-\377 ()<>@,;:\\\".]+\\)[ \t]*\\'"
+  (if (string-match "\\`[ \t]*\\([^][\000-\037 ()<>@,;:\\\".]+\\)[ \t]*\\'"
                     header-text)
       ;; Make very simple case moderately fast.
       (list (substring header-text (match-beginning 1) (match-end 1)))
            (replace-match "\\1 " t))
 
          (goto-char (point-min))
-         (rfc822-nuke-whitespace)
          (let ((list ())
                tem
-               address-start); this is for rfc822-bad-address
+               rfc822-address-start); this is for rfc822-bad-address
+           (rfc822-nuke-whitespace)
            (while (not (eobp))
-             (setq address-start (point))
+             (setq rfc822-address-start (point))
              (setq tem
                    (catch 'address ; this is for rfc822-bad-address
                      (cond ((rfc822-looking-at ?\,)
                             nil)
-                           ((looking-at "[][\000-\037\177-\377@;:\\.>)]")
+                           ((looking-at "[][\000-\037@;:\\.>)]")
                             (forward-char)
                             (rfc822-bad-address
                               (format "Strange character \\%c found"
 
 (provide 'rfc822)
 
+;;; arch-tag: 5d388a24-e173-40fb-9b8e-85269de44b37
 ;;; rfc822.el ends here