*** empty log message ***
[gnus] / lisp / mm-util.el
index bcba15b..1db5d60 100644 (file)
@@ -24,6 +24,9 @@
 
 ;;; Code:
 
+(defvar mm-default-coding-system nil
+  "The default coding system to use.")  
+
 (defvar mm-known-charsets '(iso-8859-1)
   "List of known charsets.")
 
    '((decode-coding-string . (lambda (s a) s))
      (encode-coding-string . (lambda (s a) s))
      (encode-coding-region . ignore)
-     (decode-coding-region . ignore)
      (coding-system-list . ignore)
+     (decode-coding-region . ignore)
      (char-int . identity)
      (device-type . ignore)
      (coding-system-equal . equal)
      (annotationp . ignore)
+     (set-buffer-file-coding-system . ignore)
      (make-char
       . (lambda (charset int)
          (int-to-char int)))
           prompt (mapcar (lambda (s) (list (symbol-name (car s))))
                          mm-mime-mule-charset-alist)))))))
 
+(defvar mm-coding-system-list nil)
+(defun mm-get-coding-system-list ()
+  "Get the coding system list."
+  (or mm-coding-system-list
+      (setq mm-coding-system-list (mm-coding-system-list))))
+
 (defvar mm-charset-coding-system-alist
   (let ((rest
-        '((us-ascii . iso-8859-1)
-          (gb2312 . cn-gb-2312)
+        '((gb2312 . cn-gb-2312)
           (iso-2022-jp-2 . iso-2022-7bit-ss2)
           (x-ctext . ctext)))
-       (systems (mm-coding-system-list))
+       (systems (mm-get-coding-system-list))
        dest)
     (while rest
       (let ((pair (car rest)))
     dest)
   "Charset/coding system alist.")
 
-
 (defun mm-mule-charset-to-mime-charset (charset)
   "Return the MIME charset corresponding to MULE CHARSET."
   (let ((alist mm-mime-mule-charset-alist)
@@ -133,11 +141,14 @@ used as the line break code type of the coding system."
     (setq charset (intern (format "%s-%s" charset lbt))))
   (cond
    ;; Running in a non-MULE environment.
-   ((and (null (mm-coding-system-list))
+   ((and (null (mm-get-coding-system-list))
         (memq charset mm-known-charsets))
     charset)
+   ;; ascii
+   ((eq charset 'us-ascii)
+    'ascii)
    ;; Check to see whether we can handle this charset.
-   ((memq charset (mm-coding-system-list))
+   ((memq charset (mm-get-coding-system-list))
     charset)
    ;; Nope.
    (t
@@ -160,17 +171,15 @@ used as the line break code type of the coding system."
   (when (fboundp 'set-buffer-multibyte)
     (set-buffer-multibyte t)))
 
-(defun mm-insert-rfc822-headers (charset encoding)
-  "Insert text/plain headers with CHARSET and ENCODING."
-  (insert "MIME-Version: 1.0\n")
-  (insert "Content-Type: text/plain; charset=\""
-         (downcase (symbol-name charset)) "\"\n")
-  (insert "Content-Transfer-Encoding: "
-         (downcase (symbol-name encoding)) "\n"))
-
 (defun mm-mime-charset (charset b e)
   (if (fboundp 'coding-system-get)
       (or
+       (and
+       mm-default-coding-system
+       (let ((safe (coding-system-get mm-default-coding-system
+                                      'safe-charsets)))
+         (or (eq safe t) (memq charset safe)))
+       (coding-system-get mm-default-coding-system 'mime-charset))
        (coding-system-get
        (get-charset-property charset 'prefered-coding-system)
        'mime-charset)