Function: pop3-munge-message-separator
pop3-munge-message-separator is a byte-compiled function defined in
pop3.el.gz.
Signature
(pop3-munge-message-separator START END)
Documentation
Check to see if a message separator exists. If not, generate one.
Source Code
;; Defined in /usr/src/emacs/lisp/net/pop3.el.gz
(defun pop3-munge-message-separator (start end)
"Check to see if a message separator exists. If not, generate one."
(save-excursion
(save-restriction
(narrow-to-region start end)
(goto-char (point-min))
(if (not (or (looking-at "From .?") ; Unix mail
(looking-at "\001\001\001\001\n") ; MMDF
(looking-at "BABYL OPTIONS:") ; Babyl
))
(let* ((from (mail-strip-quoted-names (mail-fetch-field "From")))
(tdate (mail-fetch-field "Date"))
(date (split-string (or (and tdate
(not (string= "" tdate))
tdate)
(pop3-make-date))
" "))
(From_))
;; sample date formats I have seen
;; Date: Tue, 9 Jul 1996 09:04:21 -0400 (EDT)
;; Date: 08 Jul 1996 23:22:24 -0400
;; should be
;; Tue Jul 9 09:04:21 1996
;; Fixme: This should use timezone on the date field contents.
(setq date
(cond ((not date)
"Tue Jan 1 00:00:0 1900")
((string-match "[A-Z]" (nth 0 date))
(format "%s %s %s %s %s"
(nth 0 date) (nth 2 date) (nth 1 date)
(nth 4 date) (nth 3 date)))
(t
;; this really needs to be better but I don't feel
;; like writing a date to day converter.
(format "Sun %s %s %s %s"
(nth 1 date) (nth 0 date)
(nth 3 date) (nth 2 date)))
))
(setq From_ (format "\nFrom %s %s\n" from date))
(while (string-match "," From_)
(setq From_ (concat (substring From_ 0 (match-beginning 0))
(substring From_ (match-end 0)))))
(goto-char (point-min))
(insert From_)
(if (search-forward "\n\n" nil t)
nil
(goto-char (point-max))
(insert "\n"))
(let ((size (- (point-max) (point))))
(forward-line -1)
(insert (format "Content-Length: %s\n" size)))
)))))