From daaeed873e1daa736155e5845f35b2fcc478cf99 Mon Sep 17 00:00:00 2001 From: Dave Love Date: Fri, 10 Nov 2000 11:56:06 +0000 Subject: [PATCH] 2000-11-10 Dave Love * pop3.el (pop3-version): Deleted. (pop3-make-date): New function, avoiding message-make-date. (pop3-munge-message-separator): Use it. 2000-11-10 ShengHuo ZHU * pop3.el (pop3-munge-message-separator): A message may have an empty body. --- lisp/gnus/pop3.el | 62 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el index 02630b5ed87..9fb20725b96 100644 --- a/lisp/gnus/pop3.el +++ b/lisp/gnus/pop3.el @@ -6,7 +6,6 @@ ;; Author: Richard L. Pieri ;; Maintainer: FSF ;; Keywords: mail -;; Version: 1.3s ;; This file is part of GNU Emacs. @@ -38,8 +37,6 @@ (require 'mail-utils) -(defconst pop3-version "1.3s") - (defvar pop3-maildrop (or (user-login-name) (getenv "LOGNAME") (getenv "USER") nil) "*POP3 maildrop.") (defvar pop3-mailhost (or (getenv "MAILHOST") nil) @@ -195,9 +192,31 @@ Return the response string if optional second argument is non-nil." (forward-char))) (set-marker end nil)) +(eval-when-compile (defvar parse-time-months)) + +;; Copied from message-make-date. +(defun pop3-make-date (&optional now) + "Make a valid date header. +If NOW, use that time instead." + (require 'parse-time) + (let* ((now (or now (current-time))) + (zone (nth 8 (decode-time now))) + (sign "+")) + (when (< zone 0) + (setq sign "-") + (setq zone (- zone))) + (concat + (format-time-string "%d" now) + ;; The month name of the %b spec is locale-specific. Pfff. + (format " %s " + (capitalize (car (rassoc (nth 4 (decode-time now)) + parse-time-months)))) + (format-time-string "%Y %H:%M:%S " now) + ;; We do all of this because XEmacs doesn't have the %z spec. + (format "%s%02d%02d" sign (/ zone 3600) (/ (% zone 3600) 60))))) + (defun pop3-munge-message-separator (start end) "Check to see if a message separator exists. If not, generate one." - (if (not (fboundp 'message-make-date)) (autoload 'message-make-date "message")) (save-excursion (save-restriction (narrow-to-region start end) @@ -208,7 +227,7 @@ Return the response string if optional second argument is non-nil." )) (let ((from (mail-strip-quoted-names (mail-fetch-field "From"))) (date (split-string (or (mail-fetch-field "Date") - (message-make-date)) + (pop3-make-date)) " ")) (From_)) ;; sample date formats I have seen @@ -234,7 +253,10 @@ Return the response string if optional second argument is non-nil." (substring From_ (match-end 0))))) (goto-char (point-min)) (insert From_) - (re-search-forward "\n\n") + (if (search-forward "\n\n" nil t) + nil + (goto-char (point-max)) + (insert "\n")) (narrow-to-region (point) (point-max)) (let ((size (- (point-max) (point-min)))) (goto-char (point-min)) @@ -277,19 +299,21 @@ Return the response string if optional second argument is non-nil." ;; TRANSACTION STATE -(defvar pop3-md5-program "md5" - "*Program to encode its input in MD5.") - -(defun pop3-md5 (string) - (with-temp-buffer - (insert string) - (call-process-region (point-min) (point-max) - (or shell-file-name "/bin/sh") - t (current-buffer) nil - "-c" pop3-md5-program) - ;; The meaningful output is the first 32 characters. - ;; Don't return the newline that follows them! - (buffer-substring (point-min) (+ (point-min) 32)))) +(eval-and-compile + (if (fboundp 'md5) + (defalias 'pop3-md5 'md5) + (defvar pop3-md5-program "md5" + "*Program to encode its input in MD5.") + + (defun pop3-md5 (string) + (with-temp-buffer + (insert string) + (call-process-region (point-min) (point-max) + pop3-md5-program + t (current-buffer) nil) + ;; The meaningful output is the first 32 characters. + ;; Don't return the newline that follows them! + (buffer-substring 1 33))))) (defun pop3-stat (process) "Return the number of messages in the maildrop and the maildrop's size." -- 2.11.4.GIT