Synch with SLIM 1.14.
authorokada <okada>
Fri, 1 Feb 2002 10:10:59 +0000 (10:10 +0000)
committerokada <okada>
Fri, 1 Feb 2002 10:10:59 +0000 (10:10 +0000)
* eword-encode.el (mime-header-encode-method-alist): New variable.
(mime-encode-field-body): Use `mime-header-encode-method-alist'.
(mime-encode-header-in-buffer): Error if cannot encode.

ChangeLog
eword-encode.el

index a67b36f..3167a91 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-02-01  Kenichi OKADA  <okada@opaopa.org>
+
+       * eword-encode.el (mime-header-encode-method-alist): New variable.
+       (mime-encode-field-body): Use `mime-header-encode-method-alist'.
+       (mime-encode-header-in-buffer): Error if cannot encode.
+
 2001-11-03  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
 
        * hmac-md5.el: Removed kludge for Emacs 21 prerelease versions.
index f075db3..83ff53a 100644 (file)
 
 (defvar mime-header-default-charset-encoding "Q")
 
+(defvar mime-header-encode-method-alist
+  '((eword-encode-address-list
+     . (Reply-To
+       From Sender
+       Resent-Reply-To Resent-From
+       Resent-Sender To Resent-To
+       Cc Resent-Cc Bcc Resent-Bcc
+       Dcc))
+    (eword-encode-in-reply-to . (In-Reply-To))
+    (eword-encode-structured-field-body . (Mime-Version User-Agent))
+    (eword-encode-unstructured-field-body)))
 
 ;;; @ encoded-text encoder
 ;;;
@@ -603,25 +614,22 @@ encoded-word.  ASCII token is not encoded."
   (setq field-body (std11-unfold-string field-body))
   (if (string= field-body "")
       ""
-    (let (start)
+    (let ((method-alist mime-header-encode-method-alist)
+         start ret)
       (if (symbolp field-name)
          (setq start (1+ (length (symbol-name field-name))))
        (setq start (1+ (length field-name))
              field-name (intern (capitalize field-name))))
-      (cond ((memq field-name
-                  '(Reply-To
-                    From Sender
-                    Resent-Reply-To Resent-From
-                    Resent-Sender To Resent-To
-                    Cc Resent-Cc Bcc Resent-Bcc
-                    Dcc))
-            (eword-encode-address-list field-body start))
-           ((eq field-name 'In-Reply-To)
-            (eword-encode-in-reply-to field-body start))
-           ((memq field-name '(Mime-Version User-Agent))
-            (eword-encode-structured-field-body field-body start))
-           (t
-            (eword-encode-unstructured-field-body field-body start))))))
+      (while (car method-alist)
+       (if (or (not (cdr (car method-alist)))
+               (memq field-name
+                     (cdr (car method-alist))))
+           (progn
+             (setq ret
+                   (apply (caar method-alist) (list field-body start)))
+             (setq method-alist nil)))
+       (setq method-alist (cdr method-alist)))
+      ret)))
 (defalias 'eword-encode-field-body 'mime-encode-field-body)
 (make-obsolete 'eword-encode-field-body 'mime-encode-field-body)
 
@@ -666,12 +674,16 @@ It refer variable `mime-field-encoding-method-alist'."
               (let ((method (eword-find-field-encoding-method
                              (downcase field-name))))
                 (cond ((eq method 'mime)
-                       (let ((field-body
-                              (buffer-substring-no-properties bbeg end)
-                              ))
-                         (delete-region bbeg end)
-                         (insert (mime-encode-field-body field-body
-                                                         field-name))))
+                       (let* ((field-body
+                              (buffer-substring-no-properties bbeg end))
+                              (encoded-body
+                               (mime-encode-field-body
+                                field-body field-name)))
+                         (if (not encoded-body)
+                             (error "Cannot encode %s:%s"
+                                    field-name field-body)
+                           (delete-region bbeg end)
+                           (insert encoded-body))))
                       (code-conversion
                        (let ((cs
                               (or (mime-charset-to-coding-system