changeset 15534:7f169dd814ce

(rmail-unix-mail-delimiter): 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.
author Richard M. Stallman <rms@gnu.org>
date Fri, 28 Jun 1996 07:10:30 +0000
parents a749d414efbb
children 8895613b61dd
files lisp/mail/rmail.el
diffstat 1 files changed, 21 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/rmail.el	Fri Jun 28 07:05:19 1996 +0000
+++ b/lisp/mail/rmail.el	Fri Jun 28 07:10:30 1996 +0000
@@ -221,25 +221,34 @@
     (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 @@
 		  (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