]> code.delx.au - gnu-emacs/commitdiff
(rmail-unix-mail-delimiter):
authorRichard M. Stallman <rms@gnu.org>
Fri, 28 Jun 1996 07:10:30 +0000 (07:10 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 28 Jun 1996 07:10:30 +0000 (07:10 +0000)
Accept more user names, since they can be
mangled badly by modern Unix mailers (e.g. Solaris 2.5 mail.local).
Be a little more picky about dates to compensate.
Match all the digits of a year, as per RFC 1123 section 5.2.14.
(rmail-nuke-pinhead-header): Adjust to regexp renumbering in
rmail-unix-mail-delimiter.

lisp/mail/rmail.el

index 9e6593427dffeb3fe52086d0d772e535437ce7eb..e08fb569d9771cc7d9e458ae86d585a5eb5352da 100644 (file)
@@ -221,25 +221,34 @@ Called with region narrowed to the message, including headers.")
     (concat
      "From "
 
-     ;; Username, perhaps with a quoted section that can contain spaces.
-     "\\("
-     "[^ \n]*"
-     "\\(\\|\".*\"[^ \n]*\\)"
-     "\\|<[^<>\n]+>"
-     "\\)  ?"
+     ;; Many things can happen to an RFC 822 mailbox before it is put into
+     ;; a `From' line.  The leading phrase can be stripped, e.g.
+     ;; `Joe <@w.x:joe@y.z>' -> `<@w.x:joe@y.z>'.  The <> can be stripped, e.g.
+     ;; `<@x.y:joe@y.z>' -> `@x.y:joe@y.z'.  Everything starting with a CRLF
+     ;; can be removed, e.g.
+     ;;                From: joe@y.z (Joe      K
+     ;;                        User)
+     ;; can yield `From joe@y.z (Joe   K Fri Mar 22 08:11:15 1996', and
+     ;;                From: Joe User
+     ;;                        <joe@y.z>
+     ;; can yield `From Joe User Fri Mar 22 08:11:15 1996'.
+     ;; We want to match the results of any of these manglings.
+     ;; The following regexp rejects names whose first characters are
+     ;; obviously bogus, but after that anything goes.
+     "\\([^\0-\r \^?].*\\)? "
 
      ;; The time the message was sent.
-     "\\([^ \n]*\\) *"                 ; day of the week
-     "\\([^ \n]*\\) *"                 ; month
-     "\\([0-9]*\\) *"                  ; day of month
-     "\\([0-9:]*\\) *"                 ; time of day
+     "\\([^\0-\r \^?]+\\) +"                           ; day of the week
+     "\\([^\0-\r \^?]+\\) +"                           ; month
+     "\\([0-3]?[0-9]\\) +"                             ; day of month
+     "\\([0-2][0-9]:[0-5][0-9]\\(:[0-6][0-9]\\)?\\) *" ; time of day
 
      ;; Perhaps a time zone, specified by an abbreviation, or by a
      ;; numeric offset.
      time-zone-regexp
 
      ;; The year.
-     " [0-9][0-9]\\([0-9]*\\) *"
+     " \\([0-9][0-9]+\\) *"
 
      ;; On some systems the time zone can appear after the year, too.
      time-zone-regexp
@@ -1273,7 +1282,7 @@ Optional DEFAULT is password to start with."
                  (if has-date
                      ""
                    (concat
-                    "Date: \\3, \\5 \\4 \\9 \\6 "
+                    "Date: \\2, \\4 \\3 \\9 \\5 "
                    
                     ;; The timezone could be matched by group 7 or group 10.
                     ;; If neither of them matched, assume EST, since only