]> code.delx.au - gnu-emacs/blobdiff - lisp/mail/rfc822.el
Fix previous change:
[gnu-emacs] / lisp / mail / rfc822.el
index 9c741dde0b4f786555283966dbab6ff3019db2cf..989f43cd5a5146bf1bb12b21f3feb8fd1b38300c 100644 (file)
@@ -1,10 +1,10 @@
 ;;; rfc822.el --- hairy rfc822 parser for mail and news and suchlike
 
+;; Copyright (C) 1986, 87, 1990 Free Software Foundation, Inc.
+
 ;; Author: Richard Mlynarik <mly@eddie.mit.edu>
 ;; Maintainer: FSF
-;; Last-Modified: 26 Nov 1990
-
-;; Copyright (C) 1986, 87, 1990 Free Software Foundation, Inc.
+;; Keywords: mail
 
 ;; This file is part of GNU Emacs.
 
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Support functions for parsing RFC-822 headers, used by mail and news
+;; modes.
 
 ;;; Code:
 
@@ -43,7 +49,7 @@
        (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))))
@@ -69,7 +75,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)
@@ -93,7 +99,7 @@
                        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
       ;;  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
                         (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)
              (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)))
                    (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"