tm 7.95.
authormorioka <morioka>
Tue, 10 Mar 1998 06:30:38 +0000 (06:30 +0000)
committermorioka <morioka>
Tue, 10 Mar 1998 06:30:38 +0000 (06:30 +0000)
22 files changed:
ChangeLog
Makefile
README.en
TM-CFG
TM-MK [new file with mode: 0644]
doc/tm-edit-en.info [new file with mode: 0644]
doc/tm-edit-en.sgml [new file with mode: 0644]
doc/tm-edit-en.texi
doc/tm-en.info
doc/tm-en.sgml
doc/tm-en.texi
doc/tm-ja.info
doc/tm-ja.sgml
doc/tm-ja.texi
doc/tm-view-en.info [new file with mode: 0644]
doc/tm-view-en.sgml [new file with mode: 0644]
doc/tm-view-en.texi [new file with mode: 0644]
tm-bbdb.el
tm-def.el
tm-edit.el
tm-ew-d.el
tm-ew-e.el

index e5a8fe6..6e1f5b9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,113 @@
+Wed Dec  4 05:42:36 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * emu: Version 7.37 was released.
+       * bitmap-mule: Version 7.15 was released.
+       * tl: Version 7.61.14 was released.
+       * MU: Version 0.36 was released.
+       * tm: Version 7.95 was released.
+       * tm-vm: Version 7.76 was released.
+       * gnus-mime: Version 0.12.1 was released.
+       * sinfo: Version 3.3 was released.
+
+Wed Dec  4 05:32:48 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile: Add bitmap-mule/.
+
+Wed Dec  4 05:15:10 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile: gnus-mime/*.ol and gnus-mime/*.tex were abolished.
+
+Wed Dec  4 05:13:13 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile: gnus-mime/mk-gnus-mime -> gnus-mime/Gnus-MIME-MK.
+
+Wed Dec  4 05:10:43 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile: Add sinfo (SGML based Emacs info system).
+
+Wed Dec  4 04:49:14 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * tm-ew-d.el, tm-ew-e.el:
+       - RFC 1522 -> RFC 2047.
+       - Keywords were modified.
+
+       * tm-edit.el: RFC 1521 and 1522 -> RFC 2045, 2046, 2047, 2048 and
+       2049.
+
+Mon Dec  2 22:02:43 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * tm-ew-d.el (mime-eword/decode-region): Regexp to find
+       linear-white-space divides two encoded-words was changed.
+
+Mon Dec  2 19:15:36 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * doc/tm-ja.sgml:
+       - RFC 1521, 1522 -> RFC 2045 .. 2049.
+       - Delete ``What is MIME?'' and ``How is MIME?''.
+
+Mon Dec  2 16:07:55 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * README.en:
+       - Separate tm-gnus and gnus-mime.
+       - RFC 1522 -> RFC 2047.
+
+Mon Dec  2 15:29:41 1996  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
+
+       * tm-ew-d.el (mime/unfolding): Save LWSP-char.
+
+Sat Nov 30 18:40:09 1996  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
+
+       * tm-bbdb.el: Trailing whitespace was stripped.
+
+Fri Nov 29 23:41:10 1996  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
+
+       * tm-bbdb.el (tm-bbdb/pop-up-bbdb-buffer): Use `framepop-banish'
+       if framepop is enabled.
+       (Suggested by Marc Girod <girod@trshp.trs.ntc.nokia.com>
+       [tm-en:975])
+
+Wed Nov 27 15:15:16 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile: tl/etl8x16-bitmap.bdf was moved to ../bitmap-mule/.
+
+Wed Nov 27 11:50:51 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile: tm/inst-tm was renamed to tm/TM-MK.
+
+Wed Nov 27 11:48:53 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * TM-MK: Renamed from inst-tm.
+
+Wed Nov 27 11:47:49 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * inst-tm: Add ../bitmap/.
+
+Wed Nov 27 11:45:46 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * TM-CFG: `TM_PACKAGE_PREFIX' and `TM_LISPDIR' were abolished.
+
+Tue Nov 26 18:45:51 1996  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
+
+       * tm-bbdb.el: 'bbdb is required implicitly.
+
+       * tm-ew-d.el (mime/decode-encoded-word): Catch errors.
+       (mime/decode-encoded-text): Check validity of encoded-word.
+
+       * tm-def.el (base64-token-regexp): padding character (`=') was
+       removed.
+       (base64-token-padding-regexp): New variable; including padding
+       character.
+       (mime/B-encoded-text-regexp): Use `base64-token-padding-regexp'.
+
+Tue Nov 26 12:45:24 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * TM-CFG: add ../bitmap-mule/.
+
+Mon Nov 18 12:11:15 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile: forgot to add gnus-mime/mk-gnus-mime. (^_^;;;
+
+\f
 Sat Nov 16 07:51:41 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
        * emu: Version 7.34 was released.
@@ -8,6 +118,8 @@ Sat Nov 16 07:51:41 1996  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
        * tm-gnus: Version 7.27.3 was released.
        * gnus-mime: Version 0.12 was released.
 
+       * Makefile: Add emu package.
+
        * tm-edit.el (mime-editor/signing-type): Use `pgp-elkins' as
        default value.
        (mime-editor/encrypting-type): Use `pgp-elkins' as default value.
index 136a549..909bc54 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
 #
-# $Id: Makefile,v 7.30 1996/10/16 00:35:29 morioka Exp morioka $
+# $Id: Makefile,v 7.40 1996/12/04 05:42:36 morioka Exp morioka $
 #
 
-VERSION = 7.94
+VERSION = 7.95
 
 SHELL  = /bin/sh
 MAKE   = make
@@ -22,7 +22,7 @@ PREFIX        = NONE
 EXEC_PREFIX =
 
 TM_FILES = tm/README.en tm/ChangeLog \
-               tm/Makefile tm/inst-tm tm/TM-ELS tm/TM-CFG \
+               tm/Makefile tm/TM-MK tm/TM-ELS tm/TM-CFG \
                tm/tm-def.el \
                tm/tm-eword.el tm/tm-ew-d.el tm/tm-ew-e.el \
                tm/tm-view.el tm/tm-parse.el \
@@ -45,9 +45,9 @@ TM_MH_E_FILES =       tm-mh-e/Makefile tm-mh-e/mk-tmh tm-mh-e/TMH-ELS \
                tm-mh-e/*.ol tm-mh-e/*.texi tm-mh-e/*.info tm-mh-e/*.tex
 
 GNUS_MIME_FILES = gnus-mime/Makefile gnus-mime/*-path \
-               gnus-mime/Gnus-MIME-ELS gnus-mime/*.el \
+               gnus-mime/Gnus-MIME-* gnus-mime/*.el \
                gnus-mime/*.sgml gnus-mime/*.texi gnus-mime/*.info \
-               gnus-mime/*.ol gnus-mime/*.tex gnus-mime/ChangeLog
+               gnus-mime/ChangeLog
 
 TM_GNUS_FILES =        tm-gnus/Makefile tm-gnus/*-path tm-gnus/mk-tgnus \
                tm-gnus/TGNUS-ELS tm-gnus/*.el tm-gnus/ChangeLog \
@@ -62,23 +62,29 @@ TM_MUA_FILES =      $(TM_MH_E_FILES) $(GNUS_MIME_FILES) $(TM_GNUS_FILES) \
 
 MEL_FILES = mel/*.el mel/Makefile mel/mk-mel mel/MEL-ELS mel/ChangeLog
 
-MU_FILES = mu/*.el mu/MU-ELS mu/ChangeLog
+MU_FILES =     mu/MU-ELS mu/*.el mu/ChangeLog
 
-TL_FILES = tl/README.en tl/Makefile tl/mk-tl tl/TL-ELS \
-               tl/*.el tl/*.bdf \
-               tl/doc/*.ol tl/doc/*.tex tl/doc/*.texi tl/ChangeLog
+TL_FILES =     tl/README.en tl/Makefile tl/mk-tl tl/TL-ELS \
+               tl/*.el tl/doc/*.ol tl/doc/*.tex tl/doc/*.texi tl/ChangeLog
 
-EMU_FILES = emu/EMU-ELS emu/*.el emu/ChangeLog
+BITMAP_FILES = bitmap-mule/BITMAP-* bitmap-mule/Makefile \
+               bitmap-mule/*.el bitmap-mule/*.bdf \
+               bitmap-mule/README.* bitmap-mule/ChangeLog
+
+EMU_FILES =    emu/EMU-ELS emu/*.el emu/ChangeLog
+
+SINFO_FILES =  sinfo/SINFO-* sinfo/Makefile \
+               sinfo/*.dtd sinfo/*.el sinfo/*-mapping sinfo/ChangeLog
 
 FILES  = $(TM_FILES) $(TM_MUA_FILES) $(MEL_FILES) $(MU_FILES) \
-               $(TL_FILES) $(EMU_FILES)
+               $(TL_FILES) $(BITMAP_FILES) $(EMU_FILES) $(SINFO_FILES)
 
 elc:
-       $(EMACS) $(FLAGS) -l inst-tm -f compile-tm $(PREFIX) $(EXEC_PREFIX)
+       $(EMACS) $(FLAGS) -l TM-MK -f compile-tm $(PREFIX) $(EXEC_PREFIX)
 #      $(SHELL) .gnus-compile
 
 install-elc:   elc
-       $(EMACS) $(FLAGS) -l inst-tm -f install-tm $(PREFIX) $(EXEC_PREFIX)
+       $(EMACS) $(FLAGS) -l TM-MK -f install-tm $(PREFIX) $(EXEC_PREFIX)
 
 
 all:   $(UTILS) $(DVI) elc
@@ -101,7 +107,7 @@ ps: ol2
 
 
 install:       $(UTILS) methods install-elc
-       $(EMACS) $(FLAGS) -l inst-tm -f install-execs $(PREFIX) $(EXEC_PREFIX)
+       $(EMACS) $(FLAGS) -l TM-MK -f install-execs $(PREFIX) $(EXEC_PREFIX)
 
 
 clean:
index 1e92bc7..223903e 100644 (file)
--- a/README.en
+++ b/README.en
@@ -1,7 +1,7 @@
 [README for tm (English Version)]
 by MORIOKA Tomohiko <morioka@jaist.ac.jp>
 and KOBAYASHI Shuhei <shuhei-k@jaist.ac.jp>
-$Id: README.en,v 7.24 1996/10/14 09:33:14 morioka Exp $
+$Id: README.en,v 7.25 1996/12/02 16:07:55 morioka Exp $
 
 1 What's tm?
 
@@ -55,11 +55,12 @@ $Id: README.en,v 7.24 1996/10/14 09:33:14 morioka Exp $
                - tm-ew-e.el : MIME encoded-word encoder
        - tm-def  : definition module for tm
        - tm-MUAs : MIME extender for MUAs
-               - tm-mh-e  : tm-MUA for mh-e
-               - tm-gnus  : tm-MUA for GNUS
-               - tm-rmail : tm-MUA for RMAIL
-               - tm-vm    : tm-MUA for vm
-               - tm-mail  : tm-MUA library module for mail-mode
+               - tm-mh-e   : tm-MUA for mh-e
+               - gnus-mime : tm-MUA for Gnus
+               - tm-gnus   : tm-MUA for GNUS
+               - tm-rmail  : tm-MUA for RMAIL
+               - tm-vm     : tm-MUA for vm
+               - tm-mail   : tm-MUA library module for mail-mode
        - mime-setup: set up module for MIME
                - tm-setup: set up only reading
 
@@ -74,21 +75,7 @@ $Id: README.en,v 7.24 1996/10/14 09:33:14 morioka Exp $
 please modify the variables `PREFIX' and `EXEC_PREFIX'.
 
 
-4.2 tm-gnus (optional)
-
-  If you use optional GNUS or Gnus, which is not included in the Emacs
-distribution, you must edit the following files before running make.
-
-    If you use Emacs 18.* and GNUS 3.*, please edit tm/gnus/g3-path.
-
-    If you use Emacs 18.* and GNUS 4.*, please edit tm/gnus/g4-path.
-
-    If you use Gnus 5.[01].*, please edit tm/gnus/g5-path.
-
-    If you use Gnus 5.2.*, please edit tm/gnus/s-path.
-
-
-4.3 edit external methods (optional)
+4.2 edit external methods (optional)
 
   You can edit external methods in `tm/methods/' directory for your
 environment.
@@ -107,7 +94,7 @@ ftp://thumper.bellcore.com/pub/nsb).  If you don't have the metamail
 package, please modify tmdecode to use decode-b instead of mmencode.
 
 
-4.4 make
+4.3 make
 
   Run `make all'.
 
@@ -117,7 +104,7 @@ package, please modify tmdecode to use decode-b instead of mmencode.
        % make all EMACS=mule
 
 
-4.5 install
+4.4 install
 
   Run `make install'.
 
@@ -132,25 +119,24 @@ package, please modify tmdecode to use decode-b instead of mmencode.
   Please insert `(load "mime-setup")' in ~/.emacs.
 
 
-6.1 automatic MIME preview support
+6.1 gnus-mime
 
-  tm-gnus provides automatic MIME preview feature for GNUS 3.15 or
-later, Gnus 5.0.*, Gnus 5.1, and Gnus 5.2.
+  gnus-mime provides automatic MIME preview feature for Gnus.
 
   If you don't want to use automatic MIME preview feature, please
 insert in ~/.emacs:
 
-       (setq tm-gnus/automatic-mime-preview nil)
+       (setq gnus-show-mime nil)
 
-  In addition, Gnus 5.2 has automatic MIME preview supporting feature. 
-Of course, tm-gnus provides this feature for other GNUS and Gnus, but
-it is unnatural.
+  In addition, Gnus 5.2 is designed to support automatic MIME preview
+feature.  Of course, gnus-mime provides this feature for Gnus 5.0.*
+and Gnus 5.1.*, but it is unnatural.
 
-  When automatic MIME preview mode, GNUS and Gnus do MIME processing
-if a message has a Mime-Version field. If it does not have one, GNUS
-and Gnus does not do MIME processing, in default.
+  When automatic MIME preview mode, Gnus do MIME processing if a
+message has a Mime-Version field.  If it does not have one, Gnus does
+not do MIME processing, in default.
 
-  Gnus 5.0.*, 5.1 and Gnus 5.2 have a variable `gnus-strict-mime'. If
+  Gnus 5.0.*, 5.1 and Gnus 5.2 have a variable `gnus-strict-mime'.  If
 you insert
 
        (setq gnus-strict-mime nil)
@@ -159,12 +145,23 @@ Gnus does MIME processing even if a message does not have a
 Mime-Version field.
 
   In Gnus 5.2, if `gnus-strict-mime' is not nil, variable
-`gnus-decode-encoded-word-method' is called. tm-gnus uses it to decode
-RFC 1522 encoded-words. So it is not necessary to reset
+`gnus-decode-encoded-word-method' is called.  gnus-mime uses it to
+decode RFC 2047 encoded-words.  So it is not necessary to reset
 `gnus-strict-mime'.
 
 
-6.2 VM
+6.2 tm-gnus
+
+  tm-gnus provides automatic MIME preview feature for GNUS 3.15 or
+later.
+
+  If you don't want to use automatic MIME preview feature, please
+insert in ~/.emacs:
+
+       (setq tm-gnus/automatic-mime-preview nil)
+
+
+6.3 VM
 
   If you use vm, please insert `(require 'tm-vm)' in ~/.vm.
 
@@ -172,7 +169,7 @@ RFC 1522 encoded-words. So it is not necessary to reset
 (require 'tm-vm) *after* (bbdb-insinuate-vm).
 
 
-6.3 PGP
+6.4 PGP
 
   If you have the PGP and Mailcrypt packages, you can use PGP with
 MIME. Currently, PGP/MIME (RFC 2015) and draft-kazu-pgp-mime-00.txt
@@ -223,7 +220,7 @@ please insert into ~/.emacs:
 ======================================================================
 
 
-6.4 code sample for hilit19
+6.5 code sample for hilit19
 
 ======================================================================
 (cond (window-system
@@ -263,7 +260,7 @@ please insert into ~/.emacs:
 ======================================================================
 
 
-6.5 code sample for browse-url
+6.6 code sample for browse-url
 
   If you have browse-url.el (included in Gnus 5.*, September Gnus and
 Emacs 19.30 or later), you can use URL button in
@@ -338,7 +335,6 @@ and its mirrors:
 
 10 TODO
 
-- MUA specific key binding system for mime/viewer-mode
 - better identification calculus system as successor of atype system
 - development of internal method for message/external-body based on
   tm-ftp
diff --git a/TM-CFG b/TM-CFG
index 7d7b37b..a02be28 100644 (file)
--- a/TM-CFG
+++ b/TM-CFG
@@ -1,6 +1,6 @@
 ;;; -*-Emacs-Lisp-*-
 ;;;
-;;; $Id: TM-CFG,v 7.24 1996/11/15 12:12:47 morioka Exp $
+;;; $Id: TM-CFG,v 7.26 1996/11/27 11:45:46 morioka Exp $
 ;;;
 
 (defvar default-load-path load-path)
@@ -9,7 +9,8 @@
                          (lambda (path)
                            (expand-file-name path (getenv "PWD"))
                            ))
-                        '("." "../emu" "../tl" "../mu" "../mel"
+                        '("." "../emu" "../tl" "../bitmap-mule"
+                          "../mu" "../mel"
                           "../tm-mh-e" "../gnus-mime" "../tm-gnus"
                           "../tm-mail" "../tm-vm")
                         )
     (expand-file-name "../../../.." exec-directory)
     ))
 
-;; Please specify tm package prefix [optional]
-(setq TM_PACKAGE_PREFIX "")
-
 ;; Please specify tl prefix [optional]
 ;;(setq TL_PREFIX "tl")
 (setq TL_PREFIX
          "tl"
        ""))
 
+;; Please specify prefix for ``bitmap-mule'' [optional]
+(setq BITMAP_PREFIX "bitmap")
+
 ;; Please specify MU prefix [optional]
 (setq MU_PREFIX "mu")
 
 ;;
 ;;     <LISPDIR> = <PREFIX>/DATA_PREFIX/<install-elisp-prefix>/
 ;;     <LISPDIR>/mime-setup.{el|elc}
-;;     <LISPDIR>/<TM_PACKAGE_PREFIX>/<TL_PREFIX>/  --- tl  lisp files
-;;     <LISPDIR>/<TM_PACKAGE_PREFIX>/<MU_PREFIX>/  --- MU lisp files
-;;     <LISPDIR>/<TM_PACKAGE_PREFIX>/<MEL_PREFIX>/ --- MEL lisp files
-;;     <LISPDIR>/<TM_PACKAGE_PREFIX>/<TM_PREFIX>/  --- tm  lisp files
+;;     <LISPDIR>/<TL_PREFIX>/          --- tl lisp files
+;;     <LISPDIR>/<BITMAP_PREFIX>/      --- bitmap lisp files
+;;     <LISPDIR>/<MU_PREFIX>/          --- MU lisp files
+;;     <LISPDIR>/<MEL_PREFIX>/         --- MEL lisp files
+;;     <LISPDIR>/<TM_PREFIX>/          --- tm lisp files
 ;;
 ;; For example, if <PREFIX> = "/usr/local" and you use Emacs 19.34,
 ;;
 ;;     <LISPDIR> = /usr/local/share/emacs/site-lisp/
 ;;     /usr/local/share/emacs/site-lisp/mime-setup.{el|elc}
-;;     /usr/local/share/emacs/site-lisp/     --- tl  lisp files
-;;     /usr/local/share/emacs/site-lisp/mu/  --- MU lisp files
-;;     /usr/local/share/emacs/site-lisp/mel/ --- MEL lisp files
-;;     /usr/local/share/emacs/site-lisp/tm/  --- tm  lisp files
+;;     /usr/local/share/emacs/site-lisp/       --- tl  lisp files
+;;     /usr/local/share/emacs/site-lisp/mu/    --- MU lisp files
+;;     /usr/local/share/emacs/site-lisp/mel/   --- MEL lisp files
+;;     /usr/local/share/emacs/site-lisp/tm/    --- tm  lisp files
 ;;
 ;; For example, if <PREFIX> = "~/" and you use XEmacs,
 ;;
 ;; Please specify mime-setup.{el|elc} install path.
 (setq SETUP_FILE_DIR LISPDIR)
 
-(setq TM_LISPDIR (expand-file-name TM_PACKAGE_PREFIX LISPDIR))
-
-(setq TL_DIR (expand-file-name TL_PREFIX TM_LISPDIR))
-(setq MU_DIR (expand-file-name MU_PREFIX TM_LISPDIR))
-(setq MEL_DIR (expand-file-name MEL_PREFIX TM_LISPDIR))
-(setq TM_KERNEL_DIR (expand-file-name TM_PREFIX TM_LISPDIR))
-(setq TM_MHE_DIR TM_KERNEL_DIR)
-(setq TM_GNUS_DIR TM_KERNEL_DIR)
-(setq Gnus_MIME_DIR TM_KERNEL_DIR)
-(setq TM_MAIL_DIR TM_KERNEL_DIR)
-(setq TM_VM_DIR TM_KERNEL_DIR)
+(setq TL_DIR           (expand-file-name TL_PREFIX     LISPDIR))
+(setq BITMAP_DIR       (expand-file-name BITMAP_PREFIX LISPDIR))
+(setq MU_DIR           (expand-file-name MU_PREFIX     LISPDIR))
+(setq MEL_DIR          (expand-file-name MEL_PREFIX    LISPDIR))
+(setq TM_KERNEL_DIR    (expand-file-name TM_PREFIX     LISPDIR))
+(setq TM_MHE_DIR       TM_KERNEL_DIR)
+(setq TM_GNUS_DIR      TM_KERNEL_DIR)
+(setq Gnus_MIME_DIR    TM_KERNEL_DIR)
+(setq TM_MAIL_DIR      TM_KERNEL_DIR)
+(setq TM_VM_DIR                TM_KERNEL_DIR)
 
 (cond ((member LISPDIR default-load-path)
-       (if (string-equal TM_PACKAGE_PREFIX "")
-          (setq TL_RELATIVE_DIR TL_PREFIX
-                MU_RELATIVE_DIR MU_PREFIX
-                MEL_RELATIVE_DIR MEL_PREFIX
-                TM_KERNEL_RELATIVE_DIR TM_PREFIX
-                )
-        (setq TL_RELATIVE_DIR
-              (concat (file-name-as-directory TM_PACKAGE_PREFIX) TL_PREFIX))
-        (setq MU_RELATIVE_DIR
-              (concat (file-name-as-directory TM_PACKAGE_PREFIX) MU_PREFIX))
-        (setq MEL_RELATIVE_DIR
-              (concat (file-name-as-directory TM_PACKAGE_PREFIX) MEL_PREFIX))
-        (setq TM_KERNEL_RELATIVE_DIR
-              (concat (file-name-as-directory TM_PACKAGE_PREFIX) TM_PREFIX))
-        ))
+       (setq TL_RELATIVE_DIR           TL_PREFIX)
+       (setq BITMAP_RELATIVE_DIR       BITMAP_PREFIX)
+       (setq MU_RELATIVE_DIR           MU_PREFIX)
+       (setq MEL_RELATIVE_DIR          MEL_PREFIX)
+       (setq TM_KERNEL_RELATIVE_DIR    TM_PREFIX)
+       )
       ((string-match (concat "^" (regexp-quote (expand-file-name "~/")))
                     LISPDIR)
-       (setq TL_RELATIVE_DIR (concat "~/" (file-relative-name TL_DIR "~/")))
-       (setq MU_RELATIVE_DIR (concat "~/" (file-relative-name MU_DIR "~/")))
-       (setq MEL_RELATIVE_DIR (concat "~/" (file-relative-name MEL_DIR "~/")))
+       (setq TL_RELATIVE_DIR
+            (concat "~/" (file-relative-name TL_DIR "~/"))
+            )
+       (setq BITMAP_RELATIVE_DIR
+            (concat "~/" (file-relative-name BITMAP_DIR "~/"))
+            )
+       (setq MU_RELATIVE_DIR
+            (concat "~/" (file-relative-name MU_DIR "~/"))
+            )
+       (setq MEL_RELATIVE_DIR
+            (concat "~/" (file-relative-name MEL_DIR "~/"))
+            )
        (setq TM_KERNEL_RELATIVE_DIR
-            (concat "~/" (file-relative-name TM_KERNEL_DIR "~/")))
+            (concat "~/" (file-relative-name TM_KERNEL_DIR "~/"))
+            )
        )
       (t
-       (setq TL_RELATIVE_DIR TL_DIR)
-       (setq MU_RELATIVE_DIR MU_DIR)
-       (setq MEL_RELATIVE_DIR MEL_DIR)
-       (setq TM_KERNEL_RELATIVE_DIR TM_KERNEL_DIR)
+       (setq TL_RELATIVE_DIR           TL_DIR)
+       (setq BITMAP_RELATIVE_DIR       BITMAP_DIR)
+       (setq MU_RELATIVE_DIR           MU_DIR)
+       (setq MEL_RELATIVE_DIR          MEL_DIR)
+       (setq TM_KERNEL_RELATIVE_DIR    TM_KERNEL_DIR)
        ))
-(setq TM_MHE_RELATIVE_DIR TM_KERNEL_RELATIVE_DIR)
-(setq TM_GNUS_RELATIVE_DIR TM_KERNEL_RELATIVE_DIR)
+(setq TM_MHE_RELATIVE_DIR      TM_KERNEL_RELATIVE_DIR)
+(setq TM_GNUS_RELATIVE_DIR     TM_KERNEL_RELATIVE_DIR)
 
 (setq TM_GNUS_INSTALL_FORMAT
       "cd gnus; PWD=`pwd` make install-19 EMACS=%s TMDIR19=%s")
diff --git a/TM-MK b/TM-MK
new file mode 100644 (file)
index 0000000..36c4f07
--- /dev/null
+++ b/TM-MK
@@ -0,0 +1,173 @@
+;;; -*-Emacs-Lisp-*-
+;;;
+;;; $Id: TM-MK,v 7.43 1996/11/27 11:48:53 morioka Exp morioka $
+;;;
+
+(defun config-tm ()
+  (let (prefix exec-prefix)
+    (setq prefix (car command-line-args-left))
+    (and prefix
+        (not (string-equal "NONE" prefix))
+        (progn
+          (defvar PREFIX prefix)
+          (setq command-line-args-left (cdr command-line-args-left))
+          )
+        (setq exec-prefix (car command-line-args-left))
+        (progn
+          (defvar EXEC_PREFIX exec-prefix)
+          ;;(setq command-line-args-left (cdr command-line-args-left))
+          )))
+  (load-file "TM-CFG")
+  (load-file "../emu/EMU-ELS")
+  (load-file "../tl/TL-ELS")
+  (load-file "../bitmap-mule/BITMAP-ELS")
+  (load-file "../mu/MU-ELS")
+  (load-file "../mel/MEL-ELS")
+  (load-file "TM-ELS")
+  (load-file "../tm-mh-e/TMH-ELS")
+  (load-file "../tm-mail/TMAIL-ELS")
+  (load-file "../tm-vm/TM-VM-ELS")
+  (princ (format "PREFIX=%s\tEXEC_PREFIX=%s\n" PREFIX EXEC_PREFIX))
+  )
+
+(defun directory= (dir1 dir2)
+  (string= (file-name-as-directory dir1)(file-name-as-directory dir2))
+  )
+
+(defun make-mime-setup (lisp-dir
+                       tl-path bitmap-path mu-path mel-path tm-path)
+  (let ((buf (find-file "mime-setup.el.in")))
+    (goto-char (point-min))
+    (re-search-forward "^;;; Code:\n" nil t)
+    (setq buffer-read-only nil)
+
+    ;; generate tl setting
+    (let ((tl-absolute-path (expand-file-name tl-path lisp-dir)))
+      (if (MEMBER tl-absolute-path default-load-path
+                 :test (function directory=))
+         (insert "\n(require \'tl-misc)")
+       (insert
+        (format "
+
+\(let ((load-path
+       (cons \"%s\"
+             load-path)))
+  (require \'tl-misc)
+  )
+\(add-path \"%s\")" tl-absolute-path tl-path))
+       ))
+    
+    ;; generate MU load-path setting
+    (and bitmap-modules
+        (or (MEMBER (expand-file-name bitmap-path lisp-dir)
+                    default-load-path
+                    :test (function directory=))
+            (insert (format "\n(add-path \"%s\")" bitmap-path))
+            ))
+    
+    ;; generate MU load-path setting
+    (or (MEMBER (expand-file-name mu-path lisp-dir)
+               default-load-path
+               :test (function directory=))
+       (insert (format "\n(add-path \"%s\")" mu-path))
+       )
+    
+    ;; generate MEL load-path setting
+    (or (MEMBER (expand-file-name mel-path lisp-dir)
+               default-load-path
+               :test (function directory=))
+       (insert (format "\n(add-path \"%s\")" mel-path))
+       )
+    
+    ;; generate tm load-path setting
+    (or (MEMBER (expand-file-name tm-path lisp-dir)
+               default-load-path
+               :test (function directory=))
+       (insert (format "\n(add-path \"%s\")" tm-path))
+       )
+    
+    ;; generate tm external-methods path setting
+    (or (string= METHOD_DIR exec-directory)
+       (insert
+        (format "\n(defvar mime-viewer/external-progs %s)"
+                (let ((dir (file-relative-name METHOD_DIR data-directory)))
+                  (if (< (length dir) (length METHOD_DIR))
+                      (concat "\n  (expand-file-name \""
+                              dir "\" data-directory)")
+                    (setq dir (file-relative-name METHOD_DIR
+                                                  (expand-file-name "~/")))
+                    (if (< (length dir) (length METHOD_DIR))
+                        (concat "\n  (expand-file-name \"~/"
+                                dir "\")")
+                      (concat "\"" METHOD_DIR "\"")
+                      )))
+                ))
+       )
+    (write-file "mime-setup.el")
+    ))
+
+(defun compile-tm ()
+  (config-tm)
+  (print load-path)
+  (require 'mel-u)
+  (require 'tm-edit)
+  (load "rmailsum")
+  (require 'tm-mh-e)
+  (make-mime-setup LISPDIR
+                  TL_RELATIVE_DIR BITMAP_RELATIVE_DIR
+                  MU_RELATIVE_DIR MEL_RELATIVE_DIR
+                  TM_KERNEL_RELATIVE_DIR)
+  (compile-elisp-modules emu-modules           "../emu")
+  (compile-elisp-modules tl-modules            "../tl")
+  (compile-elisp-modules bitmap-modules                "../bitmap-mule")
+  (compile-elisp-modules mu-modules-to-compile "../mu")
+  (compile-elisp-modules mel-modules           "../mel")
+  (compile-elisp-modules tm-modules-to-compile ".")
+  (compile-elisp-modules tm-mh-e-modules       "../tm-mh-e")
+  (compile-elisp-module  'mime-setup           ".")
+  (require 'gnus)
+  (cond ((featurep 'gnus-ems)
+        (load "../gnus-mime/Gnus-MIME-ELS")
+        (compile-elisp-modules gnus-mime-modules-to-compile "../gnus-mime")
+        )
+       (t
+         (load "../tm-gnus/TGNUS-ELS")
+        (compile-elisp-modules tm-gnus-modules-to-compile "../tm-gnus")
+        ))
+  (compile-elisp-modules tm-mail-modules       "../tm-mail")
+  (compile-elisp-modules tm-vm-modules-to-compile "../tm-vm")
+  )
+
+(defun install-tm ()
+  (config-tm)
+  (princ (format "%s\n" emacs-version))
+  (install-elisp-modules emu-modules    "../emu"       EMU_DIR)
+  (install-elisp-modules tl-modules     "../tl"        TL_DIR)
+  (install-elisp-modules bitmap-modules "../bitmap-mule" BITMAP_DIR)
+  (install-elisp-modules mu-modules     "../mu"        MU_DIR)
+  (install-elisp-modules mel-modules    "../mel"       MEL_DIR)
+  (install-elisp-modules tm-modules     "."            TM_KERNEL_DIR)
+  (install-elisp-modules tm-mh-e-modules "../tm-mh-e"  TM_MHE_DIR)
+  ;;(install-tm-gnus)
+  (require 'gnus)
+  (cond ((featurep 'gnus-ems)
+        (load "../gnus-mime/Gnus-MIME-ELS")
+        (install-elisp-modules gnus-mime-modules
+                               "../gnus-mime" Gnus_MIME_DIR)
+        )
+       (t
+        (load "../tm-gnus/TGNUS-ELS")
+        (install-elisp-modules tm-gnus-modules "../tm-gnus" TM_GNUS_DIR)
+        ))
+  (install-elisp-modules tm-mail-modules "../tm-mail"  TM_MAIL_DIR)
+  (install-elisp-modules tm-vm-modules  "../tm-vm"     TM_VM_DIR)
+  (install-elisp-modules '(mime-setup)  "."    SETUP_FILE_DIR)
+  )
+
+(defun install-execs ()
+  (config-tm)
+  (install-files BINS      BIN_SRC_DIR    BIN_DIR)
+  (install-files METHODS METHOD_SRC_DIR METHOD_DIR nil t)
+  )
+
+;;; TM-MK ends here
diff --git a/doc/tm-edit-en.info b/doc/tm-edit-en.info
new file mode 100644 (file)
index 0000000..6c09eca
--- /dev/null
@@ -0,0 +1,483 @@
+Info file: tm-edit-en.info,    -*-Text-*-
+produced by `texinfo-format-buffer'
+from file `tm-edit-en.texi'
+using `texinfmt.el' version 2.32 of 19 November 1993.
+
+
+\1f
+File: tm-edit-en.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
+
+tm-edit 7.90 Reference Manual (English Version)
+***********************************************
+
+
+This file documents tm-edit, a MIME composer for GNU Emacs.
+
+* Menu:
+
+* Introduction::                What is tm-edit?
+* mime/editor-mode::            
+* single-part operations::      
+* enclosure operation::         
+* other operations of mime/editor-mode::  
+* transfer level::              
+* header::                      Using non-ASCII characters in header
+* PGP::                         
+* Concept Index::               
+* Function Index::              
+* Variable Index::              
+
+
+\1f
+File: tm-edit-en.info, Node: Introduction, Next: mime/editor-mode, Prev: Top, Up: Top
+
+What is tm-edit?
+****************
+
+*tm-edit* is a general MIME composer for GNU
+Emacs.
+
+tm-edit is based on mime.el by UMEDA Masanobu
+<umerin@mse.kyutech.ac.jp>, who is famous as the author of GNUS.
+tm-edit expands following points from `mime.el':
+
+   * based on RFC 1521/1522
+   * Content-Disposition field (*Note (tm-en)Content-Disposition::) (RFC
+     1806) supports
+   * nested multi-part message (*Note (tm-en)multipart::)
+   * PGP (*Note PGP::) (PGP/MIME (RFC 2015) based on security multipart
+     (RFC 1847) and application/pgp based on traditional PGP)
+   * strength automatic specification for parameter of file type
+
+
+In tm-MUA (*Note (tm-en)tm-MUA::), you can edit MIME message easily to
+use tm-edit.
+
+
+
+\1f
+File: tm-edit-en.info, Node: mime/editor-mode, Next: single-part operations, Prev: Introduction, Up: Top
+
+mime/editor-mode
+****************
+
+*mime/editor-mode* is a minor mode to
+compose MIME message.  In this mode, *tag* represents various kinds of
+data, you can edit multi part (*Note (tm-en)multipart::) message.
+
+There are 2 kinds of tags:
+
+   *  single-part tag
+   *  multi-part tag
+
+single-part tag represents single part, this form is following:
+
+             --[[TYPE/SUBTYPE;PARAMETERS][ENCODING]
+             OPTIONAL-FIELDS]
+
+TYPE/SUBTYPE and PARAMETERS indicates type/subtype and parameters of
+Content-Type field (*Note (tm-en)Content-Type field::).  TYPE/SUBTYPE is
+required, PARAMETERS is optional.
+
+ENCODING indicates Content-Transfer-Encoding field.  It is optional too.
+
+OPTIONAL-FIELDS is to represent another fields except Content-Type field
+and Content-Transfer-Encoding field.
+
+multi-part tags represent multi part (*Note (tm-en)multipart::).  They
+consist of a pair of *multi-part beginning tag* and *multi-part ending
+tag*.
+
+multi-part beginning tag's form is following:
+
+             --<<TYPE>>-{
+
+multi-part ending tag's form is following:
+
+             --}-<<TYPE>>
+
+A region from multi-part beginning tag to multi-part ending tag is
+called as *enclosure*.
+
+
+
+\1f
+File: tm-edit-en.info, Node: single-part operations, Next: enclosure operation, Prev: mime/editor-mode, Up: Top
+
+single-part operations
+**********************
+
+Operations to make single-part are following:
+
+`C-c C-x C-t'
+     Insert single-part tag indicates text part.
+
+`C-c C-x C-i'
+     Insert file as a MIME attachment.
+
+`C-c C-x C-e'
+     Insert external part.
+
+`C-c C-x C-v'
+     Record audio input until `C-g' is pressed, and insert as a audio
+     part. (It requires /dev/audio in default.)
+
+`C-c C-x C-y'
+     Insert current (mail or news) message. (It is MUA depended.)
+
+`C-c C-x C-m'
+     Insert mail message. (It is MUA depended.)
+
+`C-c C-x C-w, C-c C-x C-s'
+     Insert signature.
+
+`C-c C-x C-k'
+     Insert PGP (*Note PGP::) public key. (It requires Mailcrypt
+     package.)
+
+`C-c C-x t'
+     Insert any single-part tag.
+
+
+
+
+
+\1f
+File: tm-edit-en.info, Node: enclosure operation, Next: other operations of mime/editor-mode, Prev: single-part operations, Up: Top
+
+enclosure operation
+*******************
+
+Operations to make enclosure are following:
+
+`C-c C-x a'
+     Enclose specified region as multipart/alternative.
+
+`C-c C-x p'
+     Enclose specified region as multipart/parallel.
+
+`C-c C-x m'
+     Enclose specified region as multipart/mixed.
+
+`C-c C-x d'
+     Enclose specified region as multipart/digest.
+
+`C-c C-x s'
+     Digital-sign to specified region. (cf. *Note PGP::)
+
+`C-c C-x e'
+     Encrypt to specified region. (cf. *Note PGP::)
+
+`C-c C-x q'
+     avoid to encode tags in specified region.  In other words, tags is
+     interpreted as such string.  (In current version, it may be
+     incomplete.  Maybe PGP-signature does not work for this enclosure.)
+
+
+
+
+
+\1f
+File: tm-edit-en.info, Node: other operations of mime/editor-mode, Next: transfer level, Prev: enclosure operation, Up: Top
+
+other operations of mime/editor-mode
+************************************
+
+There are another operations in mime/editor-mode.
+
+`C-c C-c'
+     Send current editing message.
+
+`C-c C-x C-p'
+     Preview current editing message. (*Note
+     (tm-view-en)mime/viewer-mode::)
+
+`C-c C-x C-z'
+     Exit mime/editor-mode. (M-x mime/edit-again is available to
+     reedit.)
+
+`C-c C-x ?'
+     Display help message.
+
+`C-c C-x /'
+     Set current editing message to enable automatic splitting or not.
+     Form of automatic split messages is message/partial.
+
+`C-c C-x 7'
+     Set 7bit (*Note (tm-en)7bit::) to transfer level (*Note transfer
+     level::).
+
+`C-c C-x 8'
+     Set 8bit (*Note (tm-en)8bit::) to transfer level (*Note transfer
+     level::).
+
+`C-c C-x v'
+     Set current editing message to digital-sign or not. (cf. *Note
+     PGP::)
+
+`C-c C-x h'
+     Set current editing message to encrypt or not. (cf. *Note PGP::)
+
+
+
+
+
+\1f
+File: tm-edit-en.info, Node: transfer level, Next: header, Prev: other operations of mime/editor-mode, Up: Top
+
+transfer level
+**************
+
+Contents inserted in a message are represented by 7bit (*Note
+(tm-en)7bit::), 8bit (*Note (tm-en)8bit::) or binary (*Note
+(tm-en)binary::).
+
+If a message is translated by 7bit-through MTA (*Note (tm-en)MTA::),
+there is no need to encode 7bit data, but 8bit and binary data must be
+encoded to 7bit data.
+
+Similarly, if a message is translated by 8bit-through MTA, there is no
+need to encode 7bit or 8bit data, but binary data must be encoded to
+7bit or 8bit data.
+
+*[Memo]*
+     EBCDIC MTA breaks 7bit data, so in this case, 7bit data must be
+     encoded by base64.  But I don't know EBCDIC. (^_^;
+
+     Similarly, I wish ASCII-printable only MTA and code-conversion MTA
+     disappeared. (^_^;
+
+     Maybe there are binary-through MTA, but I think it is not major.
+
+*transfer level* represents how range data is
+available.  tm-edit has a variable `mime-editor/transfer-level' to
+represent transfer level.
+
+
+ -- Variable: mime-editor/transfer-level
+
+     transfer level.
+
+     If transfer level of a data is over it, a data is encoded to 7bit.
+
+     Currently, 7 or 8 is available.  Default value is 7.
+
+     In extension plan, EBCDIC will be 5, ASCII printable only will be
+     6, binary will be 9.  But it will not be implemented.
+
+
+
+*[Memo]*
+     transfer level is only for body, not for header (*Note header::).
+     RFC 1521 extends RFC 822 (*Note (tm-en)RFC 822::) to use 8bit data
+     in body, but it requires to use us-ascii (*Note (tm-en)us-ascii::)
+     in header.
+
+
+
+
+\1f
+File: tm-edit-en.info, Node: header, Next: PGP, Prev: transfer level, Up: Top
+
+Using non-ASCII characters in header
+************************************
+
+RFC 1522 (*Note (tm-en)RFC 1522::) defines representation of non-ASCII
+characters in header.
+
+It is a format called as *encoded-word* (*Note (tm-en)encoded-word::),
+it is available to represent every non-ASCII characters by 7bit (*Note
+(tm-en)7bit::) to declare MIME charset (*Note (tm-en)MIME charset::).
+
+
+* Menu:
+
+* evil setting in header::      If you can not allow encoded-word
+* API about header::            Functions and variables about header
+
+
+\1f
+File: tm-edit-en.info, Node: evil setting in header, Next: API about header, Prev: header, Up: header
+
+If you can not allow encoded-word
+=================================
+
+It is wrong to use "raw" non-ASCII characters in header not to use
+encoded-word.  Because there are various kinds of coded character set
+(*Note (tm-en)Coded character set::) in the Internet, so we can not
+distinguish them if MIME charset (*Note (tm-en)MIME charset::) is not
+declared.
+
+For example, we can not distinguish iso-8859-1 (*Note
+(tm-en)iso-8859-1::) and iso-8859-2 (*Note (tm-en)iso-8859-2::) if MIME
+charset is not declared.
+
+However you can not permit to use encoded-word, please set to following
+variables:
+
+
+ -- Variable: mime/field-encoding-method-alist
+
+     Association-list to specify field encoding method.  Its key is
+     field-name, value is encoding method.
+
+     field-name allows string or `t' meaning any fields.
+
+     Encoding method allows following: `nil' means no-conversion, `mime'
+     means to convert as encoded-word, symbol represent MIME charset
+     means to convert as the coded character set instead of to convert
+     as encoded-word.
+
+     field-name is searched from string.  If it is not found, `t' is
+     used.
+
+     Default value of `mime/field-encoding-method-alist' is following:
+
+          (("X-Nsubject" . iso-2022-jp-2)
+           ("Newsgroups" . nil)
+           (t            . mime)
+           ))
+
+
+In addition, if you want to specify by coded character set instead of
+field, please use `mime-eword/charset-encoding-alist'.  (cf. *Note API
+about header::)
+
+
+
+
+\1f
+File: tm-edit-en.info, Node: API about header, Prev: evil setting in header, Up: header
+
+Functions and variables about header
+====================================
+
+ -- Command: mime/encode-message-header &optional CODE-CONVERSION
+
+     It translate non-ASCII characters in message header of current
+     buffer into network representation, such as encoded-words.
+
+     If CODE-CONVERSION is non-`nil', field not encoded by encoded-word
+     is converted by `mime/field-encoding-method-alist'.
+
+
+ -- Function: mime/encode-field STRING
+
+     It encodes STRING into encoded-words as a field.
+
+     Long lines are folded.
+
+
+ -- Function: mime-eword/encode-string STRING &optional COLUMN MODE
+
+     It encodes STRING into encoded-words.
+
+     Long lines are folded.
+
+     COLUMN specifies start column.  If it is omitted, 0 is used.
+
+     MODE specifies where STRING is in.  Available values are `text',
+     `comment', `phrase'.  If it is omitted, `phrase' is used.
+
+
+ -- Variable: mime-eword/charset-encoding-alist
+
+     Association-list of symbol represent MIME charset vs. nil, `"B"' or
+     `"Q"'.
+
+     `nil' means not to encode as encoded-word.  `"B"' means to use
+     B-encoding.  `"Q"' means to use Q-encoding.
+
+
+
+
+\1f
+File: tm-edit-en.info, Node: PGP, Next: Concept Index, Prev: header, Up: Top
+
+PGP
+***
+
+tm-edit provides PGP encryption, signature and inserting public-key
+features based on *PGP/MIME* (*Note (tm-en)PGP/MIME::) (RFC 2015) or
+*PGP-kazu* (*Note (tm-en)PGP-kazu::) (draft-kazu-pgp-mime-00.txt).
+
+This feature requires pgp command and Mailcrypt package (*Note
+(mailcrypt)::).
+
+If you want to use this feature, please set `pgp-elkins' or `pgp-kazu'
+to variable `mimed-editor/signing-type' and variable
+`mime-editor/encrypting-type'.
+
+If `pgp-elkins' is specified, PGP/MIME is used.  If `pgp-kazu' is
+specified, PGP-kazu is used.
+
+
+ -- Variable: mime-editor/signing-type
+
+     Format of PGP signature.
+
+     It allows `pgp-elkins' or `pgp-kazu'.
+
+     Default value is `nil'.
+
+
+ -- Variable: mime-editor/encrypting-type
+
+     Format of PGP encryption.
+
+     It allows `pgp-elkins' or `pgp-kazu'.
+
+     Default value is `nil'.
+
+
+
+
+\1f
+File: tm-edit-en.info, Node: Concept Index, Next: Function Index, Prev: PGP, Up: Top
+
+Concept Index
+*************
+
+
+* Menu:
+
+* enclosure:                    mime/editor-mode.       42.
+* encoded-word:                 header.                 9.
+* mime/editor-mode:             mime/editor-mode.       5.
+* multi-part beginning tag:     mime/editor-mode.       30.
+* multi-part ending tag:        mime/editor-mode.       31.
+* PGP-kazu:                     PGP.                    8.
+* PGP/MIME:                     PGP.                    7.
+* tag:                          mime/editor-mode.       7.
+* tm-edit:                      Introduction.           5.
+* transfer level:               transfer level.         26.
+
+
+\1f
+File: tm-edit-en.info, Node: Function Index, Next: Variable Index, Prev: Concept Index, Up: Top
+
+Function Index
+**************
+
+
+* Menu:
+
+* mime/encode-field:            API about header.       16.
+* mime/encode-message-header:   API about header.       7.
+* mime-eword/encode-string:     API about header.       23.
+
+
+\1f
+File: tm-edit-en.info, Node: Variable Index, Prev: Function Index, Up: Top
+
+Variable Index
+**************
+
+
+* Menu:
+
+* mime-editor/encrypting-type:  PGP.                    31.
+* mime-editor/signing-type:     PGP.                    22.
+* mime-editor/transfer-level:   transfer level.         33.
+* mime-eword/charset-encoding-alist: API about header.  35.
+* mime/field-encoding-method-alist: evil setting in header.  21.
diff --git a/doc/tm-edit-en.sgml b/doc/tm-edit-en.sgml
new file mode 100644 (file)
index 0000000..3ee593b
--- /dev/null
@@ -0,0 +1,448 @@
+<!doctype sinfo system>
+<!-- $Id: tm-edit-en.sgml,v 1.1 1996/11/29 19:09:44 morioka Exp $ -->
+<head>
+<title>tm-edit 7.90 Reference Manual (English Version)
+<author>MORIOKA Tomohiko <mail>morioka@jaist.ac.jp</mail>
+<date>1996/10/11
+
+<toc>
+</head>
+
+<body>
+
+<abstract>
+<p>
+This file documents tm-edit, a MIME composer for GNU Emacs.
+</abstract>
+
+
+<h1> What is tm-edit?
+<node> Introduction
+<p>
+<concept>tm-edit</concept> is a general MIME composer for GNU Emacs.
+<p>
+tm-edit is based on mime.el by UMEDA Masanobu
+<mail>umerin@mse.kyutech.ac.jp</mail>, who is famous as the author of
+GNUS.  tm-edit expands following points from <file>mime.el</file>:
+
+<ul>
+<li>
+based on RFC 1521/1522
+<li>
+<a file="tm-en" node="Content-Disposition">Content-Disposition
+field</a> (RFC 1806) supports
+<li>
+nested <a file="tm-en" node="multipart">multi-part message</a>
+<li>
+<dref>PGP</dref> (PGP/MIME (RFC 2015) based on security multipart (RFC
+1847) and application/pgp based on traditional PGP)
+<li>
+strength automatic specification for parameter of file type
+</ul>
+
+<p>
+In <dref file="tm-en">tm-MUA</dref>, you can edit MIME message easily
+to use tm-edit.
+
+
+<h1> mime/editor-mode
+<node> mime/editor-mode
+<p>
+<concept>mime/editor-mode</concept> is a minor mode to compose MIME
+message.  In this mode, <concept>tag</concept> represents various
+kinds of data, you can edit <a file="tm-en" node="multipart">multi
+part</a> message.
+<p>
+There are 2 kinds of tags:
+
+<ul>
+<li> single-part tag
+<li> multi-part tag
+</ul>
+<p>
+single-part tag represents single part, this form is following:
+
+<verb>
+        --[[TYPE/SUBTYPE;PARAMETERS][ENCODING]
+        OPTIONAL-FIELDS]
+</verb>
+<p>
+TYPE/SUBTYPE and PARAMETERS indicates type/subtype and parameters of
+<dref file="tm-en">Content-Type field</dref>.  TYPE/SUBTYPE is
+required, PARAMETERS is optional.
+<p>
+ENCODING indicates Content-Transfer-Encoding field.  It is optional
+too.
+<p>
+OPTIONAL-FIELDS is to represent another fields except Content-Type
+field and Content-Transfer-Encoding field.
+<p>
+multi-part tags represent <a file="tm-en" node="multipart">multi
+part</a>.  They consist of a pair of <concept>multi-part beginning
+tag</concept> and <concept>multi-part ending tag</concept>.
+<p>
+multi-part beginning tag's form is following:
+<p>
+<verb>
+        --<<TYPE>>-{
+</verb>
+<p>
+multi-part ending tag's form is following:
+<p>
+<verb>
+        --}-<<TYPE>>
+</verb>
+<p>
+A region from multi-part beginning tag to multi-part ending tag is
+called as <concept>enclosure</concept>.
+
+
+<h1> single-part operations
+<node> single-part operations
+<p>
+Operations to make single-part are following:
+
+<kl>
+<kt>C-c C-x C-t
+<kd>
+Insert single-part tag indicates text part.
+</kd>
+<kt>C-c C-x C-i
+<kd>
+Insert file as a MIME attachment.
+</kd>
+<kt>C-c C-x C-e
+<kd>
+Insert external part.
+</kd>
+<kt>C-c C-x C-v
+<kd>
+Record audio input until <kbd>C-g</kbd> is pressed, and insert as a
+audio part. (It requires /dev/audio in default.)
+</kd>
+<kt>C-c C-x C-y
+<kd>
+Insert current (mail or news) message. (It is MUA depended.)
+</kd>
+<kt>C-c C-x C-m
+<kd>
+Insert mail message. (It is MUA depended.)
+</kd>
+<dt><key>C-c C-x C-w</key>, <key>C-c C-x C-s</key>
+<dd>
+Insert signature.
+</dd>
+<kt>C-c C-x C-k
+<kd>
+Insert <dref>PGP</dref> public key. (It requires Mailcrypt package.)
+</kd>
+<kt>C-c C-x t
+<kd>
+Insert any single-part tag.
+</kd>
+</kl>
+
+
+<h1> enclosure operation
+<node> enclosure operation
+<p>
+Operations to make enclosure are following:
+
+<kl>
+<kt>C-c C-x a
+<kd>
+Enclose specified region as multipart/alternative.
+</kd>
+<kt>C-c C-x p
+<kd>
+Enclose specified region as multipart/parallel.
+</kd>
+<kt>C-c C-x m
+<kd>
+Enclose specified region as multipart/mixed.
+</kd>
+<kt>C-c C-x d
+<kd>
+Enclose specified region as multipart/digest.
+</kd>
+<kt>C-c C-x s
+<kd>
+Digital-sign to specified region. <cf node="PGP">
+</kd>
+<kt>C-c C-x e
+<kd>
+Encrypt to specified region. <cf node="PGP">
+<kt>C-c C-x q
+<kd>
+avoid to encode tags in specified region.  In other words, tags is
+interpreted as such string.  (In current version, it may be
+incomplete.  Maybe PGP-signature does not work for this enclosure.)
+</kl>
+
+
+<h1> other operations of mime/editor-mode
+<node> other operations of mime/editor-mode
+<p>
+There are another operations in mime/editor-mode.
+
+<kl>
+<kt>C-c C-c
+<kd>
+Send current editing message.
+</kd>
+<kt>C-c C-x C-p
+<kd>
+Preview current editing message. (<ref file="tm-view-en"
+node="mime/viewer-mode">)
+</kd>
+<kt>C-c C-x C-z
+<kd>
+Exit mime/editor-mode. (<key>M-x mime/edit-again</key> is available to
+reedit.)
+</kd>
+<kt>C-c C-x ?
+<kd>
+Display help message.
+</kd>
+<kt>C-c C-x /
+<kd>
+Set current editing message to enable automatic splitting or not.
+Form of automatic split messages is message/partial.
+</kd>
+<kt>C-c C-x 7
+<kd>
+Set <dref file="tm-en">7bit</dref> to <dref>transfer level</dref>.
+</kd>
+<kt>C-c C-x 8
+<kd>
+Set <dref file="tm-en">8bit</dref> to <dref>transfer level</dref>.
+</kd>
+<kt>C-c C-x v
+<kd>
+Set current editing message to digital-sign or not. <cf node="PGP">
+</kd>
+<kt>C-c C-x h
+<kd>
+Set current editing message to encrypt or not. <cf node="PGP">
+</kl>
+
+
+<h1> transfer level
+<node> transfer level
+<p>
+Contents inserted in a message are represented by <dref
+file="tm-en">7bit</dref>, <dref file="tm-en">8bit</dref> or <dref
+file="tm-en">binary</dref>.
+<p>
+If a message is translated by 7bit-through <dref
+file="tm-en">MTA</dref>, there is no need to encode 7bit data, but
+8bit and binary data must be encoded to 7bit data.
+<p>
+Similarly, if a message is translated by 8bit-through MTA, there is no
+need to encode 7bit or 8bit data, but binary data must be encoded to
+7bit or 8bit data.
+<p>
+<memo>
+EBCDIC MTA breaks 7bit data, so in this case, 7bit data must be
+encoded by base64.  But I don't know EBCDIC. (^_^;
+<p>
+Similarly, I wish ASCII-printable only MTA and code-conversion MTA
+disappeared. (^_^;
+<p>
+Maybe there are binary-through MTA, but I think it is not major.
+</memo>
+<p>
+<concept>transfer level</concept> represents how range data is
+available.  tm-edit has a variable
+<code>mime-editor/transfer-level</code> to represent transfer level.
+
+
+<defvar name="mime-editor/transfer-level">
+<p>
+transfer level.
+<p>
+If transfer level of a data is over it, a data is encoded to 7bit.
+<p>
+Currently, 7 or 8 is available.  Default value is 7.
+<p>
+In extension plan, EBCDIC will be 5, ASCII printable only will be 6,
+binary will be 9.  But it will not be implemented.
+</defvar>
+
+
+<memo>
+transfer level is only for body, not for <a node="header">header</a>.
+RFC 1521 extends <dref file="tm-en">RFC 822</dref> to use 8bit data in
+body, but it requires to use <dref file="tm-en">us-ascii</dref> in
+header.
+</memo>
+
+
+<h1> Using non-ASCII characters in header
+<node> header
+<p>
+<dref file="tm-en">RFC 1522</dref> defines representation of non-ASCII
+characters in header.
+<p>
+It is a format called as <a file="tm-en"
+node="encoded-word"><concept>encoded-word</concept></a>, it is
+available to represent every non-ASCII characters by <dref
+file="tm-en">7bit</dref> to declare <dref file="tm-en">MIME
+charset</dref>.
+
+
+<h2> If you can not allow encoded-word
+<node> evil setting in header
+<p>
+It is wrong to use ``raw'' non-ASCII characters in header not to use
+encoded-word.  Because there are various kinds of <a file="tm-en"
+node="Coded character set">coded character set</a> in the Internet, so
+we can not distinguish them if <dref file="tm-en">MIME charset</dref>
+is not declared.
+<p>
+For example, we can not distinguish <dref
+file="tm-en">iso-8859-1</dref> and <dref
+file="tm-en">iso-8859-2</dref> if MIME charset is not declared.
+<p>
+However you can not permit to use encoded-word, please set to
+following variables:
+
+
+<defvar name="mime/field-encoding-method-alist">
+<p>
+Association-list to specify field encoding method.  Its key is
+field-name, value is encoding method.
+<p>
+field-name allows string or <code>t</code> meaning any fields.
+<p>
+Encoding method allows following: <code>nil</code> means
+no-conversion, <code>mime</code> means to convert as encoded-word,
+symbol represent MIME charset means to convert as the coded character
+set instead of to convert as encoded-word.
+<p>
+field-name is searched from string.  If it is not found,
+<code>t</code> is used.
+<p>
+Default value of <code>mime/field-encoding-method-alist</code> is
+following:
+
+<lisp>
+(("X-Nsubject" . iso-2022-jp-2)
+ ("Newsgroups" . nil)
+ (t            . mime)
+ ))
+</lisp>
+</defvar>
+
+<p>
+In addition, if you want to specify by coded character set instead of
+field, please use <code>mime-eword/charset-encoding-alist</code>.
+<cf node="API about header">
+
+
+<h2> Functions and variables about header
+<node> API about header
+<p>
+<define type="Command" name="mime/encode-message-header">
+<opts> code-conversion
+<p>
+It translate non-ASCII characters in message header of current buffer
+into network representation, such as encoded-words.
+<p>
+If <var>code-conversion</var> is non-<code>nil</code>, field not
+encoded by encoded-word is converted by
+<code>mime/field-encoding-method-alist</code>.
+</define>
+
+<defun name="mime/encode-field">
+<args> string
+<p>
+It encodes <var>string</var> into encoded-words as a field.
+<p>
+Long lines are folded.
+</defun>
+
+<defun name="mime-eword/encode-string">
+<args> string <opts> column mode
+<p>
+It encodes <var>string</var> into encoded-words.
+<p>
+Long lines are folded.
+<p>
+<var>column</var> specifies start column.  If it is omitted, 0 is
+used.
+<p>
+<var>mode</var> specifies where <var>string</var> is in.  Available
+values are <code>text</code>, <code>comment</code>,
+<code>phrase</code>.  If it is omitted, <code>phrase</code> is used.
+</defun>
+
+<defvar name="mime-eword/charset-encoding-alist">
+<p>
+Association-list of symbol represent MIME charset vs. nil,
+<code>"B"</code> or <code>"Q"</code>.
+<p>
+<code>nil</code> means not to encode as encoded-word.  
+<code>"B"</code> means to use B-encoding.
+<code>"Q"</code> means to use Q-encoding.
+</defvar>
+
+
+<h1> PGP
+<node> PGP
+<p>
+tm-edit provides PGP encryption, signature and inserting public-key
+features based on <a file="tm-en"
+node="PGP/MIME"><concept>PGP/MIME</concept></a> (RFC 2015) or <a
+file="tm-en" node="PGP-kazu"><concept>PGP-kazu</concept></a>
+(draft-kazu-pgp-mime-00.txt).
+<p>
+This feature requires pgp command and <a file="mailcrypt">Mailcrypt
+package</a>.
+<p>
+If you want to use this feature, please set <code>pgp-elkins</code> or
+<code>pgp-kazu</code> to variable
+<code>mimed-editor/signing-type</code> and variable
+<code>mime-editor/encrypting-type</code>.
+<p>
+If <code>pgp-elkins</code> is specified, PGP/MIME is used.  If
+<code>pgp-kazu</code> is specified, PGP-kazu is used.
+
+
+<defvar name="mime-editor/signing-type">
+<p>
+Format of PGP signature.
+<p>
+It allows <code>pgp-elkins</code> or <code>pgp-kazu</code>.
+<p>
+Default value is <code>nil</code>.
+</defvar>
+
+<defvar name="mime-editor/encrypting-type">
+<p>
+Format of PGP encryption.
+<p>
+It allows <code>pgp-elkins</code> or <code>pgp-kazu</code>.
+<p>
+Default value is <code>nil</code>.
+</defvar>
+
+
+<h1> Concept Index
+<node> Concept Index
+
+<cindex>
+
+
+<h1> Function Index
+<node> Function Index
+
+<findex>
+
+
+<h1> Variable Index
+<node> Variable Index
+
+<vindex>
+
+</body>
index 7a369bd..b932eaa 100644 (file)
@@ -1,47 +1,78 @@
-@c $Id: tm-edit-en.texi,v 3.0 1996/05/08 12:43:50 morioka Exp $
+\input texinfo.tex
+@setfilename tm-edit-en.info
+@settitle{tm-edit 7.90 Reference Manual (English Version)}
+@titlepage
+@title tm-edit 7.90 Reference Manual (English Version)
+@author MORIOKA Tomohiko <morioka@@jaist.ac.jp>
+@subtitle 1996/10/11
+@end titlepage
+@node Top, Introduction, (dir), (dir)
+@top tm-edit 7.90 Reference Manual (English Version)
+
+@ifinfo
+
+This file documents tm-edit, a MIME composer for GNU Emacs.
+@end ifinfo
 
-@node tm-edit, encoded-word, tm-view, Top
-@comment  node-name,  next,  previous,  up
-@chapter tm-edit
-@cindex tm-edit
+@menu
+* Introduction::                What is tm-edit?
+* mime/editor-mode::            
+* single-part operations::      
+* enclosure operation::         
+* other operations of mime/editor-mode::  
+* transfer level::              
+* header::                      Using non-ASCII characters in header
+* PGP::                         
+* Concept Index::               
+* Function Index::              
+* Variable Index::              
+@end menu
 
-tm-edit is a general MIME viewer for GNU Emacs.
+@node Introduction, mime/editor-mode, Top, Top
+@chapter What is tm-edit?
+
+@cindex{tm-edit}@strong{tm-edit} is a general MIME composer for GNU
+Emacs.@refill
 
 tm-edit is based on mime.el by UMEDA Masanobu
-<umerin@@mse.kyutech.ac.jp>, who is famous as the author of GNUS.
-tm-edit expands following points from mime.el:
+<umerin@@mse.kyutech.ac.jp>, who is famous as the author of
+GNUS.  tm-edit expands following points from @file{mime.el}:
 
 @itemize @bullet
-@item based on RFC 1521/1522
-@item Content-Disposition field (RFC 1806) supports
-@item multi-part in multi-part
-@item PGP
-@item strength automatic specification for parameter of file type
+@item
+based on RFC 1521/1522
+@item
+Content-Disposition field (@ref{(tm-en)Content-Disposition}) (RFC 1806)
+supports
+@item
+nested multi-part message (@ref{(tm-en)multipart})
+@item
+PGP (@ref{PGP}) (PGP/MIME (RFC 2015) based on security multipart (RFC
+1847) and application/pgp based on traditional PGP)
+@item
+strength automatic specification for parameter of file type
 @end itemize
 
 
-@menu
-* mime/editor-mode::
-* single-part operations::
-* enclosure operation::
-* other operations of mime/editor-mode::
-@end menu
+In tm-MUA (@ref{(tm-en)tm-MUA}), you can edit MIME message easily to use
+tm-edit.
 
 
-@node mime/editor-mode, single-part operations, tm-edit, tm-edit
-@comment  node-name,  next,  previous,  up
-@section mime/editor-mode
-@cindex mime/editor-mode
+@node mime/editor-mode, single-part operations, Introduction, Top
+@chapter mime/editor-mode
 
-@emph{mime/editor-mode} is a minor mode to compose MIME message.
-In this mode, @emph{tag} represents various kinds of data, you can
-edit multi-part message.
+@cindex{mime/editor-mode}@strong{mime/editor-mode} is a minor mode to
+compose MIME message.  In this mode, @cindex{tag}@strong{tag} represents
+various kinds of data, you can edit multi part (@ref{(tm-en)multipart})
+message.@refill
 
-There are 2 kinds of @emph{tag}s:
+There are 2 kinds of tags:
 
 @itemize @bullet
-@item single-part tag
-@item multi-part tag
+@item
+ single-part tag
+@item
+ multi-part tag
 @end itemize
 
 single-part tag represents single part, this form is following:
@@ -52,36 +83,38 @@ single-part tag represents single part, this form is following:
 @end example
 
 TYPE/SUBTYPE and PARAMETERS indicates type/subtype and parameters of
-Content-Type field. TYPE/SUBTYPE is required, PARAMETERS is optional.
+Content-Type field (@ref{(tm-en)Content-Type field}).  TYPE/SUBTYPE is
+required, PARAMETERS is optional.@refill
 
-ENCODING indicates Content-Transfer-Encoding field. It is optional too.
+ENCODING indicates Content-Transfer-Encoding field.  It is optional
+too.@refill
 
-OPTIONAL-FIELDS is to represent another fields except Content-Type
-field and Content-Transfer-Encoding field.
+OPTIONAL-FIELDS is to represent another fields except Content-Type field
+and Content-Transfer-Encoding field.@refill
 
-multi-part tags represent multi part. They consist of a pair of 
-@emph{multi-part beginning tag} and @emph{multi-part ending tag}.
+multi-part tags represent multi part (@ref{(tm-en)multipart}).  They
+consist of a pair of @cindex{multi-part beginning tag}@strong{multi-part
+beginning tag} and @cindex{multi-part ending tag}@strong{multi-part
+ending tag}.@refill
 
-@emph{multi-part beginning tag}'s form is following:
+multi-part beginning tag's form is following:@refill
 
 @example
         --<<TYPE>>-@{
 @end example
 
-@emph{multi-part ending tag}'s form is following:
+multi-part ending tag's form is following:@refill
 
 @example
         --@}-<<TYPE>>
 @end example
 
 A region from multi-part beginning tag to multi-part ending tag is
-called as @emph{enclosure}.
+called as @cindex{enclosure}@strong{enclosure}.
 
 
-@node single-part operations, enclosure operation, mime/editor-mode, tm-edit
-@comment  node-name,  next,  previous,  up
-@section single-part operations
-@cindex single-part
+@node single-part operations, enclosure operation, mime/editor-mode, Top
+@chapter single-part operations
 
 Operations to make single-part are following:
 
@@ -96,8 +129,8 @@ Insert file as a MIME attachment.
 Insert external part.
 
 @item @key{C-c C-x C-v}
-Record audio input until @key{C-g} is pressed, and insert as a audio
-part. (It requires /dev/audio in default.)
+Record audio input until @kbd{C-g} is pressed, and insert as a
+audio part. (It requires /dev/audio in default.)
 
 @item @key{C-c C-x C-y}
 Insert current (mail or news) message. (It is MUA depended.)
@@ -105,22 +138,21 @@ Insert current (mail or news) message. (It is MUA depended.)
 @item @key{C-c C-x C-m}
 Insert mail message. (It is MUA depended.)
 
-@item @key{C-c C-x C-w, C-c C-x C-s}
+@item @key{C-c C-x C-w}, @key{C-c C-x C-s}
 Insert signature.
 
 @item @key{C-c C-x C-k}
-Insert PGP public key. (It requires Mailcrypt package.)
+Insert PGP (@ref{PGP}) public key. (It requires Mailcrypt package.)
 
 @item @key{C-c C-x t}
-Insert any  single-part tag.
+Insert any single-part tag.
+
 @end table
 
 
-@node enclosure operation, other operations of mime/editor-mode, single-part operations, tm-edit
-@comment  node-name,  next,  previous,  up
-@section enclosure operations
-@cindex multi-part
-@cindex enclosure
+
+@node enclosure operation, other operations of mime/editor-mode, single-part operations, Top
+@chapter enclosure operation
 
 Operations to make enclosure are following:
 
@@ -138,28 +170,22 @@ Enclose specified region as multipart/mixed.
 Enclose specified region as multipart/digest.
 
 @item @key{C-c C-x s}
-Digital-sign to specified region. (*1)
+Digital-sign to specified region. (cf. @ref{PGP})
 
 @item @key{C-c C-x e}
-Encrypt to specified region. (*1)
-@end table
+Encrypt to specified region. (cf. @ref{PGP})
 
-@b{[Notice]}
-@enumerate
-@item
-It requires Mailcrypt package and pgp package. In addition, please set
-symbol @code{pgp-elkins} or @code{pgp-kazu} to
-variable @code{mime-editor/signing-type} and
-@code{mime-editor/encrypting-type}.
+@item @key{C-c C-x q}
+avoid to encode tags in specified region.  In other words, tags is
+interpreted as such string.  (In current version, it may be
+incomplete.  Maybe PGP-signature does not work for this enclosure.)
+
+@end table
 
-@code{pgp-elkins} indicates draft-elkins-pem-pgp-02.txt,
-@code{pgp-kazu} indicates draft-kazu-pgp-mime-00.txt.
-@end enumerate
 
 
-@node other operations of mime/editor-mode,  , enclosure operation, tm-edit
-@comment  node-name,  next,  previous,  up
-@section Another operation in mime/editor-mode.
+@node other operations of mime/editor-mode, transfer level, enclosure operation, Top
+@chapter other operations of mime/editor-mode
 
 There are another operations in mime/editor-mode.
 
@@ -168,7 +194,7 @@ There are another operations in mime/editor-mode.
 Send current editing message.
 
 @item @key{C-c C-x C-p}
-Preview current editing message.
+Preview current editing message. (@ref{(tm-view-en)mime/viewer-mode})
 
 @item @key{C-c C-x C-z}
 Exit mime/editor-mode. (@key{M-x mime/edit-again} is available to
@@ -177,25 +203,249 @@ reedit.)
 @item @key{C-c C-x ?}
 Display help message.
 
-@item @key{M-x mime-editor/set-split}
+@item @key{C-c C-x /}
 Set current editing message to enable automatic splitting or not.
 Form of automatic split messages is message/partial.
 
-@item @key{M-x mime-editor/set-sign}
-Set current editing message to digital-sign or not. (*1)
+@item @key{C-c C-x 7}
+Set 7bit (@ref{(tm-en)7bit}) to transfer level (@ref{transfer level}).
+
+@item @key{C-c C-x 8}
+Set 8bit (@ref{(tm-en)8bit}) to transfer level (@ref{transfer level}).
+
+@item @key{C-c C-x v}
+Set current editing message to digital-sign or not. (cf. @ref{PGP})
+
+@item @key{C-c C-x h}
+Set current editing message to encrypt or not. (cf. @ref{PGP})
 
-@item @key{M-x mime-editor/set-encrypt}
-Set current editing message to encrypt or not. (*1)
 @end table
 
-@b{[Notice]}
-@enumerate
-@item
-It requires Mailcrypt package and pgp package. In addition, please set
-symbol @code{pgp-elkins} or @code{pgp-kazu} to
-variable @code{mime-editor/signing-type} and
-@code{mime-editor/encrypting-type}.
-
-@code{pgp-elkins} indicates draft-elkins-pem-pgp-02.txt,
-@code{pgp-kazu} indicates draft-kazu-pgp-mime-00.txt.
-@end enumerate
+
+
+@node transfer level, header, other operations of mime/editor-mode, Top
+@chapter transfer level
+
+Contents inserted in a message are represented by 7bit
+(@ref{(tm-en)7bit}), 8bit (@ref{(tm-en)8bit}) or binary
+(@ref{(tm-en)binary}).@refill
+
+If a message is translated by 7bit-through MTA (@ref{(tm-en)MTA}), there
+is no need to encode 7bit data, but 8bit and binary data must be encoded
+to 7bit data.@refill
+
+Similarly, if a message is translated by 8bit-through MTA, there is no
+need to encode 7bit or 8bit data, but binary data must be encoded to
+7bit or 8bit data.@refill
+
+@noindent
+@strong{[Memo]}
+@quotation
+EBCDIC MTA breaks 7bit data, so in this case, 7bit data must be
+encoded by base64.  But I don't know EBCDIC. (^_^;
+
+Similarly, I wish ASCII-printable only MTA and code-conversion MTA
+disappeared. (^_^;@refill
+
+Maybe there are binary-through MTA, but I think it is not major.
+@end quotation
+
+@cindex{transfer level}@strong{transfer level} represents how range data is
+available.  tm-edit has a variable
+@code{mime-editor/transfer-level} to represent transfer level.
+
+
+@defvar mime-editor/transfer-level
+
+transfer level.@refill
+
+If transfer level of a data is over it, a data is encoded to
+7bit.@refill
+
+Currently, 7 or 8 is available.  Default value is 7.@refill
+
+In extension plan, EBCDIC will be 5, ASCII printable only will be 6,
+binary will be 9.  But it will not be implemented.
+@end defvar
+
+
+
+@noindent
+@strong{[Memo]}
+@quotation
+transfer level is only for body, not for header (@ref{header}).  RFC
+1521 extends RFC 822 (@ref{(tm-en)RFC 822}) to use 8bit data in body,
+but it requires to use us-ascii (@ref{(tm-en)us-ascii}) in header.
+@end quotation
+
+
+
+@node header, PGP, transfer level, Top
+@chapter Using non-ASCII characters in header
+
+RFC 1522 (@ref{(tm-en)RFC 1522}) defines representation of non-ASCII
+characters in header.@refill
+
+It is a format called as @cindex{encoded-word}@strong{encoded-word}
+(@ref{(tm-en)encoded-word}), it is available to represent every
+non-ASCII characters by 7bit (@ref{(tm-en)7bit}) to declare MIME charset
+(@ref{(tm-en)MIME charset}).
+
+
+@menu
+* evil setting in header::      If you can not allow encoded-word
+* API about header::            Functions and variables about header
+@end menu
+
+@node evil setting in header, API about header, header, header
+@section If you can not allow encoded-word
+
+It is wrong to use ``raw'' non-ASCII characters in header not to use
+encoded-word.  Because there are various kinds of coded character set
+(@ref{(tm-en)Coded character set}) in the Internet, so we can not
+distinguish them if MIME charset (@ref{(tm-en)MIME charset}) is not
+declared.@refill
+
+For example, we can not distinguish iso-8859-1 (@ref{(tm-en)iso-8859-1})
+and iso-8859-2 (@ref{(tm-en)iso-8859-2}) if MIME charset is not
+declared.@refill
+
+However you can not permit to use encoded-word, please set to
+following variables:
+
+
+@defvar mime/field-encoding-method-alist
+
+Association-list to specify field encoding method.  Its key is
+field-name, value is encoding method.@refill
+
+field-name allows string or @code{t} meaning any fields.@refill
+
+Encoding method allows following: @code{nil} means no-conversion,
+@code{mime} means to convert as encoded-word, symbol represent MIME
+charset means to convert as the coded character set instead of to
+convert as encoded-word.@refill
+
+field-name is searched from string.  If it is not found, @code{t} is
+used.@refill
+
+Default value of @code{mime/field-encoding-method-alist} is
+following:
+
+@lisp
+(("X-Nsubject" . iso-2022-jp-2)
+ ("Newsgroups" . nil)
+ (t            . mime)
+ ))
+@end lisp
+@end defvar
+
+
+In addition, if you want to specify by coded character set instead of
+field, please use @code{mime-eword/charset-encoding-alist}.
+(cf. @ref{API about header})
+
+
+
+@node API about header,  , evil setting in header, header
+@section Functions and variables about header
+
+@deffn{Command} mime/encode-message-header &optional  code-conversion
+
+It translate non-ASCII characters in message header of current buffer
+into network representation, such as encoded-words.@refill
+
+If @var{code-conversion} is non-@code{nil}, field not encoded by
+encoded-word is converted by @code{mime/field-encoding-method-alist}.
+@end deffn
+
+
+@defun mime/encode-field string
+
+It encodes @var{string} into encoded-words as a field.@refill
+
+Long lines are folded.
+@end defun
+
+
+@defun mime-eword/encode-string string  &optional  column mode
+
+It encodes @var{string} into encoded-words.@refill
+
+Long lines are folded.@refill
+
+@var{column} specifies start column.  If it is omitted, 0 is
+used.@refill
+
+@var{mode} specifies where @var{string} is in.  Available values are
+@code{text}, @code{comment}, @code{phrase}.  If it is omitted,
+@code{phrase} is used.
+@end defun
+
+
+@defvar mime-eword/charset-encoding-alist
+
+Association-list of symbol represent MIME charset vs. nil, @code{"B"} or
+@code{"Q"}.@refill
+
+@code{nil} means not to encode as encoded-word.  @code{"B"} means to use
+B-encoding.  @code{"Q"} means to use Q-encoding.
+@end defvar
+
+
+
+@node PGP, Concept Index, header, Top
+@chapter PGP
+
+tm-edit provides PGP encryption, signature and inserting public-key
+features based on @cindex{PGP/MIME}@strong{PGP/MIME}
+(@ref{(tm-en)PGP/MIME}) (RFC 2015) or @cindex{PGP-kazu}@strong{PGP-kazu}
+(@ref{(tm-en)PGP-kazu}) (draft-kazu-pgp-mime-00.txt).@refill
+
+This feature requires pgp command and Mailcrypt package
+(@ref{(mailcrypt)}).@refill
+
+If you want to use this feature, please set @code{pgp-elkins} or
+@code{pgp-kazu} to variable @code{mimed-editor/signing-type} and
+variable @code{mime-editor/encrypting-type}.@refill
+
+If @code{pgp-elkins} is specified, PGP/MIME is used.  If
+@code{pgp-kazu} is specified, PGP-kazu is used.
+
+
+@defvar mime-editor/signing-type
+
+Format of PGP signature.@refill
+
+It allows @code{pgp-elkins} or @code{pgp-kazu}.@refill
+
+Default value is @code{nil}.
+@end defvar
+
+
+@defvar mime-editor/encrypting-type
+
+Format of PGP encryption.@refill
+
+It allows @code{pgp-elkins} or @code{pgp-kazu}.@refill
+
+Default value is @code{nil}.
+@end defvar
+
+
+
+@node Concept Index, Function Index, PGP, Top
+@chapter Concept Index
+
+@printindex cp
+
+@node Function Index, Variable Index, Concept Index, Top
+@chapter Function Index
+
+@printindex fn
+
+@node Variable Index,  , Function Index, Top
+@chapter Variable Index
+
+@printindex vr
+@bye
index 7f7faa8..a27d576 100644 (file)
@@ -49,65 +49,11 @@ Please read following about each topics:
 
 * Menu:
 
-* What is MIME?::               
-* How is MIME?::                
 * Glossary::                    
 
 
 \1f
-File: tm-en.info, Node: What is MIME?, Next: How is MIME?, Prev: Introduction, Up: Introduction
-
-What is MIME?
-=============
-
-*MIME* stands for *Multipurpose Internet Mail Extensions*, it is a
-proposed internet standard for including content and headers other than
-(ASCII) plain text in messages.
-
-Current MIME standard consists of RFC 1521 and RFC 1522.  RFC 1521
-describes multipurpose content in message bodies, while RFC 1522
-describes multilingual characters in headers.
-
-
-
-\1f
-File: tm-en.info, Node: How is MIME?, Next: Glossary, Prev: What is MIME?, Up: Introduction
-
-How is MIME?
-============
-
-In multipurpose message side, MIME can represent various contents such
-as images, sounds, videos, ... as against traditional Internet mail/news
-message can represent only (us-ascii (*Note us-ascii::)) plain text.
-
-Interestingly, MIME can send "procedure", such as ftp (*Note FTP::), ftp
-mail, file extraction, applying patch, ...
-
-# Of course, it has security problem.
-
-These various kinds of contents are defined by media types written in
-*Content-Type* (*Note Content-Type field::)
-field.  Namely MIME message has information about content in header.  So
-if reader defines processes for each content-type (*Note
-content-type::), he/she can display image, or play video or sound, or
-get file by ftp, or extract file, ... only read the message.
-
-In addition, MIME message can represent message includes plural parts,
-called *Multipart* (*Note multipart::) message.  So it is possible to
-include picture and sound in one message.
-
-MIME seems have philosophy of "declaration".  In other words, MIME is a
-message description language to represent various kinds of things uses
-us-ascii (*Note us-ascii::) as its "alphabet".  Encoded-word defined in
-RFC 1522 (*Note encoded-word::) is same.
-
-In addition, MUA displays only what it can understand and ignore what
-can not understand.
-
-
-
-\1f
-File: tm-en.info, Node: Glossary, Prev: How is MIME?, Up: Introduction
+File: tm-en.info, Node: Glossary, Prev: Introduction, Up: Introduction
 
 Glossary
 ========
@@ -130,7 +76,7 @@ Glossary
 * Coded character set::         Coded character set\e$B!JId9f2=J8;z=89g!K\e(B, Character code\e$B!JJ8;zId9f!K\e(B
 * Code extension::              Code extension\e$B!JId9f3HD%!K\e(B
 * Content-Disposition::         Content-Disposition field
-* content-type::                
+* media type::                  
 * Content-Type field::          
 * Emacs::                       
 * encoded-word::                
@@ -191,9 +137,12 @@ Glossary
 * RFC 934::                     
 * RFC 1036::                    
 * RFC 1153::                    
-* RFC 1521::                    RFC 1521 
 * RFC 1557::                    
 * RFC 1922::                    
+* RFC 2045::                    
+* RFC 2046::                    
+* RFC 2048::                    
+* RFC 2049::                    
 * plain text::                  
 * Security multipart::          
 * text/enriched::               
@@ -209,25 +158,24 @@ File: tm-en.info, Node: 7bit, Next: 8bit, Prev: Glossary, Up: Glossary
 7bit
 ----
 
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 127 \e$B$N@0?t$r;X$7$^$9!#\e(B
+*7bit* means any integer between 0 .. 127.
 
-0 \e$B$+$i\e(B 127 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B "7bit \e$B$N\e(B data" \e$B$H8F$S$^\e(B
-\e$B$9!#\e(B
+Any data represented by 7bit integers is called *7bit data*.
 
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31 \e$B$*$h$S\e(B 127 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$GI=8=$5$l$k6uGr$H\e(B 
-33 \e$B$+$i\e(B 126 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i$J$kJ8;zNs$N$3$H$r\e(B "7bit \e$B$NJ8;zNs\e(B" 
-\e$B$H8F$S$^$9!J$3$l$O\e(B ISO 2022 (*Note ISO 2022::) \e$B$N!V\e(B7 \e$BC10L7O!W$HF1MM$G$9!K!#\e(B
+Textual string consisted of Control characters between 0 .. 31 and 127,
+and space represented by 32, and graphic characters between 33 .. 236
+are called *7bit (textual) string*.
 
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B MTA (*Note MTA::) \e$B$O\e(B 7bit \e$B$N\e(B data \e$B$rE>Aw$G$-$k$N$G!"\e(B
-7bit \e$B$N\e(B data \e$B$O\e(B Quoted-Printable (*Note Quoted-Printable::) \e$B$d\e(B Base64
-(*Note Base64::) \e$B$H$$$C$?JQ49$r9T$o$J$/$F$b$=$N$^$^E>Aw$G$-$^$9!#\e(B
+Traditional Internet MTA (*Note MTA::) can translate 7bit data, so it is
+no need to translate by Quoted-Printable (*Note Quoted-Printable::) or
+Base64 (*Note Base64::) for 7bit data.
 
-\e$B$7$+$7!"\e(B7bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#19T\e(B
-\e$B$ND9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i\e(B
-\e$B$G$9!#$A$J$_$K!"\e(BRFC 821 (*Note RFC 821::) \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998
-byte \e$B0JFb$G$"$k$3$H$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-\e(B
-\e$B$N$"$k\e(B data, \e$BNc$($P!"\e(BPostscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B 
-encode\e$B$9$kI,MQ$,$"$j$^$9!#\e(B
+However if there are too long lines, it can not translate by 7bit MTA
+even if it is 7bit data.  RFC 821 (*Note RFC 821::) and RFC 2045 (*Note
+RFC 2045::) require lines in 7bit data must be less than 998 bytes.  So
+if a "7bit data" has a line more than 999 bytes, it is regarded as
+binary (*Note binary::).  For example, Postscript file should be encoded
+by Quoted-Printable.
 
 
 
@@ -237,40 +185,29 @@ File: tm-en.info, Node: 8bit, Next: 94 character set, Prev: 7bit, Up: Glossary
 8bit
 ----
 
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 255 \e$B$N@0?t$r;X$7$^$9!#\e(B
+*8bit* means any integer between 0 .. 255.
 
-0 \e$B$+$i\e(B 255 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B "8bit \e$B$N\e(B data" \e$B$H8F$S$^\e(B
-\e$B$9!#\e(B
+Any data represented by 8bit integers is called *8bit data*.
 
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31, 127 \e$B$*$h$S\e(B 128 \e$B$+$i\e(B 159 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$GI=\e(B
-\e$B8=$5$l$k6uGr$H\e(B 33 \e$B$+$i\e(B 126 \e$B$H\e(B 160 \e$B$+$i\e(B 255 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i$J$k\e(B
-\e$BJ8;zNs$N$3$H$r\e(B "8bit \e$B$NJ8;zNs\e(B" \e$B$H8F$S$^$9!J$3$l$O\e(B ISO 2022 (*Note ISO
-2022::) \e$B$N!V\e(B8 \e$BC10L7O!W$HF1MM$G$9!K!#\e(B
+Textual string consisted of Control characters between 0 .. 31, 127, and
+128 .. 159, and space represented by 32, and graphic characters between
+33 .. 236 and 160 .. 255 are called *8bit (textual) string*.
 
-iso-8859-1 (*Note iso-8859-1::) \e$B$d\e(B euc-kr (*Note euc-kr::) \e$B$H$$$C$?Id9f\e(B
-\e$B2=J8;z=89g$O\e(B 8bit \e$B$NJ8;zNs$G$9!#\e(B
+For example, iso-8859-1 (*Note iso-8859-1::) or euc-kr (*Note euc-kr::)
+are coded-character-set represented by 8bit textual string.
 
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B MTA (*Note MTA::) \e$B$O\e(B 7bit (*Note 7bit::) \e$B$N\e(B data \e$B$7\e(B
-\e$B$+E>Aw$G$-$J$$$N$G!"$=$&$7$?\e(B MTA \e$B$r7PM3$9$k>l9g!"\e(BQuoted-Printable (*Note
-Quoted-Printable::) \e$B$d\e(B Base64 (*Note Base64::) \e$B$H$$$C$?JQ49$r9T$o$J$/$F\e(B
-\e$B$O$J$j$^$;$s!#\e(B
+Traditional Internet MTA (*Note MTA::) can translate only 7bit (*Note
+7bit::) data, so if a 8bit data will be translated such MTA, it must be
+encoded by Quoted-Printable (*Note Quoted-Printable::) or Base64 (*Note
+Base64::).
 
-\e$B$7$+$7!":G6a$G$O\e(B 8bit \e$B$NJ8;zNs$r$=$N$^$^DL$9$3$H$,$G$-$k\e(B MTA \e$B$bEP>l$7$F\e(B
-\e$B$-$?$N$G!"$=$N$^$^Aw$k$3$H$,$G$-$k>l9g$bA}$($F$-$^$7$?!#\e(B
+However 8bit MTA are increasing today.
 
-\e$B$7$+$7!"\e(B8bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#19T\e(B
-\e$B$ND9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i\e(B
-\e$B$G$9!#$A$J$_$K!"\e(BRFC 821 \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998 byte \e$B0JFb$G$"$k$3$H\e(B
-\e$B$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-$N$"$k\e(B data, \e$BNc$($P!"\e(B
-Postscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B encode\e$B$9$kI,MQ$,$"$j$^$9!#\e(B
-
-
-\e$B$^$?!"$3$&$7$?M}M3$+$i!"#19T$,\e(B 999 byte \e$B0J>e$N9T$,B8:_$9$k2DG=@-$N$"$k\e(B
-data \e$B$O\e(B *binary* (*Note binary::) \e$B$H8F$V$3$H$K$7$^$9!#\e(B
-
-\e$B$A$J$_$K!"\e(B7bit \e$B$GI=8=$G$-$k\e(B data \e$B$O\e(B 8bit \e$B$G$bI=8=$G$-$^$9!#$h$C$F!"\e(B
-"8bit" \e$B$H8@$C$?>l9g!"#19T$,\e(B 998 byte \e$B0J2<$NG$0U$N\e(B data \e$B$r;X$9$3$H$,$"$j\e(B
-\e$B$^$9!#\e(B
+However if there are too long lines, it can not translate by 8bit MTA
+even if it is 8bit data.  RFC 2045 (*Note RFC 2045::) require lines in
+8bit data must be less than 998 bytes.  So if a "8bit data" has a line
+more than 999 bytes, it is regarded as binary (*Note binary::), so it
+must be encoded by Base64 or Quoted-Printable.
 
 
 
@@ -330,16 +267,17 @@ File: tm-en.info, Node: Base64, Next: binary, Prev: ASCII, Up: Glossary
 Base64
 ------
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k\e(B MIME (*Note MIME::) \e$B$K$*$1\e(B
-\e$B$k\e(B binary data (*Note binary::) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
+*Base64* is a transfer encoding method of MIME
+(*Note MIME::) defined in RFC 2045 (*Note RFC 2045::).
 
-\e$B!X\e(B64 \e$B?J?t!Y$H$$$&0UL#$G!"\e(B3 byte \e$B$N\e(B data \e$B$r\e(B 0 \e$B$+$i\e(B 63 \e$B$N?t$rI=$9\e(B ASCII
-(*Note ASCII::) 4 \e$BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"\e(B4 \e$BJ8;z$K$J$i$J$1$l$P\e(B 
-*pad* \e$B$H8F$P$l$k5M$aJ*$r$7$FD9$5$rD4@0$9$k!K\e(B
+The encoding process represents 24-bit groups of input bits as output
+strings of 4 encoded characters.  Encoded characters represent integer 0
+.. 63 or *pad*.  Base64 data must be 4 * n bytes, so
+pad is used to adjust size.
 
-\e$B$3$N\e(B 65 \e$B<oN`$NJ8;z$O\e(B ASCII \e$B$H\e(B EBCDIC \e$B$N6&DLItJ,$+$iA*$P$l$F$*$j!"\e(B
-Internet \e$B0J30$N\e(B network \e$B$r7PM3$9$k>l9g$G$b0BA4$KE>Aw$G$-$k$h$&$K@_7W$5$l\e(B
-\e$B$F$$$k!#\e(B
+These 65 characters are subset of all versions of ISO 646, including
+US-ASCII, and all versions of EBCDIC.  So it is safe even if it is
+translated by non-Internet gateways.
 
 
 
@@ -454,7 +392,7 @@ Code extension\e$B!JId9f3HD%!K\e(B
 
 
 \1f
-File: tm-en.info, Node: Content-Disposition, Next: content-type, Prev: Code extension, Up: Glossary
+File: tm-en.info, Node: Content-Disposition, Next: media type, Prev: Code extension, Up: Glossary
 
 Content-Disposition field
 -------------------------
@@ -471,39 +409,37 @@ MIME::) \e$B$N3HD%$N#1$D!#\e(B
 
 
 \1f
-File: tm-en.info, Node: content-type, Next: Content-Type field, Prev: Content-Disposition, Up: Glossary
+File: tm-en.info, Node: media type, Next: Content-Type field, Prev: Content-Disposition, Up: Glossary
 
-content-type
-------------
+media type
+----------
 
-MIME (*Note MIME::) \e$B$K$*$1$k\e(B part (*Note part::) \e$B$N<oN`!#\e(B
-*type* \e$B$H\e(B *subtype* \e$B$+$i$J$k!#\e(B
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+*media type* specifies the nature of the data
+in the body of MIME (*Note MIME::) entity (*Note entity::).  It consists of
+*type* and *subtype*.  It is
+defined in RFC 2046 (*Note RFC 2046::).
 
-type \e$B$OI8=`$G$O\e(B *application*,
-*audio*, *image*,
-*message*, *multipart*
-(*Note multipart::), *text*,
-*video* \e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B 
-application/octet-stream, audio/basic, image/jpeg, multipart/mixed
-(*Note multipart/mixed::), text/plain (*Note text/plain::), video/mpeg 
-\e$B$J$I$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
+Currently there are following types:
 
-*[\e$BCm0U\e(B]*
+   * *text*
+   * *image*
+   * *audio*
+   * *video*
+   * *application*
+   * *multipart* (*Note multipart::)
+   * *message*
 
-     \e$B$3$3$G$O!"\e(Btext/plain \e$B$J$I$N\e(B type/subtype \e$B$NAH$r$7$P$7$P\e(B 
-     *content-type/subtype* \e$B$H=q$/!#\e(B
 
+And there are various subtypes, for example, application/octet-stream,
+audio/basic, image/jpeg, multipart/mixed (*Note multipart/mixed::),
+text/plain (*Note text/plain::), video/mpeg...
 
-content-type \e$B$O!"\e(BRFC 1521 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G\e(B
-\e$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B MEDIA TYPES
-(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) \e$B$G;2>H$G$-$k!#\e(B
+You can refer registered media types at MEDIA TYPES
+(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types).
 
-\e$B$^$?!"\e(Btype \e$B$b$7$/$O\e(B subtype \e$B$K!"A0$K\e(B `x-' \e$B$rIU$1$?\e(B 
-*x-token* \e$B$rMQ$$$k$3$H$K$h$j!"EPO?$5$l$F$$$J$$$b\e(B
-\e$B$N$r;dE*$KMQ$$$k$3$H$b$G$-$k!#$7$+$7!"EvA3$N$3$H$J$,$i!"$3$&$7$?;dE*$J\e(B 
-content-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3\e(B
-\e$B$H!#\e(B
+In addition, you can use private type or subtype using
+*x-token*, which as the prefix `x-'.  However you
+can not use them in public.
 
 (cf. *Note Content-Type field::)
 
@@ -511,21 +447,21 @@ content-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3\e(B
 
 
 \1f
-File: tm-en.info, Node: Content-Type field, Next: Emacs, Prev: content-type, Up: Glossary
+File: tm-en.info, Node: Content-Type field, Next: Emacs, Prev: media type, Up: Glossary
 
 Content-Type field
 ------------------
 
-Header field to represent information about part, such as content-type
-(*Note content-type::), MIME charset (*Note MIME charset::).  It is
-defined in RFC 1521 (*Note RFC 1521::).
+Header field to represent information about body, such as media type
+(*Note media type::), MIME charset (*Note MIME charset::).  It is
+defined in RFC 2045 (*Note RFC 2045::).
 
 *[Memo]*
 
      Historically, Content-Type field was proposed in RFC 1049.  In it,
-     Content-Type did not distinguish type and subtype.  However RFC
-     1521 parser may be able to accept RFC 1049 based Content-Type as
-     unknown type.
+     Content-Type did not distinguish type and subtype.  However MIME
+     parser may be able to accept RFC 1049 based Content-Type as unknown
+     type.
 
 
 Content-Type field is defined as following:
@@ -577,12 +513,12 @@ encoded-word
 ------------
 
 Representation non ASCII (*Note ASCII::) characters in header.  It is
-defined in *RFC 1522*.
+defined in *RFC 2047*.
 
 
-[RFC 1522] K. Moore, "MIME (Multipurpose Internet Mail Extensions)
-     Part Two: Message Header Extensions for Non-ASCII Text", September
-     1993, Standards Track.
+[RFC 2047] K. Moore, "MIME (Multipurpose Internet Mail Extensions)
+     Part Three: Message Header Extensions for Non-ASCII Text", November
+     1996, Standards Track (obsolete RFC 1521,1522,1590).
 
 
 
@@ -865,13 +801,13 @@ File: tm-en.info, Node: iso-8859-1, Next: ISO 8859-2, Prev: ISO 8859-1, Up: Glos
 iso-8859-1
 ----------
 
-\e$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N\e(B MIME charset (*Note MIME charset::) \e$B$N#1$D!#\e(B
+*iso-8859-1* is a MIME charset (*Note MIME charset::) for west-European languages written by Latin script.
 
 ISO 2022 (*Note ISO 2022::) \e$B$K4p$$$F!"\e(BASCII (*Note ASCII::) \e$B$K\e(B ISO
 8859-1 (*Note ISO 8859-1::) \e$B$r\e(B 8bit (*Note 8bit::) \e$B$GId9f3HD%\e(B (*Note
 Code extension::)\e$B$7$F$$$k!#\e(B
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 2046 (*Note RFC 2046::).
 
 
 
@@ -898,13 +834,13 @@ File: tm-en.info, Node: iso-8859-2, Next: ISO 8859-3, Prev: ISO 8859-2, Up: Glos
 iso-8859-2
 ----------
 
-\e$BEl2$=t8l$rI=8=$9$k$?$a$N\e(B MIME charset (*Note MIME charset::) \e$B$N#1$D!#\e(B
+*iso-8859-2* is a MIME charset (*Note MIME charset::) for east-European languages written by Latin script.
 
 ISO 2022 (*Note ISO 2022::) \e$B$K4p$$$F!"\e(BASCII (*Note ASCII::) \e$B$K\e(B ISO
 8859-2 (*Note ISO 8859-2::) \e$B$r\e(B 8bit (*Note 8bit::) \e$B$GId9f3HD%\e(B (*Note
 Code extension::)\e$B$7$F$$$k!#\e(B
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 2046 (*Note RFC 2046::).
 
 
 
@@ -959,13 +895,13 @@ File: tm-en.info, Node: iso-8859-5, Next: ISO 8859-6, Prev: ISO 8859-5, Up: Glos
 iso-8859-5
 ----------
 
-\e$B%-%j%kJ8;z$rI=8=$9$k$?$a$N\e(B MIME charset (*Note MIME charset::) \e$B$N#1$D!#\e(B
+*iso-8859-5* is a MIME charset (*Note MIME charset::) for Cyrillic script.
 
 ISO 2022 (*Note ISO 2022::) \e$B$K4p$$$F!"\e(BASCII (*Note ASCII::) \e$B$K\e(B ISO
 8859-5 (*Note ISO 8859-5::) \e$B$r\e(B 8bit (*Note 8bit::) \e$B$GId9f3HD%\e(B (*Note
 Code extension::)\e$B$7$F$$$k!#\e(B
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 2046 (*Note RFC 2046::).
 
 
 
@@ -1005,13 +941,13 @@ File: tm-en.info, Node: iso-8859-7, Next: ISO 8859-8, Prev: ISO 8859-7, Up: Glos
 iso-8859-7
 ----------
 
-\e$B%.%j%7%"8l$rI=8=$9$k$?$a$N\e(B MIME charset (*Note MIME charset::) \e$B$N#1$D!#\e(B
+*iso-8859-7* is a MIME charset (*Note MIME charset::) for Greek script.
 
 ISO 2022 (*Note ISO 2022::) \e$B$K4p$$$F!"\e(BASCII (*Note ASCII::) \e$B$K\e(B ISO
 8859-7 (*Note ISO 8859-7::) \e$B$r\e(B 8bit (*Note 8bit::) \e$B$GId9f3HD%\e(B (*Note
 Code extension::)\e$B$7$F$$$k!#\e(B
 
-RFC 1947 \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 1947.
 
 
 [iso-8859-7: RFC 1947] D. Spinellis, "Greek Character Encoding for
@@ -1214,9 +1150,10 @@ File: tm-en.info, Node: message/rfc822, Next: method, Prev: message, Up: Glossar
 message/rfc822
 --------------
 
-\e$BEAE}E*$J\e(B RFC 934 (*Note RFC 934::) \e$B$KBe$o$j!"\e(BRFC 822 (*Note RFC 822::) 
-\e$B$GDj5A$5$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(BRFC 1521 (*Note RFC 1521::) \e$B$GDj5A\e(B
-\e$B$5$l$F$$$k!#\e(B
+*message/rfc822* indicates that the body
+contains an encapsulated message, with the syntax of an RFC 822 (*Note
+RFC 822::) message.  It is the replacement of traditional RFC 934 (*Note
+RFC 934::) encapsulation.  It is defined in RFC 2046 (*Note RFC 2046::).
 
 
 
@@ -1241,16 +1178,27 @@ File: tm-en.info, Node: MIME, Next: MIME charset, Prev: method, Up: Glossary
 MIME
 ----
 
-*Multipurpose
-Internet Mail Extensions* \e$B$NN,$G!"\e(BInternet \e$B$N\e(B mail \e$B$d\e(B news \e$B$G\e(B us-ascii
-plain text (*Note us-ascii::) \e$B0J30$NJ8;z$r;H$&$?$a$N\e(B RFC 822 (*Note RFC
-822::) \e$B$KBP$9$k3HD%!#\e(B
+MIME stands for *Multipurpose Internet Mail Extensions*, it is an
+extension for RFC 822 (*Note RFC 822::).
 
-RFC 1521 (*Note RFC 1521::) \e$B$H\e(B RFC 1522 (*Note encoded-word::) \e$B$GDj5A$5\e(B
-\e$B$l$F$$$k!#\e(B
+According to RFC 2045:
 
-(cf. *Note What is MIME?::)
+STD 11, RFC 822, defines a message representation protocol specifying
+considerable detail about US-ASCII message headers, and leaves the
+message content, or message body, as flat US-ASCII text.  This set of
+documents, collectively called the Multipurpose Internet Mail
+Extensions, or MIME, redefines the format of messages to allow for
 
+  1. textual message bodies in character sets other than US-ASCII,
+  2. an extensible set of different formats for non-textual message
+     bodies,
+  3. multi-part message bodies, and
+  4. textual header information in character sets other than US-ASCII.
+
+
+It is defined in RFC 2045 (*Note RFC 2045::), RFC 2046 (*Note RFC
+2046::), RFC 2047 (*Note encoded-word::), RFC 2048 (*Note RFC 2048::)
+and RFC 2049 (*Note RFC 2049::).
 
 
 
@@ -1260,11 +1208,11 @@ File: tm-en.info, Node: MIME charset, Next: MTA, Prev: MIME, Up: Glossary
 MIME charset
 ------------
 
-Content-Type field (*Note Content-Type field::) \e$B$d\e(B encoded-word (*Note
-encoded-word::) \e$B$N\e(B charset parameter \e$B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8;z=8\e(B
-\e$B9g\e(B (*Note Coded character set::)\e$B!#\e(B
+Coded character set (*Note Coded character set::) used in Content-Type
+field (*Note Content-Type field::) or charset parameter of encoded-word
+(*Note encoded-word::).
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 2045 (*Note RFC 2045::).
 
 iso-2022-jp (*Note iso-2022-jp::) \e$B$d\e(B euc-kr (*Note euc-kr::) \e$B$O$=$N#1$D!#\e(B
 \e$B!J$3$3$G$O!"\e(BMIME charset \e$B$OJ8;z=89g\e(B (*Note Character set::)\e$B$H6hJL$7$F>.\e(B
@@ -1332,24 +1280,22 @@ File: tm-en.info, Node: multipart, Next: multipart/alternative, Prev: MULE, Up:
 Multipart
 ---------
 
-\e$B#1$D$N\e(B message (*Note message::) \e$B$KJ#?t$N\e(B part \e$B$rF~$l$k$?$a$N\e(B MIME
-(*Note MIME::) \e$B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N\e(B part \e$B$+$i$J$k\e(B message \e$B$r\e(B
-\e$B;X$9!#\e(B(cf. *Note content-type::)
+*multipart* means media type (*Note media type::)
+to insert multiple entities (*Note entities::) in a single body.  Or it
+also indicates a message consists of multiple entities.
 
-\e$B8=:_!"Dj5A$5$l$F$$$k\e(B *multipart* \e$B$H$7$F$O!"\e(BRFC 1521 (*Note RFC 1521::) 
-\e$B$GDj5A$5$l$?\e(B
+There are following subtypes registered in RFC 2046 (*Note RFC 2046::):
 
    * multipart/mixed (*Note multipart/mixed::)
    * multipart/alternative (*Note multipart/alternative::)
    * multipart/digest (*Note multipart/digest::)
    * multipart/parallel (*Note multipart/parallel::)
 
-\e$B$N$[$+\e(B RFC 1847 (*Note Security multipart::) \e$B$GDj5A$5$l$?\e(B
+and registered in RFC 1847 (*Note Security multipart::):
 
    * multipart/signed (*Note multipart/signed::)
    * multipart/encrypted (*Note multipart/encrypted::)
 
-\e$B$J$I$,$"$k!#\e(B
 
 
 
@@ -1359,10 +1305,13 @@ File: tm-en.info, Node: multipart/alternative, Next: multipart/digest, Prev: mul
 multipart/alternative
 ---------------------
 
-multipart (*Note multipart::) \e$B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br\e(B
-\e$B;h$H$9$k>l9g$KMQ$$$k!#\e(B
+*multipart/digest* is one of multipart
+(*Note multipart::) media types.  This type is syntactically identical
+to multipart/mixed (*Note multipart/mixed::), but the semantics are
+different.  In particular, each of the body parts is an "alternative"
+version of the same information.
 
-(cf. *Note RFC 1521::)
+(cf. *Note RFC 2046::)
 
 
 
@@ -1373,16 +1322,17 @@ File: tm-en.info, Node: multipart/digest, Next: multipart/encrypted, Prev: multi
 multipart/digest
 ----------------
 
-multipart (*Note multipart::) \e$B$N#1$D$G!"4^$^$l$k\e(B part \e$B$N\e(B default \e$B$N\e(B
-content-type (*Note content-type::) \e$B$,\e(B multipart/mixed (*Note
-multipart/mixed::) \e$B$J$I$N>l9g\e(B text/plain (*Note text/plain::) \e$B$G$"$k$N$K\e(B
-\e$BBP$7!"\e(B*multipart/digest*\e$B$G$O\e(B message/rfc822 (*Note message/rfc822::) \e$B$,\e(B
-\e$BMQ$$$i$l$kE@$,0[$J$k!#\e(B
+*multipart/digest* is one of multipart
+(*Note multipart::) media types.  This type is syntactically identical
+to multipart/mixed (*Note multipart/mixed::), but the semantics are
+different.  In particular, in a digest, the default Content-Type value
+for a body part is changed from text/plain (*Note text/plain::) to
+message/rfc822 (*Note message/rfc822::).
 
-\e$B$3$l$OEAE}E*$J\e(B RFC 1153 (*Note RFC 1153::) \e$B$K4p$E$/\e(B encapsulation (*Note
-encapsulation::) \e$B$KBe$o$k$b$N$G$"$k!#\e(B
+This is the replacement of traditional RFC 1153 (*Note RFC 1153::) based
+encapsulation (*Note encapsulation::).
 
-(cf. *Note RFC 1521::)
+(cf. *Note RFC 2046::)
 
 
 
@@ -1407,10 +1357,11 @@ File: tm-en.info, Node: multipart/mixed, Next: multipart/parallel, Prev: multipa
 multipart/mixed
 ---------------
 
-multipart (*Note multipart::) \e$B$N<gMW$J\e(B subtype \e$B$G!"J#?t$N\e(B part \e$B$r=g=xIU\e(B
-\e$B$1$FJB$Y$k>l9g$KMQ$$$k!#\e(B
+Primary and default subtype of multipart (*Note multipart::), it is used
+when the body parts are independent and need to be bundled in a
+particular order.
 
-(cf. *Note RFC 1521::)
+(cf. *Note RFC 2046::)
 
 
 
@@ -1421,10 +1372,13 @@ File: tm-en.info, Node: multipart/parallel, Next: multipart/signed, Prev: multip
 multipart/parallel
 ------------------
 
-multipart (*Note multipart::) \e$B$N#1$D$G!"J#?t$N\e(B part \e$B$r=g=xIU$1$:$K4^$a$k\e(B
-\e$B>l9g$KMQ$$$k!#\e(B
+*multipart/parallel* is a subtype of
+multipart (*Note multipart::).  This type is syntactically identical to
+multipart/mixed (*Note multipart/mixed::), but the semantics are
+different.  In particular, in a parallel entity, the order of body parts
+is not significant.
 
-(cf. *Note RFC 1521::)
+(cf. *Note RFC 2046::)
 
 
 
@@ -1536,15 +1490,15 @@ File: tm-en.info, Node: Quoted-Printable, Next: RFC 821, Prev: PGP/MIME, Up: Glo
 Quoted-Printable
 ----------------
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k\e(B MIME (*Note MIME::) \e$B$K$*$1\e(B
-\e$B$k\e(B binary data (*Note binary::) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
+*Quoted-Printable* is a transfer
+encoding method of MIME (*Note MIME::) defined in RFC 2045 (*Note RFC
+2045::).
+
+If the data being encoded are mostly US-ASCII text, the encoded form of
+the data remains largely recognizable by humans.
 
-`=' \e$B$d@)8fJ8;z$d\e(B 128 \e$B0J>e$NJ8;z$J$I$O\e(B `=AF' \e$B$N$h$&$K\e(B `=' \e$B$N8e$KB3$/\e(B 16 
-\e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(BASCII (*Note ASCII::) \e$BJ8;zCf?4$N\e(B data \e$B$G$O\e(B 
-Base64 (*Note Base64::) \e$B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#\e(B
+(cf. *Note Base64::)
 
-\e$B$7$+$7$J$,$i!"\e(BEBCDIC \e$B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"\e(BEBCDIC \e$B$rMxMQ$7$F\e(B
-\e$B$$$k\e(B network \e$B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"\e(BBase64 \e$B$KHf$Y$F0BA4@-$ODc$$!#\e(B
 
 
 
@@ -1625,7 +1579,7 @@ subset \e$B$K$J$C$F$$$k!#\e(BInternet \e$B$NI8=`$G$O$J$$$,!"\e(BUSENET \e$B0J30$N\e(B
 
 
 \1f
-File: tm-en.info, Node: RFC 1153, Next: RFC 1521, Prev: RFC 1036, Up: Glossary
+File: tm-en.info, Node: RFC 1153, Next: RFC 1557, Prev: RFC 1036, Up: Glossary
 
 RFC 1153
 --------
@@ -1648,26 +1602,7 @@ message/rfc822::) \e$B$rMQ$$$?\e(B multipart (*Note multipart::) \e$B$rMQ$$$k$Y$-$G
 
 
 \1f
-File: tm-en.info, Node: RFC 1521, Next: RFC 1557, Prev: RFC 1153, Up: Glossary
-
-RFC 1521
---------
-
-MIME (*Note MIME::) \e$B$rDj5A$7$F$$$k\e(B RFC \e$B$N#1$D!#\e(B
-
-
-[RFC 1521] N. Borenstein and N. Freed, "MIME (Multipurpose Internet
-     Mail Extensions) Part One: Mechanisms for Specifying and Describing
-     the Format of Internet Message Bodies", September 1993, Standards
-     Track (obsolete RFC 1341).
-
-
-(RFC 1522 (*Note encoded-word::))
-
-
-
-\1f
-File: tm-en.info, Node: RFC 1557, Next: RFC 1922, Prev: RFC 1521, Up: Glossary
+File: tm-en.info, Node: RFC 1557, Next: RFC 1922, Prev: RFC 1153, Up: Glossary
 
 RFC 1557
 --------
@@ -1683,7 +1618,7 @@ euc-kr (*Note euc-kr::) \e$B$H\e(B iso-2022-kr (*Note iso-2022-kr::) \e$B$H$$$&4Z9q
 
 
 \1f
-File: tm-en.info, Node: RFC 1922, Next: plain text, Prev: RFC 1557, Up: Glossary
+File: tm-en.info, Node: RFC 1922, Next: RFC 2045, Prev: RFC 1557, Up: Glossary
 
 RFC 1922
 --------
@@ -1706,7 +1641,64 @@ field (*Note Content-Type field::) \e$B$N\e(B parameter \e$B$rDj5A$7$F$$$k!#\e(B
 
 
 \1f
-File: tm-en.info, Node: plain text, Next: Security multipart, Prev: RFC 1922, Up: Glossary
+File: tm-en.info, Node: RFC 2045, Next: RFC 2046, Prev: RFC 1922, Up: Glossary
+
+RFC 2045
+--------
+
+
+[RFC 2045] N. Freed and N. Borenstein, "Multipurpose Internet Mail
+     Extensions (MIME) Part One: Format of Internet Message Bodies",
+     November 1996, Standards Track (obsolete RFC 1521, 1522, 1590).
+
+
+
+
+\1f
+File: tm-en.info, Node: RFC 2046, Next: RFC 2048, Prev: RFC 2045, Up: Glossary
+
+RFC 2046
+--------
+
+
+[RFC 2046] N. Freed and N. Borenstein, "Multipurpose Internet Mail
+     Extensions (MIME) Part Two: Media Types", November 1996, Standards
+     Track (obsolete RFC 1521, 1522, 1590).
+
+
+
+
+\1f
+File: tm-en.info, Node: RFC 2048, Next: RFC 2049, Prev: RFC 2046, Up: Glossary
+
+RFC 2048
+--------
+
+
+[RFC 2048] N. Freed, J. Klensin and J. Postel, "Multipurpose
+     Internet Mail Extensions (MIME) Part Four: Registration
+     Procedures", November 1996, Standards Track (obsolete RFC 1521,
+     1522, 1590).
+
+
+
+
+\1f
+File: tm-en.info, Node: RFC 2049, Next: plain text, Prev: RFC 2048, Up: Glossary
+
+RFC 2049
+--------
+
+
+[RFC 2049] N. Freed and N. Borenstein, "Multipurpose Internet Mail
+     Extensions (MIME) Part Five: Conformance Criteria and Examples",
+     November 1996, Standards Track (obsolete RFC 1521, 1522, 1590).
+
+
+
+
+\1f
+File: tm-en.info, Node: plain text, Next: Security multipart, Prev: RFC 2049, Up: Glossary
 
 plain text
 ----------
@@ -1745,10 +1737,8 @@ File: tm-en.info, Node: text/enriched, Next: text/plain, Prev: Security multipar
 text/enriched
 -------------
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$?\e(B 
-*text/richtext* \e$B$KBe$o$C$F!"=qBN$dAHHG$K4X\e(B
-\e$B$9$k>pJs$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B content-type (*Note
-content-type::).
+RFC 1521 \e$B$GDj5A$5$l$?\e(B *text/richtext* \e$B$KBe$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs\e(B
+\e$B$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B media type (*Note media type::).
 
 
 [text/enriched: RFC 1896] P. Resnick and A. Walker, "The
@@ -1764,13 +1754,14 @@ File: tm-en.info, Node: text/plain, Next: tm-kernel, Prev: text/enriched, Up: Gl
 text/plain
 ----------
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$?!"\e(Bplain text (*Note plain
-text::) \e$B$rI=8=$9$k$?$a$N\e(B content-type (*Note content-type::).
+*text/plain* is a media type (*Note media type::) for plain text (*Note plain text::), defined in RFC 2046 (*Note RFC 2046::).
+
+The default media type of "text/plain; charset=us-ascii" for Internet
+mail describes existing Internet practice.  That is, it is the type of
+body defined by RFC 822 (*Note RFC 822::).
+
+(cf. *Note MIME charset::) (cf. *Note us-ascii::)
 
-\e$BHs\e(B MIME message \e$B$J$I$N\e(B content-type \e$B$,Dj5A$5$l$J$$\e(B part \e$B$O\e(B MIME charset
-(*Note MIME charset::) \e$B$,\e(B us-ascii (*Note us-ascii::) \e$B$G$"$k\e(B 
-*text/plain* \e$B$N\e(B part \e$B$G$"$k$H8+Pv$5$l$k$3$H$K\e(B
-\e$B$J$C$F$$$k!#\e(B
 
 
 
@@ -2062,8 +2053,8 @@ Via the tm ML, you can report tm bugs, obtain the latest release of tm,
 and discuss future enhancements to tm.  To join the tm ML, send e-mail
 to:
 
-   *  \e$BF|K\8l\e(B <tm-ja-admin@chamonix.jaist.ac.jp>
-   *  \e$B1Q8l\e(B <tm-en-admin@chamonix.jaist.ac.jp>
+   *  Japanese <tm-ja-admin@chamonix.jaist.ac.jp>
+   *  English <tm-en-admin@chamonix.jaist.ac.jp>
 
 Since the user registration is done manually, please write the mail body
 in human-recognizable language (^_^).
@@ -2079,24 +2070,28 @@ Concept Index
 
 * Menu:
 
+* 7bit
+* 7bit:                         7bit.                   5.
+* 7bit (textual) string:        7bit.                   12.
+* 8bit
+* 8bit:                         8bit.                   5.
+* 8bit (textual)
 * ANSI X3.4:1986:               ASCII.                  9.
-* application:                  content-type.           10.
+* application:                  media type.             21.
 * application/pgp:              PGP-kazu.               9.
 * ASCII:                        ASCII.                  9.
 * ASCII:                        us-ascii.               16.
-* audio:                        content-type.           10.
+* audio:                        media type.             17.
 * automatic signature selection
+* Base64:                       Base64.                 5.
 * BBDB:                         setting for VM.         14.
 * BIG5:                         cn-big5.                13.
-* binary:                       8bit.                   35.
 * binary:                       binary.                 6.
 * binary data:                  binary.                 15.
 * charset-edition:              RFC 1922.               11.
 * charset-extension:            RFC 1922.               11.
 * CNS        11643:1992:        CNS.                    13.
 * CNS 11643-1992:               CNS.                    13.
-* Content-Type:                 How is MIME?.           15.
-* content-type/subtype:         content-type.           21.
 * Emacs/mule:                   MULE.                   20.
 * encapsulation:                RFC 1153.               6.
 * encapsulation:                RFC 934.                6.
@@ -2110,7 +2105,7 @@ Concept Index
 * GB 8565.2:1988:               GB 8565.2.              8.
 * gnus-mime:                    tm-MUA.                 16.
 * good bug report:              Bug report.             17.
-* image:                        content-type.           11.
+* image:                        media type.             15.
 * Informational:                hz-gb2312.              14.
 * Informational:                hz-gb2312.              19.
 * Informational:                iso-2022-jp-2.          10.
@@ -2143,7 +2138,11 @@ Concept Index
 * ISO 8859-9:1990:              ISO 8859-9.             5.
 * iso-2022-jp:                  iso-2022-jp.            18.
 * iso-2022-jp-2:                iso-2022-jp-2.          10.
+* iso-8859-1:                   iso-8859-1.             5.
+* iso-8859-2:                   iso-8859-2.             5.
+* iso-8859-5:                   iso-8859-5.             5.
 * iso-8859-7:                   iso-8859-7.             13.
+* iso-8859-7:                   iso-8859-7.             5.
 * ISO/IEC 2022:1994:            ISO 2022.               11.
 * ISO/IEC 646:1991:             ISO 646.                10.
 * JIS
@@ -2161,45 +2160,50 @@ Concept Index
 * KS C 5601:1987:               KS C5601.               8.
 * KS C 5861:1992:               euc-kr.                 14.
 * KS C5601:                     KS C5601.               8.
-* message:                      content-type.           11.
+* media type:                   media type.             5.
+* message:                      media type.             25.
 * message header:               RFC 822.                6.
 * Message Transfer Agent:       MTA.                    5.
 * Message User Agent:           MUA.                    5.
-* MIME:                         What is MIME?.          5.
+* message/rfc822:               message/rfc822.         5.
 * mime-setup:                   mime-setup.             6.
 * mule:                         MULE.                   19.
 * MULE:                         MULE.                   20.
-* multipart:                    content-type.           12.
-* Multipart:                    How is MIME?.           23.
-* multipart:                    multipart.              10.
-* multipart/digest:             multipart/digest.       9.
+* multipart:                    media type.             23.
+* multipart:                    multipart.              5.
+* multipart/digest:             multipart/alternative.  5.
+* multipart/digest:             multipart/digest.       5.
 * multipart/encrypted:          Security multipart.     8.
+* multipart/parallel:           multipart/parallel.     5.
 * multipart/signed:             Security multipart.     6.
 * Multipurpose Internet Mail
-* Multipurpose Internet Mail Extensions: MIME.          5.
-* pad:                          Base64.                 10.
+* pad:                          Base64.                 11.
 * parameter:                    Content-Type field.     21.
 * PGP:                          PGP.                    16.
 * PGP-kazu:                     PGP-kazu.               7.
 * PGP/MIME:                     PGP/MIME.               20.
+* Quoted-Printable:             Quoted-Printable.       5.
 * RFC 1036:                     RFC 1036.               9.
 * RFC 1153:                     RFC 1153.               16.
 * RFC 1468:                     iso-2022-jp.            18.
 * RFC 1489:                     koi8-r.                 13.
-* RFC 1521:                     RFC 1521.               7.
-* RFC 1522:                     encoded-word.           7.
-* RFC 1522:                     encoded-word.           8.
 * RFC 1554:                     iso-2022-jp-2.          10.
 * RFC 1557:                     RFC 1557.               8.
 * RFC 1806:                     Content-Disposition.    8.
 * RFC 1842:                     hz-gb2312.              14.
 * RFC 1843:                     hz-gb2312.              19.
 * RFC 1847:                     Security multipart.     12.
-* RFC 1896:                     text/enriched.          10.
+* RFC 1896:                     text/enriched.          8.
 * RFC 1922:                     RFC 1922.               14.
 * RFC 1947:                     iso-8859-7.             13.
 * RFC 1991:                     PGP.                    16.
 * RFC 2015:                     PGP/MIME.               20.
+* RFC 2045:                     RFC 2045.               5.
+* RFC 2046:                     RFC 2046.               5.
+* RFC 2047:                     encoded-word.           7.
+* RFC 2047:                     encoded-word.           8.
+* RFC 2048:                     RFC 2048.               5.
+* RFC 2049:                     RFC 2049.               5.
 * RFC 821:                      RFC 821.                8.
 * RFC 822:                      RFC 822.                14.
 * RFC 934:                      RFC 934.                13.
@@ -2209,16 +2213,19 @@ Concept Index
 * SMTP:                         RFC 821.                8.
 * Standards Track:              encoded-word.           8.
 * Standards Track:              PGP/MIME.               20.
-* Standards Track:              RFC 1521.               7.
+* Standards Track:              RFC 2045.               5.
+* Standards Track:              RFC 2046.               5.
+* Standards Track:              RFC 2048.               5.
+* Standards Track:              RFC 2049.               5.
 * Standards Track:              Security multipart.     12.
 * STD 10:                       RFC 821.                8.
 * STD 11:                       RFC 822.                14.
 * STD 9:                        FTP.                    8.
-* subtype:                      content-type.           7.
 * subtype:                      Content-Type field.     20.
-* text:                         content-type.           13.
-* text/enriched:                text/enriched.          10.
-* text/plain:                   text/plain.             10.
+* subtype:                      media type.             8.
+* text:                         media type.             13.
+* text/enriched:                text/enriched.          8.
+* text/plain:                   text/plain.             5.
 * text/richtext:                text/enriched.          6.
 * tm \e$BBg@9$j\e(B package:            tm-MUA.                 8.
 * tm-gnus:                      tm-MUA.                 14.
@@ -2226,18 +2233,21 @@ Concept Index
 * tm-rmail:                     tm-MUA.                 20.
 * tm-setup:                     tm-setup.               5.
 * tm-vm:                        tm-MUA.                 18.
-* type:                         content-type.           6.
 * type:                         Content-Type field.     20.
+* type:                         media type.             7.
 * us-ascii:                     us-ascii.               13.
 * USENET:                       RFC 1036.               9.
-* video:                        content-type.           13.
+* video:                        media type.             19.
 * vm:                           setting for VM.         6.
 * XEmacs/mule:                  MULE.                   21.
-* x-token:                      content-type.           29.
-Extensions:                     What is MIME?.          6.
+* x-token:                      media type.             29.
+data:                           7bit.                   8.
+data:                           8bit.                   8.
+Extensions:                     MIME.                   6.
 mail:                           RFC 822.                11.
 message:                        RFC 822.                11.
 method:                         method.                 8.
+string:                         8bit.                   12.
 tool:                           signature.              6.
 X0201:                          JIS X0201.              9.
 
@@ -2258,104 +2268,105 @@ Variable Index
 Tag table:
 Node: Top\7f152
 Node: Introduction\7f583
-Node: What is MIME?\7f1326
-Node: How is MIME?\7f1807
-Node: Glossary\7f3209
-Node: 7bit\7f6542
-Node: 8bit\7f7859
-Node: 94 character set\7f9914
-Node: 96 character set\7f10187
-Node: 94x94 character set\7f10454
-Node: ASCII\7f10758
-Node: Base64\7f11188
-Node: binary\7f11886
-Node: Character Set\7f12476
-Node: cn-gb\7f12806
-Node: cn-big5\7f13292
-Node: CNS\7f13928
-Node: Coded character set\7f14609
-Node: Code extension\7f14936
-Node: Content-Disposition\7f15280
-Node: content-type\7f15722
-Node: Content-Type field\7f17129
-Node: Emacs\7f18186
-Node: encoded-word\7f18420
-Node: encapsulation\7f18801
-Node: euc-kr\7f19096
-Node: FTP\7f19613
-Node: GB 2312\7f19898
-Node: GB 8565.2\7f20452
-Node: hz-gb2312\7f20915
-Node: ISO 2022\7f21724
-Node: iso-2022-cn\7f22303
-Node: iso-2022-cn-ext\7f22779
-Node: iso-2022-jp\7f23451
-Node: iso-2022-jp-2\7f24166
-Node: iso-2022-kr\7f24575
-Node: ISO 646\7f25008
-Node: ISO 8859-1\7f25668
-Node: iso-8859-1\7f26099
-Node: ISO 8859-2\7f26544
-Node: iso-8859-2\7f26978
-Node: ISO 8859-3\7f27417
-Node: ISO 8859-4\7f27734
-Node: ISO 8859-5\7f28051
-Node: iso-8859-5\7f28460
-Node: ISO 8859-6\7f28902
-Node: ISO 8859-7\7f29221
-Node: iso-8859-7\7f29625
-Node: ISO 8859-8\7f30175
-Node: ISO 8859-9\7f30494
-Node: ISO-IR-165\7f30811
-Node: JIS X0201\7f31326
-Node: JIS C6226\7f32120
-Node: JIS X0208\7f32413
-Node: JIS X0212\7f34296
-Node: koi8-r\7f34648
-Node: KS C5601\7f35146
-Node: message\7f35547
-Node: message/rfc822\7f35810
-Node: method\7f36118
-Node: MIME\7f36469
-Node: MIME charset\7f36891
-Node: MTA\7f37453
-Node: MUA\7f37667
-Node: MULE\7f37841
-Node: multipart\7f38695
-Node: multipart/alternative\7f39531
-Node: multipart/digest\7f39836
-Node: multipart/encrypted\7f40483
-Node: multipart/mixed\7f40813
-Node: multipart/parallel\7f41106
-Node: multipart/signed\7f41393
-Node: PGP\7f41689
-Node: PGP-kazu\7f42525
-Node: PGP/MIME\7f44012
-Node: Quoted-Printable\7f45045
-Node: RFC 821\7f45806
-Node: RFC 822\7f46086
-Node: RFC 934\7f46570
-Node: RFC 1036\7f47025
-Node: RFC 1153\7f47479
-Node: RFC 1521\7f48020
-Node: RFC 1557\7f48465
-Node: RFC 1922\7f48856
-Node: plain text\7f49522
-Node: Security multipart\7f49798
-Node: text/enriched\7f50431
-Node: text/plain\7f50897
-Node: tm-kernel\7f51385
-Node: tm-MUA\7f51890
-Node: us-ascii\7f52409
-Node: Setting\7f53075
-Node: mime-setup\7f53674
-Node: signature\7f54175
-Node: Notice about GNUS\7f55720
-Node: tm-setup\7f56596
-Node: setting for VM\7f57144
-Node: manual setting\7f57456
-Node: Bug report\7f58058
-Node: Concept Index\7f59491
-Node: Variable Index\7f68960
+Node: Glossary\7f1260
+Node: 7bit\7f4683
+Node: 8bit\7f5615
+Node: 94 character set\7f6752
+Node: 96 character set\7f7025
+Node: 94x94 character set\7f7292
+Node: ASCII\7f7596
+Node: Base64\7f8026
+Node: binary\7f8620
+Node: Character Set\7f9210
+Node: cn-gb\7f9540
+Node: cn-big5\7f10026
+Node: CNS\7f10662
+Node: Coded character set\7f11343
+Node: Code extension\7f11670
+Node: Content-Disposition\7f12014
+Node: media type\7f12454
+Node: Content-Type field\7f13406
+Node: Emacs\7f14453
+Node: encoded-word\7f14687
+Node: encapsulation\7f15099
+Node: euc-kr\7f15394
+Node: FTP\7f15911
+Node: GB 2312\7f16196
+Node: GB 8565.2\7f16750
+Node: hz-gb2312\7f17213
+Node: ISO 2022\7f18022
+Node: iso-2022-cn\7f18601
+Node: iso-2022-cn-ext\7f19077
+Node: iso-2022-jp\7f19749
+Node: iso-2022-jp-2\7f20464
+Node: iso-2022-kr\7f20873
+Node: ISO 646\7f21306
+Node: ISO 8859-1\7f21966
+Node: iso-8859-1\7f22397
+Node: ISO 8859-2\7f22847
+Node: iso-8859-2\7f23281
+Node: ISO 8859-3\7f23731
+Node: ISO 8859-4\7f24048
+Node: ISO 8859-5\7f24365
+Node: iso-8859-5\7f24774
+Node: ISO 8859-6\7f25192
+Node: ISO 8859-7\7f25511
+Node: iso-8859-7\7f25915
+Node: ISO 8859-8\7f26438
+Node: ISO 8859-9\7f26757
+Node: ISO-IR-165\7f27074
+Node: JIS X0201\7f27589
+Node: JIS C6226\7f28383
+Node: JIS X0208\7f28676
+Node: JIS X0212\7f30559
+Node: koi8-r\7f30911
+Node: KS C5601\7f31409
+Node: message\7f31810
+Node: message/rfc822\7f32073
+Node: method\7f32450
+Node: MIME\7f32801
+Node: MIME charset\7f33790
+Node: MTA\7f34310
+Node: MUA\7f34524
+Node: MULE\7f34698
+Node: multipart\7f35552
+Node: multipart/alternative\7f36292
+Node: multipart/digest\7f36750
+Node: multipart/encrypted\7f37397
+Node: multipart/mixed\7f37727
+Node: multipart/parallel\7f38053
+Node: multipart/signed\7f38494
+Node: PGP\7f38790
+Node: PGP-kazu\7f39626
+Node: PGP/MIME\7f41113
+Node: Quoted-Printable\7f42146
+Node: RFC 821\7f42530
+Node: RFC 822\7f42810
+Node: RFC 934\7f43294
+Node: RFC 1036\7f43749
+Node: RFC 1153\7f44203
+Node: RFC 1557\7f44744
+Node: RFC 1922\7f45135
+Node: RFC 2045\7f45799
+Node: RFC 2046\7f46110
+Node: RFC 2048\7f46399
+Node: RFC 2049\7f46714
+Node: plain text\7f47028
+Node: Security multipart\7f47304
+Node: text/enriched\7f47937
+Node: text/plain\7f48379
+Node: tm-kernel\7f48859
+Node: tm-MUA\7f49364
+Node: us-ascii\7f49883
+Node: Setting\7f50549
+Node: mime-setup\7f51148
+Node: signature\7f51649
+Node: Notice about GNUS\7f53194
+Node: tm-setup\7f54070
+Node: setting for VM\7f54618
+Node: manual setting\7f54930
+Node: Bug report\7f55532
+Node: Concept Index\7f56965
+Node: Variable Index\7f67403
 \1f
 End tag table
index 3375f3b..2a3fc8a 100644 (file)
@@ -41,120 +41,62 @@ Please read following about each topics:
 </ul>
 
 
-<h2> What is MIME?
-<node> What is MIME?
-<p>
-<concept>MIME</concept> stands for <concept>Multipurpose Internet Mail
-Extensions</concept>, it is a proposed internet standard for including
-content and headers other than (ASCII) plain text in messages.
-<p>
-Current MIME standard consists of RFC 1521 and RFC 1522.  RFC 1521
-describes multipurpose content in message bodies, while RFC 1522
-describes multilingual characters in headers.
-
-
-<h2> How is MIME?
-<node> How is MIME?
-<p>
-In multipurpose message side, MIME can represent various contents such
-as images, sounds, videos, ... as against traditional Internet
-mail/news message can represent only (<dref>us-ascii</dref>) plain
-text.
-<p>
-Interestingly, MIME can send ``procedure'', such as <a
-node="FTP">ftp</a>, ftp mail, file extraction, applying patch, ...
-<p>
-# Of course, it has security problem.
-<p>
-These various kinds of contents are defined by media types written in
-<a node="Content-Type field"><concept>Content-Type</concept></a>
-field.  Namely MIME message has information about content in header.
-So if reader defines processes for each <dref>content-type</dref>,
-he/she can display image, or play video or sound, or get file by ftp,
-or extract file, ... only read the message.
-<p>
-In addition, MIME message can represent message includes plural parts,
-called <a node="multipart"><concept>Multipart</concept></a> message.
-So it is possible to include picture and sound in one message.
-<p>
-MIME seems have philosophy of ``declaration''.  In other words, MIME
-is a message description language to represent various kinds of things
-uses <dref>us-ascii</dref> as its ``alphabet''.  Encoded-word defined
-in <a node="encoded-word">RFC 1522</a> is same.
-<p>
-In addition, MUA displays only what it can understand and ignore what
-can not understand.  So content is saved from non-supported MUA and
-MUA is saved from unknown data.
-
-
 <h2> Glossary
 <node> Glossary
 
 <h3> 7bit
 <node> 7bit
 <p>
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 127 \e$B$N@0?t$r;X$7$^$9!#\e(B
+<concept>7bit</concept> means any integer between 0 .. 127.
 <p>
-0 \e$B$+$i\e(B 127 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B ``7bit \e$B$N\e(B data'' \e$B$H8F\e(B
-\e$B$S$^$9!#\e(B
+Any data represented by 7bit integers is called <concept>7bit
+data</concept>.
 <p>
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31 \e$B$*$h$S\e(B 127 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$GI=8=$5$l$k6uGr\e(B
-\e$B$H\e(B 33 \e$B$+$i\e(B 126 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i$J$kJ8;zNs$N$3$H$r\e(B ``7bit \e$B$NJ8\e(B
-\e$B;zNs\e(B'' \e$B$H8F$S$^$9!J$3$l$O\e(B <a node="ISO 2022">ISO 2022</a> \e$B$N!V\e(B7 \e$BC10L7O!W\e(B
-\e$B$HF1MM$G$9!K!#\e(B
+Textual string consisted of Control characters between 0 .. 31 and
+127, and space represented by 32, and graphic characters between 33
+.. 236 are called <concept>7bit (textual) string</concept>.
 <p>
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B <a node="MTA">MTA</a> \e$B$O\e(B 7bit \e$B$N\e(B data \e$B$rE>Aw$G$-\e(B
-\e$B$k$N$G!"\e(B7bit \e$B$N\e(B data \e$B$O\e(B <a
-node="Quoted-Printable">Quoted-Printable</a> \e$B$d\e(B <a
-node="Base64">Base64</a> \e$B$H$$$C$?JQ49$r9T$o$J$/$F$b$=$N$^$^E>Aw$G$-$^\e(B
-\e$B$9!#\e(B
+Traditional Internet <a node="MTA">MTA</a> can translate 7bit data, so
+it is no need to translate by <a
+node="Quoted-Printable">Quoted-Printable</a> or <a
+node="Base64">Base64</a> for 7bit data.
 <p>
-\e$B$7$+$7!"\e(B7bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#1\e(B
-\e$B9T$ND9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$\e(B
-\e$B$+$i$G$9!#$A$J$_$K!"\e(B<a node="RFC 821">RFC 821</a> \e$B$O#19T$O2~9TJ8;z$r=|\e(B
-\e$B$$$F\e(B 998 byte \e$B0JFb$G$"$k$3$H$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^\e(B
-\e$B$l$k2DG=@-$N$"$k\e(B data, \e$BNc$($P!"\e(BPostscript \e$B$N\e(B data \e$B$J$I$O\e(B 
-Quoted-Printable \e$BEy$G\e(B encode\e$B$9$kI,MQ$,$"$j$^$9!#\e(B
+However if there are too long lines, it can not translate by 7bit MTA
+even if it is 7bit data.  <dref>RFC 821</dref> and <dref>RFC
+2045</dref> require lines in 7bit data must be less than 998 bytes.
+So if a ``7bit data'' has a line more than 999 bytes, it is regarded
+as <dref>binary</dref>.  For example, Postscript file should be
+encoded by Quoted-Printable.
 
 
 <h3> 8bit
 <node> 8bit
 <p>
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 255 \e$B$N@0?t$r;X$7$^$9!#\e(B
+<concept>8bit</concept> means any integer between 0 .. 255.
 <p>
-0 \e$B$+$i\e(B 255 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B ``8bit \e$B$N\e(B data'' \e$B$H8F\e(B
-\e$B$S$^$9!#\e(B
+Any data represented by 8bit integers is called <concept>8bit
+data</concept>.
 <p>
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31, 127 \e$B$*$h$S\e(B 128 \e$B$+$i\e(B 159 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$G\e(B
-\e$BI=8=$5$l$k6uGr$H\e(B 33 \e$B$+$i\e(B 126 \e$B$H\e(B 160 \e$B$+$i\e(B 255 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i\e(B
-\e$B$J$kJ8;zNs$N$3$H$r\e(B ``8bit \e$B$NJ8;zNs\e(B'' \e$B$H8F$S$^$9!J$3$l$O\e(B <a node="ISO
-2022">ISO 2022</a> \e$B$N!V\e(B8 \e$BC10L7O!W$HF1MM$G$9!K!#\e(B
+Textual string consisted of Control characters between 0 .. 31, 127,
+and 128 .. 159, and space represented by 32, and graphic characters
+between 33 .. 236 and 160 .. 255 are called <concept>8bit (textual)
+string</concept>.
 <p>
-<a node="iso-8859-1">iso-8859-1</a> \e$B$d\e(B <a node="euc-kr">euc-kr</a> \e$B$H\e(B
-\e$B$$$C$?Id9f2=J8;z=89g$O\e(B 8bit \e$B$NJ8;zNs$G$9!#\e(B
+For example, <dref>iso-8859-1</dref> or <dref>euc-kr</dref> are
+coded-character-set represented by 8bit textual string.
 <p>
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B <a node="MTA">MTA</a> \e$B$O\e(B <a node="7bit">7bit</a> 
-\e$B$N\e(B data \e$B$7$+E>Aw$G$-$J$$$N$G!"$=$&$7$?\e(B MTA \e$B$r7PM3$9$k>l9g!"\e(B<a
-node="Quoted-Printable">Quoted-Printable</a> \e$B$d\e(B <a
-node="Base64">Base64</a> \e$B$H$$$C$?JQ49$r9T$o$J$/$F$O$J$j$^$;$s!#\e(B
+Traditional Internet <a node="MTA">MTA</a> can translate only
+<dref>7bit</dref> data, so if a 8bit data will be translated such MTA,
+it must be encoded by <dref>Quoted-Printable</dref> or
+<dref>Base64</dref>.
 <p>
-\e$B$7$+$7!":G6a$G$O\e(B 8bit \e$B$NJ8;zNs$r$=$N$^$^DL$9$3$H$,$G$-$k\e(B MTA \e$B$bEP>l$7\e(B
-\e$B$F$-$?$N$G!"$=$N$^$^Aw$k$3$H$,$G$-$k>l9g$bA}$($F$-$^$7$?!#\e(B
+However 8bit MTA are increasing today.
 <p>
-\e$B$7$+$7!"\e(B8bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#1\e(B
-\e$B9T$ND9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$\e(B
-\e$B$+$i$G$9!#$A$J$_$K!"\e(BRFC 821 \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998 byte \e$B0JFb$G$"\e(B
-\e$B$k$3$H$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-$N$"$k\e(B data, 
-\e$BNc$($P!"\e(BPostscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B encode\e$B$9$kI,MQ\e(B
-\e$B$,$"$j$^$9!#\e(B
-<p>
-\e$B$^$?!"$3$&$7$?M}M3$+$i!"#19T$,\e(B 999 byte \e$B0J>e$N9T$,B8:_$9$k2DG=@-$N$"$k\e(B
-data \e$B$O\e(B <a node="binary"><concept>binary</concept></a> \e$B$H8F$V$3$H$K$7\e(B
-\e$B$^$9!#\e(B
-<p>
-\e$B$A$J$_$K!"\e(B7bit \e$B$GI=8=$G$-$k\e(B data \e$B$O\e(B 8bit \e$B$G$bI=8=$G$-$^$9!#$h$C$F!"\e(B
-``8bit'' \e$B$H8@$C$?>l9g!"#19T$,\e(B 998 byte \e$B0J2<$NG$0U$N\e(B data \e$B$r;X$9$3$H$,\e(B
-\e$B$"$j$^$9!#\e(B
+However if there are too long lines, it can not translate by 8bit MTA
+even if it is 8bit data.  <dref>RFC 2045</dref> require lines in 8bit
+data must be less than 998 bytes.  So if a ``8bit data'' has a line
+more than 999 bytes, it is regarded as <dref>binary</dref>, so it must
+be encoded by Base64 or Quoted-Printable.
 
 
 <h3> 94 \e$BJ8;z=89g\e(B
@@ -194,17 +136,17 @@ node="ISO 646">ISO 646</a> \e$B$N0l$D!#\e(B
 <h3> Base64
 <node> Base64
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k\e(B <a
-node="MIME">MIME</a> \e$B$K$*$1$k\e(B <a node="binary">binary data</a> \e$B$N\e(B 
-network \e$B$G$NJQ49K!$N#1$D!#\e(B
+<concept>Base64</concept> is a transfer encoding method of
+<dref>MIME</dref> defined in <dref>RFC 2045</dref>.
 <p>
-\e$B!X\e(B64 \e$B?J?t!Y$H$$$&0UL#$G!"\e(B3 byte \e$B$N\e(B data \e$B$r\e(B 0 \e$B$+$i\e(B 63 \e$B$N?t$rI=$9\e(B 
-<dref>ASCII</dref> 4 \e$BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"\e(B4 \e$BJ8;z$K$J$i$J$1$l$P\e(B 
-<concept>pad</concept> \e$B$H8F$P$l$k5M$aJ*$r$7$FD9$5$rD4@0$9$k!K\e(B
+The encoding process represents 24-bit groups of input bits as output
+strings of 4 encoded characters.  Encoded characters represent integer
+0 .. 63 or <concept>pad</concept>.  Base64 data must be 4 * n bytes,
+so pad is used to adjust size.
 <p>
-\e$B$3$N\e(B 65 \e$B<oN`$NJ8;z$O\e(B ASCII \e$B$H\e(B EBCDIC \e$B$N6&DLItJ,$+$iA*$P$l$F$*$j!"\e(B
-Internet \e$B0J30$N\e(B network \e$B$r7PM3$9$k>l9g$G$b0BA4$KE>Aw$G$-$k$h$&$K@_7W$5\e(B
-\e$B$l$F$$$k!#\e(B
+These 65 characters are subset of all versions of ISO 646, including
+US-ASCII, and all versions of EBCDIC.  So it is safe even if it is
+translated by non-Internet gateways.
 
 
 <h3> binary
@@ -302,39 +244,44 @@ node="MIME">MIME</a> \e$B$N3HD%$N#1$D!#\e(B
              date="June 1995">
 
 
-<h3> content-type
-<node> content-type
+<h3> media type
+<node> media type
 <p>
-<dref>MIME</dref> \e$B$K$*$1$k\e(B <dref>part</dref> \e$B$N<oN`!#\e(B<concept>type</> 
-\e$B$H\e(B <concept>subtype</concept> \e$B$+$i$J$k!#\e(B<dref>RFC 1521</dref> \e$B$GDj5A$5\e(B
-\e$B$l$F$$$k!#\e(B
+<concept>media type</concept> specifies the nature of the data in the
+body of <dref>MIME</dref> <dref>entity</dref>.  It consists of
+<concept>type</> and <concept>subtype</concept>.  It is defined in
+<dref>RFC 2046</dref>.
 <p>
-type \e$B$OI8=`$G$O\e(B <concept>application</concept>,
-<concept>audio</concept>, <concept>image</concept>,
-<concept>message</concept>, <a
-node="multipart"><concept>multipart</concept></a>,
-<concept>text</concept>, <concept>video</concept> \e$B$,Dj5A$5$l!"$=$l$>$l\e(B
-\e$B$K$O\e(B application/octet-stream, audio/basic, image/jpeg,
-<dref>multipart/mixed</dref>, <dref>text/plain</dref>, video/mpeg \e$B$J$I\e(B
-\e$B$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
+Currently there are following types:
 
-<memo title="\e$BCm0U\e(B">
-<p>
-\e$B$3$3$G$O!"\e(Btext/plain \e$B$J$I$N\e(B type/subtype \e$B$NAH$r$7$P$7$P\e(B 
-<concept>content-type/subtype</concept> \e$B$H=q$/!#\e(B
-</memo>
+<ul>
+<li><concept>text</concept>
+</li>
+<li><concept>image</concept>
+</li>
+<li><concept>audio</concept>
+</li>
+<li><concept>video</concept>
+</li>
+<li><concept>application</concept>
+</li>
+<li><a node="multipart"><concept>multipart</concept></a>
+</li>
+<li><concept>message</concept>
+</ul>
 
 <p>
-content-type \e$B$O!"\e(BRFC 1521 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b\e(B
-\e$B$G$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B <a
+And there are various subtypes, for example, application/octet-stream,
+audio/basic, image/jpeg, <dref>multipart/mixed</dref>,
+<dref>text/plain</dref>, video/mpeg...
+<p>
+You can refer registered media types at <a
 href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types">MEDIA
-TYPES</a> \e$B$G;2>H$G$-$k!#\e(B
+TYPES</a>.
 <p>
-\e$B$^$?!"\e(Btype \e$B$b$7$/$O\e(B subtype \e$B$K!"A0$K\e(B `x-' \e$B$rIU$1$?\e(B 
-<concept>x-token</concept> \e$B$rMQ$$$k$3$H$K$h$j!"EPO?$5$l$F$$$J$$$b$N$r\e(B
-\e$B;dE*$KMQ$$$k$3$H$b$G$-$k!#$7$+$7!"EvA3$N$3$H$J$,$i!"$3$&$7$?;dE*$J\e(B 
-content-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k\e(B
-\e$B$3$H!#\e(B
+In addition, you can use private type or subtype using
+<concept>x-token</concept>, which as the prefix `x-'.  However you can
+not use them in public.
 <p>
 <cf node="Content-Type field">
 
@@ -342,14 +289,14 @@ content-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k\e(B
 <h3> Content-Type field
 <node> Content-Type field
 <p>
-Header field to represent information about part, such as
-<dref>content-type</dref>, <dref>MIME charset</dref>.  It is defined
-in <dref>RFC 1521</dref>.
+Header field to represent information about body, such as <dref>media
+type</dref>, <dref>MIME charset</dref>.  It is defined in <dref>RFC
+2045</dref>.
 
 <memo>
 <p>
 Historically, Content-Type field was proposed in RFC 1049.  In it,
-Content-Type did not distinguish type and subtype.  However RFC 1521
+Content-Type did not distinguish type and subtype.  However MIME
 parser may be able to accept RFC 1049 based Content-Type as unknown
 type.
 </memo>
@@ -412,12 +359,12 @@ GNU Emacs \e$B$NJQ<o$NAm>N$H$9$k!#\e(B
 <node> encoded-word
 <p>
 Representation non <a node="ASCII">ASCII</a> characters in header.  It
-is defined in <concept>RFC 1522</concept>.
+is defined in <concept>RFC 2047</concept>.
 <p>
-<rfc number="1522" type="Standards Track" author="K. Moore"
+<rfc number="2047" type="Standards Track" author="K. Moore"
              title="MIME (Multipurpose Internet Mail Extensions) Part
-             Two: Message Header Extensions for Non-ASCII Text"
-             date="September 1993">
+             Three: Message Header Extensions for Non-ASCII Text"
+             date="November 1996" obsolete="1521,1522,1590">
 
 
 <h3> encapsulation
@@ -632,14 +579,14 @@ character set">96 \e$BJ8;z=89g\e(B</a>\e$B!#\e(B
 <h3> iso-8859-1
 <node> iso-8859-1
 <p>
-\e$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N\e(B <a node="MIME charset">MIME charset</a> 
-\e$B$N#1$D!#\e(B
+<concept>iso-8859-1</concept> is a <dref>MIME charset</dref> for
+west-European languages written by Latin script.
 <p>
 <a node="ISO 2022">ISO 2022</a> \e$B$K4p$$$F!"\e(B<a node="ASCII">ASCII</a> \e$B$K\e(B 
 <a node="ISO 8859-1">ISO 8859-1</a> \e$B$r\e(B <a node="8bit">8bit</a> \e$B$G\e(B<a
 node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in <dref>RFC 2046</dref>.
 
 
 <h3> ISO 8859-2
@@ -658,14 +605,14 @@ character set">96 \e$BJ8;z=89g\e(B</a>\e$B!#\e(B
 <h3> iso-8859-2
 <node> iso-8859-2
 <p>
-\e$BEl2$=t8l$rI=8=$9$k$?$a$N\e(B <a node="MIME charset">MIME charset</a> \e$B$N#1\e(B
-\e$B$D!#\e(B
+<concept>iso-8859-2</concept> is a <dref>MIME charset</dref> for
+east-European languages written by Latin script.
 <p>
 <a node="ISO 2022">ISO 2022</a> \e$B$K4p$$$F!"\e(B<a node="ASCII">ASCII</a> \e$B$K\e(B 
 <a node="ISO 8859-2">ISO 8859-2</a> \e$B$r\e(B <a node="8bit">8bit</a> \e$B$G\e(B<a
 node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in <dref>RFC 2046</dref>.
 
 
 <h3> ISO 8859-3
@@ -703,14 +650,14 @@ node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <h3> iso-8859-5
 <node> iso-8859-5
 <p>
-\e$B%-%j%kJ8;z$rI=8=$9$k$?$a$N\e(B <a node="MIME charset">MIME charset</a> \e$B$N\e(B
-\e$B#1$D!#\e(B
+<concept>iso-8859-5</concept> is a <dref>MIME charset</dref> for
+Cyrillic script.
 <p>
 <a node="ISO 2022">ISO 2022</a> \e$B$K4p$$$F!"\e(B<a node="ASCII">ASCII</a> \e$B$K\e(B 
 <a node="ISO 8859-5">ISO 8859-5</a> \e$B$r\e(B <a node="8bit">8bit</a> \e$B$G\e(B<a
 node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in <dref>RFC 2046</dref>.
 
 
 <h3> ISO 8859-6
@@ -738,14 +685,14 @@ node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <h3> iso-8859-7
 <node> iso-8859-7
 <p>
-\e$B%.%j%7%"8l$rI=8=$9$k$?$a$N\e(B <a node="MIME charset">MIME charset</a> \e$B$N\e(B
-\e$B#1$D!#\e(B
+<concept>iso-8859-7</concept> is a <dref>MIME charset</dref> for
+Greek script.
 <p>
 <a node="ISO 2022">ISO 2022</a> \e$B$K4p$$$F!"\e(B<a node="ASCII">ASCII</a> \e$B$K\e(B 
 <a node="ISO 8859-7">ISO 8859-7</a> \e$B$r\e(B <a node="8bit">8bit</a> \e$B$G\e(B<a
 node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <p>
-RFC 1947 \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 1947.
 
 <rfc name="iso-8859-7" number="1947" type="Informational"
              author="D. Spinellis" title="Greek Character Encoding
@@ -898,8 +845,10 @@ RFC 1489 \e$B$GDj5A$5$l$F$$$k!#\e(B
 <h3> message/rfc822
 <node> message/rfc822
 <p>
-\e$BEAE}E*$J\e(B <dref>RFC 934</dref> \e$B$KBe$o$j!"\e(B<dref>RFC 822</dref> \e$B$GDj5A$5\e(B
-\e$B$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(B<dref>RFC 1521</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
+<concept>message/rfc822</concept> indicates that the body contains an
+encapsulated message, with the syntax of an <dref>RFC 822</dref>
+message.  It is the replacement of traditional <dref>RFC 934</dref>
+encapsulation.  It is defined in <dref>RFC 2046</dref>.
 
 
 <h3> method
@@ -915,24 +864,42 @@ program. Emacs Lisp \e$B$G=q$+$l$?\e(B <concept>internal method</concept> \e$B$H\e(B
 <h3> MIME
 <node> MIME
 <p>
-<concept>Multipurpose Internet Mail Extensions</concept> \e$B$NN,$G!"\e(B
-Internet \e$B$N\e(B mail \e$B$d\e(B news \e$B$G\e(B <a node="us-ascii">us-ascii plain text</a> 
-\e$B0J30$NJ8;z$r;H$&$?$a$N\e(B <dref>RFC 822</dref> \e$B$KBP$9$k3HD%!#\e(B
+MIME stands for <concept>Multipurpose Internet Mail
+Extensions</concept>, it is an extension for <dref>RFC 822</dref>.
+<p>
+According to RFC 2045:
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$H\e(B <a node="encoded-word">RFC 1522</a> 
-\e$B$GDj5A$5$l$F$$$k!#\e(B
+STD 11, RFC 822, defines a message representation protocol specifying
+considerable detail about US-ASCII message headers, and leaves the
+message content, or message body, as flat US-ASCII text.  This set of
+documents, collectively called the Multipurpose Internet Mail
+Extensions, or MIME, redefines the format of messages to allow for
 <p>
-<cf node="What is MIME?">
+<ol>
+<li>textual message bodies in character sets other than US-ASCII,
+</li>
+<li>an extensible set of different formats for non-textual message
+bodies,
+</li>
+<li>multi-part message bodies, and
+</li>
+<li>textual header information in character sets other than US-ASCII.
+</ol>
+
+<p>
+It is defined in <dref>RFC 2045</dref>, <dref>RFC 2046</dref>, <a
+node="encoded-word">RFC 2047</a>, <dref>RFC 2048</dref> and <dref>RFC
+2049</dref>.
 
 
 <h3> MIME charset
 <node> MIME charset
 <p>
-<dref>Content-Type field</dref> \e$B$d\e(B <a
-node="encoded-word">encoded-word</a> \e$B$N\e(B charset parameter \e$B$GMQ$$$i$l$k\e(B
-\e$BEPO?$5$l$?\e(B<a node="Coded character set">\e$BId9f2=J8;z=89g\e(B</a>\e$B!#\e(B
+<dref>Coded character set</dref> used in <dref>Content-Type
+field</dref> or charset parameter of <a
+node="encoded-word">encoded-word</a>.
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in <dref>RFC 2045</dref>.
 <p>
 <a node="iso-2022-jp">iso-2022-jp</a> \e$B$d\e(B <a node="euc-kr">euc-kr</a> 
 \e$B$O$=$N#1$D!#!J$3$3$G$O!"\e(BMIME charset \e$B$O\e(B<a node="Character set">\e$BJ8;z=8\e(B
@@ -983,12 +950,11 @@ href="ftp://etlport.etl.go.jp/pub/mule/mule-19.33-gamma.taz"> alpha \e$BHG\e(B
 <h3> Multipart
 <node> multipart
 <p>
-\e$B#1$D$N\e(B <dref>message</dref> \e$B$KJ#?t$N\e(B part \e$B$rF~$l$k$?$a$N\e(B 
-<dref>MIME</dref> \e$B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N\e(B part \e$B$+$i$J$k\e(B 
-message \e$B$r;X$9!#\e(B<cf node="content-type">
+<concept>multipart</concept> means <dref>media type</dref> to insert
+multiple <dref>entities</dref> in a single body.  Or it also indicates
+a message consists of multiple entities.
 <p>
-\e$B8=:_!"Dj5A$5$l$F$$$k\e(B <concept>multipart</concept> \e$B$H$7$F$O!"\e(B<dref>RFC
-1521</dref> \e$B$GDj5A$5$l$?\e(B
+There are following subtypes registered in <dref>RFC 2046</dref>:
 
 <ul>
 <li><dref>multipart/mixed</dref>
@@ -998,39 +964,40 @@ message \e$B$r;X$9!#\e(B<cf node="content-type">
 </ul>
 
 <noindent>
-\e$B$N$[$+\e(B <a node="Security multipart">RFC 1847</a> \e$B$GDj5A$5$l$?\e(B
+and registered in <a node="Security multipart">RFC 1847</a>:
 
 <ul>
 <li><dref>multipart/signed</dref>
 <li><dref>multipart/encrypted</dref>
 </ul>
 
-<noindent>
-\e$B$J$I$,$"$k!#\e(B
-
 
 <h3> multipart/alternative
 <node> multipart/alternative
 <p>
-<dref>multipart</dref> \e$B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br;h$H\e(B
-\e$B$9$k>l9g$KMQ$$$k!#\e(B
+<concept>multipart/digest</concept> is one of <dref>multipart</dref>
+media types.  This type is syntactically identical to
+<dref>multipart/mixed</dref>, but the semantics are different.  In
+particular, each of the body parts is an ``alternative'' version of
+the same information.
 <p>
-<cf node="RFC 1521">
+<cf node="RFC 2046">
 
 
 <h3> multipart/digest
 <node> multipart/digest
 <p>
-<dref>multipart</dref> \e$B$N#1$D$G!"4^$^$l$k\e(B part \e$B$N\e(B default \e$B$N\e(B
-<dref>content-type</dref> \e$B$,\e(B <dref>multipart/mixed</dref> \e$B$J$I$N>l9g\e(B 
-<dref>text/plain</dref> \e$B$G$"$k$N$KBP$7!"\e(B
-<concept>multipart/digest</concept>\e$B$G$O\e(B <dref>message/rfc822</dref> \e$B$,\e(B
-\e$BMQ$$$i$l$kE@$,0[$J$k!#\e(B
+<concept>multipart/digest</concept> is one of <dref>multipart</dref>
+media types.  This type is syntactically identical to
+<dref>multipart/mixed</dref>, but the semantics are different.  In
+particular, in a digest, the default Content-Type value for a body
+part is changed from <dref>text/plain</dref> to
+<dref>message/rfc822</dref>.
 <p>
-\e$B$3$l$OEAE}E*$J\e(B <dref>RFC 1153</dref> \e$B$K4p$E$/\e(B 
-<dref>encapsulation</dref> \e$B$KBe$o$k$b$N$G$"$k!#\e(B
+This is the replacement of traditional <dref>RFC 1153</dref> based
+<dref>encapsulation</dref>.
 <p>
-<cf node="RFC 1521">
+<cf node="RFC 2046">
 
 
 <h3> multipart/encrypted
@@ -1045,19 +1012,23 @@ RFC 1847 \e$B$GDj5A$5$l$?\e(B <dref>Security multipart</dref> \e$B$N#1$D$G!"0E9f2=\e
 <h3> multipart/mixed
 <node> multipart/mixed
 <p>
-<dref>multipart</dref> \e$B$N<gMW$J\e(B subtype \e$B$G!"J#?t$N\e(B part \e$B$r=g=xIU$1$FJB\e(B
-\e$B$Y$k>l9g$KMQ$$$k!#\e(B
+Primary and default subtype of <dref>multipart</dref>, it is used when
+the body parts are independent and need to be bundled in a particular
+order.
 <p>
-<cf node="RFC 1521">
+<cf node="RFC 2046">
 
 
 <h3> multipart/parallel
 <node> multipart/parallel
 <p>
-<dref>multipart</dref> \e$B$N#1$D$G!"J#?t$N\e(B part \e$B$r=g=xIU$1$:$K4^$a$k>l9g\e(B
-\e$B$KMQ$$$k!#\e(B
+<concept>multipart/parallel</concept> is a subtype of
+<dref>multipart</dref>.  This type is syntactically identical to
+<dref>multipart/mixed</dref>, but the semantics are different.  In
+particular, in a parallel entity, the order of body parts is not
+significant.
 <p>
-<cf node="RFC 1521">
+<cf node="RFC 2046">
 
 
 <h3> multipart/signed
@@ -1144,17 +1115,13 @@ Internet \e$B$G$O:#8e\e(B <dref>PGP/MIME</dref> \e$B$NJ}8~$GI8=`2=$7$F$$$3$&$H$$$&\e
 <h3> Quoted-Printable
 <node> Quoted-Printable
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k\e(B <a
-node="MIME">MIME</a> \e$B$K$*$1$k\e(B <a node="binary">binary data</a> \e$B$N\e(B 
-network \e$B$G$NJQ49K!$N#1$D!#\e(B
+<concept>Quoted-Printable</concept> is a transfer encoding method of
+<dref>MIME</dref> defined in <dref>RFC 2045</dref>.
 <p>
-`=' \e$B$d@)8fJ8;z$d\e(B 128 \e$B0J>e$NJ8;z$J$I$O\e(B `=AF' \e$B$N$h$&$K\e(B `=' \e$B$N8e$KB3$/\e(B 16 
-\e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(B<a node="ASCII">ASCII</a> \e$BJ8;zCf?4$N\e(B data \e$B$G\e(B
-\e$B$O\e(B <a node="Base64">Base64</a> \e$B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#\e(B
+If the data being encoded are mostly US-ASCII text, the encoded form
+of the data remains largely recognizable by humans.
 <p>
-\e$B$7$+$7$J$,$i!"\e(BEBCDIC \e$B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"\e(BEBCDIC \e$B$rMxMQ$7\e(B
-\e$B$F$$$k\e(B network \e$B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"\e(BBase64 \e$B$KHf$Y$F0BA4@-$O\e(B
-\e$BDc$$!#\e(B
+<cf node="Base64">
 
 
 <h3> RFC 821
@@ -1229,19 +1196,6 @@ RFC. <dref>RFC 934</dref> \e$B$rMQ$$$k!#\e(B
              date="April 1990">
 
 
-<h3> RFC 1521 <node> RFC 1521
-<p>
-<a node="MIME">MIME</a> \e$B$rDj5A$7$F$$$k\e(B RFC \e$B$N#1$D!#\e(B
-
-<rfc number="1521" type="Standards Track" author="N. Borenstein and
-             N. Freed" title="MIME (Multipurpose Internet Mail
-             Extensions) Part One: Mechanisms for Specifying and
-             Describing the Format of Internet Message Bodies"
-             date="September 1993" obsolete="1341">
-
-(<a node="encoded-word">RFC 1522</a>)
-
-
 <h3> RFC 1557
 <node> RFC 1557
 <p>
@@ -1270,6 +1224,44 @@ field</dref> \e$B$N\e(B parameter \e$B$rDj5A$7$F$$$k!#\e(B
              date="March 1996">
 
 
+<h3> RFC 2045
+<node> RFC 2045
+<p>
+<rfc number="2045" type="Standards Track" author="N. Freed and
+             N. Borenstein" title="Multipurpose Internet Mail
+             Extensions (MIME) Part One: Format of Internet Message
+             Bodies" date="November 1996" obsolete="1521, 1522,
+             1590">
+
+
+<h3> RFC 2046
+<node> RFC 2046
+<p>
+<rfc number="2046" type="Standards Track" author="N. Freed and
+             N. Borenstein" title="Multipurpose Internet Mail
+                 Extensions (MIME) Part Two: Media Types"
+                 date="November 1996" obsolete="1521, 1522, 1590">
+
+
+<h3> RFC 2048
+<node> RFC 2048
+<p>
+<rfc number="2048" type="Standards Track" author="N. Freed, J. Klensin
+             and J. Postel" title="Multipurpose Internet Mail
+             Extensions (MIME) Part Four: Registration Procedures"
+             date="November 1996" obsolete="1521, 1522, 1590">
+
+
+<h3> RFC 2049
+<node> RFC 2049
+<p>
+<rfc number="2049" type="Standards Track" author="N. Freed and
+             N. Borenstein" title="Multipurpose Internet Mail
+             Extensions (MIME) Part Five: Conformance Criteria and
+             Examples" date="November 1996" obsolete="1521, 1522,
+             1590">
+
+
 <h3> plain text
 <node> plain text
 <p>
@@ -1296,9 +1288,9 @@ node="multipart/encrypted"><concept>multipart/encrypted</concept></a>
 <h3> text/enriched
 <node> text/enriched
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$?\e(B 
-<concept>text/richtext</concept> \e$B$KBe$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs$r\e(B
-\e$B;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B <dref>content-type</dref>.
+RFC 1521 \e$B$GDj5A$5$l$?\e(B <concept>text/richtext</concept> \e$B$KBe$o$C$F!"=q\e(B
+\e$BBN$dAHHG$K4X$9$k>pJs$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B <dref>media
+type</dref>.
 
 <rfc name="text/enriched" number="1896" author="P. Resnick and
              A. Walker" title="The text/enriched MIME Content-type"
@@ -1308,13 +1300,14 @@ node="multipart/encrypted"><concept>multipart/encrypted</concept></a>
 <h3> text/plain
 <node> text/plain
 <p>
-<dref>RFC 1521</dref> \e$B$GDj5A$5$l$?!"\e(B<dref>plain text</dref> \e$B$rI=8=$9$k\e(B
-\e$B$?$a$N\e(B <dref>content-type</dref>.
+<concept>text/plain</concept> is a <dref>media type</dref> for
+<dref>plain text</dref>, defined in <dref>RFC 2046</dref>.
+<p>
+The default media type of ``text/plain; charset=us-ascii'' for
+Internet mail describes existing Internet practice.  That is, it is
+the type of body defined by <dref>RFC 822</dref>.
 <p>
-\e$BHs\e(B MIME message \e$B$J$I$N\e(B content-type \e$B$,Dj5A$5$l$J$$\e(B part \e$B$O\e(B <dref>MIME
-charset</dref> \e$B$,\e(B <dref>us-ascii</dref> \e$B$G$"$k\e(B 
-<concept>text/plain</concept> \e$B$N\e(B part \e$B$G$"$k$H8+Pv$5$l$k$3$H$K$J$C$F$$\e(B
-\e$B$k!#\e(B
+<cf node="MIME charset"><cf node="us-ascii">
 
 
 <h3> tm-kernel, tm
@@ -1572,8 +1565,8 @@ tm, and discuss future enhancements to tm.  To join the tm ML, send
 e-mail to:
 
 <ul>
-<li> \e$BF|K\8l\e(B <mail>tm-ja-admin@chamonix.jaist.ac.jp</mail>
-<li> \e$B1Q8l\e(B <mail>tm-en-admin@chamonix.jaist.ac.jp</mail>
+<li> Japanese <mail>tm-ja-admin@chamonix.jaist.ac.jp</mail>
+<li> English  <mail>tm-en-admin@chamonix.jaist.ac.jp</mail>
 </ul>
 
 <noindent>
index 5494c88..2a3f652 100644 (file)
@@ -58,59 +58,10 @@ mime/editor-mode (@ref{(tm-edit-en)})
 
 
 @menu
-* What is MIME?::               
-* How is MIME?::                
 * Glossary::                    
 @end menu
 
-@node What is MIME?, How is MIME?, Introduction, Introduction
-@section What is MIME?
-
-@cindex{MIME}@strong{MIME} stands for @cindex{Multipurpose Internet Mail
-Extensions}@strong{Multipurpose Internet Mail Extensions}, it is a
-proposed internet standard for including content and headers other than
-(ASCII) plain text in messages.@refill
-
-Current MIME standard consists of RFC 1521 and RFC 1522.  RFC 1521
-describes multipurpose content in message bodies, while RFC 1522
-describes multilingual characters in headers.
-
-
-@node How is MIME?, Glossary, What is MIME?, Introduction
-@section How is MIME?
-
-In multipurpose message side, MIME can represent various contents such
-as images, sounds, videos, ... as against traditional Internet mail/news
-message can represent only (us-ascii (@ref{us-ascii})) plain
-text.@refill
-
-Interestingly, MIME can send ``procedure'', such as ftp (@ref{FTP}), ftp
-mail, file extraction, applying patch, ...@refill
-
-# Of course, it has security problem.@refill
-
-These various kinds of contents are defined by media types written in
-@cindex{Content-Type}@strong{Content-Type} (@ref{Content-Type field})
-field.  Namely MIME message has information about content in header.  So
-if reader defines processes for each content-type (@ref{content-type}),
-he/she can display image, or play video or sound, or get file by ftp, or
-extract file, ... only read the message.@refill
-
-In addition, MIME message can represent message includes plural parts,
-called @cindex{Multipart}@strong{Multipart} (@ref{multipart}) message.
-So it is possible to include picture and sound in one message.@refill
-
-MIME seems have philosophy of ``declaration''.  In other words, MIME is
-a message description language to represent various kinds of things uses
-us-ascii (@ref{us-ascii}) as its ``alphabet''.  Encoded-word defined in
-RFC 1522 (@ref{encoded-word}) is same.@refill
-
-In addition, MUA displays only what it can understand and ignore what
-can not understand.  So content is saved from non-supported MUA and
-MUA is saved from unknown data.
-
-
-@node Glossary,  , How is MIME?, Introduction
+@node Glossary,  , Introduction, Introduction
 @section Glossary
 
 
@@ -130,7 +81,7 @@ MUA is saved from unknown data.
 * Coded character set::         Coded character set\e$B!JId9f2=J8;z=89g!K\e(B, Character code\e$B!JJ8;zId9f!K\e(B
 * Code extension::              Code extension\e$B!JId9f3HD%!K\e(B
 * Content-Disposition::         Content-Disposition field
-* content-type::                
+* media type::                  
 * Content-Type field::          
 * Emacs::                       
 * encoded-word::                
@@ -191,9 +142,12 @@ MUA is saved from unknown data.
 * RFC 934::                     
 * RFC 1036::                    
 * RFC 1153::                    
-* RFC 1521::                    RFC 1521 
 * RFC 1557::                    
 * RFC 1922::                    
+* RFC 2045::                    
+* RFC 2046::                    
+* RFC 2048::                    
+* RFC 2049::                    
 * plain text::                  
 * Security multipart::          
 * text/enriched::               
@@ -206,64 +160,56 @@ MUA is saved from unknown data.
 @node 7bit, 8bit, Glossary, Glossary
 @subsection 7bit
 
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 127 \e$B$N@0?t$r;X$7$^$9!#\e(B@refill
+@cindex{7bit}@strong{7bit} means any integer between 0 .. 127.@refill
 
-0 \e$B$+$i\e(B 127 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B ``7bit \e$B$N\e(B data'' \e$B$H8F$S\e(B
-\e$B$^$9!#\e(B@refill
+Any data represented by 7bit integers is called @cindex{7bit
+data}@strong{7bit data}.@refill
 
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31 \e$B$*$h$S\e(B 127 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$GI=8=$5$l$k6uGr$H\e(B 
-33 \e$B$+$i\e(B 126 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i$J$kJ8;zNs$N$3$H$r\e(B ``7bit \e$B$NJ8;zNs\e(B'' 
-\e$B$H8F$S$^$9!J$3$l$O\e(B ISO 2022 (@ref{ISO 2022}) \e$B$N!V\e(B7 \e$BC10L7O!W$HF1MM$G$9!K!#\e(B
+Textual string consisted of Control characters between 0 .. 31 and 127,
+and space represented by 32, and graphic characters between 33 .. 236
+are called @cindex{7bit (textual) string}@strong{7bit (textual)
+string}.@refill
 
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B MTA (@ref{MTA}) \e$B$O\e(B 7bit \e$B$N\e(B data \e$B$rE>Aw$G$-$k$N$G!"\e(B
-7bit \e$B$N\e(B data \e$B$O\e(B Quoted-Printable (@ref{Quoted-Printable}) \e$B$d\e(B Base64
-(@ref{Base64}) \e$B$H$$$C$?JQ49$r9T$o$J$/$F$b$=$N$^$^E>Aw$G$-$^$9!#\e(B@refill
+Traditional Internet MTA (@ref{MTA}) can translate 7bit data, so it is
+no need to translate by Quoted-Printable (@ref{Quoted-Printable}) or
+Base64 (@ref{Base64}) for 7bit data.@refill
 
-\e$B$7$+$7!"\e(B7bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#19T\e(B
-\e$B$ND9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i\e(B
-\e$B$G$9!#$A$J$_$K!"\e(BRFC 821 (@ref{RFC 821}) \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998
-byte \e$B0JFb$G$"$k$3$H$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-\e(B
-\e$B$N$"$k\e(B data, \e$BNc$($P!"\e(BPostscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B 
-encode\e$B$9$kI,MQ$,$"$j$^$9!#\e(B
+However if there are too long lines, it can not translate by 7bit MTA
+even if it is 7bit data.  RFC 821 (@ref{RFC 821}) and RFC 2045 (@ref{RFC
+2045}) require lines in 7bit data must be less than 998 bytes.  So if a
+``7bit data'' has a line more than 999 bytes, it is regarded as binary
+(@ref{binary}).  For example, Postscript file should be encoded by
+Quoted-Printable.
 
 
 @node 8bit, 94 character set, 7bit, Glossary
 @subsection 8bit
 
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 255 \e$B$N@0?t$r;X$7$^$9!#\e(B@refill
+@cindex{8bit}@strong{8bit} means any integer between 0 .. 255.@refill
 
-0 \e$B$+$i\e(B 255 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B ``8bit \e$B$N\e(B data'' \e$B$H8F$S\e(B
-\e$B$^$9!#\e(B@refill
+Any data represented by 8bit integers is called @cindex{8bit
+data}@strong{8bit data}.@refill
 
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31, 127 \e$B$*$h$S\e(B 128 \e$B$+$i\e(B 159 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$GI=\e(B
-\e$B8=$5$l$k6uGr$H\e(B 33 \e$B$+$i\e(B 126 \e$B$H\e(B 160 \e$B$+$i\e(B 255 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i$J$k\e(B
-\e$BJ8;zNs$N$3$H$r\e(B ``8bit \e$B$NJ8;zNs\e(B'' \e$B$H8F$S$^$9!J$3$l$O\e(B ISO 2022 (@ref{ISO
-2022}) \e$B$N!V\e(B8 \e$BC10L7O!W$HF1MM$G$9!K!#\e(B@refill
+Textual string consisted of Control characters between 0 .. 31, 127, and
+128 .. 159, and space represented by 32, and graphic characters between
+33 .. 236 and 160 .. 255 are called @cindex{8bit (textual)
+string}@strong{8bit (textual) string}.@refill
 
-iso-8859-1 (@ref{iso-8859-1}) \e$B$d\e(B euc-kr (@ref{euc-kr}) \e$B$H$$$C$?Id9f2=J8\e(B
-\e$B;z=89g$O\e(B 8bit \e$B$NJ8;zNs$G$9!#\e(B@refill
+For example, iso-8859-1 (@ref{iso-8859-1}) or euc-kr (@ref{euc-kr}) are
+coded-character-set represented by 8bit textual string.@refill
 
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B MTA (@ref{MTA}) \e$B$O\e(B 7bit (@ref{7bit}) \e$B$N\e(B data \e$B$7$+E>\e(B
-\e$BAw$G$-$J$$$N$G!"$=$&$7$?\e(B MTA \e$B$r7PM3$9$k>l9g!"\e(BQuoted-Printable
-(@ref{Quoted-Printable}) \e$B$d\e(B Base64 (@ref{Base64}) \e$B$H$$$C$?JQ49$r9T$o$J$/\e(B
-\e$B$F$O$J$j$^$;$s!#\e(B@refill
+Traditional Internet MTA (@ref{MTA}) can translate only 7bit
+(@ref{7bit}) data, so if a 8bit data will be translated such MTA, it
+must be encoded by Quoted-Printable (@ref{Quoted-Printable}) or Base64
+(@ref{Base64}).@refill
 
-\e$B$7$+$7!":G6a$G$O\e(B 8bit \e$B$NJ8;zNs$r$=$N$^$^DL$9$3$H$,$G$-$k\e(B MTA \e$B$bEP>l$7$F\e(B
-\e$B$-$?$N$G!"$=$N$^$^Aw$k$3$H$,$G$-$k>l9g$bA}$($F$-$^$7$?!#\e(B@refill
-
-\e$B$7$+$7!"\e(B8bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#19T\e(B
-\e$B$ND9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i\e(B
-\e$B$G$9!#$A$J$_$K!"\e(BRFC 821 \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998 byte \e$B0JFb$G$"$k$3$H\e(B
-\e$B$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-$N$"$k\e(B data, \e$BNc$($P!"\e(B
-Postscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B encode\e$B$9$kI,MQ$,$"$j$^$9!#\e(B
-@refill
+However 8bit MTA are increasing today.@refill
 
-\e$B$^$?!"$3$&$7$?M}M3$+$i!"#19T$,\e(B 999 byte \e$B0J>e$N9T$,B8:_$9$k2DG=@-$N$"$k\e(B
-data \e$B$O\e(B @cindex{binary}@strong{binary} (@ref{binary}) \e$B$H8F$V$3$H$K$7$^$9!#\e(B
-
-\e$B$A$J$_$K!"\e(B7bit \e$B$GI=8=$G$-$k\e(B data \e$B$O\e(B 8bit \e$B$G$bI=8=$G$-$^$9!#$h$C$F!"\e(B
-``8bit'' \e$B$H8@$C$?>l9g!"#19T$,\e(B 998 byte \e$B0J2<$NG$0U$N\e(B data \e$B$r;X$9$3$H$,\e(B
-\e$B$"$j$^$9!#\e(B
+However if there are too long lines, it can not translate by 8bit MTA
+even if it is 8bit data.  RFC 2045 (@ref{RFC 2045}) require lines in
+8bit data must be less than 998 bytes.  So if a ``8bit data'' has a line
+more than 999 bytes, it is regarded as binary (@ref{binary}), so it must
+be encoded by Base64 or Quoted-Printable.
 
 
 @node 94 character set, 96 character set, 8bit, Glossary
@@ -307,16 +253,17 @@ Interchange'', ANSI X3.4:1986.
 @node Base64, binary, ASCII, Glossary
 @subsection Base64
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B 
-binary data (@ref{binary}) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B@refill
+@cindex{Base64}@strong{Base64} is a transfer encoding method of MIME
+(@ref{MIME}) defined in RFC 2045 (@ref{RFC 2045}).@refill
 
-\e$B!X\e(B64 \e$B?J?t!Y$H$$$&0UL#$G!"\e(B3 byte \e$B$N\e(B data \e$B$r\e(B 0 \e$B$+$i\e(B 63 \e$B$N?t$rI=$9\e(B ASCII
-(@ref{ASCII}) 4 \e$BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"\e(B4 \e$BJ8;z$K$J$i$J$1$l$P\e(B 
-@cindex{pad}@strong{pad} \e$B$H8F$P$l$k5M$aJ*$r$7$FD9$5$rD4@0$9$k!K\e(B@refill
+The encoding process represents 24-bit groups of input bits as output
+strings of 4 encoded characters.  Encoded characters represent integer 0
+.. 63 or @cindex{pad}@strong{pad}.  Base64 data must be 4 * n bytes, so
+pad is used to adjust size.@refill
 
-\e$B$3$N\e(B 65 \e$B<oN`$NJ8;z$O\e(B ASCII \e$B$H\e(B EBCDIC \e$B$N6&DLItJ,$+$iA*$P$l$F$*$j!"\e(B
-Internet \e$B0J30$N\e(B network \e$B$r7PM3$9$k>l9g$G$b0BA4$KE>Aw$G$-$k$h$&$K@_7W$5\e(B
-\e$B$l$F$$$k!#\e(B
+These 65 characters are subset of all versions of ISO 646, including
+US-ASCII, and all versions of EBCDIC.  So it is safe even if it is
+translated by non-Internet gateways.
 
 
 @node binary, Character Set, Base64, Glossary
@@ -411,7 +358,7 @@ ISO 2022 (@ref{ISO 2022}) \e$B$G$N=*C<J8;z$O!"Bh#1LL$,\e(B `G', \e$BBh#2LL$,\e(B `H'
 \e$B$a$KMQ$$$k<jK!!#\e(BISO 2022 (@ref{ISO 2022}) \e$B$O$=$N#1$D!#\e(B
 
 
-@node Content-Disposition, content-type, Code extension, Glossary
+@node Content-Disposition, media type, Code extension, Glossary
 @subsection Content-Disposition field
 
 Content \e$B$NI=<($N;EJ}$d\e(B file \e$BL>$rI=8=$9$k$?$a$N\e(B field. MIME (@ref{MIME}) 
@@ -428,60 +375,63 @@ Experimental.
 
 
 
-@node content-type, Content-Type field, Content-Disposition, Glossary
-@subsection content-type
+@node media type, Content-Type field, Content-Disposition, Glossary
+@subsection media type
 
-MIME (@ref{MIME}) \e$B$K$*$1$k\e(B part (@ref{part}) \e$B$N<oN`!#\e(B
-@cindex{type}@strong{type} \e$B$H\e(B @cindex{subtype}@strong{subtype} \e$B$+$i$J$k!#\e(B
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
+@cindex{media type}@strong{media type} specifies the nature of the data
+in the body of MIME (@ref{MIME}) entity (@ref{entity}).  It consists of
+@cindex{type}@strong{type} and @cindex{subtype}@strong{subtype}.  It is
+defined in RFC 2046 (@ref{RFC 2046}).@refill
 
-type \e$B$OI8=`$G$O\e(B @cindex{application}@strong{application},
-@cindex{audio}@strong{audio}, @cindex{image}@strong{image},
-@cindex{message}@strong{message}, @cindex{multipart}@strong{multipart}
-(@ref{multipart}), @cindex{text}@strong{text},
-@cindex{video}@strong{video} \e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B 
-application/octet-stream, audio/basic, image/jpeg, multipart/mixed
-(@ref{multipart/mixed}), text/plain (@ref{text/plain}), video/mpeg \e$B$J$I\e(B
-\e$B$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
+Currently there are following types:
 
-@noindent
-@strong{[\e$BCm0U\e(B]}
-@quotation
+@itemize @bullet
+@item
+@cindex{text}@strong{text}
+@item
+@cindex{image}@strong{image}
+@item
+@cindex{audio}@strong{audio}
+@item
+@cindex{video}@strong{video}
+@item
+@cindex{application}@strong{application}
+@item
+@cindex{multipart}@strong{multipart} (@ref{multipart})
+@item
+@cindex{message}@strong{message}
+@end itemize
 
-\e$B$3$3$G$O!"\e(Btext/plain \e$B$J$I$N\e(B type/subtype \e$B$NAH$r$7$P$7$P\e(B 
-@cindex{content-type/subtype}@strong{content-type/subtype} \e$B$H=q$/!#\e(B
-@end quotation
 
+And there are various subtypes, for example, application/octet-stream,
+audio/basic, image/jpeg, multipart/mixed (@ref{multipart/mixed}),
+text/plain (@ref{text/plain}), video/mpeg...@refill
 
-content-type \e$B$O!"\e(BRFC 1521 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G\e(B
-\e$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B MEDIA TYPES
-(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) \e$B$G;2>H$G$-$k!#\e(B
+You can refer registered media types at MEDIA TYPES
+(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types).@refill
 
-\e$B$^$?!"\e(Btype \e$B$b$7$/$O\e(B subtype \e$B$K!"A0$K\e(B `x-' \e$B$rIU$1$?\e(B 
-@cindex{x-token}@strong{x-token} \e$B$rMQ$$$k$3$H$K$h$j!"EPO?$5$l$F$$$J$$$b\e(B
-\e$B$N$r;dE*$KMQ$$$k$3$H$b$G$-$k!#$7$+$7!"EvA3$N$3$H$J$,$i!"$3$&$7$?;dE*$J\e(B 
-content-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3\e(B
-\e$B$H!#\e(B@refill
+In addition, you can use private type or subtype using
+@cindex{x-token}@strong{x-token}, which as the prefix `x-'.  However you
+can not use them in public.@refill
 
 (cf. @ref{Content-Type field})
 
 
 
-@node Content-Type field, Emacs, content-type, Glossary
+@node Content-Type field, Emacs, media type, Glossary
 @subsection Content-Type field
 
-Header field to represent information about part, such as content-type
-(@ref{content-type}), MIME charset (@ref{MIME charset}).  It is defined
-in RFC 1521 (@ref{RFC 1521}).
+Header field to represent information about body, such as media type
+(@ref{media type}), MIME charset (@ref{MIME charset}).  It is defined in
+RFC 2045 (@ref{RFC 2045}).
 
 @noindent
 @strong{[Memo]}
 @quotation
 
 Historically, Content-Type field was proposed in RFC 1049.  In it,
-Content-Type did not distinguish type and subtype.  However RFC 1521
-parser may be able to accept RFC 1049 based Content-Type as unknown
-type.
+Content-Type did not distinguish type and subtype.  However MIME parser
+may be able to accept RFC 1049 based Content-Type as unknown type.
 @end quotation
 
 
@@ -548,15 +498,15 @@ GNU Emacs \e$B$NJQ<o$NAm>N$H$9$k!#\e(B
 @subsection encoded-word
 
 Representation non ASCII (@ref{ASCII}) characters in header.  It is
-defined in @cindex{RFC 1522}@strong{RFC 1522}.@refill
+defined in @cindex{RFC 2047}@strong{RFC 2047}.@refill
 
-@cindex{Standards Track}@cindex{RFC 1522}
+@cindex{Standards Track}@cindex{RFC 2047}
 @noindent
-[RFC 1522]
+[RFC 2047]
 @quotation
-K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Two:
-Message Header Extensions for Non-ASCII Text'', September 1993,
-Standards Track.
+K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Three:
+Message Header Extensions for Non-ASCII Text'', November 1996, Standards
+Track (obsolete RFC 1521,1522,1590).
 @end quotation
 
 
@@ -826,13 +776,14 @@ Latin Alphabet No.1'', ISO 8859-1:1987.
 @node iso-8859-1, ISO 8859-2, ISO 8859-1, Glossary
 @subsection iso-8859-1
 
-\e$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N\e(B MIME charset (@ref{MIME charset}) \e$B$N#1$D!#\e(B
+@cindex{iso-8859-1}@strong{iso-8859-1} is a MIME charset (@ref{MIME
+charset}) for west-European languages written by Latin script.@refill
 
 ISO 2022 (@ref{ISO 2022}) \e$B$K4p$$$F!"\e(BASCII (@ref{ASCII}) \e$B$K\e(B ISO 8859-1
 (@ref{ISO 8859-1}) \e$B$r\e(B 8bit (@ref{8bit}) \e$B$GId9f3HD%\e(B (@ref{Code
 extension})\e$B$7$F$$$k!#\e(B@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 2046 (@ref{RFC 2046}).
 
 
 @node ISO 8859-2, iso-8859-2, iso-8859-1, Glossary
@@ -855,13 +806,14 @@ Latin alphabet No.2'', ISO 8859-2:1987.
 @node iso-8859-2, ISO 8859-3, ISO 8859-2, Glossary
 @subsection iso-8859-2
 
-\e$BEl2$=t8l$rI=8=$9$k$?$a$N\e(B MIME charset (@ref{MIME charset}) \e$B$N#1$D!#\e(B
+@cindex{iso-8859-2}@strong{iso-8859-2} is a MIME charset (@ref{MIME
+charset}) for east-European languages written by Latin script.@refill
 
 ISO 2022 (@ref{ISO 2022}) \e$B$K4p$$$F!"\e(BASCII (@ref{ASCII}) \e$B$K\e(B ISO 8859-2
 (@ref{ISO 8859-2}) \e$B$r\e(B 8bit (@ref{8bit}) \e$B$GId9f3HD%\e(B (@ref{Code
 extension})\e$B$7$F$$$k!#\e(B@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 2046 (@ref{RFC 2046}).
 
 
 @node ISO 8859-3, ISO 8859-4, iso-8859-2, Glossary
@@ -911,13 +863,14 @@ Latin/Cyrillic alphabet'', ISO 8859-5:1988.
 @node iso-8859-5, ISO 8859-6, ISO 8859-5, Glossary
 @subsection iso-8859-5
 
-\e$B%-%j%kJ8;z$rI=8=$9$k$?$a$N\e(B MIME charset (@ref{MIME charset}) \e$B$N#1$D!#\e(B
+@cindex{iso-8859-5}@strong{iso-8859-5} is a MIME charset (@ref{MIME
+charset}) for Cyrillic script.@refill
 
 ISO 2022 (@ref{ISO 2022}) \e$B$K4p$$$F!"\e(BASCII (@ref{ASCII}) \e$B$K\e(B ISO 8859-5
 (@ref{ISO 8859-5}) \e$B$r\e(B 8bit (@ref{8bit}) \e$B$GId9f3HD%\e(B (@ref{Code
 extension})\e$B$7$F$$$k!#\e(B@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 2046 (@ref{RFC 2046}).
 
 
 @node ISO 8859-6, ISO 8859-7, iso-8859-5, Glossary
@@ -953,13 +906,14 @@ Latin/Greek alphabet'', ISO 8859-7:1987.
 @node iso-8859-7, ISO 8859-8, ISO 8859-7, Glossary
 @subsection iso-8859-7
 
-\e$B%.%j%7%"8l$rI=8=$9$k$?$a$N\e(B MIME charset (@ref{MIME charset}) \e$B$N#1$D!#\e(B
+@cindex{iso-8859-7}@strong{iso-8859-7} is a MIME charset (@ref{MIME
+charset}) for Greek script.@refill
 
 ISO 2022 (@ref{ISO 2022}) \e$B$K4p$$$F!"\e(BASCII (@ref{ASCII}) \e$B$K\e(B ISO 8859-7
 (@ref{ISO 8859-7}) \e$B$r\e(B 8bit (@ref{8bit}) \e$B$GId9f3HD%\e(B (@ref{Code
 extension})\e$B$7$F$$$k!#\e(B@refill
 
-RFC 1947 \e$B$GDj5A$5$l$F$$$k!#\e(B
+It is defined in RFC 1947.
 
 @cindex{iso-8859-7}@cindex{Informational}@cindex{RFC 1947}
 @noindent
@@ -1156,9 +1110,11 @@ Interchange (Hangul and Hanja)'', KS C 5601:1987.
 @node message/rfc822, method, message, Glossary
 @subsection message/rfc822
 
-\e$BEAE}E*$J\e(B RFC 934 (@ref{RFC 934}) \e$B$KBe$o$j!"\e(BRFC 822 (@ref{RFC 822}) \e$B$GDj\e(B
-\e$B5A$5$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(BRFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F\e(B
-\e$B$$$k!#\e(B
+@cindex{message/rfc822}@strong{message/rfc822} indicates that the body
+contains an encapsulated message, with the syntax of an RFC 822
+(@ref{RFC 822}) message.  It is the replacement of traditional RFC 934
+(@ref{RFC 934}) encapsulation.  It is defined in RFC 2046 (@ref{RFC
+2046}).
 
 
 @node method, MIME, message/rfc822, Glossary
@@ -1176,26 +1132,45 @@ method}@strong{external method} \e$B$,$"$k!#\e(B@refill
 @node MIME, MIME charset, method, Glossary
 @subsection MIME
 
-@cindex{Multipurpose Internet Mail Extensions}@strong{Multipurpose
-Internet Mail Extensions} \e$B$NN,$G!"\e(BInternet \e$B$N\e(B mail \e$B$d\e(B news \e$B$G\e(B us-ascii
-plain text (@ref{us-ascii}) \e$B0J30$NJ8;z$r;H$&$?$a$N\e(B RFC 822 (@ref{RFC
-822}) \e$B$KBP$9$k3HD%!#\e(B@refill
+MIME stands for @cindex{Multipurpose Internet Mail
+Extensions}@strong{Multipurpose Internet Mail Extensions}, it is an
+extension for RFC 822 (@ref{RFC 822}).@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$H\e(B RFC 1522 (@ref{encoded-word}) \e$B$GDj5A$5$l$F\e(B
-\e$B$$$k!#\e(B@refill
+According to RFC 2045:@refill
 
-(cf. @ref{What is MIME?})
+STD 11, RFC 822, defines a message representation protocol specifying
+considerable detail about US-ASCII message headers, and leaves the
+message content, or message body, as flat US-ASCII text.  This set of
+documents, collectively called the Multipurpose Internet Mail
+Extensions, or MIME, redefines the format of messages to allow
+for@refill
+
+@enumerate
+@item
+textual message bodies in character sets other than US-ASCII,
+@item
+an extensible set of different formats for non-textual message
+bodies,
+@item
+multi-part message bodies, and
+@item
+textual header information in character sets other than US-ASCII.
+@end enumerate
 
 
+It is defined in RFC 2045 (@ref{RFC 2045}), RFC 2046 (@ref{RFC 2046}),
+RFC 2047 (@ref{encoded-word}), RFC 2048 (@ref{RFC 2048}) and RFC 2049
+(@ref{RFC 2049}).
+
 
 @node MIME charset, MTA, MIME, Glossary
 @subsection MIME charset
 
-Content-Type field (@ref{Content-Type field}) \e$B$d\e(B encoded-word
-(@ref{encoded-word}) \e$B$N\e(B charset parameter \e$B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8\e(B
-\e$B;z=89g\e(B (@ref{Coded character set})\e$B!#\e(B@refill
+Coded character set (@ref{Coded character set}) used in Content-Type
+field (@ref{Content-Type field}) or charset parameter of encoded-word
+(@ref{encoded-word}).@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
+It is defined in RFC 2045 (@ref{RFC 2045}).@refill
 
 iso-2022-jp (@ref{iso-2022-jp}) \e$B$d\e(B euc-kr (@ref{euc-kr}) \e$B$O$=$N#1$D!#\e(B
 \e$B!J$3$3$G$O!"\e(BMIME charset \e$B$OJ8;z=89g\e(B (@ref{Character set})\e$B$H6hJL$7$F>.J8\e(B
@@ -1247,12 +1222,11 @@ Enhancement to GNU Emacs'', Proc. of INET'93, August, 1993.@refill
 @node multipart, multipart/alternative, MULE, Glossary
 @subsection Multipart
 
-\e$B#1$D$N\e(B message (@ref{message}) \e$B$KJ#?t$N\e(B part \e$B$rF~$l$k$?$a$N\e(B MIME
-(@ref{MIME}) \e$B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N\e(B part \e$B$+$i$J$k\e(B message \e$B$r;X\e(B
-\e$B$9!#\e(B(cf. @ref{content-type}) @refill
+@cindex{multipart}@strong{multipart} means media type (@ref{media type})
+to insert multiple entities (@ref{entities}) in a single body.  Or it
+also indicates a message consists of multiple entities.@refill
 
-\e$B8=:_!"Dj5A$5$l$F$$$k\e(B @cindex{multipart}@strong{multipart} \e$B$H$7$F$O!"\e(BRFC
-1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$?\e(B
+There are following subtypes registered in RFC 2046 (@ref{RFC 2046}):
 
 @itemize @bullet
 @item
@@ -1266,7 +1240,7 @@ multipart/parallel (@ref{multipart/parallel})
 @end itemize
 
 @noindent
-\e$B$N$[$+\e(B RFC 1847 (@ref{Security multipart}) \e$B$GDj5A$5$l$?\e(B
+and registered in RFC 1847 (@ref{Security multipart}):
 
 @itemize @bullet
 @item
@@ -1275,33 +1249,35 @@ multipart/signed (@ref{multipart/signed})
 multipart/encrypted (@ref{multipart/encrypted})
 @end itemize
 
-@noindent
-\e$B$J$I$,$"$k!#\e(B
 
 
 @node multipart/alternative, multipart/digest, multipart, Glossary
 @subsection multipart/alternative
 
-multipart (@ref{multipart}) \e$B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br;h\e(B
-\e$B$H$9$k>l9g$KMQ$$$k!#\e(B@refill
+@cindex{multipart/digest}@strong{multipart/digest} is one of multipart
+(@ref{multipart}) media types.  This type is syntactically identical to
+multipart/mixed (@ref{multipart/mixed}), but the semantics are
+different.  In particular, each of the body parts is an ``alternative''
+version of the same information.@refill
 
-(cf. @ref{RFC 1521})
+(cf. @ref{RFC 2046})
 
 
 
 @node multipart/digest, multipart/encrypted, multipart/alternative, Glossary
 @subsection multipart/digest
 
-multipart (@ref{multipart}) \e$B$N#1$D$G!"4^$^$l$k\e(B part \e$B$N\e(B default \e$B$N\e(B
-content-type (@ref{content-type}) \e$B$,\e(B multipart/mixed
-(@ref{multipart/mixed}) \e$B$J$I$N>l9g\e(B text/plain (@ref{text/plain}) \e$B$G$"$k\e(B
-\e$B$N$KBP$7!"\e(B@cindex{multipart/digest}@strong{multipart/digest}\e$B$G$O\e(B 
-message/rfc822 (@ref{message/rfc822}) \e$B$,MQ$$$i$l$kE@$,0[$J$k!#\e(B@refill
+@cindex{multipart/digest}@strong{multipart/digest} is one of multipart
+(@ref{multipart}) media types.  This type is syntactically identical to
+multipart/mixed (@ref{multipart/mixed}), but the semantics are
+different.  In particular, in a digest, the default Content-Type value
+for a body part is changed from text/plain (@ref{text/plain}) to
+message/rfc822 (@ref{message/rfc822}).@refill
 
-\e$B$3$l$OEAE}E*$J\e(B RFC 1153 (@ref{RFC 1153}) \e$B$K4p$E$/\e(B encapsulation
-(@ref{encapsulation}) \e$B$KBe$o$k$b$N$G$"$k!#\e(B@refill
+This is the replacement of traditional RFC 1153 (@ref{RFC 1153}) based
+encapsulation (@ref{encapsulation}).@refill
 
-(cf. @ref{RFC 1521})
+(cf. @ref{RFC 2046})
 
 
 
@@ -1318,20 +1294,24 @@ RFC 1847 \e$B$GDj5A$5$l$?\e(B Security multipart (@ref{Security multipart}) \e$B$N#
 @node multipart/mixed, multipart/parallel, multipart/encrypted, Glossary
 @subsection multipart/mixed
 
-multipart (@ref{multipart}) \e$B$N<gMW$J\e(B subtype \e$B$G!"J#?t$N\e(B part \e$B$r=g=xIU$1\e(B
-\e$B$FJB$Y$k>l9g$KMQ$$$k!#\e(B@refill
+Primary and default subtype of multipart (@ref{multipart}), it is used
+when the body parts are independent and need to be bundled in a
+particular order.@refill
 
-(cf. @ref{RFC 1521})
+(cf. @ref{RFC 2046})
 
 
 
 @node multipart/parallel, multipart/signed, multipart/mixed, Glossary
 @subsection multipart/parallel
 
-multipart (@ref{multipart}) \e$B$N#1$D$G!"J#?t$N\e(B part \e$B$r=g=xIU$1$:$K4^$a$k>l\e(B
-\e$B9g$KMQ$$$k!#\e(B@refill
+@cindex{multipart/parallel}@strong{multipart/parallel} is a subtype of
+multipart (@ref{multipart}).  This type is syntactically identical to
+multipart/mixed (@ref{multipart/mixed}), but the semantics are
+different.  In particular, in a parallel entity, the order of body parts
+is not significant.@refill
 
-(cf. @ref{RFC 1521})
+(cf. @ref{RFC 2046})
 
 
 
@@ -1430,16 +1410,15 @@ M. Elkins, ``MIME Security with Pretty Good Privacy (PGP)'', October
 @node Quoted-Printable, RFC 821, PGP/MIME, Glossary
 @subsection Quoted-Printable
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B 
-binary data (@ref{binary}) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B@refill
+@cindex{Quoted-Printable}@strong{Quoted-Printable} is a transfer
+encoding method of MIME (@ref{MIME}) defined in RFC 2045 (@ref{RFC
+2045}).@refill
 
-`=' \e$B$d@)8fJ8;z$d\e(B 128 \e$B0J>e$NJ8;z$J$I$O\e(B `=AF' \e$B$N$h$&$K\e(B `=' \e$B$N8e$KB3$/\e(B 16 
-\e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(BASCII (@ref{ASCII}) \e$BJ8;zCf?4$N\e(B data \e$B$G$O\e(B 
-Base64 (@ref{Base64}) \e$B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#\e(B@refill
+If the data being encoded are mostly US-ASCII text, the encoded form of
+the data remains largely recognizable by humans.@refill
+
+(cf. @ref{Base64})
 
-\e$B$7$+$7$J$,$i!"\e(BEBCDIC \e$B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"\e(BEBCDIC \e$B$rMxMQ$7\e(B
-\e$B$F$$$k\e(B network \e$B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"\e(BBase64 \e$B$KHf$Y$F0BA4@-$O\e(B
-\e$BDc$$!#\e(B
 
 
 @node RFC 821, RFC 822, Quoted-Printable, Glossary
@@ -1521,7 +1500,7 @@ December 1987, (obsolete RFC 850).
 
 
 
-@node RFC 1153, RFC 1521, RFC 1036, Glossary
+@node RFC 1153, RFC 1557, RFC 1036, Glossary
 @subsection RFC 1153
 
 \e$BJ#?t$N\e(B Internet mail (@ref{RFC 822}) \e$B$r\e(B 
@@ -1544,26 +1523,7 @@ F. Wancho, ``Digest Message Format'', April 1990.
 
 
 
-@node RFC 1521, RFC 1557, RFC 1153, Glossary
-@subsection RFC 1521 
-
-MIME (@ref{MIME}) \e$B$rDj5A$7$F$$$k\e(B RFC \e$B$N#1$D!#\e(B
-
-@cindex{Standards Track}@cindex{RFC 1521}
-@noindent
-[RFC 1521]
-@quotation
-N. Borenstein and N. Freed, ``MIME (Multipurpose Internet Mail
-Extensions) Part One: Mechanisms for Specifying and Describing the
-Format of Internet Message Bodies'', September 1993, Standards Track
-(obsolete RFC 1341).
-@end quotation
-
-
-(RFC 1522 (@ref{encoded-word}))
-
-
-@node RFC 1557, RFC 1922, RFC 1521, Glossary
+@node RFC 1557, RFC 1922, RFC 1153, Glossary
 @subsection RFC 1557
 
 euc-kr (@ref{euc-kr}) \e$B$H\e(B iso-2022-kr (@ref{iso-2022-kr}) \e$B$H$$$&4Z9q8l$N\e(B
@@ -1579,7 +1539,7 @@ Messages'', December 1993, Informational.
 
 
 
-@node RFC 1922, plain text, RFC 1557, Glossary
+@node RFC 1922, RFC 2045, RFC 1557, Glossary
 @subsection RFC 1922
 
 iso-2022-cn (@ref{iso-2022-cn}), iso-2022-cn-ext
@@ -1602,7 +1562,63 @@ Informational.
 
 
 
-@node plain text, Security multipart, RFC 1922, Glossary
+@node RFC 2045, RFC 2046, RFC 1922, Glossary
+@subsection RFC 2045
+
+@cindex{Standards Track}@cindex{RFC 2045}
+@noindent
+[RFC 2045]
+@quotation
+N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
+(MIME) Part One: Format of Internet Message Bodies'', November 1996,
+Standards Track (obsolete RFC 1521, 1522, 1590).
+@end quotation
+
+
+
+@node RFC 2046, RFC 2048, RFC 2045, Glossary
+@subsection RFC 2046
+
+@cindex{Standards Track}@cindex{RFC 2046}
+@noindent
+[RFC 2046]
+@quotation
+N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
+(MIME) Part Two: Media Types'', November 1996, Standards Track (obsolete
+RFC 1521, 1522, 1590).
+@end quotation
+
+
+
+@node RFC 2048, RFC 2049, RFC 2046, Glossary
+@subsection RFC 2048
+
+@cindex{Standards Track}@cindex{RFC 2048}
+@noindent
+[RFC 2048]
+@quotation
+N. Freed, J. Klensin and J. Postel, ``Multipurpose Internet Mail
+Extensions (MIME) Part Four: Registration Procedures'', November 1996,
+Standards Track (obsolete RFC 1521, 1522, 1590).
+@end quotation
+
+
+
+@node RFC 2049, plain text, RFC 2048, Glossary
+@subsection RFC 2049
+
+@cindex{Standards Track}@cindex{RFC 2049}
+@noindent
+[RFC 2049]
+@quotation
+N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
+(MIME) Part Five: Conformance Criteria and Examples'', November 1996,
+Standards Track (obsolete RFC 1521, 1522, 1590).
+@end quotation
+
+
+
+@node plain text, Security multipart, RFC 2049, Glossary
 @subsection plain text
 
 \e$B=qBN$dAHHG$K4X$9$k>pJs$r;}$?$J$$\e(B \e$BJ8;zId9f\e(B(@ref{Coded character set})\e$B$N$_\e(B
@@ -1634,9 +1650,9 @@ Multiparts for MIME: Multipart/Signed and Multipart/Encrypted'', October
 @node text/enriched, text/plain, Security multipart, Glossary
 @subsection text/enriched
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$?\e(B 
-@cindex{text/richtext}@strong{text/richtext} \e$B$KBe$o$C$F!"=qBN$dAHHG$K4X\e(B
-\e$B$9$k>pJs$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B content-type (@ref{content-type}).
+RFC 1521 \e$B$GDj5A$5$l$?\e(B @cindex{text/richtext}@strong{text/richtext} \e$B$KBe\e(B
+\e$B$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B media type
+(@ref{media type}).
 
 @cindex{text/enriched}@cindex{RFC 1896}
 @noindent
@@ -1651,13 +1667,16 @@ February 1996, (obsolete RFC 1563).
 @node text/plain, tm-kernel, text/enriched, Glossary
 @subsection text/plain
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$?!"\e(Bplain text (@ref{plain text}) \e$B$r\e(B
-\e$BI=8=$9$k$?$a$N\e(B content-type (@ref{content-type}).@refill
+@cindex{text/plain}@strong{text/plain} is a media type (@ref{media
+type}) for plain text (@ref{plain text}), defined in RFC 2046 (@ref{RFC
+2046}).@refill
+
+The default media type of ``text/plain; charset=us-ascii'' for Internet
+mail describes existing Internet practice.  That is, it is the type of
+body defined by RFC 822 (@ref{RFC 822}).@refill
+
+(cf. @ref{MIME charset}) (cf. @ref{us-ascii})
 
-\e$BHs\e(B MIME message \e$B$J$I$N\e(B content-type \e$B$,Dj5A$5$l$J$$\e(B part \e$B$O\e(B MIME charset
-(@ref{MIME charset}) \e$B$,\e(B us-ascii (@ref{us-ascii}) \e$B$G$"$k\e(B 
-@cindex{text/plain}@strong{text/plain} \e$B$N\e(B part \e$B$G$"$k$H8+Pv$5$l$k$3$H$K\e(B
-\e$B$J$C$F$$$k!#\e(B
 
 
 @node tm-kernel, tm-MUA, text/plain, Glossary
@@ -1958,9 +1977,9 @@ e-mail to:
 
 @itemize @bullet
 @item
\e$BF|K\8l\e(B <tm-ja-admin@@chamonix.jaist.ac.jp>
+ Japanese <tm-ja-admin@@chamonix.jaist.ac.jp>
 @item
\e$B1Q8l\e(B <tm-en-admin@@chamonix.jaist.ac.jp>
+ English  <tm-en-admin@@chamonix.jaist.ac.jp>
 @end itemize
 
 @noindent
index 81584dc..2ba99e8 100644 (file)
@@ -50,76 +50,11 @@ tm \e$B$O\e(B GNU Emacs \e$B$G\e(B MIME \e$B$r3Z$7$`$?$a$N\e(B package \e$B$G$9!#\e(Btm
 
 * Menu:
 
-* What is MIME?::               \e$B$H$3$m$G!"\e(BMIME \e$B$C$F$$$C$?$$2?!)\e(B
-* How is MIME?::                MIME \e$B$G$I$s$J$3$H=PMh$k$N!)\e(B
 * Glossary::                    \e$BMQ8l\e(B
 
 
 \1f
-File: tm-ja.info, Node: What is MIME?, Next: How is MIME?, Prev: Introduction, Up: Introduction
-
-\e$B$H$3$m$G!"\e(BMIME \e$B$C$F$$$C$?$$2?!)\e(B
-===============================
-
-*MIME* \e$B$H$O\e(B *Multipurpose Internet Mail Extensions* \e$B$NN,$G!"=>Mh$N!"\e(B
-\e$B4pK\E*$K\e(B us-ascii (*Note us-ascii::) \e$B$N\e(B plain text (*Note plain text::) 
-\e$B$G$"$C$?\e(B Internet Mail/News \e$B$KBP$9$k3HD%$K$J$C$F$$$^$9!#\e(B
-
-MIME \e$B$K$O!"\e(BRFC 1521 (*Note RFC 1521::) \e$B$G5,Dj$5$l$F$$$kB?L\E*\e(Bmessage \e$B$N\e(B
-\e$BB&LL$H!"\e(BRFC 1522 (*Note encoded-word::) \e$B$G5,Dj$5$l$F$$$k\e(Bmessage header 
-\e$B$K$*$1$kHs\e(B ASCII \e$BJ8;z$NI=8=K!$N$h$&$J!"B?8@8l2=$NB&LL$,$"$j$^$9!#\e(B
-
-
-
-\1f
-File: tm-ja.info, Node: How is MIME?, Next: Glossary, Prev: What is MIME?, Up: Introduction
-
-MIME \e$B$G$I$s$J$3$H=PMh$k$N!)\e(B
-===========================
-
-\e$B$^$:!"B?L\E*\e(B message \e$B$NB&LL$r9M$($k$H!"=>Mh$N\e(B Internet Mail/News \e$B$,4pK\\e(B
-\e$BE*$K\e(B us-ascii (*Note us-ascii::) \e$B$N\e(B plain text (*Note plain text::) \e$B$7$+\e(B
-\e$BI=8=$G$-$J$+$C$?$N$KBP$7$F!"3($d2;@<$dF02h$J$I$NMM!9$J\e(B data \e$B$rI=8=$9$k$3\e(B
-\e$B$H$,$G$-$^$9!#\e(B
-
-\e$B$^$?!"LLGr$$$3$H$K!"\e(Bftp (*Note FTP::) \e$B$d\e(B ftp mail \e$B$r$7$?$j!"\e(Bfile \e$B$r<h$j\e(B
-\e$B=P$7$?$j!"\e(Bpatch \e$B$rEv$F$?$j!"$H$$$C$?!"!X<jB3$-!Y$rAw$k$3$H$,$G$-$^$9!#\e(B
-
-\e$B!t\e(B \e$B$b$C$H$b!"$3$&$$$&$N$O!"$"$k0UL#$G$O4m81$@$C$?$j$9$k$N$G$9$,!#\e(B
-
-\e$B$3$&$7$?\e(B message \e$B$O!"FbMF$N<oN`$r\e(B 
-*Content-Type* (*Note Content-Type field::) \e$B$H\e(B
-\e$B$$$&\e(B field \e$B$K=q$$$?\e(B message \e$B$N7?$G;XDj$7$^$9!#$9$k$H!"<u$1<j$O3F\e(B 
-content-type (*Note content-type::) \e$B$KBP1~$7$?=hM}$N<oN`$r@_Dj$7$F$*$$$F!"\e(B
-message \e$B$r!XFI$`!Y$@$1$G!"3($dF02h$r8+$?$j!"2;$rLD$i$7$?$j!"\e(Bftp \e$B$G\e(B file 
-\e$B$r<h$C$?$j!"\e(Bfile\e$B$r<h$j=P$7$?$j$G$-$^$9!#\e(B
-
-\e$B$^$?!"$"$k\e(B message \e$B$KJ#?t$N\e(B content-type \e$B$,B8:_$9$k\e(B 
-*Multipart* (*Note multipart::) \e$B$N\e(B message \e$B$H$$$&\e(B
-\e$B$N$b2DG=$G!"0l$D$N\e(B message \e$B$NCf$K!"3($H2;$HJ8>O$rF~$l$?$j$H$$$C$?$h$&$J\e(B
-\e$B$3$H$,$G$-$^$9!#\e(B
-
-MIME \e$B$K$O$3$N$h$&$J!X@k8@!Y$N;WA[$,$"$k$h$&$K;W$o$l$^$9!#$D$^$j!"\e(B
-us-ascii (*Note us-ascii::) \e$B$r!V%"%k%U%!%Y%C%H!W$H$9$k\e(B MIME \e$B$H$$$&\e(B 
-message \e$B5-=R8@8l$G!"$$$m$$$m$J$b$N$r5-=R$7$F$$$3$&$H$$$&$3$H$G$9!#$3$l$O\e(B 
-RFC 1522 (*Note encoded-word::) \e$B$G5,Dj$5$l$?\e(B encoded-word \e$B$G$b$$$($k$H;W\e(B
-\e$B$$$^$9!#\e(B
-
-\e$B$=$7$F!"<u$1<j$O!"M}2r$G$-$J$$$b$N$OL5;k$9$k$,!"$=$N7k2L!"\e(Bdata \e$B$r2u$9$3\e(B
-\e$B$H$O$7$J$$$H$$$&$b$N$,$"$j$^$9!#\e(B
-
-\e$BNc$($P!"\e(BASCII (*Note ASCII::) \e$B$7$+I=<($G$-$J$$4D6-$G\e(B JIS X0208 (*Note
-JIS X0208::) \e$B$H\e(B ISO 8859-1 (*Note ISO 8859-1::) \e$B$,:.$8$C$?%F%-%9%H$r$b$i$C\e(B
-\e$B$?$i:$$kLu$G$9$,!"$=$&$$$&;~$@$1B?8@8lC<Kv$r3+$/$H$$$&$h$&$J5;$,;H$($^$9!#\e(B
-
-\e$B$b$A$m$s!"\e(BMULE (*Note MULE::) \e$B$N$h$&$JB?8@8l4D6-$K$*$$$F$b\e(B MUA (*Note
-MUA::) \e$B$KBP$7$FL@<(E*$K\e(B MIME charset (*Note MIME charset::) \e$B$r<($9$3$H$O\e(B
-\e$BM-1W$G$7$g$&!#\e(B
-
-
-
-\1f
-File: tm-ja.info, Node: Glossary, Prev: How is MIME?, Up: Introduction
+File: tm-ja.info, Node: Glossary, Prev: Introduction, Up: Introduction
 
 \e$BMQ8l\e(B
 ====
@@ -143,7 +78,7 @@ tm \e$B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#\e(B
 * Coded character set::         Coded character set\e$B!JId9f2=J8;z=89g!K\e(B, Character code\e$B!JJ8;zId9f!K\e(B
 * Code extension::              Code extension\e$B!JId9f3HD%!K\e(B
 * Content-Disposition::         Content-Disposition field
-* content-type::                
+* media type::                  
 * Content-Type field::          
 * Emacs::                       
 * encoded-word::                
@@ -204,9 +139,12 @@ tm \e$B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#\e(B
 * RFC 934::                     
 * RFC 1036::                    
 * RFC 1153::                    
-* RFC 1521::                    RFC 1521 
 * RFC 1557::                    
 * RFC 1922::                    
+* RFC 2045::                    
+* RFC 2046::                    
+* RFC 2048::                    
+* RFC 2049::                    
 * plain text::                  
 * Security multipart::          
 * text/enriched::               
@@ -343,7 +281,7 @@ File: tm-ja.info, Node: Base64, Next: binary, Prev: ASCII, Up: Glossary
 Base64
 ------
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k\e(B MIME (*Note MIME::) \e$B$K$*$1\e(B
+RFC 2045 (*Note RFC 2045::) \e$B$GDj5A$5$l$F$$$k\e(B MIME (*Note MIME::) \e$B$K$*$1\e(B
 \e$B$k\e(B binary data (*Note binary::) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
 
 \e$B!X\e(B64 \e$B?J?t!Y$H$$$&0UL#$G!"\e(B3 byte \e$B$N\e(B data \e$B$r\e(B 0 \e$B$+$i\e(B 63 \e$B$N?t$rI=$9\e(B ASCII
@@ -467,7 +405,7 @@ Code extension\e$B!JId9f3HD%!K\e(B
 
 
 \1f
-File: tm-ja.info, Node: Content-Disposition, Next: content-type, Prev: Code extension, Up: Glossary
+File: tm-ja.info, Node: Content-Disposition, Next: media type, Prev: Code extension, Up: Glossary
 
 Content-Disposition field
 -------------------------
@@ -484,23 +422,28 @@ MIME::) \e$B$N3HD%$N#1$D!#\e(B
 
 
 \1f
-File: tm-ja.info, Node: content-type, Next: Content-Type field, Prev: Content-Disposition, Up: Glossary
+File: tm-ja.info, Node: media type, Next: Content-Type field, Prev: Content-Disposition, Up: Glossary
 
-content-type
-------------
+media type
+----------
 
-MIME (*Note MIME::) \e$B$K$*$1$k\e(B part (*Note part::) \e$B$N<oN`!#\e(B
+MIME (*Note MIME::) \e$B$K$*$1$k\e(B entity (*Note entity::) \e$B$N<oN`!#\e(B
 *type* \e$B$H\e(B *subtype* \e$B$+$i$J$k!#\e(B
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2046 (*Note RFC 2046::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+
+type \e$B$OI8=`$G$O\e(B
 
-type \e$B$OI8=`$G$O\e(B *application*,
-*audio*, *image*,
-*message*, *multipart*
-(*Note multipart::), *text*,
-*video* \e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B 
-application/octet-stream, audio/basic, image/jpeg, multipart/mixed
-(*Note multipart/mixed::), text/plain (*Note text/plain::), video/mpeg 
-\e$B$J$I$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
+   * *text*
+   * *image*
+   * *audio*
+   * *video*
+   * *application*
+   * *multipart* (*Note multipart::)
+   * *message*
+
+\e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B application/octet-stream, audio/basic,
+image/jpeg, multipart/mixed (*Note multipart/mixed::), text/plain (*Note
+text/plain::), video/mpeg \e$B$J$I$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
 
 *[\e$BCm0U\e(B]*
 
@@ -508,8 +451,8 @@ application/octet-stream, audio/basic, image/jpeg, multipart/mixed
      *content-type/subtype* \e$B$H=q$/!#\e(B
 
 
-content-type \e$B$O!"\e(BRFC 1521 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G\e(B
-\e$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B MEDIA TYPES
+media type \e$B$O!"\e(BRFC 2046 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G$-\e(B
+\e$B$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B MEDIA TYPES
 (ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) \e$B$G;2>H$G$-$k!#\e(B
 
 \e$B$^$?!"\e(Btype \e$B$b$7$/$O\e(B subtype \e$B$K!"A0$K\e(B `x-' \e$B$rIU$1$?\e(B 
@@ -524,20 +467,20 @@ content-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3\e(B
 
 
 \1f
-File: tm-ja.info, Node: Content-Type field, Next: Emacs, Prev: content-type, Up: Glossary
+File: tm-ja.info, Node: Content-Type field, Next: Emacs, Prev: media type, Up: Glossary
 
 Content-Type field
 ------------------
 
-content-type (*Note content-type::) \e$B$d\e(B MIME charset (*Note MIME
-charset::) \e$B$J$I$N\e(B part \e$B$K4X$9$k>pJs$rI=8=$9$k$?$a$N\e(B field. RFC 1521
-(*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+media type (*Note media type::) \e$B$d\e(B MIME charset (*Note MIME charset::) 
+\e$B$J$I$N\e(B part \e$B$K4X$9$k>pJs$rI=8=$9$k$?$a$N\e(B field. RFC 2045 (*Note RFC
+2045::) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 *[Memo]*
 
      \e$BNr;KE*$K$O\e(B RFC 1049 \e$B$G\e(B Content-Type field \e$B$,Ds0F$5$l$F$$$k!#C"$7!"\e(B
-     \e$B$3$3$G$O\e(B type \e$B$H\e(B subtype \e$B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O\e(B RFC 1521
-     parser\e$B$O\e(B RFC 1049 \e$B$K4p$E$/\e(B message \e$B$rL$CN$N\e(B content-type \e$B$r;}$C$?\e(B 
+     \e$B$3$3$G$O\e(B type \e$B$H\e(B subtype \e$B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O\e(B MIME
+     parser \e$B$O\e(B RFC 1049 \e$B$K4p$E$/\e(B message \e$B$rL$CN$N\e(B content-type \e$B$r;}$C$?\e(B 
      message \e$B$H$7$F\e(B parse \e$B$G$-$k$@$m$&!#\e(B
 
 
@@ -586,13 +529,13 @@ File: tm-ja.info, Node: encoded-word, Next: encapsulation, Prev: Emacs, Up: Glos
 encoded-word
 ------------
 
-header \e$B$K$*$1$kHs\e(B ASCII (*Note ASCII::) \e$BJ8;z$NI=8=!#\e(B*RFC 1522* \e$B$GDj5A$5\e(B
+header \e$B$K$*$1$kHs\e(B ASCII (*Note ASCII::) \e$BJ8;z$NI=8=!#\e(B*RFC 2047* \e$B$GDj5A$5\e(B
 \e$B$l$F$$$k!#\e(B
 
 
-[RFC 1522] K. Moore, "MIME (Multipurpose Internet Mail Extensions)
-     Part Two: Message Header Extensions for Non-ASCII Text", September
-     1993, Standards Track.
+[RFC 2047] K. Moore, "MIME (Multipurpose Internet Mail Extensions)
+     Part Three: Message Header Extensions for Non-ASCII Text", November
+     1996, Standards Track (obsolete RFC 1521,1522,1590).
 
 
 
@@ -881,7 +824,7 @@ ISO 2022 (*Note ISO 2022::) \e$B$K4p$$$F!"\e(BASCII (*Note ASCII::) \e$B$K\e(B ISO
 8859-1 (*Note ISO 8859-1::) \e$B$r\e(B 8bit (*Note 8bit::) \e$B$GId9f3HD%\e(B (*Note
 Code extension::)\e$B$7$F$$$k!#\e(B
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2046 (*Note RFC 2046::) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 
@@ -914,7 +857,7 @@ ISO 2022 (*Note ISO 2022::) \e$B$K4p$$$F!"\e(BASCII (*Note ASCII::) \e$B$K\e(B ISO
 8859-2 (*Note ISO 8859-2::) \e$B$r\e(B 8bit (*Note 8bit::) \e$B$GId9f3HD%\e(B (*Note
 Code extension::)\e$B$7$F$$$k!#\e(B
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2046 (*Note RFC 2046::) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 
@@ -975,7 +918,7 @@ ISO 2022 (*Note ISO 2022::) \e$B$K4p$$$F!"\e(BASCII (*Note ASCII::) \e$B$K\e(B ISO
 8859-5 (*Note ISO 8859-5::) \e$B$r\e(B 8bit (*Note 8bit::) \e$B$GId9f3HD%\e(B (*Note
 Code extension::)\e$B$7$F$$$k!#\e(B
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2046 (*Note RFC 2046::) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 
@@ -1225,7 +1168,7 @@ message/rfc822
 --------------
 
 \e$BEAE}E*$J\e(B RFC 934 (*Note RFC 934::) \e$B$KBe$o$j!"\e(BRFC 822 (*Note RFC 822::) 
-\e$B$GDj5A$5$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(BRFC 1521 (*Note RFC 1521::) \e$B$GDj5A\e(B
+\e$B$GDj5A$5$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(BRFC 2046 (*Note RFC 2046::) \e$B$GDj5A\e(B
 \e$B$5$l$F$$$k!#\e(B
 
 
@@ -1256,12 +1199,25 @@ Internet Mail Extensions* \e$B$NN,$G!"\e(BInternet \e$B$N\e(B mail \e$B$d\e(B news \e$B
 plain text (*Note us-ascii::) \e$B0J30$NJ8;z$r;H$&$?$a$N\e(B RFC 822 (*Note RFC
 822::) \e$B$KBP$9$k3HD%!#\e(B
 
-RFC 1521 (*Note RFC 1521::) \e$B$H\e(B RFC 1522 (*Note encoded-word::) \e$B$GDj5A$5\e(B
-\e$B$l$F$$$k!#\e(B
+RFC 2045 \e$B$OKAF,$G<!$N$h$&$K=R$Y$F$$$k!'\e(B
+
+STD 11, RFC 822 \e$B$O!"\e(BUS-ASCII message header \e$B$K4X$7$FHs>o$K>\:Y$K5,Dj$7$?\e(B 
+message \e$BI=8=\e(B protocol \e$B$rDj5A$7$F$$$k!#$7$+$7!"$=$l$OC1$K\e(B flat \e$B$J\e(B 
+US-ASCII text \e$B$N$_$KN1$^$j!"\e(Bmessage \e$B$NFbMF$d\e(B message body \e$B$K4X$9$k5,Dj$O\e(B
+\e$B$J$5$l$F$$$J$$!#\e(BMultipurpose Internet Mail Extensions, \e$B$"$k$$$O\e(B MIME \e$B$H\e(B
+\e$BAm>N$5$l$k!"$3$N0lO"$NJ8=q$O!"0J2<$N;v$r2DG=$H$9$k$?$a$K\e(B message \e$B$N7A<0\e(B
+\e$B$r:FDj5A$7$?!'\e(B
 
-(cf. *Note What is MIME?::)
+  1. \e$BJ8=q\e(B message body \e$B$K$*$1$k\e(B US-ASCII \e$B0J30$NJ8;z=89g\e(B
+  2. \e$BHsJ8=q\e(B message body
+  3. \e$BJ#?t$NItJ,$+$i$J$k\e(B message body
+  4. US-ASCII \e$B0J30$NJ8;z=89g$+$i$J$kJ8=q\e(B header \e$B>pJs\e(B
 
 
+RFC 2045 (*Note RFC 2045::), RFC 2046 (*Note RFC 2046::), RFC 2047
+(*Note encoded-word::), RFC 2048 (*Note RFC 2048::), RFC 2049 (*Note RFC
+2049::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+
 
 
 \1f
@@ -1274,7 +1230,7 @@ Content-Type field (*Note Content-Type field::) \e$B$d\e(B encoded-word (*Note
 encoded-word::) \e$B$N\e(B charset parameter \e$B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8;z=8\e(B
 \e$B9g\e(B (*Note Coded character set::)\e$B!#\e(B
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2045 (*Note RFC 2045::) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 iso-2022-jp (*Note iso-2022-jp::) \e$B$d\e(B euc-kr (*Note euc-kr::) \e$B$O$=$N#1$D!#\e(B
 \e$B!J$3$3$G$O!"\e(BMIME charset \e$B$OJ8;z=89g\e(B (*Note Character set::)\e$B$H6hJL$7$F>.\e(B
@@ -1342,11 +1298,11 @@ File: tm-ja.info, Node: multipart, Next: multipart/alternative, Prev: MULE, Up:
 Multipart
 ---------
 
-\e$B#1$D$N\e(B message (*Note message::) \e$B$KJ#?t$N\e(B part \e$B$rF~$l$k$?$a$N\e(B MIME
-(*Note MIME::) \e$B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N\e(B part \e$B$+$i$J$k\e(B message \e$B$r\e(B
-\e$B;X$9!#\e(B(cf. *Note content-type::)
+\e$B#1$D$N\e(B message (*Note message::) \e$B$KJ#?t$N\e(B entity (*Note entity::) \e$B$rF~$l\e(B
+\e$B$k$?$a$N\e(B MIME (*Note MIME::) \e$B$K$*$1$k\e(B media type (*Note media type::) \e$B$N\e(B
+\e$B#1$D!"$b$7$/$O!"J#?t$N\e(B entity \e$B$+$i$J$k\e(B message \e$B$r;X$9!#\e(B
 
-\e$B8=:_!"Dj5A$5$l$F$$$k\e(B *multipart* \e$B$H$7$F$O!"\e(BRFC 1521 (*Note RFC 1521::) 
+\e$B8=:_!"Dj5A$5$l$F$$$k\e(B *multipart* \e$B$H$7$F$O!"\e(BRFC 2046 (*Note RFC 2046::) 
 \e$B$GDj5A$5$l$?\e(B
 
    * multipart/mixed (*Note multipart/mixed::)
@@ -1372,7 +1328,7 @@ multipart/alternative
 multipart (*Note multipart::) \e$B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br\e(B
 \e$B;h$H$9$k>l9g$KMQ$$$k!#\e(B
 
-(cf. *Note RFC 1521::)
+(cf. *Note RFC 2046::)
 
 
 
@@ -1383,8 +1339,8 @@ File: tm-ja.info, Node: multipart/digest, Next: multipart/encrypted, Prev: multi
 multipart/digest
 ----------------
 
-multipart (*Note multipart::) \e$B$N#1$D$G!"4^$^$l$k\e(B part \e$B$N\e(B default \e$B$N\e(B
-content-type (*Note content-type::) \e$B$,\e(B multipart/mixed (*Note
+multipart (*Note multipart::) \e$B$N#1$D$G!"4^$^$l$k\e(B entity (*Note entity::) 
+\e$B$N\e(B default \e$B$N\e(Bmedia type (*Note media type::) \e$B$,\e(B multipart/mixed (*Note
 multipart/mixed::) \e$B$J$I$N>l9g\e(B text/plain (*Note text/plain::) \e$B$G$"$k$N$K\e(B
 \e$BBP$7!"\e(B*multipart/digest*\e$B$G$O\e(B message/rfc822 (*Note message/rfc822::) \e$B$,\e(B
 \e$BMQ$$$i$l$kE@$,0[$J$k!#\e(B
@@ -1392,7 +1348,7 @@ multipart/mixed::) \e$B$J$I$N>l9g\e(B text/plain (*Note text/plain::) \e$B$G$"$k$N$
 \e$B$3$l$OEAE}E*$J\e(B RFC 1153 (*Note RFC 1153::) \e$B$K4p$E$/\e(B encapsulation (*Note
 encapsulation::) \e$B$KBe$o$k$b$N$G$"$k!#\e(B
 
-(cf. *Note RFC 1521::)
+(cf. *Note RFC 2046::)
 
 
 
@@ -1420,7 +1376,7 @@ multipart/mixed
 multipart (*Note multipart::) \e$B$N<gMW$J\e(B subtype \e$B$G!"J#?t$N\e(B part \e$B$r=g=xIU\e(B
 \e$B$1$FJB$Y$k>l9g$KMQ$$$k!#\e(B
 
-(cf. *Note RFC 1521::)
+(cf. *Note RFC 2046::)
 
 
 
@@ -1434,7 +1390,7 @@ multipart/parallel
 multipart (*Note multipart::) \e$B$N#1$D$G!"J#?t$N\e(B part \e$B$r=g=xIU$1$:$K4^$a$k\e(B
 \e$B>l9g$KMQ$$$k!#\e(B
 
-(cf. *Note RFC 1521::)
+(cf. *Note RFC 2046::)
 
 
 
@@ -1546,8 +1502,8 @@ File: tm-ja.info, Node: Quoted-Printable, Next: RFC 821, Prev: PGP/MIME, Up: Glo
 Quoted-Printable
 ----------------
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$F$$$k\e(B MIME (*Note MIME::) \e$B$K$*$1\e(B
-\e$B$k\e(B binary data (*Note binary::) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
+RFC 2045 (*Note RFC 2045::) \e$B$GDj5A$5$l$F$$$k\e(B MIME (*Note MIME::) \e$B$K$*$1\e(B
+\e$B$k\e(B binary data (*Note binary data::) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
 
 `=' \e$B$d@)8fJ8;z$d\e(B 128 \e$B0J>e$NJ8;z$J$I$O\e(B `=AF' \e$B$N$h$&$K\e(B `=' \e$B$N8e$KB3$/\e(B 16 
 \e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(BASCII (*Note ASCII::) \e$BJ8;zCf?4$N\e(B data \e$B$G$O\e(B 
@@ -1635,7 +1591,7 @@ subset \e$B$K$J$C$F$$$k!#\e(BInternet \e$B$NI8=`$G$O$J$$$,!"\e(BUSENET \e$B0J30$N\e(B
 
 
 \1f
-File: tm-ja.info, Node: RFC 1153, Next: RFC 1521, Prev: RFC 1036, Up: Glossary
+File: tm-ja.info, Node: RFC 1153, Next: RFC 1557, Prev: RFC 1036, Up: Glossary
 
 RFC 1153
 --------
@@ -1658,26 +1614,7 @@ message/rfc822::) \e$B$rMQ$$$?\e(B multipart (*Note multipart::) \e$B$rMQ$$$k$Y$-$G
 
 
 \1f
-File: tm-ja.info, Node: RFC 1521, Next: RFC 1557, Prev: RFC 1153, Up: Glossary
-
-RFC 1521
---------
-
-MIME (*Note MIME::) \e$B$rDj5A$7$F$$$k\e(B RFC \e$B$N#1$D!#\e(B
-
-
-[RFC 1521] N. Borenstein and N. Freed, "MIME (Multipurpose Internet
-     Mail Extensions) Part One: Mechanisms for Specifying and Describing
-     the Format of Internet Message Bodies", September 1993, Standards
-     Track (obsolete RFC 1341).
-
-
-(RFC 1522 (*Note encoded-word::))
-
-
-
-\1f
-File: tm-ja.info, Node: RFC 1557, Next: RFC 1922, Prev: RFC 1521, Up: Glossary
+File: tm-ja.info, Node: RFC 1557, Next: RFC 1922, Prev: RFC 1153, Up: Glossary
 
 RFC 1557
 --------
@@ -1693,7 +1630,7 @@ euc-kr (*Note euc-kr::) \e$B$H\e(B iso-2022-kr (*Note iso-2022-kr::) \e$B$H$$$&4Z9q
 
 
 \1f
-File: tm-ja.info, Node: RFC 1922, Next: plain text, Prev: RFC 1557, Up: Glossary
+File: tm-ja.info, Node: RFC 1922, Next: RFC 2045, Prev: RFC 1557, Up: Glossary
 
 RFC 1922
 --------
@@ -1716,7 +1653,64 @@ field (*Note Content-Type field::) \e$B$N\e(B parameter \e$B$rDj5A$7$F$$$k!#\e(B
 
 
 \1f
-File: tm-ja.info, Node: plain text, Next: Security multipart, Prev: RFC 1922, Up: Glossary
+File: tm-ja.info, Node: RFC 2045, Next: RFC 2046, Prev: RFC 1922, Up: Glossary
+
+RFC 2045
+--------
+
+
+[RFC 2045] N. Freed and N. Borenstein, "Multipurpose Internet Mail
+     Extensions (MIME) Part One: Format of Internet Message Bodies",
+     November 1996, Standards Track (obsolete RFC 1521, 1522, 1590).
+
+
+
+
+\1f
+File: tm-ja.info, Node: RFC 2046, Next: RFC 2048, Prev: RFC 2045, Up: Glossary
+
+RFC 2046
+--------
+
+
+[RFC 2046] N. Freed and N. Borenstein, "Multipurpose Internet Mail
+     Extensions (MIME) Part Two: Media Types", November 1996, Standards
+     Track (obsolete RFC 1521, 1522, 1590).
+
+
+
+
+\1f
+File: tm-ja.info, Node: RFC 2048, Next: RFC 2049, Prev: RFC 2046, Up: Glossary
+
+RFC 2048
+--------
+
+
+[RFC 2048] N. Freed, J. Klensin and J. Postel, "Multipurpose
+     Internet Mail Extensions (MIME) Part Four: Registration
+     Procedures", November 1996, Standards Track (obsolete RFC 1521,
+     1522, 1590).
+
+
+
+
+\1f
+File: tm-ja.info, Node: RFC 2049, Next: plain text, Prev: RFC 2048, Up: Glossary
+
+RFC 2049
+--------
+
+
+[RFC 2049] N. Freed and N. Borenstein, "Multipurpose Internet Mail
+     Extensions (MIME) Part Five: Conformance Criteria and Examples",
+     November 1996, Standards Track (obsolete RFC 1521, 1522, 1590).
+
+
+
+
+\1f
+File: tm-ja.info, Node: plain text, Next: Security multipart, Prev: RFC 2049, Up: Glossary
 
 plain text
 ----------
@@ -1755,10 +1749,8 @@ File: tm-ja.info, Node: text/enriched, Next: text/plain, Prev: Security multipar
 text/enriched
 -------------
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$?\e(B 
-*text/richtext* \e$B$KBe$o$C$F!"=qBN$dAHHG$K4X\e(B
-\e$B$9$k>pJs$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B content-type (*Note
-content-type::).
+RFC 1521 \e$B$GDj5A$5$l$?\e(B *text/richtext* \e$B$KBe$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs\e(B
+\e$B$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B media type (*Note media type::).
 
 
 [text/enriched: RFC 1896] P. Resnick and A. Walker, "The
@@ -1774,8 +1766,8 @@ File: tm-ja.info, Node: text/plain, Next: tm-kernel, Prev: text/enriched, Up: Gl
 text/plain
 ----------
 
-RFC 1521 (*Note RFC 1521::) \e$B$GDj5A$5$l$?!"\e(Bplain text (*Note plain
-text::) \e$B$rI=8=$9$k$?$a$N\e(B content-type (*Note content-type::).
+RFC 2046 (*Note RFC 2046::) \e$B$GDj5A$5$l$?!"\e(Bplain text (*Note plain
+text::) \e$B$rI=8=$9$k$?$a$N\e(B media type (*Note media type::).
 
 \e$BHs\e(B MIME message \e$B$J$I$N\e(B content-type \e$B$,Dj5A$5$l$J$$\e(B part \e$B$O\e(B MIME charset
 (*Note MIME charset::) \e$B$,\e(B us-ascii (*Note us-ascii::) \e$B$G$"$k\e(B 
@@ -2096,11 +2088,11 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U
 * Menu:
 
 * ANSI X3.4:1986:               ASCII.                  9.
-* application:                  content-type.           10.
+* application:                  media type.             20.
 * application/pgp:              PGP-kazu.               9.
 * ASCII:                        ASCII.                  9.
 * ASCII:                        us-ascii.               16.
-* audio:                        content-type.           10.
+* audio:                        media type.             16.
 * BBDB:                         setting for VM.         15.
 * BIG5:                         cn-big5.                13.
 * binary:                       8bit.                   35.
@@ -2110,8 +2102,7 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U
 * charset-extension:            RFC 1922.               11.
 * CNS        11643:1992:        CNS.                    13.
 * CNS 11643-1992:               CNS.                    13.
-* Content-Type:                 How is MIME?.           16.
-* content-type/subtype:         content-type.           21.
+* content-type/subtype:         media type.             26.
 * Emacs/mule:                   MULE.                   20.
 * encapsulation:                RFC 1153.               6.
 * encapsulation:                RFC 934.                6.
@@ -2124,7 +2115,7 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U
 * GB 8565.2:                    GB 8565.2.              8.
 * GB 8565.2:1988:               GB 8565.2.              8.
 * gnus-mime:                    tm-MUA.                 16.
-* image:                        content-type.           11.
+* image:                        media type.             14.
 * Informational:                hz-gb2312.              14.
 * Informational:                hz-gb2312.              19.
 * Informational:                iso-2022-jp-2.          10.
@@ -2175,21 +2166,18 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U
 * KS C 5601:1987:               KS C5601.               8.
 * KS C 5861:1992:               euc-kr.                 14.
 * KS C5601:                     KS C5601.               8.
-* message:                      content-type.           11.
+* message:                      media type.             24.
 * message header:               RFC 822.                6.
 * Message Transfer Agent:       MTA.                    5.
 * Message User Agent:           MUA.                    5.
-* MIME:                         What is MIME?.          5.
 * mime-setup:                   mime-setup.             6.
 * mule:                         MULE.                   19.
 * MULE:                         MULE.                   20.
-* multipart:                    content-type.           12.
-* Multipart:                    How is MIME?.           23.
+* multipart:                    media type.             22.
 * multipart:                    multipart.              10.
 * multipart/digest:             multipart/digest.       9.
 * multipart/encrypted:          Security multipart.     8.
 * multipart/signed:             Security multipart.     6.
-* Multipurpose Internet Mail
 * Multipurpose Internet Mail Extensions: MIME.          5.
 * pad:                          Base64.                 10.
 * parameter:                    Content-Type field.     21.
@@ -2201,19 +2189,22 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U
 * RFC 1153:                     RFC 1153.               16.
 * RFC 1468:                     iso-2022-jp.            18.
 * RFC 1489:                     koi8-r.                 13.
-* RFC 1521:                     RFC 1521.               7.
-* RFC 1522:                     encoded-word.           8.
 * RFC 1554:                     iso-2022-jp-2.          10.
 * RFC 1557:                     RFC 1557.               8.
 * RFC 1806:                     Content-Disposition.    8.
 * RFC 1842:                     hz-gb2312.              14.
 * RFC 1843:                     hz-gb2312.              19.
 * RFC 1847:                     Security multipart.     12.
-* RFC 1896:                     text/enriched.          10.
+* RFC 1896:                     text/enriched.          8.
 * RFC 1922:                     RFC 1922.               14.
 * RFC 1947:                     iso-8859-7.             13.
 * RFC 1991:                     PGP.                    16.
 * RFC 2015:                     PGP/MIME.               20.
+* RFC 2045:                     RFC 2045.               5.
+* RFC 2046:                     RFC 2046.               5.
+* RFC 2047:                     encoded-word.           8.
+* RFC 2048:                     RFC 2048.               5.
+* RFC 2049:                     RFC 2049.               5.
 * RFC 821:                      RFC 821.                8.
 * RFC 822:                      RFC 822.                14.
 * RFC 934:                      RFC 934.                13.
@@ -2224,15 +2215,18 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U
 * SMTP:                         RFC 821.                8.
 * Standards Track:              encoded-word.           8.
 * Standards Track:              PGP/MIME.               20.
-* Standards Track:              RFC 1521.               7.
+* Standards Track:              RFC 2045.               5.
+* Standards Track:              RFC 2046.               5.
+* Standards Track:              RFC 2048.               5.
+* Standards Track:              RFC 2049.               5.
 * Standards Track:              Security multipart.     12.
 * STD 10:                       RFC 821.                8.
 * STD 11:                       RFC 822.                14.
 * STD 9:                        FTP.                    8.
-* subtype:                      content-type.           7.
 * subtype:                      Content-Type field.     20.
-* text:                         content-type.           13.
-* text/enriched:                text/enriched.          10.
+* subtype:                      media type.             7.
+* text:                         media type.             12.
+* text/enriched:                text/enriched.          8.
 * text/plain:                   text/plain.             10.
 * text/richtext:                text/enriched.          6.
 * tm \e$BBg@9$j\e(B package:            tm-MUA.                 8.
@@ -2241,16 +2235,15 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U
 * tm-rmail:                     tm-MUA.                 20.
 * tm-setup:                     tm-setup.               6.
 * tm-vm:                        tm-MUA.                 18.
-* type:                         content-type.           6.
 * type:                         Content-Type field.     20.
+* type:                         media type.             6.
 * us-ascii:                     us-ascii.               13.
 * USENET:                       RFC 1036.               9.
-* video:                        content-type.           13.
+* video:                        media type.             18.
 * vm:                           setting for VM.         6.
 * XEmacs/mule:                  MULE.                   21.
-* x-token:                      content-type.           29.
-1522:                           encoded-word.           6.
-Extensions:                     What is MIME?.          6.
+* x-token:                      media type.             34.
+2047:                           encoded-word.           6.
 mail:                           RFC 822.                11.
 message:                        RFC 822.                11.
 method:                         method.                 8.
@@ -2273,104 +2266,105 @@ File: tm-ja.info, Node: Variable Index, Prev: Concept Index, Up: Top
 Tag table:
 Node: Top\7f152
 Node: Introduction\7f680
-Node: What is MIME?\7f1569
-Node: How is MIME?\7f2248
-Node: Glossary\7f4723
-Node: 7bit\7f8111
-Node: 8bit\7f9428
-Node: 94 character set\7f11483
-Node: 96 character set\7f11756
-Node: 94x94 character set\7f12023
-Node: ASCII\7f12327
-Node: Base64\7f12757
-Node: binary\7f13455
-Node: Character Set\7f14045
-Node: cn-gb\7f14375
-Node: cn-big5\7f14861
-Node: CNS\7f15497
-Node: Coded character set\7f16178
-Node: Code extension\7f16505
-Node: Content-Disposition\7f16849
-Node: content-type\7f17291
-Node: Content-Type field\7f18698
-Node: Emacs\7f19791
-Node: encoded-word\7f20025
-Node: encapsulation\7f20416
-Node: euc-kr\7f20711
-Node: FTP\7f21228
-Node: GB 2312\7f21513
-Node: GB 8565.2\7f22067
-Node: hz-gb2312\7f22530
-Node: ISO 2022\7f23339
-Node: iso-2022-cn\7f23918
-Node: iso-2022-cn-ext\7f24394
-Node: iso-2022-jp\7f25066
-Node: iso-2022-jp-2\7f25781
-Node: iso-2022-kr\7f26190
-Node: ISO 646\7f26623
-Node: ISO 8859-1\7f27283
-Node: iso-8859-1\7f27714
-Node: ISO 8859-2\7f28159
-Node: iso-8859-2\7f28593
-Node: ISO 8859-3\7f29032
-Node: ISO 8859-4\7f29349
-Node: ISO 8859-5\7f29666
-Node: iso-8859-5\7f30075
-Node: ISO 8859-6\7f30517
-Node: ISO 8859-7\7f30836
-Node: iso-8859-7\7f31240
-Node: ISO 8859-8\7f31790
-Node: ISO 8859-9\7f32109
-Node: ISO-IR-165\7f32426
-Node: JIS X0201\7f32941
-Node: JIS C6226\7f33735
-Node: JIS X0208\7f34028
-Node: JIS X0212\7f35911
-Node: koi8-r\7f36263
-Node: KS C5601\7f36761
-Node: message\7f37162
-Node: message/rfc822\7f37425
-Node: method\7f37733
-Node: MIME\7f38084
-Node: MIME charset\7f38506
-Node: MTA\7f39068
-Node: MUA\7f39282
-Node: MULE\7f39456
-Node: multipart\7f40310
-Node: multipart/alternative\7f41146
-Node: multipart/digest\7f41451
-Node: multipart/encrypted\7f42098
-Node: multipart/mixed\7f42428
-Node: multipart/parallel\7f42721
-Node: multipart/signed\7f43008
-Node: PGP\7f43304
-Node: PGP-kazu\7f44140
-Node: PGP/MIME\7f45627
-Node: Quoted-Printable\7f46660
-Node: RFC 821\7f47421
-Node: RFC 822\7f47701
-Node: RFC 934\7f48185
-Node: RFC 1036\7f48640
-Node: RFC 1153\7f49094
-Node: RFC 1521\7f49635
-Node: RFC 1557\7f50080
-Node: RFC 1922\7f50471
-Node: plain text\7f51137
-Node: Security multipart\7f51413
-Node: text/enriched\7f52046
-Node: text/plain\7f52512
-Node: tm-kernel\7f53000
-Node: tm-MUA\7f53505
-Node: us-ascii\7f54024
-Node: Setting\7f54690
-Node: mime-setup\7f55370
-Node: signature\7f55992
-Node: Notice about GNUS\7f57750
-Node: tm-setup\7f58902
-Node: setting for VM\7f59743
-Node: manual setting\7f60109
-Node: Bug report\7f60664
-Node: Concept Index\7f62274
-Node: Variable Index\7f71651
+Node: Glossary\7f1421
+Node: 7bit\7f4899
+Node: 8bit\7f6216
+Node: 94 character set\7f8271
+Node: 96 character set\7f8544
+Node: 94x94 character set\7f8811
+Node: ASCII\7f9115
+Node: Base64\7f9545
+Node: binary\7f10243
+Node: Character Set\7f10833
+Node: cn-gb\7f11163
+Node: cn-big5\7f11649
+Node: CNS\7f12285
+Node: Coded character set\7f12966
+Node: Code extension\7f13293
+Node: Content-Disposition\7f13637
+Node: media type\7f14077
+Node: Content-Type field\7f15509
+Node: Emacs\7f16594
+Node: encoded-word\7f16828
+Node: encapsulation\7f17250
+Node: euc-kr\7f17545
+Node: FTP\7f18062
+Node: GB 2312\7f18347
+Node: GB 8565.2\7f18901
+Node: hz-gb2312\7f19364
+Node: ISO 2022\7f20173
+Node: iso-2022-cn\7f20752
+Node: iso-2022-cn-ext\7f21228
+Node: iso-2022-jp\7f21900
+Node: iso-2022-jp-2\7f22615
+Node: iso-2022-kr\7f23024
+Node: ISO 646\7f23457
+Node: ISO 8859-1\7f24117
+Node: iso-8859-1\7f24548
+Node: ISO 8859-2\7f24993
+Node: iso-8859-2\7f25427
+Node: ISO 8859-3\7f25866
+Node: ISO 8859-4\7f26183
+Node: ISO 8859-5\7f26500
+Node: iso-8859-5\7f26909
+Node: ISO 8859-6\7f27351
+Node: ISO 8859-7\7f27670
+Node: iso-8859-7\7f28074
+Node: ISO 8859-8\7f28624
+Node: ISO 8859-9\7f28943
+Node: ISO-IR-165\7f29260
+Node: JIS X0201\7f29775
+Node: JIS C6226\7f30569
+Node: JIS X0208\7f30862
+Node: JIS X0212\7f32745
+Node: koi8-r\7f33097
+Node: KS C5601\7f33595
+Node: message\7f33996
+Node: message/rfc822\7f34259
+Node: method\7f34567
+Node: MIME\7f34918
+Node: MIME charset\7f36140
+Node: MTA\7f36702
+Node: MUA\7f36916
+Node: MULE\7f37090
+Node: multipart\7f37944
+Node: multipart/alternative\7f38809
+Node: multipart/digest\7f39114
+Node: multipart/encrypted\7f39776
+Node: multipart/mixed\7f40106
+Node: multipart/parallel\7f40399
+Node: multipart/signed\7f40686
+Node: PGP\7f40982
+Node: PGP-kazu\7f41818
+Node: PGP/MIME\7f43305
+Node: Quoted-Printable\7f44338
+Node: RFC 821\7f45104
+Node: RFC 822\7f45384
+Node: RFC 934\7f45868
+Node: RFC 1036\7f46323
+Node: RFC 1153\7f46777
+Node: RFC 1557\7f47318
+Node: RFC 1922\7f47709
+Node: RFC 2045\7f48373
+Node: RFC 2046\7f48684
+Node: RFC 2048\7f48973
+Node: RFC 2049\7f49288
+Node: plain text\7f49602
+Node: Security multipart\7f49878
+Node: text/enriched\7f50511
+Node: text/plain\7f50953
+Node: tm-kernel\7f51437
+Node: tm-MUA\7f51942
+Node: us-ascii\7f52461
+Node: Setting\7f53127
+Node: mime-setup\7f53807
+Node: signature\7f54429
+Node: Notice about GNUS\7f56187
+Node: tm-setup\7f57339
+Node: setting for VM\7f58180
+Node: manual setting\7f58546
+Node: Bug report\7f59101
+Node: Concept Index\7f60711
+Node: Variable Index\7f70173
 \1f
 End tag table
index eb5bbcb..99c5033 100644 (file)
@@ -1,5 +1,5 @@
 <!doctype sinfo system>
-<!-- $Id: tm-ja.sgml,v 6.1 1996/10/21 02:32:00 morioka Exp $ -->
+<!-- $Id: tm-ja.sgml,v 7.0 1996/12/02 19:15:36 morioka Exp $ -->
 <head>
 <title>tm 7.90 Manual\e$B!JF|K\8lHG!K\e(B
 <author>\e$B<i2,\e(B \e$BCNI'\e(B <mail>morioka@jaist.ac.jp</mail>
@@ -43,65 +43,6 @@ tm \e$B$O\e(B GNU Emacs \e$B$G\e(B MIME \e$B$r3Z$7$`$?$a$N\e(B package \e$B$G$9!#\e(Btm
 </ul>
 
 
-<h2> \e$B$H$3$m$G!"\e(BMIME \e$B$C$F$$$C$?$$2?!)\e(B
-<node> What is MIME?
-<p>
-<concept>MIME</concept> \e$B$H$O\e(B <concept>Multipurpose Internet Mail
-Extensions</concept> \e$B$NN,$G!"=>Mh$N!"4pK\E*$K\e(B <dref>us-ascii</dref> \e$B$N\e(B 
-<dref>plain text</dref> \e$B$G$"$C$?\e(B Internet Mail/News \e$B$KBP$9$k3HD%$K$J$C\e(B
-\e$B$F$$$^$9!#\e(B
-<p>
-MIME \e$B$K$O!"\e(B<a node="RFC 1521">RFC 1521</a> \e$B$G5,Dj$5$l$F$$$kB?L\E*\e(B
-message \e$B$NB&LL$H!"\e(B<a node="encoded-word">RFC 1522</a> \e$B$G5,Dj$5$l$F$$$k\e(B
-message header \e$B$K$*$1$kHs\e(B ASCII \e$BJ8;z$NI=8=K!$N$h$&$J!"B?8@8l2=$NB&LL$,\e(B
-\e$B$"$j$^$9!#\e(B
-
-
-<h2> MIME \e$B$G$I$s$J$3$H=PMh$k$N!)\e(B
-<node> How is MIME?
-<P>
-\e$B$^$:!"B?L\E*\e(B message \e$B$NB&LL$r9M$($k$H!"=>Mh$N\e(B Internet Mail/News \e$B$,4p\e(B
-\e$BK\E*$K\e(B <dref>us-ascii</dref> \e$B$N\e(B <dref>plain text</dref> \e$B$7$+I=8=$G$-$J\e(B
-\e$B$+$C$?$N$KBP$7$F!"3($d2;@<$dF02h$J$I$NMM!9$J\e(B data \e$B$rI=8=$9$k$3$H$,$G$-\e(B
-\e$B$^$9!#\e(B
-<P>
-\e$B$^$?!"LLGr$$$3$H$K!"\e(B<a node="FTP">ftp</a> \e$B$d\e(B ftp mail \e$B$r$7$?$j!"\e(Bfile 
-\e$B$r<h$j=P$7$?$j!"\e(Bpatch \e$B$rEv$F$?$j!"$H$$$C$?!"!X<jB3$-!Y$rAw$k$3$H$,$G$-\e(B
-\e$B$^$9!#\e(B
-<P>
-\e$B!t\e(B \e$B$b$C$H$b!"$3$&$$$&$N$O!"$"$k0UL#$G$O4m81$@$C$?$j$9$k$N$G$9$,!#\e(B
-<P>
-\e$B$3$&$7$?\e(B message \e$B$O!"FbMF$N<oN`$r\e(B <a node="Content-Type
-field"><concept>Content-Type</concept></a> \e$B$H$$$&\e(B field \e$B$K=q$$$?\e(B 
-message \e$B$N7?$G;XDj$7$^$9!#$9$k$H!"<u$1<j$O3F\e(B <dref>content-type</dref> 
-\e$B$KBP1~$7$?=hM}$N<oN`$r@_Dj$7$F$*$$$F!"\e(Bmessage \e$B$r!XFI$`!Y$@$1$G!"3($dF0\e(B
-\e$B2h$r8+$?$j!"2;$rLD$i$7$?$j!"\e(Bftp \e$B$G\e(B file \e$B$r<h$C$?$j!"\e(Bfile\e$B$r<h$j=P$7$?$j\e(B
-\e$B$G$-$^$9!#\e(B
-<p>
-\e$B$^$?!"$"$k\e(B message \e$B$KJ#?t$N\e(B content-type \e$B$,B8:_$9$k\e(B <a
-node="multipart"><concept>Multipart</concept></a> \e$B$N\e(B message \e$B$H$$$&$N\e(B
-\e$B$b2DG=$G!"0l$D$N\e(B message \e$B$NCf$K!"3($H2;$HJ8>O$rF~$l$?$j$H$$$C$?$h$&$J\e(B
-\e$B$3$H$,$G$-$^$9!#\e(B
-<p>
-MIME \e$B$K$O$3$N$h$&$J!X@k8@!Y$N;WA[$,$"$k$h$&$K;W$o$l$^$9!#$D$^$j!"\e(B
-<dref>us-ascii</dref> \e$B$r!V%"%k%U%!%Y%C%H!W$H$9$k\e(B MIME \e$B$H$$$&\e(B message 
-\e$B5-=R8@8l$G!"$$$m$$$m$J$b$N$r5-=R$7$F$$$3$&$H$$$&$3$H$G$9!#$3$l$O\e(B <a
-node="encoded-word">RFC 1522</a> \e$B$G5,Dj$5$l$?\e(B encoded-word \e$B$G$b$$$($k\e(B
-\e$B$H;W$$$^$9!#\e(B
-<P>
-\e$B$=$7$F!"<u$1<j$O!"M}2r$G$-$J$$$b$N$OL5;k$9$k$,!"$=$N7k2L!"\e(Bdata \e$B$r2u$9\e(B
-\e$B$3$H$O$7$J$$$H$$$&$b$N$,$"$j$^$9!#\e(B
-<p>
-\e$BNc$($P!"\e(B<a node="ASCII">ASCII</a> \e$B$7$+I=<($G$-$J$$4D6-$G\e(B <a node="JIS
-X0208">JIS X0208</a> \e$B$H\e(B <a node="ISO 8859-1">ISO 8859-1</a> \e$B$,:.$8$C$?\e(B
-\e$B%F%-%9%H$r$b$i$C$?$i:$$kLu$G$9$,!"$=$&$$$&;~$@$1B?8@8lC<Kv$r3+$/$H$$$&\e(B
-\e$B$h$&$J5;$,;H$($^$9!#\e(B
-<p>
-\e$B$b$A$m$s!"\e(B<a node="MULE">MULE</a> \e$B$N$h$&$JB?8@8l4D6-$K$*$$$F$b\e(B <a
-node="MUA">MUA</a> \e$B$KBP$7$FL@<(E*$K\e(B <a node="MIME charset">MIME
-charset</a> \e$B$r<($9$3$H$OM-1W$G$7$g$&!#\e(B
-
-
 <h2> \e$BMQ8l\e(B
 <node> Glossary
 <p>
@@ -211,9 +152,8 @@ node="ISO 646">ISO 646</a> \e$B$N0l$D!#\e(B
 <h3> Base64
 <node> Base64
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k\e(B <a
-node="MIME">MIME</a> \e$B$K$*$1$k\e(B <a node="binary">binary data</a> \e$B$N\e(B 
-network \e$B$G$NJQ49K!$N#1$D!#\e(B
+<dref>RFC 2045</dref> \e$B$GDj5A$5$l$F$$$k\e(B <dref>MIME</dref> \e$B$K$*$1$k\e(B <a
+node="binary">binary data</a> \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
 <p>
 \e$B!X\e(B64 \e$B?J?t!Y$H$$$&0UL#$G!"\e(B3 byte \e$B$N\e(B data \e$B$r\e(B 0 \e$B$+$i\e(B 63 \e$B$N?t$rI=$9\e(B 
 <dref>ASCII</dref> 4 \e$BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"\e(B4 \e$BJ8;z$K$J$i$J$1$l$P\e(B 
@@ -319,21 +259,35 @@ node="MIME">MIME</a> \e$B$N3HD%$N#1$D!#\e(B
              date="June 1995">
 
 
-<h3> content-type
-<node> content-type
+<h3> media type
+<node> media type
 <p>
-<dref>MIME</dref> \e$B$K$*$1$k\e(B <dref>part</dref> \e$B$N<oN`!#\e(B<concept>type</> 
-\e$B$H\e(B <concept>subtype</concept> \e$B$+$i$J$k!#\e(B<dref>RFC 1521</dref> \e$B$GDj5A$5\e(B
-\e$B$l$F$$$k!#\e(B
+<dref>MIME</dref> \e$B$K$*$1$k\e(B <dref>entity</dref> \e$B$N<oN`!#\e(B
+<concept>type</> \e$B$H\e(B <concept>subtype</concept> \e$B$+$i$J$k!#\e(B<dref>RFC
+2046</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
 <p>
-type \e$B$OI8=`$G$O\e(B <concept>application</concept>,
-<concept>audio</concept>, <concept>image</concept>,
-<concept>message</concept>, <a
-node="multipart"><concept>multipart</concept></a>,
-<concept>text</concept>, <concept>video</concept> \e$B$,Dj5A$5$l!"$=$l$>$l\e(B
-\e$B$K$O\e(B application/octet-stream, audio/basic, image/jpeg,
-<dref>multipart/mixed</dref>, <dref>text/plain</dref>, video/mpeg \e$B$J$I\e(B
-\e$B$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
+type \e$B$OI8=`$G$O\e(B
+
+<ul>
+<li><concept>text</concept>
+</li>
+<li><concept>image</concept>
+</li>
+<li><concept>audio</concept>
+</li>
+<li><concept>video</concept>
+</li>
+<li><concept>application</concept>
+</li>
+<li><a node="multipart"><concept>multipart</concept></a>
+</li>
+<li><concept>message</concept>
+</ul>
+
+<noindent>
+\e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B application/octet-stream, audio/basic,
+image/jpeg, <dref>multipart/mixed</dref>, <dref>text/plain</dref>,
+video/mpeg \e$B$J$I$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
 
 <memo title="\e$BCm0U\e(B">
 <p>
@@ -342,8 +296,8 @@ node="multipart"><concept>multipart</concept></a>,
 </memo>
 
 <p>
-content-type \e$B$O!"\e(BRFC 1521 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b\e(B
-\e$B$G$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B <a
+media type \e$B$O!"\e(BRFC 2046 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G\e(B
+\e$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B <a
 href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types">MEDIA
 TYPES</a> \e$B$G;2>H$G$-$k!#\e(B
 <p>
@@ -359,16 +313,15 @@ content-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k\e(B
 <h3> Content-Type field
 <node> Content-Type field
 <p>
-<dref>content-type</dref> \e$B$d\e(B <dref>MIME charset</dref> \e$B$J$I$N\e(B part \e$B$K\e(B
-\e$B4X$9$k>pJs$rI=8=$9$k$?$a$N\e(B field. <dref>RFC 1521</dref> \e$B$GDj5A$5$l$F$$\e(B
-\e$B$k!#\e(B
+<dref>media type</dref> \e$B$d\e(B <dref>MIME charset</dref> \e$B$J$I$N\e(B part \e$B$K4X\e(B
+\e$B$9$k>pJs$rI=8=$9$k$?$a$N\e(B field. <dref>RFC 2045</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 <memo>
 <p>
 \e$BNr;KE*$K$O\e(B RFC 1049 \e$B$G\e(B Content-Type field \e$B$,Ds0F$5$l$F$$$k!#C"$7!"$3$3\e(B
-\e$B$G$O\e(B type \e$B$H\e(B subtype \e$B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O\e(B RFC 1521 parser
-\e$B$O\e(B RFC 1049 \e$B$K4p$E$/\e(B message \e$B$rL$CN$N\e(B content-type \e$B$r;}$C$?\e(B message \e$B$H\e(B
-\e$B$7$F\e(B parse \e$B$G$-$k$@$m$&!#\e(B
+\e$B$G$O\e(B type \e$B$H\e(B subtype \e$B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O\e(B MIME parser \e$B$O\e(B 
+RFC 1049 \e$B$K4p$E$/\e(B message \e$B$rL$CN$N\e(B content-type \e$B$r;}$C$?\e(B message \e$B$H$7\e(B
+\e$B$F\e(B parse \e$B$G$-$k$@$m$&!#\e(B
 </memo>
 
 <p>
@@ -428,12 +381,12 @@ GNU Emacs \e$B$NJQ<o$NAm>N$H$9$k!#\e(B
 <node> encoded-word
 <p>
 header \e$B$K$*$1$kHs\e(B <a node="ASCII">ASCII</a> \e$BJ8;z$NI=8=!#\e(B<concept>RFC
-1522</concept> \e$B$GDj5A$5$l$F$$$k!#\e(B
+2047</concept> \e$B$GDj5A$5$l$F$$$k!#\e(B
 <p>
-<rfc number="1522" type="Standards Track" author="K. Moore"
+<rfc number="2047" type="Standards Track" author="K. Moore"
              title="MIME (Multipurpose Internet Mail Extensions) Part
-             Two: Message Header Extensions for Non-ASCII Text"
-             date="September 1993">
+             Three: Message Header Extensions for Non-ASCII Text"
+             date="November 1996" obsolete="1521,1522,1590">
 
 
 <h3> encapsulation
@@ -648,14 +601,13 @@ character set">96 \e$BJ8;z=89g\e(B</a>\e$B!#\e(B
 <h3> iso-8859-1
 <node> iso-8859-1
 <p>
-\e$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N\e(B <a node="MIME charset">MIME charset</a> 
-\e$B$N#1$D!#\e(B
+\e$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N\e(B <dref>MIME charset</dref> \e$B$N#1$D!#\e(B
 <p>
 <a node="ISO 2022">ISO 2022</a> \e$B$K4p$$$F!"\e(B<a node="ASCII">ASCII</a> \e$B$K\e(B 
 <a node="ISO 8859-1">ISO 8859-1</a> \e$B$r\e(B <a node="8bit">8bit</a> \e$B$G\e(B<a
 node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k!#\e(B
+<dref>RFC 2046</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 <h3> ISO 8859-2
@@ -681,7 +633,7 @@ character set">96 \e$BJ8;z=89g\e(B</a>\e$B!#\e(B
 <a node="ISO 8859-2">ISO 8859-2</a> \e$B$r\e(B <a node="8bit">8bit</a> \e$B$G\e(B<a
 node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k!#\e(B
+<dref>RFC 2046</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 <h3> ISO 8859-3
@@ -726,7 +678,7 @@ node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <a node="ISO 8859-5">ISO 8859-5</a> \e$B$r\e(B <a node="8bit">8bit</a> \e$B$G\e(B<a
 node="Code extension">\e$BId9f3HD%\e(B</a>\e$B$7$F$$$k!#\e(B
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k!#\e(B
+<dref>RFC 2046</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 <h3> ISO 8859-6
@@ -915,7 +867,7 @@ RFC 1489 \e$B$GDj5A$5$l$F$$$k!#\e(B
 <node> message/rfc822
 <p>
 \e$BEAE}E*$J\e(B <dref>RFC 934</dref> \e$B$KBe$o$j!"\e(B<dref>RFC 822</dref> \e$B$GDj5A$5\e(B
-\e$B$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(B<dref>RFC 1521</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
+\e$B$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(B<dref>RFC 2046</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 <h3> method
@@ -935,10 +887,29 @@ program. Emacs Lisp \e$B$G=q$+$l$?\e(B <concept>internal method</concept> \e$B$H\e(B
 Internet \e$B$N\e(B mail \e$B$d\e(B news \e$B$G\e(B <a node="us-ascii">us-ascii plain text</a> 
 \e$B0J30$NJ8;z$r;H$&$?$a$N\e(B <dref>RFC 822</dref> \e$B$KBP$9$k3HD%!#\e(B
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$H\e(B <a node="encoded-word">RFC 1522</a> 
-\e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2045 \e$B$OKAF,$G<!$N$h$&$K=R$Y$F$$$k!'\e(B
+<p>
+STD 11, RFC 822 \e$B$O!"\e(BUS-ASCII message header \e$B$K4X$7$FHs>o$K>\:Y$K5,Dj$7\e(B
+\e$B$?\e(B message \e$BI=8=\e(B protocol \e$B$rDj5A$7$F$$$k!#$7$+$7!"$=$l$OC1$K\e(B flat \e$B$J\e(B 
+US-ASCII text \e$B$N$_$KN1$^$j!"\e(Bmessage \e$B$NFbMF$d\e(B message body \e$B$K4X$9$k5,Dj\e(B
+\e$B$O$J$5$l$F$$$J$$!#\e(BMultipurpose Internet Mail Extensions, \e$B$"$k$$$O\e(B MIME 
+\e$B$HAm>N$5$l$k!"$3$N0lO"$NJ8=q$O!"0J2<$N;v$r2DG=$H$9$k$?$a$K\e(B message \e$B$N\e(B
+\e$B7A<0$r:FDj5A$7$?!'\e(B
+
+<ol>
+<li>\e$BJ8=q\e(B message body \e$B$K$*$1$k\e(B US-ASCII \e$B0J30$NJ8;z=89g\e(B
+</li>
+<li>\e$BHsJ8=q\e(B message body
+</li>
+<li>\e$BJ#?t$NItJ,$+$i$J$k\e(B message body
+</li>
+<li>US-ASCII \e$B0J30$NJ8;z=89g$+$i$J$kJ8=q\e(B header \e$B>pJs\e(B
+</ol>
+
 <p>
-<cf node="What is MIME?">
+<dref>RFC 2045</dref>, <dref>RFC 2046</dref>, <a
+node="encoded-word">RFC 2047</a>, <dref>RFC 2048</dref>, <dref>RFC
+2049</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 <h3> MIME charset
@@ -948,7 +919,7 @@ Internet \e$B$N\e(B mail \e$B$d\e(B news \e$B$G\e(B <a node="us-ascii">us-ascii plain
 node="encoded-word">encoded-word</a> \e$B$N\e(B charset parameter \e$B$GMQ$$$i$l$k\e(B
 \e$BEPO?$5$l$?\e(B<a node="Coded character set">\e$BId9f2=J8;z=89g\e(B</a>\e$B!#\e(B
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k!#\e(B
+<dref>RFC 2045</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
 <p>
 <a node="iso-2022-jp">iso-2022-jp</a> \e$B$d\e(B <a node="euc-kr">euc-kr</a> 
 \e$B$O$=$N#1$D!#!J$3$3$G$O!"\e(BMIME charset \e$B$O\e(B<a node="Character set">\e$BJ8;z=8\e(B
@@ -999,12 +970,12 @@ href="ftp://etlport.etl.go.jp/pub/mule/mule-19.33-gamma.taz"> alpha \e$BHG\e(B
 <h3> Multipart
 <node> multipart
 <p>
-\e$B#1$D$N\e(B <dref>message</dref> \e$B$KJ#?t$N\e(B part \e$B$rF~$l$k$?$a$N\e(B 
-<dref>MIME</dref> \e$B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N\e(B part \e$B$+$i$J$k\e(B 
-message \e$B$r;X$9!#\e(B<cf node="content-type">
+\e$B#1$D$N\e(B <dref>message</dref> \e$B$KJ#?t$N\e(B <dref>entity</dref> \e$B$rF~$l$k$?$a\e(B
+\e$B$N\e(B <dref>MIME</dref> \e$B$K$*$1$k\e(B <dref>media type</dref> \e$B$N#1$D!"$b$7$/$O!"\e(B
+\e$BJ#?t$N\e(B entity \e$B$+$i$J$k\e(B message \e$B$r;X$9!#\e(B
 <p>
 \e$B8=:_!"Dj5A$5$l$F$$$k\e(B <concept>multipart</concept> \e$B$H$7$F$O!"\e(B<dref>RFC
-1521</dref> \e$B$GDj5A$5$l$?\e(B
+2046</dref> \e$B$GDj5A$5$l$?\e(B
 
 <ul>
 <li><dref>multipart/mixed</dref>
@@ -1031,22 +1002,22 @@ message \e$B$r;X$9!#\e(B<cf node="content-type">
 <dref>multipart</dref> \e$B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br;h$H\e(B
 \e$B$9$k>l9g$KMQ$$$k!#\e(B
 <p>
-<cf node="RFC 1521">
+<cf node="RFC 2046">
 
 
 <h3> multipart/digest
 <node> multipart/digest
 <p>
-<dref>multipart</dref> \e$B$N#1$D$G!"4^$^$l$k\e(B part \e$B$N\e(B default \e$B$N\e(B
-<dref>content-type</dref> \e$B$,\e(B <dref>multipart/mixed</dref> \e$B$J$I$N>l9g\e(B 
-<dref>text/plain</dref> \e$B$G$"$k$N$KBP$7!"\e(B
+<dref>multipart</dref> \e$B$N#1$D$G!"4^$^$l$k\e(B <dref>entity</dref> \e$B$N\e(B 
+default \e$B$N\e(B<dref>media type</dref> \e$B$,\e(B <dref>multipart/mixed</dref> \e$B$J$I\e(B
+\e$B$N>l9g\e(B <dref>text/plain</dref> \e$B$G$"$k$N$KBP$7!"\e(B
 <concept>multipart/digest</concept>\e$B$G$O\e(B <dref>message/rfc822</dref> \e$B$,\e(B
 \e$BMQ$$$i$l$kE@$,0[$J$k!#\e(B
 <p>
 \e$B$3$l$OEAE}E*$J\e(B <dref>RFC 1153</dref> \e$B$K4p$E$/\e(B 
 <dref>encapsulation</dref> \e$B$KBe$o$k$b$N$G$"$k!#\e(B
 <p>
-<cf node="RFC 1521">
+<cf node="RFC 2046">
 
 
 <h3> multipart/encrypted
@@ -1064,7 +1035,7 @@ RFC 1847 \e$B$GDj5A$5$l$?\e(B <dref>Security multipart</dref> \e$B$N#1$D$G!"0E9f2=\e
 <dref>multipart</dref> \e$B$N<gMW$J\e(B subtype \e$B$G!"J#?t$N\e(B part \e$B$r=g=xIU$1$FJB\e(B
 \e$B$Y$k>l9g$KMQ$$$k!#\e(B
 <p>
-<cf node="RFC 1521">
+<cf node="RFC 2046">
 
 
 <h3> multipart/parallel
@@ -1073,7 +1044,7 @@ RFC 1847 \e$B$GDj5A$5$l$?\e(B <dref>Security multipart</dref> \e$B$N#1$D$G!"0E9f2=\e
 <dref>multipart</dref> \e$B$N#1$D$G!"J#?t$N\e(B part \e$B$r=g=xIU$1$:$K4^$a$k>l9g\e(B
 \e$B$KMQ$$$k!#\e(B
 <p>
-<cf node="RFC 1521">
+<cf node="RFC 2046">
 
 
 <h3> multipart/signed
@@ -1160,13 +1131,12 @@ Internet \e$B$G$O:#8e\e(B <dref>PGP/MIME</dref> \e$B$NJ}8~$GI8=`2=$7$F$$$3$&$H$$$&\e
 <h3> Quoted-Printable
 <node> Quoted-Printable
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$F$$$k\e(B <a
-node="MIME">MIME</a> \e$B$K$*$1$k\e(B <a node="binary">binary data</a> \e$B$N\e(B 
-network \e$B$G$NJQ49K!$N#1$D!#\e(B
+<dref>RFC 2045</dref> \e$B$GDj5A$5$l$F$$$k\e(B <dref>MIME</dref> \e$B$K$*$1$k\e(B 
+<dref>binary data</dref> \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
 <p>
 `=' \e$B$d@)8fJ8;z$d\e(B 128 \e$B0J>e$NJ8;z$J$I$O\e(B `=AF' \e$B$N$h$&$K\e(B `=' \e$B$N8e$KB3$/\e(B 16 
-\e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(B<a node="ASCII">ASCII</a> \e$BJ8;zCf?4$N\e(B data \e$B$G\e(B
-\e$B$O\e(B <a node="Base64">Base64</a> \e$B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#\e(B
+\e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(B<dref>ASCII</dref> \e$BJ8;zCf?4$N\e(B data \e$B$G$O\e(B 
+<dref>Base64</dref> \e$B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#\e(B
 <p>
 \e$B$7$+$7$J$,$i!"\e(BEBCDIC \e$B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"\e(BEBCDIC \e$B$rMxMQ$7\e(B
 \e$B$F$$$k\e(B network \e$B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"\e(BBase64 \e$B$KHf$Y$F0BA4@-$O\e(B
@@ -1245,19 +1215,6 @@ RFC. <dref>RFC 934</dref> \e$B$rMQ$$$k!#\e(B
              date="April 1990">
 
 
-<h3> RFC 1521 <node> RFC 1521
-<p>
-<a node="MIME">MIME</a> \e$B$rDj5A$7$F$$$k\e(B RFC \e$B$N#1$D!#\e(B
-
-<rfc number="1521" type="Standards Track" author="N. Borenstein and
-             N. Freed" title="MIME (Multipurpose Internet Mail
-             Extensions) Part One: Mechanisms for Specifying and
-             Describing the Format of Internet Message Bodies"
-             date="September 1993" obsolete="1341">
-
-(<a node="encoded-word">RFC 1522</a>)
-
-
 <h3> RFC 1557
 <node> RFC 1557
 <p>
@@ -1286,6 +1243,44 @@ field</dref> \e$B$N\e(B parameter \e$B$rDj5A$7$F$$$k!#\e(B
              date="March 1996">
 
 
+<h3> RFC 2045
+<node> RFC 2045
+<p>
+<rfc number="2045" type="Standards Track" author="N. Freed and
+             N. Borenstein" title="Multipurpose Internet Mail
+             Extensions (MIME) Part One: Format of Internet Message
+             Bodies" date="November 1996" obsolete="1521, 1522,
+             1590">
+
+
+<h3> RFC 2046
+<node> RFC 2046
+<p>
+<rfc number="2046" type="Standards Track" author="N. Freed and
+             N. Borenstein" title="Multipurpose Internet Mail
+                 Extensions (MIME) Part Two: Media Types"
+                 date="November 1996" obsolete="1521, 1522, 1590">
+
+
+<h3> RFC 2048
+<node> RFC 2048
+<p>
+<rfc number="2048" type="Standards Track" author="N. Freed, J. Klensin
+             and J. Postel" title="Multipurpose Internet Mail
+             Extensions (MIME) Part Four: Registration Procedures"
+             date="November 1996" obsolete="1521, 1522, 1590">
+
+
+<h3> RFC 2049
+<node> RFC 2049
+<p>
+<rfc number="2049" type="Standards Track" author="N. Freed and
+             N. Borenstein" title="Multipurpose Internet Mail
+             Extensions (MIME) Part Five: Conformance Criteria and
+             Examples" date="November 1996" obsolete="1521, 1522,
+             1590">
+
+
 <h3> plain text
 <node> plain text
 <p>
@@ -1312,9 +1307,9 @@ node="multipart/encrypted"><concept>multipart/encrypted</concept></a>
 <h3> text/enriched
 <node> text/enriched
 <p>
-<a node="RFC 1521">RFC 1521</a> \e$B$GDj5A$5$l$?\e(B 
-<concept>text/richtext</concept> \e$B$KBe$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs$r\e(B
-\e$B;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B <dref>content-type</dref>.
+RFC 1521 \e$B$GDj5A$5$l$?\e(B <concept>text/richtext</concept> \e$B$KBe$o$C$F!"=q\e(B
+\e$BBN$dAHHG$K4X$9$k>pJs$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B <dref>media
+type</dref>.
 
 <rfc name="text/enriched" number="1896" author="P. Resnick and
              A. Walker" title="The text/enriched MIME Content-type"
@@ -1324,8 +1319,8 @@ node="multipart/encrypted"><concept>multipart/encrypted</concept></a>
 <h3> text/plain
 <node> text/plain
 <p>
-<dref>RFC 1521</dref> \e$B$GDj5A$5$l$?!"\e(B<dref>plain text</dref> \e$B$rI=8=$9$k\e(B
-\e$B$?$a$N\e(B <dref>content-type</dref>.
+<dref>RFC 2046</dref> \e$B$GDj5A$5$l$?!"\e(B<dref>plain text</dref> \e$B$rI=8=$9$k\e(B
+\e$B$?$a$N\e(B <dref>media type</dref>.
 <p>
 \e$BHs\e(B MIME message \e$B$J$I$N\e(B content-type \e$B$,Dj5A$5$l$J$$\e(B part \e$B$O\e(B <dref>MIME
 charset</dref> \e$B$,\e(B <dref>us-ascii</dref> \e$B$G$"$k\e(B 
index 5bd5549..92e1bca 100644 (file)
@@ -59,67 +59,10 @@ mime/editor-mode (@ref{(tm-edit-ja)})
 
 
 @menu
-* What is MIME?::               \e$B$H$3$m$G!"\e(BMIME \e$B$C$F$$$C$?$$2?!)\e(B
-* How is MIME?::                MIME \e$B$G$I$s$J$3$H=PMh$k$N!)\e(B
 * Glossary::                    \e$BMQ8l\e(B
 @end menu
 
-@node What is MIME?, How is MIME?, Introduction, Introduction
-@section \e$B$H$3$m$G!"\e(BMIME \e$B$C$F$$$C$?$$2?!)\e(B
-
-@cindex{MIME}@strong{MIME} \e$B$H$O\e(B @cindex{Multipurpose Internet Mail
-Extensions}@strong{Multipurpose Internet Mail Extensions} \e$B$NN,$G!"=>Mh$N!"\e(B
-\e$B4pK\E*$K\e(B us-ascii (@ref{us-ascii}) \e$B$N\e(B plain text (@ref{plain text}) \e$B$G$"$C\e(B
-\e$B$?\e(B Internet Mail/News \e$B$KBP$9$k3HD%$K$J$C$F$$$^$9!#\e(B@refill
-
-MIME \e$B$K$O!"\e(BRFC 1521 (@ref{RFC 1521}) \e$B$G5,Dj$5$l$F$$$kB?L\E*\e(Bmessage \e$B$NB&\e(B
-\e$BLL$H!"\e(BRFC 1522 (@ref{encoded-word}) \e$B$G5,Dj$5$l$F$$$k\e(Bmessage header \e$B$K$*\e(B
-\e$B$1$kHs\e(B ASCII \e$BJ8;z$NI=8=K!$N$h$&$J!"B?8@8l2=$NB&LL$,$"$j$^$9!#\e(B
-
-
-@node How is MIME?, Glossary, What is MIME?, Introduction
-@section MIME \e$B$G$I$s$J$3$H=PMh$k$N!)\e(B
-
-\e$B$^$:!"B?L\E*\e(B message \e$B$NB&LL$r9M$($k$H!"=>Mh$N\e(B Internet Mail/News \e$B$,4pK\\e(B
-\e$BE*$K\e(B us-ascii (@ref{us-ascii}) \e$B$N\e(B plain text (@ref{plain text}) \e$B$7$+I=8=\e(B
-\e$B$G$-$J$+$C$?$N$KBP$7$F!"3($d2;@<$dF02h$J$I$NMM!9$J\e(B data \e$B$rI=8=$9$k$3$H$,\e(B
-\e$B$G$-$^$9!#\e(B@refill
-
-\e$B$^$?!"LLGr$$$3$H$K!"\e(Bftp (@ref{FTP}) \e$B$d\e(B ftp mail \e$B$r$7$?$j!"\e(Bfile \e$B$r<h$j=P\e(B
-\e$B$7$?$j!"\e(Bpatch \e$B$rEv$F$?$j!"$H$$$C$?!"!X<jB3$-!Y$rAw$k$3$H$,$G$-$^$9!#\e(B
-
-\e$B!t\e(B \e$B$b$C$H$b!"$3$&$$$&$N$O!"$"$k0UL#$G$O4m81$@$C$?$j$9$k$N$G$9$,!#\e(B@refill
-
-\e$B$3$&$7$?\e(B message \e$B$O!"FbMF$N<oN`$r\e(B 
-@cindex{Content-Type}@strong{Content-Type} (@ref{Content-Type field}) \e$B$H\e(B
-\e$B$$$&\e(B field \e$B$K=q$$$?\e(B message \e$B$N7?$G;XDj$7$^$9!#$9$k$H!"<u$1<j$O3F\e(B 
-content-type (@ref{content-type}) \e$B$KBP1~$7$?=hM}$N<oN`$r@_Dj$7$F$*$$$F!"\e(B
-message \e$B$r!XFI$`!Y$@$1$G!"3($dF02h$r8+$?$j!"2;$rLD$i$7$?$j!"\e(Bftp \e$B$G\e(B file 
-\e$B$r<h$C$?$j!"\e(Bfile\e$B$r<h$j=P$7$?$j$G$-$^$9!#\e(B@refill
-
-\e$B$^$?!"$"$k\e(B message \e$B$KJ#?t$N\e(B content-type \e$B$,B8:_$9$k\e(B 
-@cindex{Multipart}@strong{Multipart} (@ref{multipart}) \e$B$N\e(B message \e$B$H$$$&\e(B
-\e$B$N$b2DG=$G!"0l$D$N\e(B message \e$B$NCf$K!"3($H2;$HJ8>O$rF~$l$?$j$H$$$C$?$h$&$J\e(B
-\e$B$3$H$,$G$-$^$9!#\e(B@refill
-
-MIME \e$B$K$O$3$N$h$&$J!X@k8@!Y$N;WA[$,$"$k$h$&$K;W$o$l$^$9!#$D$^$j!"\e(B
-us-ascii (@ref{us-ascii}) \e$B$r!V%"%k%U%!%Y%C%H!W$H$9$k\e(B MIME \e$B$H$$$&\e(B message 
-\e$B5-=R8@8l$G!"$$$m$$$m$J$b$N$r5-=R$7$F$$$3$&$H$$$&$3$H$G$9!#$3$l$O\e(B RFC
-1522 (@ref{encoded-word}) \e$B$G5,Dj$5$l$?\e(B encoded-word \e$B$G$b$$$($k$H;W$$$^$9!#\e(B
-
-\e$B$=$7$F!"<u$1<j$O!"M}2r$G$-$J$$$b$N$OL5;k$9$k$,!"$=$N7k2L!"\e(Bdata \e$B$r2u$9$3\e(B
-\e$B$H$O$7$J$$$H$$$&$b$N$,$"$j$^$9!#\e(B@refill
-
-\e$BNc$($P!"\e(BASCII (@ref{ASCII}) \e$B$7$+I=<($G$-$J$$4D6-$G\e(B JIS X0208 (@ref{JIS
-X0208}) \e$B$H\e(B ISO 8859-1 (@ref{ISO 8859-1}) \e$B$,:.$8$C$?%F%-%9%H$r$b$i$C$?$i\e(B
-\e$B:$$kLu$G$9$,!"$=$&$$$&;~$@$1B?8@8lC<Kv$r3+$/$H$$$&$h$&$J5;$,;H$($^$9!#\e(B
-
-\e$B$b$A$m$s!"\e(BMULE (@ref{MULE}) \e$B$N$h$&$JB?8@8l4D6-$K$*$$$F$b\e(B MUA (@ref{MUA}) 
-\e$B$KBP$7$FL@<(E*$K\e(B MIME charset (@ref{MIME charset}) \e$B$r<($9$3$H$OM-1W$G$7$g\e(B
-\e$B$&!#\e(B
-
-
-@node Glossary,  , How is MIME?, Introduction
+@node Glossary,  , Introduction, Introduction
 @section \e$BMQ8l\e(B
 
 tm \e$B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#\e(B
@@ -140,7 +83,7 @@ tm \e$B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#\e(B
 * Coded character set::         Coded character set\e$B!JId9f2=J8;z=89g!K\e(B, Character code\e$B!JJ8;zId9f!K\e(B
 * Code extension::              Code extension\e$B!JId9f3HD%!K\e(B
 * Content-Disposition::         Content-Disposition field
-* content-type::                
+* media type::                  
 * Content-Type field::          
 * Emacs::                       
 * encoded-word::                
@@ -201,9 +144,12 @@ tm \e$B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#\e(B
 * RFC 934::                     
 * RFC 1036::                    
 * RFC 1153::                    
-* RFC 1521::                    RFC 1521 
 * RFC 1557::                    
 * RFC 1922::                    
+* RFC 2045::                    
+* RFC 2046::                    
+* RFC 2048::                    
+* RFC 2049::                    
 * plain text::                  
 * Security multipart::          
 * text/enriched::               
@@ -317,7 +263,7 @@ Interchange'', ANSI X3.4:1986.
 @node Base64, binary, ASCII, Glossary
 @subsection Base64
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B 
+RFC 2045 (@ref{RFC 2045}) \e$B$GDj5A$5$l$F$$$k\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B 
 binary data (@ref{binary}) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B@refill
 
 \e$B!X\e(B64 \e$B?J?t!Y$H$$$&0UL#$G!"\e(B3 byte \e$B$N\e(B data \e$B$r\e(B 0 \e$B$+$i\e(B 63 \e$B$N?t$rI=$9\e(B ASCII
@@ -421,7 +367,7 @@ ISO 2022 (@ref{ISO 2022}) \e$B$G$N=*C<J8;z$O!"Bh#1LL$,\e(B `G', \e$BBh#2LL$,\e(B `H'
 \e$B$a$KMQ$$$k<jK!!#\e(BISO 2022 (@ref{ISO 2022}) \e$B$O$=$N#1$D!#\e(B
 
 
-@node Content-Disposition, content-type, Code extension, Glossary
+@node Content-Disposition, media type, Code extension, Glossary
 @subsection Content-Disposition field
 
 Content \e$B$NI=<($N;EJ}$d\e(B file \e$BL>$rI=8=$9$k$?$a$N\e(B field. MIME (@ref{MIME}) 
@@ -438,21 +384,36 @@ Experimental.
 
 
 
-@node content-type, Content-Type field, Content-Disposition, Glossary
-@subsection content-type
+@node media type, Content-Type field, Content-Disposition, Glossary
+@subsection media type
 
-MIME (@ref{MIME}) \e$B$K$*$1$k\e(B part (@ref{part}) \e$B$N<oN`!#\e(B
+MIME (@ref{MIME}) \e$B$K$*$1$k\e(B entity (@ref{entity}) \e$B$N<oN`!#\e(B
 @cindex{type}@strong{type} \e$B$H\e(B @cindex{subtype}@strong{subtype} \e$B$+$i$J$k!#\e(B
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
+RFC 2046 (@ref{RFC 2046}) \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
+
+type \e$B$OI8=`$G$O\e(B
+
+@itemize @bullet
+@item
+@cindex{text}@strong{text}
+@item
+@cindex{image}@strong{image}
+@item
+@cindex{audio}@strong{audio}
+@item
+@cindex{video}@strong{video}
+@item
+@cindex{application}@strong{application}
+@item
+@cindex{multipart}@strong{multipart} (@ref{multipart})
+@item
+@cindex{message}@strong{message}
+@end itemize
 
-type \e$B$OI8=`$G$O\e(B @cindex{application}@strong{application},
-@cindex{audio}@strong{audio}, @cindex{image}@strong{image},
-@cindex{message}@strong{message}, @cindex{multipart}@strong{multipart}
-(@ref{multipart}), @cindex{text}@strong{text},
-@cindex{video}@strong{video} \e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B 
-application/octet-stream, audio/basic, image/jpeg, multipart/mixed
-(@ref{multipart/mixed}), text/plain (@ref{text/plain}), video/mpeg \e$B$J$I\e(B
-\e$B$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
+@noindent
+\e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B application/octet-stream, audio/basic,
+image/jpeg, multipart/mixed (@ref{multipart/mixed}), text/plain
+(@ref{text/plain}), video/mpeg \e$B$J$I$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
 
 @noindent
 @strong{[\e$BCm0U\e(B]}
@@ -463,8 +424,8 @@ application/octet-stream, audio/basic, image/jpeg, multipart/mixed
 @end quotation
 
 
-content-type \e$B$O!"\e(BRFC 1521 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G\e(B
-\e$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B MEDIA TYPES
+media type \e$B$O!"\e(BRFC 2046 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G$-\e(B
+\e$B$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B MEDIA TYPES
 (ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) \e$B$G;2>H$G$-$k!#\e(B
 
 \e$B$^$?!"\e(Btype \e$B$b$7$/$O\e(B subtype \e$B$K!"A0$K\e(B `x-' \e$B$rIU$1$?\e(B 
@@ -477,20 +438,20 @@ content-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3\e(B
 
 
 
-@node Content-Type field, Emacs, content-type, Glossary
+@node Content-Type field, Emacs, media type, Glossary
 @subsection Content-Type field
 
-content-type (@ref{content-type}) \e$B$d\e(B MIME charset (@ref{MIME charset}) 
-\e$B$J$I$N\e(B part \e$B$K4X$9$k>pJs$rI=8=$9$k$?$a$N\e(B field. RFC 1521 (@ref{RFC
-1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B
+media type (@ref{media type}) \e$B$d\e(B MIME charset (@ref{MIME charset}) \e$B$J$I\e(B
+\e$B$N\e(B part \e$B$K4X$9$k>pJs$rI=8=$9$k$?$a$N\e(B field. RFC 2045 (@ref{RFC 2045}) \e$B$G\e(B
+\e$BDj5A$5$l$F$$$k!#\e(B
 
 @noindent
 @strong{[Memo]}
 @quotation
 
 \e$BNr;KE*$K$O\e(B RFC 1049 \e$B$G\e(B Content-Type field \e$B$,Ds0F$5$l$F$$$k!#C"$7!"$3$3$G\e(B
-\e$B$O\e(B type \e$B$H\e(B subtype \e$B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O\e(B RFC 1521 parser\e$B$O\e(B 
-RFC 1049 \e$B$K4p$E$/\e(B message \e$B$rL$CN$N\e(B content-type \e$B$r;}$C$?\e(B message \e$B$H$7$F\e(B 
+\e$B$O\e(B type \e$B$H\e(B subtype \e$B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O\e(B MIME parser \e$B$O\e(B RFC
+1049 \e$B$K4p$E$/\e(B message \e$B$rL$CN$N\e(B content-type \e$B$r;}$C$?\e(B message \e$B$H$7$F\e(B 
 parse \e$B$G$-$k$@$m$&!#\e(B
 @end quotation
 
@@ -554,15 +515,15 @@ GNU Emacs \e$B$NJQ<o$NAm>N$H$9$k!#\e(B
 @subsection encoded-word
 
 header \e$B$K$*$1$kHs\e(B ASCII (@ref{ASCII}) \e$BJ8;z$NI=8=!#\e(B@cindex{RFC
-1522}@strong{RFC 1522} \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
+2047}@strong{RFC 2047} \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
 
-@cindex{Standards Track}@cindex{RFC 1522}
+@cindex{Standards Track}@cindex{RFC 2047}
 @noindent
-[RFC 1522]
+[RFC 2047]
 @quotation
-K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Two:
-Message Header Extensions for Non-ASCII Text'', September 1993,
-Standards Track.
+K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Three:
+Message Header Extensions for Non-ASCII Text'', November 1996, Standards
+Track (obsolete RFC 1521,1522,1590).
 @end quotation
 
 
@@ -838,7 +799,7 @@ ISO 2022 (@ref{ISO 2022}) \e$B$K4p$$$F!"\e(BASCII (@ref{ASCII}) \e$B$K\e(B ISO 8859-
 (@ref{ISO 8859-1}) \e$B$r\e(B 8bit (@ref{8bit}) \e$B$GId9f3HD%\e(B (@ref{Code
 extension})\e$B$7$F$$$k!#\e(B@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2046 (@ref{RFC 2046}) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 @node ISO 8859-2, iso-8859-2, iso-8859-1, Glossary
@@ -867,7 +828,7 @@ ISO 2022 (@ref{ISO 2022}) \e$B$K4p$$$F!"\e(BASCII (@ref{ASCII}) \e$B$K\e(B ISO 8859-
 (@ref{ISO 8859-2}) \e$B$r\e(B 8bit (@ref{8bit}) \e$B$GId9f3HD%\e(B (@ref{Code
 extension})\e$B$7$F$$$k!#\e(B@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2046 (@ref{RFC 2046}) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 @node ISO 8859-3, ISO 8859-4, iso-8859-2, Glossary
@@ -923,7 +884,7 @@ ISO 2022 (@ref{ISO 2022}) \e$B$K4p$$$F!"\e(BASCII (@ref{ASCII}) \e$B$K\e(B ISO 8859-
 (@ref{ISO 8859-5}) \e$B$r\e(B 8bit (@ref{8bit}) \e$B$GId9f3HD%\e(B (@ref{Code
 extension})\e$B$7$F$$$k!#\e(B@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B
+RFC 2046 (@ref{RFC 2046}) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 @node ISO 8859-6, ISO 8859-7, iso-8859-5, Glossary
@@ -1163,7 +1124,7 @@ Interchange (Hangul and Hanja)'', KS C 5601:1987.
 @subsection message/rfc822
 
 \e$BEAE}E*$J\e(B RFC 934 (@ref{RFC 934}) \e$B$KBe$o$j!"\e(BRFC 822 (@ref{RFC 822}) \e$B$GDj\e(B
-\e$B5A$5$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(BRFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F\e(B
+\e$B5A$5$l$k\e(B mail \e$B$rI=$9\e(B MIME \e$B$N7A<0!#\e(BRFC 2046 (@ref{RFC 2046}) \e$B$GDj5A$5$l$F\e(B
 \e$B$$$k!#\e(B
 
 
@@ -1187,11 +1148,30 @@ Internet Mail Extensions} \e$B$NN,$G!"\e(BInternet \e$B$N\e(B mail \e$B$d\e(B news \e$B
 plain text (@ref{us-ascii}) \e$B0J30$NJ8;z$r;H$&$?$a$N\e(B RFC 822 (@ref{RFC
 822}) \e$B$KBP$9$k3HD%!#\e(B@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$H\e(B RFC 1522 (@ref{encoded-word}) \e$B$GDj5A$5$l$F\e(B
-\e$B$$$k!#\e(B@refill
+RFC 2045 \e$B$OKAF,$G<!$N$h$&$K=R$Y$F$$$k!'\e(B@refill
 
-(cf. @ref{What is MIME?})
+STD 11, RFC 822 \e$B$O!"\e(BUS-ASCII message header \e$B$K4X$7$FHs>o$K>\:Y$K5,Dj$7\e(B
+\e$B$?\e(B message \e$BI=8=\e(B protocol \e$B$rDj5A$7$F$$$k!#$7$+$7!"$=$l$OC1$K\e(B flat \e$B$J\e(B 
+US-ASCII text \e$B$N$_$KN1$^$j!"\e(Bmessage \e$B$NFbMF$d\e(B message body \e$B$K4X$9$k5,Dj\e(B
+\e$B$O$J$5$l$F$$$J$$!#\e(BMultipurpose Internet Mail Extensions, \e$B$"$k$$$O\e(B MIME 
+\e$B$HAm>N$5$l$k!"$3$N0lO"$NJ8=q$O!"0J2<$N;v$r2DG=$H$9$k$?$a$K\e(B message \e$B$N\e(B
+\e$B7A<0$r:FDj5A$7$?!'\e(B
 
+@enumerate
+@item
+\e$BJ8=q\e(B message body \e$B$K$*$1$k\e(B US-ASCII \e$B0J30$NJ8;z=89g\e(B
+@item
+\e$BHsJ8=q\e(B message body
+@item
+\e$BJ#?t$NItJ,$+$i$J$k\e(B message body
+@item
+US-ASCII \e$B0J30$NJ8;z=89g$+$i$J$kJ8=q\e(B header \e$B>pJs\e(B
+@end enumerate
+
+
+RFC 2045 (@ref{RFC 2045}), RFC 2046 (@ref{RFC 2046}), RFC 2047
+(@ref{encoded-word}), RFC 2048 (@ref{RFC 2048}), RFC 2049 (@ref{RFC
+2049}) \e$B$GDj5A$5$l$F$$$k!#\e(B
 
 
 @node MIME charset, MTA, MIME, Glossary
@@ -1201,7 +1181,7 @@ Content-Type field (@ref{Content-Type field}) \e$B$d\e(B encoded-word
 (@ref{encoded-word}) \e$B$N\e(B charset parameter \e$B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8\e(B
 \e$B;z=89g\e(B (@ref{Coded character set})\e$B!#\e(B@refill
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
+RFC 2045 (@ref{RFC 2045}) \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
 
 iso-2022-jp (@ref{iso-2022-jp}) \e$B$d\e(B euc-kr (@ref{euc-kr}) \e$B$O$=$N#1$D!#\e(B
 \e$B!J$3$3$G$O!"\e(BMIME charset \e$B$OJ8;z=89g\e(B (@ref{Character set})\e$B$H6hJL$7$F>.J8\e(B
@@ -1253,12 +1233,12 @@ Enhancement to GNU Emacs'', Proc. of INET'93, August, 1993.@refill
 @node multipart, multipart/alternative, MULE, Glossary
 @subsection Multipart
 
-\e$B#1$D$N\e(B message (@ref{message}) \e$B$KJ#?t$N\e(B part \e$B$rF~$l$k$?$a$N\e(B MIME
-(@ref{MIME}) \e$B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N\e(B part \e$B$+$i$J$k\e(B message \e$B$r;X\e(B
-\e$B$9!#\e(B(cf. @ref{content-type}) @refill
+\e$B#1$D$N\e(B message (@ref{message}) \e$B$KJ#?t$N\e(B entity (@ref{entity}) \e$B$rF~$l$k$?\e(B
+\e$B$a$N\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B media type (@ref{media type}) \e$B$N#1$D!"$b\e(B
+\e$B$7$/$O!"J#?t$N\e(B entity \e$B$+$i$J$k\e(B message \e$B$r;X$9!#\e(B@refill
 
 \e$B8=:_!"Dj5A$5$l$F$$$k\e(B @cindex{multipart}@strong{multipart} \e$B$H$7$F$O!"\e(BRFC
-1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$?\e(B
+2046 (@ref{RFC 2046}) \e$B$GDj5A$5$l$?\e(B
 
 @itemize @bullet
 @item
@@ -1291,15 +1271,15 @@ multipart/encrypted (@ref{multipart/encrypted})
 multipart (@ref{multipart}) \e$B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br;h\e(B
 \e$B$H$9$k>l9g$KMQ$$$k!#\e(B@refill
 
-(cf. @ref{RFC 1521})
+(cf. @ref{RFC 2046})
 
 
 
 @node multipart/digest, multipart/encrypted, multipart/alternative, Glossary
 @subsection multipart/digest
 
-multipart (@ref{multipart}) \e$B$N#1$D$G!"4^$^$l$k\e(B part \e$B$N\e(B default \e$B$N\e(B
-content-type (@ref{content-type}) \e$B$,\e(B multipart/mixed
+multipart (@ref{multipart}) \e$B$N#1$D$G!"4^$^$l$k\e(B entity (@ref{entity}) \e$B$N\e(B 
+default \e$B$N\e(Bmedia type (@ref{media type}) \e$B$,\e(B multipart/mixed
 (@ref{multipart/mixed}) \e$B$J$I$N>l9g\e(B text/plain (@ref{text/plain}) \e$B$G$"$k\e(B
 \e$B$N$KBP$7!"\e(B@cindex{multipart/digest}@strong{multipart/digest}\e$B$G$O\e(B 
 message/rfc822 (@ref{message/rfc822}) \e$B$,MQ$$$i$l$kE@$,0[$J$k!#\e(B@refill
@@ -1307,7 +1287,7 @@ message/rfc822 (@ref{message/rfc822}) \e$B$,MQ$$$i$l$kE@$,0[$J$k!#\e(B@refill
 \e$B$3$l$OEAE}E*$J\e(B RFC 1153 (@ref{RFC 1153}) \e$B$K4p$E$/\e(B encapsulation
 (@ref{encapsulation}) \e$B$KBe$o$k$b$N$G$"$k!#\e(B@refill
 
-(cf. @ref{RFC 1521})
+(cf. @ref{RFC 2046})
 
 
 
@@ -1327,7 +1307,7 @@ RFC 1847 \e$B$GDj5A$5$l$?\e(B Security multipart (@ref{Security multipart}) \e$B$N#
 multipart (@ref{multipart}) \e$B$N<gMW$J\e(B subtype \e$B$G!"J#?t$N\e(B part \e$B$r=g=xIU$1\e(B
 \e$B$FJB$Y$k>l9g$KMQ$$$k!#\e(B@refill
 
-(cf. @ref{RFC 1521})
+(cf. @ref{RFC 2046})
 
 
 
@@ -1337,7 +1317,7 @@ multipart (@ref{multipart}) \e$B$N<gMW$J\e(B subtype \e$B$G!"J#?t$N\e(B part \e$B$r=g
 multipart (@ref{multipart}) \e$B$N#1$D$G!"J#?t$N\e(B part \e$B$r=g=xIU$1$:$K4^$a$k>l\e(B
 \e$B9g$KMQ$$$k!#\e(B@refill
 
-(cf. @ref{RFC 1521})
+(cf. @ref{RFC 2046})
 
 
 
@@ -1436,8 +1416,8 @@ M. Elkins, ``MIME Security with Pretty Good Privacy (PGP)'', October
 @node Quoted-Printable, RFC 821, PGP/MIME, Glossary
 @subsection Quoted-Printable
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$F$$$k\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B 
-binary data (@ref{binary}) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B@refill
+RFC 2045 (@ref{RFC 2045}) \e$B$GDj5A$5$l$F$$$k\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B 
+binary data (@ref{binary data}) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B@refill
 
 `=' \e$B$d@)8fJ8;z$d\e(B 128 \e$B0J>e$NJ8;z$J$I$O\e(B `=AF' \e$B$N$h$&$K\e(B `=' \e$B$N8e$KB3$/\e(B 16 
 \e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(BASCII (@ref{ASCII}) \e$BJ8;zCf?4$N\e(B data \e$B$G$O\e(B 
@@ -1527,7 +1507,7 @@ December 1987, (obsolete RFC 850).
 
 
 
-@node RFC 1153, RFC 1521, RFC 1036, Glossary
+@node RFC 1153, RFC 1557, RFC 1036, Glossary
 @subsection RFC 1153
 
 \e$BJ#?t$N\e(B Internet mail (@ref{RFC 822}) \e$B$r\e(B 
@@ -1550,26 +1530,7 @@ F. Wancho, ``Digest Message Format'', April 1990.
 
 
 
-@node RFC 1521, RFC 1557, RFC 1153, Glossary
-@subsection RFC 1521 
-
-MIME (@ref{MIME}) \e$B$rDj5A$7$F$$$k\e(B RFC \e$B$N#1$D!#\e(B
-
-@cindex{Standards Track}@cindex{RFC 1521}
-@noindent
-[RFC 1521]
-@quotation
-N. Borenstein and N. Freed, ``MIME (Multipurpose Internet Mail
-Extensions) Part One: Mechanisms for Specifying and Describing the
-Format of Internet Message Bodies'', September 1993, Standards Track
-(obsolete RFC 1341).
-@end quotation
-
-
-(RFC 1522 (@ref{encoded-word}))
-
-
-@node RFC 1557, RFC 1922, RFC 1521, Glossary
+@node RFC 1557, RFC 1922, RFC 1153, Glossary
 @subsection RFC 1557
 
 euc-kr (@ref{euc-kr}) \e$B$H\e(B iso-2022-kr (@ref{iso-2022-kr}) \e$B$H$$$&4Z9q8l$N\e(B
@@ -1585,7 +1546,7 @@ Messages'', December 1993, Informational.
 
 
 
-@node RFC 1922, plain text, RFC 1557, Glossary
+@node RFC 1922, RFC 2045, RFC 1557, Glossary
 @subsection RFC 1922
 
 iso-2022-cn (@ref{iso-2022-cn}), iso-2022-cn-ext
@@ -1608,7 +1569,63 @@ Informational.
 
 
 
-@node plain text, Security multipart, RFC 1922, Glossary
+@node RFC 2045, RFC 2046, RFC 1922, Glossary
+@subsection RFC 2045
+
+@cindex{Standards Track}@cindex{RFC 2045}
+@noindent
+[RFC 2045]
+@quotation
+N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
+(MIME) Part One: Format of Internet Message Bodies'', November 1996,
+Standards Track (obsolete RFC 1521, 1522, 1590).
+@end quotation
+
+
+
+@node RFC 2046, RFC 2048, RFC 2045, Glossary
+@subsection RFC 2046
+
+@cindex{Standards Track}@cindex{RFC 2046}
+@noindent
+[RFC 2046]
+@quotation
+N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
+(MIME) Part Two: Media Types'', November 1996, Standards Track (obsolete
+RFC 1521, 1522, 1590).
+@end quotation
+
+
+
+@node RFC 2048, RFC 2049, RFC 2046, Glossary
+@subsection RFC 2048
+
+@cindex{Standards Track}@cindex{RFC 2048}
+@noindent
+[RFC 2048]
+@quotation
+N. Freed, J. Klensin and J. Postel, ``Multipurpose Internet Mail
+Extensions (MIME) Part Four: Registration Procedures'', November 1996,
+Standards Track (obsolete RFC 1521, 1522, 1590).
+@end quotation
+
+
+
+@node RFC 2049, plain text, RFC 2048, Glossary
+@subsection RFC 2049
+
+@cindex{Standards Track}@cindex{RFC 2049}
+@noindent
+[RFC 2049]
+@quotation
+N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
+(MIME) Part Five: Conformance Criteria and Examples'', November 1996,
+Standards Track (obsolete RFC 1521, 1522, 1590).
+@end quotation
+
+
+
+@node plain text, Security multipart, RFC 2049, Glossary
 @subsection plain text
 
 \e$B=qBN$dAHHG$K4X$9$k>pJs$r;}$?$J$$\e(B \e$BJ8;zId9f\e(B(@ref{Coded character set})\e$B$N$_\e(B
@@ -1640,9 +1657,9 @@ Multiparts for MIME: Multipart/Signed and Multipart/Encrypted'', October
 @node text/enriched, text/plain, Security multipart, Glossary
 @subsection text/enriched
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$?\e(B 
-@cindex{text/richtext}@strong{text/richtext} \e$B$KBe$o$C$F!"=qBN$dAHHG$K4X\e(B
-\e$B$9$k>pJs$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B content-type (@ref{content-type}).
+RFC 1521 \e$B$GDj5A$5$l$?\e(B @cindex{text/richtext}@strong{text/richtext} \e$B$KBe\e(B
+\e$B$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs$r;}$C$?\e(B text\e$B$rI=8=$9$k$?$a$N\e(B media type
+(@ref{media type}).
 
 @cindex{text/enriched}@cindex{RFC 1896}
 @noindent
@@ -1657,8 +1674,8 @@ February 1996, (obsolete RFC 1563).
 @node text/plain, tm-kernel, text/enriched, Glossary
 @subsection text/plain
 
-RFC 1521 (@ref{RFC 1521}) \e$B$GDj5A$5$l$?!"\e(Bplain text (@ref{plain text}) \e$B$r\e(B
-\e$BI=8=$9$k$?$a$N\e(B content-type (@ref{content-type}).@refill
+RFC 2046 (@ref{RFC 2046}) \e$B$GDj5A$5$l$?!"\e(Bplain text (@ref{plain text}) \e$B$r\e(B
+\e$BI=8=$9$k$?$a$N\e(B media type (@ref{media type}).@refill
 
 \e$BHs\e(B MIME message \e$B$J$I$N\e(B content-type \e$B$,Dj5A$5$l$J$$\e(B part \e$B$O\e(B MIME charset
 (@ref{MIME charset}) \e$B$,\e(B us-ascii (@ref{us-ascii}) \e$B$G$"$k\e(B 
diff --git a/doc/tm-view-en.info b/doc/tm-view-en.info
new file mode 100644 (file)
index 0000000..e1f5e85
--- /dev/null
@@ -0,0 +1,1103 @@
+Info file: tm-view-en.info,    -*-Text-*-
+produced by `texinfo-format-buffer'
+from file `tm-view-en.texi'
+using `texinfmt.el' version 2.32 of 19 November 1993.
+
+
+\1f
+File: tm-view-en.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
+
+tm-view 7.77 Reference Manual (English Version)
+***********************************************
+
+
+This file documents tm-view, a MIME Viewer for GNU Emacs.
+
+* Menu:
+
+* Introduction::                What is tm-view?
+* MIME display::                Structure of display in mime/viewer-mode
+* mime/viewer-mode::            Navigation in mime/viewer-mode
+* method::                      Mechanism of decoding
+* Two buffers for an article::  raw-article-buffer and preview-buffer
+* API::                         Functions to decode MIME message
+* Concept Index::               
+* Function Index::              
+* Variable Index::              
+
+
+\1f
+File: tm-view-en.info, Node: Introduction, Next: MIME display, Prev: Top, Up: Top
+
+What is tm-view?
+****************
+
+The tm-view is a general MIME viewer running on GNU Emacs.
+
+tm-view provides the major-mode called `mime/viewer-mode' (*Note
+mime/viewer-mode::) to read MIME message for MUA.  MUA (*Note
+(tm-en)MUA::) implementer can use it to add MIME function.
+
+tm-view is a user interface kernel to view and navigate MIME message.
+tm-view drives some programs to navigate each content-type
+(*Note (tm-en)content-type::)s, they are called
+*method* (*Note method::).  tm-view calls some
+programs to display each contents and headers in preview buffer, they
+are called *filter* (*Note Two buffers for an article::).  Method and
+filters are tm-view application program.  They expand tm-view to treat
+various kinds of MIME types.
+
+
+
+\1f
+File: tm-view-en.info, Node: MIME display, Next: mime/viewer-mode, Prev: Introduction, Up: Top
+
+Structure of display in mime/viewer-mode
+****************************************
+
+In mime/viewer-mode (*Note mime/viewer-mode::), following are displayed
+for each parts:
+
+       [content-button]
+       (content-header)
+       
+       (content-body)
+       (content-separator)
+
+You can change design or stop to display if you specify for each
+conditions, such as content-types.
+
+Example:
+
+     From: morioka@jaist.ac.jp (MORIOKA Tomohiko)
+     Subject: Re: Question
+     Newsgroups: zxr.message.mime
+     Date: 22 Oct 93 11:02:44
+     Mime-Version: 1.0
+     Organization: Japan Advanced Institute of Science and Technology,
+             Ishikawa, Japan
+
+     [1  (text/plain)]
+       How to compose MIME message in MIME-Edit mode.
+
+       Press `C-c C-x ?' then help message will be displayed:
+
+     C-c C-x C-t       insert a text message.
+     C-c C-x TAB       insert a (binary) file.
+     C-c C-x C-e       insert a reference to external body.
+     C-c C-x C-v       insert a voice message.
+     C-c C-x C-y       insert a mail or news message.
+     C-c C-x RET       insert a mail message.
+     C-c C-x C-s       insert a signature file at end.
+     C-c C-x t insert a new MIME tag.
+     C-c C-x a enclose as multipart/alternative.
+     C-c C-x p enclose as multipart/parallel.
+     C-c C-x m enclose as multipart/mixed.
+     C-c C-x d enclose as multipart/digest.
+     C-c C-x s enclose as PGP signed.
+     C-c C-x e enclose as PGP encrypted.
+     C-c C-x C-k       insert PGP public key.
+     C-c C-x C-p       preview editing MIME message.
+     ...
+
+     So press `C-c C-x C-i' and specify file name you want to include.
+
+       MIME encoding for binary file is normally Base64.
+
+     [2  (image/gif)]
+
+     [3  (text/plain)]
+
+       In this way, it is finish a message attaching a picture.
+
+     ======================== A cup of Russian tea ========================
+     ============  * not by jam, not by marmalade, by honey *  ============
+     ============               MORIOKA Tomohiko               ============
+     =============== Internet E-mail: <morioka@jaist.ac.jp> ===============
+
+
+
+* Menu:
+
+* content-button::              
+* content-header::              
+* content-body::                
+* content-separator::           
+
+
+\1f
+File: tm-view-en.info, Node: content-button, Next: content-header, Prev: MIME display, Up: MIME display
+
+content-button
+==============
+
+content-subject displays abstract for the part.  It is placed in top of
+the part.
+
+In default, it is displayed following design:
+
+             [1.3 test (text/plain)]
+
+
+First number field represents position of a content in the part.  It is
+called *content-number*.  It can be considered as the chapter number in
+the message.
+
+Second string part represents title.  It is created by following:
+
+  1. name paramater or x-name parameter in Content-Type field (*Note
+     (tm-en)Content-Type field::)
+  2. Content-Description field (*Note (tm-en)Content-Description
+     field::) or Subject field
+  3.  filename of uuencode
+
+
+If they are not exists, space is displayed.
+
+Third parenthesis part represents content-type/subtype of the part.  If
+it is non-MIME part, `nil' is displayed.
+
+Content-button is used like icon when content-header (*Note
+content-header::) and content-body (*Note content-body::) are hidden.
+For example:
+
+             [2  (image/gif)]
+
+if you press `v' key, GIF image is displayed.
+
+If mouse operations are available, you can press content-button by mouse
+button-2 (center button of 3 button-mouse) to play, similarly to press
+`v' key. (cf. *Note mime/viewer-mode::)
+
+By the way, it is annoying to display content-button if content-header
+is displayed.  So tm-view provides a mechanism to specify conditions to
+display content-button.
+
+
+ -- Variable: mime-viewer/content-button-ignored-ctype-list
+
+     List of content-types.
+
+     If content-type of a part is a member of this list, its
+     content-button is not displayed.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: content-header, Next: content-body, Prev: content-button, Up: MIME display
+
+content-header
+==============
+
+A content header displays the header portion of a part in the
+preview-buffer.  However it is annoying to display header for every
+parts, so tm-view provides a mechanism to specify its condition.
+
+When the function `mime-viewer/header-visible-p' returns `t' for
+reversed-content-number of a part, content-header is displayed.
+
+This judge function returns `t' when a part is root or content-type of
+its parent is a member of the variable
+`mime-viewer/childrens-header-showing-Content-Type-list'.
+
+If you want to change this condition, please redefine it.  Notice that
+it refers variable
+`mime-viewer/childrens-header-showing-Content-Type-list', however if you
+redefine function `mime-viewer/header-visible-p', it may not work.  So
+if you want to redefine it, it should be refer variable
+`mime-viewer/childrens-header-showing-Content-Type-list'.
+
+When content-header is displayed, content-header are formated by the
+program called by
+*content-header-filter*.
+Content-header-filter is searched from variable
+`mime-viewer/content-header-filter-alist'.  Its key is major-mode of the
+raw-article-buffer (*Note raw-article-buffer::).  If not found, function
+`mime-viewer/default-content-header-filter' is called.
+
+
+ -- Variable: mime-viewer/childrens-header-showing-Content-Type-list
+
+     List of content-types.  If content-type of parent of a part is a
+     member of this variable, its content-header is displayed.  Default
+     value is `'("message/rfc822" "message/news")'.
+
+     This variable is referred by the function
+     `mime-viewer/header-visible-p'.
+
+
+
+ -- Function: mime-viewer/header-visible-p RCNUM CINFO &optional CTYPE
+
+     Returns `t' if a part which reversed-content-number is RCNUM in
+     content-info CINFO is displayed.
+
+     If you know content-type, you can specify by CTYPE.
+
+
+
+ -- Variable: mime-viewer/content-header-filter-alist
+
+     Association-list whose key is major-mode of a raw-article-buffer,
+     value is content-header-filter.
+
+
+
+ -- Function: mime-viewer/default-content-header-filter
+
+     It is called when content-header-filter is not found in variable
+     `mime-viewer/content-header-filter-alist'.
+
+     It refers `mime-viewer/ignored-field-regexp'.
+
+
+
+ -- Variable: mime-viewer/ignored-field-list
+
+     List of regular expression to represent invisible fields even if
+     content-header is displayed.
+
+     Variable `mime-viewer/ignored-field-regexp' is created from it.
+
+     Please use function `tm:add-fields' or `tm:delete-fields' to set
+     it.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: content-body, Next: content-separator, Prev: content-header, Up: MIME display
+
+content-body
+============
+
+*content-body* represents content of the
+part.
+
+tm-view does not display raw content body.  For example, if a content
+has binary, it is hidden.  If a content has text/enriched, it is
+formated.  Namely content body is hidden or formated.
+
+Function `mime-viewer/body-visible-p' is a judge function whether
+content-body of a content is displayed.  If it returns `nil',
+content-body is hidden.  In default, it returns non-`nil' when
+content-type of a part is a member of variable
+`mime-viewer/default-showing-Content-Type-list'.
+
+When content-body of a content is displayed, content-body is formated by
+*content-filter*.  Content-filter is
+searched from variable `mime-viewer/content-filter-alist'.  At this
+time, major-mode of the raw-article-buffer (*Note raw-article-buffer::)
+is used as the key.
+
+If it is not found, function `mime-viewer/default-content-filter' is
+called.
+
+
+ -- Variable: mime-viewer/default-showing-Content-Type-list
+
+     List of content-type.  If content-type of a part is a member of
+     this variable, its body is displayed.
+
+
+
+ -- Function: mime-viewer/body-visible-p RCNUM CINFO &optional CTYPE
+
+     Return non-`nil', if content-type of a part is displayed.  RCNUM is
+     reversed-content-number of a part.  CINFO is content-info of the
+     message.  If you know content-type of a part, you can specify it as
+     argument CTYPE.
+
+
+
+ -- Variable: mime-viewer/content-filter-alist
+
+     Association-list whose key is major-mode of a raw-article-buffer,
+     value is content-filter.
+
+
+
+ -- Function: mime-viewer/default-content-filter RCNUM CINFO CTYPE PARAMS SUBJ
+
+     It is called when content-body of a part should be displayed and
+     content-filter is not found in `mime-viewer/content-filter-alist'.
+
+     In default, it does nothing.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: content-separator, Prev: content-body, Up: MIME display
+
+content-separator
+=================
+
+*content-separator* is displayed to
+represent boundary of contents.
+
+Content-separator is displayed by function
+`mime-viewer/default-content-separator'.  In default, it displays
+line-break when content-header and content-body are not displayed.
+
+If you want to change this condition, please redefine this function.
+
+
+ -- Function: mime-viewer/default-content-separator RCNUM CINFO CTYPE PARAMS SUBJ
+
+     Display content-separator.  CNUM is content-number of a content.
+     CINFO is content-info of the message.  CTYPE is content-type of a
+     content.  PARAMS is Content-Type field parameters of a content.
+     SUBJ is subject.
+
+     In default, it displays line-break when content-header and
+     content-body are not displayed.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: mime/viewer-mode, Next: method, Prev: MIME display, Up: Top
+
+Navigation in mime/viewer-mode
+******************************
+
+`mime/viewer-mode' has following functions:
+
+`u'
+     goes to the upper content (returns to the Summary mode if the
+     cursor is sitting on the top content (*1))
+
+`p'
+     goes to the previous content
+
+`n'
+     goes to the next content
+
+`SPC'
+     scrolls up
+
+`M-SPC'
+     scrolls down
+
+`DEL'
+     scrolls down
+
+`RET'
+     goes to the next line
+
+`M-RET'
+     goes to the previous line
+
+`<'
+     goes to the beginning of message
+
+`>'
+     goes to the end of message
+
+`v'
+     playbacks a part (*2)
+
+`e'
+     extracts a file from a part (*2)
+
+`C-c C-p'
+     prints a part (*2)
+
+`f'
+     displays X-Face in the message
+
+`mouse-button-2'
+     drives mouse button in preview-buffer.
+
+     For content-button, it playbacks a part (*2)
+
+     For URL-button, it drives WWW browser
+
+
+*[Notice]*
+
+     (*1) Not return to the Summary mode unless tm-view has been setup
+     using tm-mh-e, tm-vm, gnus-mime, tm-gnus, tm-rmail etc.
+
+     (*2) Actual playback/extract/print will be performed by a method.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: method, Next: Two buffers for an article, Prev: mime/viewer-mode, Up: Top
+
+Mechanism of decoding
+*********************
+
+In `mime/viewer-mode', you can do play (`v'), extract
+(`e'), or print (`C-c C-p') for each parts.  These operations
+are called *decoding
+operation(s) (for a part)*.  And kind of decoding operations are called
+*decoding-mode*.
+
+When decoding operation is driven, tm-view calls a procedure matched for
+the condition, such as content-type (*Note (tm-en)content-type::) of the
+part or its environment.  This procedure is called
+*method*.
+
+There are two kinds of methods.  One is Emacs Lisp function, called
+*internal method*.  Another one is
+external program, called *external method*.
+
+Internal method operates in Emacs, so it can do carefully.
+
+External method is called as asynchronous process, so Emacs does not
+wait while method is running.  So it is good for big data, such as
+audio, image or video.
+
+
+* Menu:
+
+* decoding-condition::          Setting decoding condition for parts
+* environment variables::       Environment variables
+
+
+\1f
+File: tm-view-en.info, Node: decoding-condition, Next: environment variables, Prev: method, Up: method
+
+Setting decoding condition for parts
+====================================
+
+When decoding operation is driven, tm-view calls a method matched for
+the condition searched from the variable
+`mime/content-decoding-condition'.
+
+Variable `mime/content-decoding-condition' is defined as a list with the
+following syntax:
+
+             (condition_1 condition_2 ...)
+
+Each condition are association-list with the following syntax:
+
+             ((field-type_1 . value_1)
+              (field-type_2 . value_2)
+              ...)
+
+For example, if you want to call the external method named tm-plain to
+decode every text/plain (*Note (tm-en)text/plain::) type parts, you can
+define the condition like:
+
+             ((type . "text/plain")
+              (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
+
+This condition definition will match all parts whose content-type (*Note
+(tm-en)content-type::) are text/plain.  Here is an another example:
+
+             ((type . "text/plain")
+              (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)
+              (mode . "play"))
+
+This will match the part whose type is text/plain and the mode is play.
+
+Here is an another example:
+
+             ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)
+              (mode . "play"))
+
+This will match all parts which have a mode of play.
+
+The conditions defined in a variable `mime/content-decoding-condition'
+are examined from top to bottom.  The first matching condition becomes
+valid and the method specified in that condition definition will be
+executed.
+
+
+* Menu:
+
+* method value::                Format of method value
+* Example of decoding-condition::  
+
+
+\1f
+File: tm-view-en.info, Node: method value, Next: Example of decoding-condition, Prev: decoding-condition, Up: decoding-condition
+
+Format of method value
+----------------------
+
+You can specify the method field of the decoding-condition definition in
+two different ways,
+
+             (method . SYMBOL)
+
+or
+
+             (method  STRING  FLAG  arg1  arg2  ...)
+
+can be accepted.
+
+When a symbol is specified in the method field, a function whose name is
+SYMBOL will be called as an internal method.
+
+When a list is specified in the method field, it will be called as an
+external method.
+
+The list below shows the meaning of the parameters when the external
+method is specified in the method field.
+
+`STRING'
+     name of an external method
+
+`FLAG'
+     If `t', both the content-header and the content-body are passed to
+     an external method.
+
+     If `nil', only the content-body is passed to an external method.
+
+`ARGUMENTs'
+     list of arguments passed to an external method
+
+
+An argument passed to an external method can be in one of the following
+formats:
+
+`STRING'
+     string itself
+
+`'SYMBOL'
+     value gotten using SYMBOL as a key from decoding-condition
+
+`'STRING'
+     value gotten using STRING as a key from decoding-condition
+
+
+`'SYMBOL' can be one of the following:
+
+`'file'
+     name of a file holding the original content
+
+`'type'
+     content-type/sub-type of Content-Type field
+
+`'encoding'
+     field body of Content-Transfer-Encoding field
+
+`'mode'
+     decoding-mode
+
+`'name'
+     name of a file created by decode operation
+
+
+
+`'STRING' is used to search a parameter of the Content-Type field whose
+name matches with it, and pass the value of that parameter to the
+external method.
+
+
+
+\1f
+File: tm-view-en.info, Node: Example of decoding-condition, Prev: method value, Up: decoding-condition
+
+Example of decoding-condition
+-----------------------------
+
+Following is an example of decoding-condition:
+
+     (defvar mime/content-decoding-condition
+       '(((type . "text/plain")
+          (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
+         ((type . "text/x-latex")
+          (method "tm-latex" nil 'file 'type 'encoding 'mode 'name))
+         ((type . "audio/basic")
+          (method "tm-au"    nil 'file 'type 'encoding 'mode 'name))
+         ((type . "image/gif")
+          (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+         ((type . "image/jpeg")
+          (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+         ((type . "image/tiff")
+          (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+         ((type . "image/x-tiff")
+          (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+         ((type . "image/x-xbm")
+          (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+         ((type . "image/x-pic")
+          (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+         ((type . "video/mpeg")`
+          (method "tm-mpeg"  nil 'file 'type 'encoding 'mode 'name))
+         ((type . "application/octet-stream")
+          (method "tm-file"  nil 'file 'type 'encoding 'mode 'name))
+         ((type . "message/partial")
+          (method . mime/decode-message/partial-region))
+         ((method "metamail" t
+                  "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play"))
+         ))
+
+
+For example, if you want to use metamail to decode any contents,
+
+     (setq mime/content-decoding-condition
+           '(
+             ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file))
+            ))
+
+will work.
+
+Variable `mime/content-decoding-condition' provides you of very flexible
+way to define the conditions of decoding.  It can be simple if you only
+need the a few decoding methods, while it can be very complicated if you
+want to use the separate decoding method for each type/mode combination.
+
+Following function may be useful to set decoding-condition.  It is a
+function of `tl-atype.el'.
+
+
+ -- Function: set-atype SYMBOL ALIST
+
+     Add condition ALIST to SYMBOL.
+
+     *[Example]*
+
+               (set-atype 'mime/content-decoding-condition
+                          '((type . "message/external-body")
+                            ("access-type" . "anon-ftp")
+                            (method . mime/decode-message/external-ftp)
+                            ))
+
+
+
+
+\1f
+File: tm-view-en.info, Node: environment variables, Prev: decoding-condition, Up: method
+
+Environment variables
+=====================
+
+Standard methods of tm-view reference some environment variables.  You
+can specify them to customize.
+
+TM_TMP_DIR
+     Directory for temporary files or extracted files.  If it is
+     omitted, `/tmp/' is used.
+
+VIDEO_DITHER
+     Dither for mpeg_play.  If it is omitted, `gray' is used.
+
+TM_WWW_BROWSER
+     WWW browser name.  If it is omitted, `netscape' is used.
+
+
+
+
+
+\1f
+File: tm-view-en.info, Node: Two buffers for an article, Next: API, Prev: method, Up: Top
+
+raw-article-buffer and preview-buffer
+*************************************
+
+tm-view managements two buffers, one is for raw message called
+*raw-article-buffer*, another one is
+to preview for user called
+*preview-buffer*.  major-mode of
+raw-article-buffer is same as major-mode for article of original MUA,
+major-mode of preview-buffer is `mime/viewer-mode' (*Note
+mime/viewer-mode::).
+
+When called `mime/viewer-mode', tm-view analyzes raw-article-buffer, and
+sets its result to the variable `mime::article/content-info'.
+
+After that, tm-view create a preview-buffer corresponded to the
+raw-article-buffer.  As this time, tm-view modifies header and body of
+each parts of the message by specified conditions.  Filter program for
+header is called *header-filter*
+(*Note content-header::), filter program for body is called
+*content-filter* (*Note content-body::), and
+they are called *filter*.
+
+When preview-buffer is made, buffer local variable of preview-buffer
+`mime::preview/content-list' is made to register structure of
+preview-buffer.  tm-view manages message by `mime::article/content-info'
+in raw-article-buffer and `mime::preview/content-list' in
+preview-buffer.
+
+*[Notice]*
+     In this document, I call "content-type" as content-type/subtype of
+     Content-Type field.
+
+
+
+* Menu:
+
+* raw-article-buffer::          buffer local variables of raw-article-buffer
+* preview-buffer::              Buffer local variables of preview-buffer
+
+
+\1f
+File: tm-view-en.info, Node: raw-article-buffer, Next: preview-buffer, Prev: Two buffers for an article, Up: Two buffers for an article
+
+buffer local variables of raw-article-buffer
+============================================
+
+ -- Structure: mime::content-info RCNUM POINT-MIN POINT-MAX TYPE PARAMETERS ENCODING CHILDREN
+
+     structure to represent MIME content in raw-article-buffer.  It is
+     called by *content-info*.
+
+     Please use reference function `mime::content-info/SLOT-NAME' to
+     reference slot of content-info.  Their argument is only
+     content-info.
+
+     Following is a list of slots of the structure:
+
+     RCNUM
+          "reversed content-number" (list)
+
+     POINT-MIN
+          beginning point of region in raw-article-buffer
+
+     POINT-MAX
+          end point of region in raw-article-buffer
+
+     TYPE
+          content-type/sub-type (string or nil)
+
+     PARAMETERS
+          parameter of Content-Type field (association list)
+
+     ENCODING
+          Content-Transfer-Encoding (string or nil)
+
+     CHILDREN
+          parts included in this part (list of content-infos)
+
+
+     If a part includes other parts in its contents, such as multipart
+     or message/rfc822, content-infos of other parts are included in
+     CHILDREN, so content-info become a tree.
+
+
+ -- Variable: mime::article/content-info
+
+     result of MIME parsing of raw-article-buffer (content-info)
+
+
+ -- Variable: mime::article/preview-buffer
+
+     preview-buffer corresponded by this buffer
+
+
+ -- Function: mime-article/point-content-number POINT &optional CINFO
+
+     In a region managed by content-info CINFO, it returns
+     content-number corresponded by POINT.
+
+     If CINFO is omitted, `mime::article/content-info' is used as
+     default value.
+
+
+ -- Function: mime-article/rcnum-to-cinfo RCNUM &optional CINFO
+
+     In a region managed by content-info CINFO, it returns content-info
+     corresponded by reversed-content-number RCNUM.
+
+     If CINFO is omitted, `mime::article/content-info' is used as
+     default value.
+
+
+ -- Function: mime-article/cnum-to-cinfo RCNUM &optional CINFO
+
+     In a region managed by content-info CINFO, it returns content-info
+     corresponded by content-number RCNUM.
+
+     If CINFO is omitted, `mime::article/content-info' is used as
+     default value.
+
+
+ -- Function: mime/flatten-content-info &optional CINFO
+
+     It returns flatten list of content-info from content-info CINFO
+     tree.
+
+     If CINFO is omitted, `mime::article/content-info' is used as
+     default value.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: preview-buffer, Prev: raw-article-buffer, Up: Two buffers for an article
+
+Buffer local variables of preview-buffer
+========================================
+
+ -- Variable: mime::preview/mother-buffer
+
+     Mother buffer of this preview-buffer.
+
+
+ -- Structure: mime::preview-content-info POINT-MIN POINT-MAX BUFFER CONTENT-INFO
+
+     structure to represent MIME content in preview-buffer.  It is called by
+     *preview-content-info*.
+
+     Please use reference function
+     `mime::preview-content-info/SLOT-NAME' to reference slot of
+     preview-content-info.  Their argument is only preview-content-info.
+
+     Following is a list of slots of the structure:
+
+     POINT-MIN
+          beginning point of region in preview-buffer
+
+     POINT-MAX
+          end point of region in preview-buffer
+
+     BUFFER
+          raw-article-buffer corresponding a part
+
+     CONTENT-INFO
+          content-info corresponding a part
+
+
+
+
+ -- Variable: mime::preview/content-list
+
+     List of preview-content-info to represent structure of this
+     preview-buffer.
+
+
+
+ -- Variable: mime::preview/article-buffer
+
+     raw-article-buffer corresponded by this preview-buffer.
+
+
+
+ -- Variable: mime::preview/original-major-mode
+
+     major-mode of original buffer.
+
+
+
+ -- Variable: mime::preview/original-window-configuration
+
+     window-configuration just before made this preview-buffer.
+
+
+
+ -- Function: mime-preview/point-pcinfo POINT &optional PCL
+
+     In a region of preview-buffer managed by preview-content-info PCL,
+     it returns preview-content-info corresponded by POINT.
+
+     If CINFO is omitted, `mime::preview/content-list' is used.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: API, Next: Concept Index, Prev: Two buffers for an article, Up: Top
+
+Functions to decode MIME message
+********************************
+
+tm-view provides some available functions to decode and navigate MIME
+message to each MUA (*Note (tm-en)MUA::)s.
+
+There are 2 kinds of functions, one is for MIME preview, another one is
+to decode RFC 1522 encoded-word (*Note (tm-en)encoded-word::).
+
+
+* Menu:
+
+* API about MIME preview::      Function to preview MIME message
+* encoded-word decoding::       encoded-word decoder
+
+
+\1f
+File: tm-view-en.info, Node: API about MIME preview, Next: encoded-word decoding, Prev: API, Up: API
+
+Function to preview MIME message
+================================
+
+
+ -- Command: mime/viewer-mode &optional MOTHER CTL ENCODING IBUF OBUF MOTHER-KEYMAP
+
+     Parse IBUF as a MIME message, and create preview-buffer into OBUF
+     to display to user, then enter `mime/viewer-mode' (*Note
+     mime/viewer-mode::).
+
+     If IBUF is omitted, current buffer is used.
+
+     MOTHER is used to specify original raw-article-buffer.  It may be
+     useful when a raw-article-buffer is assembled from message/partial
+     messages.
+
+     CTL is used to specify Content-Type field (*Note
+     (tm-en)Content-Type field::) information.  Its format is output
+     format of `mime/Content-Type'.  When CTL is specified, tm-view uses
+     it instead of Content-Type field of the raw-article-buffer.
+
+     ENCODING is used to specify field-body of Content-Transfer-Encoding
+     field.  When is is specified, tm-view uses it instead of
+     Content-Type field of the raw-article-buffer.
+
+     If MOTHER-KEYMAP is specified, keymap of `mime/viewer-mode'
+     includes it.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: encoded-word decoding, Prev: API about MIME preview, Up: API
+
+encoded-word decoder
+====================
+
+tm-view has functions to decode RFC 1522 encoded-word (*Note
+(tm-en)encoded-word::).
+
+
+ -- Command: mime/decode-message-header
+
+     It decodes encoded-words in message header of current buffer.
+
+     If an encoded-word is broken or invalid, or it has non supported
+     MIME charset (*Note (tm-en)MIME charset::), it is not decoded.
+
+
+
+ -- Command: mime-eword/decode-region START END &optional UNFOLDING MUST-UNFOLD
+
+     It decodes encoded-words in region START to END.
+
+     If an encoded-word is broken or invalid, or it has non supported
+     MIME charset (*Note (tm-en)MIME charset::), it is not decoded.
+
+     If UNFOLDING is non-nil, it unfolds folded fields.
+
+     If MUST-FOLD is non-nil and decoded result of an encoded-word has
+     folding or raw CR or LF, it unfolds or delete raw CR or LF.
+
+
+
+ -- Function: mime-eword/decode-string STRING &optional MUST-UNFOLD
+
+     It decodes encoded-words in STRING and returns decoded string.
+
+     If an encoded-word is broken or invalid, or it has non supported
+     MIME charset (*Note (tm-en)MIME charset::), it is not decoded.
+
+     If STRING is folded, it unfolds STRING before decoding.
+
+     If MUST-FOLD is non-nil and decoded result of an encoded-word has
+     folding or raw CR or LF, it unfolds or delete raw CR or LF.
+
+
+
+
+\1f
+File: tm-view-en.info, Node: Concept Index, Next: Function Index, Prev: API, Up: Top
+
+Concept Index
+*************
+
+
+* Menu:
+
+* content-body:                 content-body.           5.
+* content-filter:               content-body.           19.
+* content-filter:               Two buffers for an article.  21.
+* content-header-filter:        content-header.         25.
+* content-info:                 raw-article-buffer.     10.
+* content-number:               content-button.         15.
+* content-separator:            content-separator.      5.
+* decoding operation(s) (for a part): method.           8.
+* decoding-mode:                method.                 9.
+* external method:              method.                 19.
+* filter:                       Introduction.           17.
+* filter:                       Two buffers for an article.  23.
+* header-filter:                Two buffers for an article.  20.
+* internal method:              method.                 17.
+* method:                       Introduction.           14.
+* method:                       method.                 14.
+* preview-buffer:               Two buffers for an article.  8.
+* preview-content-info:         preview-buffer.         14.
+* raw-article-buffer:           Two buffers for an article.  6.
+
+
+\1f
+File: tm-view-en.info, Node: Function Index, Next: Variable Index, Prev: Concept Index, Up: Top
+
+Function Index
+**************
+
+
+* Menu:
+
+* mime-article/cnum-to-cinfo:   raw-article-buffer.     73.
+* mime-article/point-content-number: raw-article-buffer.  55.
+* mime-article/rcnum-to-cinfo:  raw-article-buffer.     64.
+* mime::content-info:           raw-article-buffer.     7.
+* mime/decode-message-header:   encoded-word decoding.  11.
+* mime-eword/decode-region:     encoded-word decoding.  20.
+* mime-eword/decode-string:     encoded-word decoding.  34.
+* mime/flatten-content-info:    raw-article-buffer.     82.
+* mime::preview-content-info:   preview-buffer.         12.
+* mime-preview/point-pcinfo:    preview-buffer.         63.
+* mime-viewer/body-visible-p:   content-body.           37.
+* mime-viewer/default-content-filter: content-body.     53.
+* mime-viewer/default-content-header-filter: content-header.  61.
+* mime-viewer/default-content-separator: content-separator.  17.
+* mime-viewer/header-visible-p: content-header.         45.
+* mime/viewer-mode:             API about MIME preview.  8.
+* set-atype:                    Example of decoding-condition.  57.
+
+
+\1f
+File: tm-view-en.info, Node: Variable Index, Prev: Function Index, Up: Top
+
+Variable Index
+**************
+
+
+* Menu:
+
+* mime::article/content-info:   raw-article-buffer.     45.
+* mime::article/preview-buffer: raw-article-buffer.     50.
+* mime::preview/article-buffer: preview-buffer.         45.
+* mime::preview/content-list:   preview-buffer.         38.
+* mime::preview/mother-buffer:  preview-buffer.         7.
+* mime::preview/original-major-mode: preview-buffer.    51.
+* mime::preview/original-window-configuration: preview-buffer.  57.
+* mime-viewer/childrens-header-showing-Content-Type-list: content-header.  34.
+* mime-viewer/content-button-ignored-ctype-list: content-button.  50.
+* mime-viewer/content-filter-alist: content-body.       46.
+* mime-viewer/content-header-filter-alist: content-header.  54.
+* mime-viewer/default-showing-Content-Type-list: content-body.  30.
+* mime-viewer/ignored-field-list: content-header.       70.
+\1f\f
+Tag table:
+Node: Top\7f162
+Node: Introduction\7f883
+Node: MIME display\7f1717
+Node: content-button\7f4001
+Node: content-header\7f5689
+Node: content-body\7f8326
+Node: content-separator\7f10238
+Node: mime/viewer-mode\7f11101
+Node: method\7f12253
+Node: decoding-condition\7f13342
+Node: method value\7f15115
+Node: Example of decoding-condition\7f16825
+Node: environment variables\7f19390
+Node: Two buffers for an article\7f19896
+Node: raw-article-buffer\7f21434
+Node: preview-buffer\7f23971
+Node: API\7f25642
+Node: API about MIME preview\7f26189
+Node: encoded-word decoding\7f27351
+Node: Concept Index\7f28774
+Node: Function Index\7f30062
+Node: Variable Index\7f31244
+\1f
+End tag table
diff --git a/doc/tm-view-en.sgml b/doc/tm-view-en.sgml
new file mode 100644 (file)
index 0000000..24892b6
--- /dev/null
@@ -0,0 +1,994 @@
+<!doctype sinfo system>
+<!-- $Id: tm-view-en.sgml,v 1.1 1996/11/29 19:09:27 morioka Exp $ -->
+<head>
+<title>tm-view 7.77 Reference Manual (English Version)
+<author>MORIOKA Tomohiko <mail>morioka@jaist.ac.jp</mail>
+<date>1996/10/11
+
+<toc>
+</head>
+
+<body>
+
+<abstract>
+<p>
+This file documents tm-view, a MIME Viewer for GNU Emacs.
+</abstract>
+
+
+<h1> What is tm-view?
+<node> Introduction
+<p>
+The tm-view is a general MIME viewer running on GNU Emacs.
+<p>
+tm-view provides the major-mode called <a
+node="mime/viewer-mode"><code>mime/viewer-mode</code> </a> to read
+MIME message for MUA.  <a file="tm-en" node="MUA">MUA</a> implementer
+can use it to add MIME function.
+<p>
+tm-view is a user interface kernel to view and navigate MIME message.
+tm-view drives some programs to navigate each <dref
+file="tm-en">content-type</dref>s, they are called <a
+node="method"><concept>method</concept></a>.  tm-view calls some
+programs to display each contents and headers in preview buffer, they
+are called <a node="Two buffers for an
+article"><concept>filter</concept></a>.  Method and filters are
+tm-view application program.  They expand tm-view to treat various
+kinds of MIME types.
+
+
+<h1> Structure of display in mime/viewer-mode
+<node> MIME display
+<p>
+In <a node="mime/viewer-mode">mime/viewer-mode</a>, following are
+displayed for each parts:
+<p>
+<verb>
+       [content-button]
+       (content-header)
+       
+       (content-body)
+       (content-separator)
+</verb>
+<p>
+You can change design or stop to display if you specify for each
+conditions, such as content-types.
+<p>
+Example:
+
+<verb>
+From: morioka@jaist.ac.jp (MORIOKA Tomohiko)
+Subject: Re: Question
+Newsgroups: zxr.message.mime
+Date: 22 Oct 93 11:02:44
+Mime-Version: 1.0
+Organization: Japan Advanced Institute of Science and Technology,
+        Ishikawa, Japan
+
+[1  (text/plain)]
+  How to compose MIME message in MIME-Edit mode.
+
+  Press `C-c C-x ?' then help message will be displayed:
+
+C-c C-x C-t    insert a text message.
+C-c C-x TAB    insert a (binary) file.
+C-c C-x C-e    insert a reference to external body.
+C-c C-x C-v    insert a voice message.
+C-c C-x C-y    insert a mail or news message.
+C-c C-x RET    insert a mail message.
+C-c C-x C-s    insert a signature file at end.
+C-c C-x t      insert a new MIME tag.
+C-c C-x a      enclose as multipart/alternative.
+C-c C-x p      enclose as multipart/parallel.
+C-c C-x m      enclose as multipart/mixed.
+C-c C-x d      enclose as multipart/digest.
+C-c C-x s      enclose as PGP signed.
+C-c C-x e      enclose as PGP encrypted.
+C-c C-x C-k    insert PGP public key.
+C-c C-x C-p    preview editing MIME message.
+...
+
+So press `C-c C-x C-i' and specify file name you want to include.
+
+  MIME encoding for binary file is normally Base64.
+
+[2  (image/gif)]
+
+[3  (text/plain)]
+
+  In this way, it is finish a message attaching a picture.
+
+======================== A cup of Russian tea ========================
+============  * not by jam, not by marmalade, by honey *  ============
+============               MORIOKA Tomohiko               ============
+=============== Internet E-mail: <morioka@jaist.ac.jp> ===============
+</verb>
+
+
+<h2> content-button
+<node> content-button
+<p>
+content-subject displays abstract for the part.  It is placed in top
+of the part.
+<p>
+In default, it is displayed following design:
+
+<verb>
+        [1.3 test (text/plain)]
+</verb>
+
+<p>
+First number field represents position of a content in the part.  It
+is called <concept>content-number</concept>.  It can be considered as
+the chapter number in the message.
+<p>
+Second string part represents title.  It is created by following:
+
+<ol>
+<li>name paramater or x-name parameter in <dref
+file="tm-en">Content-Type field</dref>
+</li>
+<li><dref file="tm-en">Content-Description field</dref> or Subject
+field
+</li>
+<li> filename of uuencode
+</ol>
+
+<p>
+If they are not exists, space is displayed.
+<p>
+Third parenthesis part represents content-type/subtype of the part.
+If it is non-MIME part, <code>nil</code> is displayed.
+<p>
+Content-button is used like icon when <dref>content-header</dref> and
+<dref>content-body</dref> are hidden.  For example:
+
+<verb>
+        [2  (image/gif)]
+</verb>
+
+<noindent>
+if you press <kbd>v</kbd> key, GIF image is displayed.
+<p>
+If mouse operations are available, you can press content-button by
+mouse button-2 (center button of 3 button-mouse) to play, similarly to
+press <kbd>v</kbd> key. <cf node="mime/viewer-mode">
+<p>
+By the way, it is annoying to display content-button if content-header
+is displayed.  So tm-view provides a mechanism to specify conditions
+to display content-button.
+
+
+<defvar name="mime-viewer/content-button-ignored-ctype-list">
+<p>
+List of content-types.
+<p>
+If content-type of a part is a member of this list, its content-button
+is not displayed.
+</defvar>
+
+
+<h2> content-header
+<node> content-header
+<p>
+A content header displays the header portion of a part in the
+preview-buffer.  However it is annoying to display header for every
+parts, so tm-view provides a mechanism to specify its condition.
+<p>
+When the function <code>mime-viewer/header-visible-p</code> returns
+<code>t</code> for reversed-content-number of a part, content-header
+is displayed.
+<p>
+This judge function returns <code>t</code> when a part is root or
+content-type of its parent is a member of the variable
+<code>mime-viewer/childrens-header-showing-Content-Type-list</code>.
+<p>
+If you want to change this condition, please redefine it.  Notice that
+it refers variable
+<code>mime-viewer/childrens-header-showing-Content-Type-list</code>,
+however if you redefine function
+<code>mime-viewer/header-visible-p</code>, it may not work.  So if you
+want to redefine it, it should be refer variable
+<code>mime-viewer/childrens-header-showing-Content-Type-list</code>.
+<p>
+When content-header is displayed, content-header are formated by the
+program called by <concept>content-header-filter</concept>.
+Content-header-filter is searched from variable
+<code>mime-viewer/content-header-filter-alist</code>.  Its key is
+major-mode of the <a node="raw-article-buffer">raw-article-buffer</a>.
+If not found, function
+<code>mime-viewer/default-content-header-filter</code> is called.
+<p>
+
+<defvar name="mime-viewer/childrens-header-showing-Content-Type-list">
+<p>
+List of content-types.  If content-type of parent of a part is a
+member of this variable, its content-header is displayed.  Default
+value is <code>'("message/rfc822" "message/news")</code>.
+<p>
+This variable is referred by the function
+<code>mime-viewer/header-visible-p</code>.
+</defvar>
+
+
+<defun name="mime-viewer/header-visible-p">
+<args> rcnum cinfo <opts> ctype
+<p>
+Returns <code>t</code> if a part which reversed-content-number is
+<var>rcnum</var> in content-info <var>cinfo</var> is displayed.
+<p>
+If you know content-type, you can specify by <var>ctype</var>.
+</defun>
+
+
+<defvar name="mime-viewer/content-header-filter-alist">
+<p>
+Association-list whose key is major-mode of a raw-article-buffer,
+value is content-header-filter.
+</defvar>
+
+
+<defun name="mime-viewer/default-content-header-filter">
+<p>
+It is called when content-header-filter is not found in variable
+<code>mime-viewer/content-header-filter-alist</code>.
+<p>
+It refers <code>mime-viewer/ignored-field-regexp</code>.
+</defun>
+
+
+<defvar name="mime-viewer/ignored-field-list">
+<p>
+List of regular expression to represent invisible fields even if
+content-header is displayed.
+<p>
+Variable <code>mime-viewer/ignored-field-regexp</code> is created from
+it.
+<p>
+Please use function <code>tm:add-fields</code> or
+<code>tm:delete-fields</code> to set it.
+</defvar>
+
+
+<h2> content-body
+<node> content-body
+<p>
+<concept>content-body</concept> represents content of the part.
+<p>
+tm-view does not display raw content body.  For example, if a content
+has binary, it is hidden.  If a content has text/enriched, it is
+formated.  Namely content body is hidden or formated.
+<p>
+Function <code>mime-viewer/body-visible-p</code> is a judge function
+whether content-body of a content is displayed.  If it returns
+<code>nil</code>, content-body is hidden.  In default, it returns
+non-<code>nil</code> when content-type of a part is a member of
+variable <code>mime-viewer/default-showing-Content-Type-list</code>.
+<p>
+When content-body of a content is displayed, content-body is formated
+by <concept>content-filter</concept>.  Content-filter is searched from
+variable <code>mime-viewer/content-filter-alist</code>.  At this time,
+major-mode of the <dref>raw-article-buffer</dref> is used as the key.
+
+If it is not found, function
+<code>mime-viewer/default-content-filter</code> is called.
+
+
+<defvar name="mime-viewer/default-showing-Content-Type-list">
+<p>
+List of content-type.  If content-type of a part is a member of this
+variable, its body is displayed.
+</defvar>
+
+
+<defun name="mime-viewer/body-visible-p">
+<args> rcnum cinfo <opts> ctype
+<p>
+Return non-<code>nil</code>, if content-type of a part is displayed.
+<var>rcnum</var> is reversed-content-number of a part.
+<var>cinfo</var> is content-info of the message.  If you know
+content-type of a part, you can specify it as argument
+<var>ctype</var>.
+</defun>
+
+
+<defvar name="mime-viewer/content-filter-alist">
+<p>
+Association-list whose key is major-mode of a raw-article-buffer,
+value is content-filter.
+</defvar>
+
+
+<defun name="mime-viewer/default-content-filter">
+<args> rcnum cinfo ctype params subj
+<p>
+It is called when content-body of a part should be displayed and
+content-filter is not found in
+<code>mime-viewer/content-filter-alist</code>.
+<p>
+In default, it does nothing.
+</defun>
+
+
+<h2> content-separator
+<node> content-separator
+<p>
+<concept>content-separator</concept> is displayed to represent
+boundary of contents.
+<p>
+Content-separator is displayed by function
+<code>mime-viewer/default-content-separator</code>.  In default, it
+displays line-break when content-header and content-body are not
+displayed.
+<p>
+If you want to change this condition, please redefine this function.
+
+
+<defun name="mime-viewer/default-content-separator">
+<args> rcnum cinfo ctype params subj
+<p>
+Display content-separator.  <var>cnum</var> is content-number of a
+content.  <var>cinfo</var> is content-info of the message.
+<var>ctype</var> is content-type of a content.  <var>params</var> is
+Content-Type field parameters of a content.  <var>subj</var> is
+subject.
+<p>
+In default, it displays line-break when content-header and
+content-body are not displayed.
+</defun>
+
+
+<h1> Navigation in mime/viewer-mode
+<node> mime/viewer-mode
+<p>
+<code>mime/viewer-mode</code> has following functions:
+<p>
+<kl>
+<kt>u
+<kd>
+goes to the upper content (returns to the Summary mode if the cursor
+is sitting on the top content (*1))
+</kd>
+<kt>p
+<kd>
+goes to the previous content
+</kd>
+<kt>n
+<kd>
+goes to the next content
+</kd>
+<kt>SPC
+<kd>
+scrolls up
+</kd>
+<kt>M-SPC
+<kd>
+scrolls down
+</kd>
+<kt>DEL
+<kd>
+scrolls down
+</kd>
+<kt>RET
+<kd>
+goes to the next line
+</kd>
+<kt>M-RET
+<kd>
+goes to the previous line
+</kd>
+<kt>&lt;
+<kd>
+goes to the beginning of message
+</kd>
+<kt>&gt;
+<kd>
+goes to the end of message
+</kd>
+<kt>v
+<kd>
+playbacks a part (*2)
+</kd>
+<kt>e
+<kd>
+extracts a file from a part (*2)
+</kd>
+<kt>C-c C-p
+<kd>
+prints a part (*2)
+</kd>
+<kt>f
+<kd>
+displays X-Face in the message
+</kd>
+<kt>mouse-button-2
+<kd>
+drives mouse button in preview-buffer.
+<p>
+For content-button, it playbacks a part (*2)
+<p>
+For URL-button, it drives WWW browser
+</kd>
+</kl>
+<p>
+<memo title="Notice">
+<p>
+(*1) Not return to the Summary mode unless tm-view has been setup
+using tm-mh-e, tm-vm, gnus-mime, tm-gnus, tm-rmail etc.
+<p>
+(*2) Actual playback/extract/print will be performed by a method.
+</memo>
+
+
+<h1> Mechanism of decoding
+<node> method
+<p>
+In <code>mime/viewer-mode</code>, you can do play (<kbd>v</kbd>),
+extract (<kbd>e</kbd>), or print (<kbd>C-c C-p</kbd>) for each parts.
+These operations are called <concept>decoding operation(s) (for a
+part)</concept>.  And kind of decoding operations are called
+<concept>decoding-mode</concept>.
+<p>
+When decoding operation is driven, tm-view calls a procedure matched
+for the condition, such as <dref file="tm-en">content-type</dref> of
+the part or its environment.  This procedure is called
+<concept>method</concept>.
+<p>
+There are two kinds of methods.  One is Emacs Lisp function, called
+<concept>internal method</concept>.  Another one is external program,
+called <concept>external method</concept>.
+<p>
+Internal method operates in Emacs, so it can do carefully.
+<p>
+External method is called as asynchronous process, so Emacs does not
+wait while method is running.  So it is good for big data, such as
+audio, image or video.
+
+
+<h2> Setting decoding condition for parts
+<node> decoding-condition
+<p>
+When decoding operation is driven, tm-view calls a method matched for
+the condition searched from the variable
+<code>mime/content-decoding-condition</code>.
+<p>
+Variable <code>mime/content-decoding-condition</code> is defined as a
+list with the following syntax:
+<p>
+<lisp>
+        (condition_1 condition_2 ...)
+</lisp>
+<p>
+Each condition are association-list with the following syntax:
+<p>
+<lisp>
+        ((field-type_1 . value_1)
+         (field-type_2 . value_2)
+         ...)
+</lisp>
+<p>
+For example, if you want to call the external method named tm-plain to
+decode every <dref file="tm-en">text/plain</dref> type parts, you can
+define the condition like:
+<p>
+<lisp>
+        ((type . "text/plain")
+         (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
+</lisp>
+<p>
+This condition definition will match all parts whose <dref
+file="tm-en">content-type</dref> are text/plain.  Here is an another
+example:
+<p>
+<lisp>
+        ((type . "text/plain")
+         (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)
+         (mode . "play"))
+</lisp>
+<p>
+This will match the part whose type is text/plain and the mode is
+play.
+<p>
+Here is an another example:
+<p>
+<lisp>
+        ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)
+         (mode . "play"))
+</lisp>
+<p>
+This will match all parts which have a mode of play.
+<p>
+The conditions defined in a variable
+<code>mime/content-decoding-condition</code> are examined from top to
+bottom.  The first matching condition becomes valid and the method
+specified in that condition definition will be executed.
+
+
+<h3> Format of method value
+<node> method value
+<p>
+You can specify the method field of the decoding-condition definition
+in two different ways,
+<p>
+<lisp>
+        (method . SYMBOL)
+</lisp>
+<p>
+<noindent>
+or
+<p>
+<lisp>
+        (method  STRING  FLAG  arg1  arg2  ...)
+</lisp>
+<p>
+<noindent>
+can be accepted.
+<p>
+When a symbol is specified in the method field, a function whose name
+is SYMBOL will be called as an internal method.
+<p>
+When a list is specified in the method field, it will be called as an
+external method.
+<p>
+The list below shows the meaning of the parameters when the external
+method is specified in the method field.
+<p>
+<dl>
+<dt>STRING
+<dd>name of an external method
+</dd>
+<dt>FLAG
+<dd>If <code>t</code>, both the content-header and the content-body
+are passed to an external method.
+<p>
+If <code>nil</code>, only the content-body is passed to an external
+method.
+</dd>
+<dt>ARGUMENTs
+<dd>list of arguments passed to an external method
+</dd>
+</dl>
+<p>
+An argument passed to an external method can be in one of the
+following formats:
+<p>
+<dl>
+<dt>STRING
+<dd>string itself
+</dd>
+<dt>'SYMBOL
+<dd>value gotten using SYMBOL as a key from decoding-condition
+</dd>
+<dt>'STRING
+<dd>value gotten using STRING as a key from decoding-condition
+</dd>
+</dl>
+<p>
+<code>'SYMBOL</code> can be one of the following:
+<p>
+<dl>
+<dt>'file
+<dd>name of a file holding the original content
+</dd>
+<dt>'type
+<dd>content-type/sub-type of Content-Type field
+</dd>
+<dt>'encoding
+<dd>field body of Content-Transfer-Encoding field
+</dd>
+<dt>'mode
+<dd>decoding-mode
+</dd>
+<dt>'name
+<dd>name of a file created by decode operation
+</dd>
+</dl>
+
+<p>
+<code>'STRING</code> is used to search a parameter of the Content-Type
+field whose name matches with it, and pass the value of that parameter
+to the external method.
+
+
+<h3> Example of decoding-condition
+<node> Example of decoding-condition
+<p>
+Following is an example of decoding-condition:
+
+<lisp>
+(defvar mime/content-decoding-condition
+  '(((type . "text/plain")
+     (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "text/x-latex")
+     (method "tm-latex" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "audio/basic")
+     (method "tm-au"    nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/gif")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/jpeg")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/tiff")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-tiff")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-xbm")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-pic")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "video/mpeg")`
+     (method "tm-mpeg"  nil 'file 'type 'encoding 'mode 'name))
+    ((type . "application/octet-stream")
+     (method "tm-file"  nil 'file 'type 'encoding 'mode 'name))
+    ((type . "message/partial")
+     (method . mime/decode-message/partial-region))
+    ((method "metamail" t
+             "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play"))
+    ))
+</lisp>
+
+<p>
+For example, if you want to use metamail to decode any contents,
+
+<lisp>
+(setq mime/content-decoding-condition
+      '(
+        ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file))
+       ))
+</lisp>
+
+<noindent>
+will work.
+<p>
+Variable <code>mime/content-decoding-condition</code> provides you of
+very flexible way to define the conditions of decoding.  It can be
+simple if you only need the a few decoding methods, while it can be
+very complicated if you want to use the separate decoding method for
+each type/mode combination.
+<p>
+Following function may be useful to set decoding-condition.  It is a
+function of <file>tl-atype.el</file>.
+
+
+<defun name="set-atype">
+<args> symbol alist
+<p>
+Add condition <var>alist</var> to <var>symbol</var>.
+
+<memo title="Example">
+<p>
+<lisp>
+(set-atype 'mime/content-decoding-condition
+          '((type . "message/external-body")
+            ("access-type" . "anon-ftp")
+            (method . mime/decode-message/external-ftp)
+            ))
+</lisp>
+</memo>
+</defun>
+
+
+<h2> Environment variables
+<node> environment variables
+<p>
+Standard methods of tm-view reference some environment variables.  You
+can specify them to customize.
+
+<vl>
+<dt>TM_TMP_DIR
+<dd>
+Directory for temporary files or extracted files.  If it is omitted,
+<file>/tmp/</file> is used.
+</dd>
+<dt>VIDEO_DITHER
+<dd>
+Dither for mpeg_play.  If it is omitted, `gray' is used.
+</dd>
+<dt>TM_WWW_BROWSER
+<dd>
+WWW browser name.  If it is omitted, `netscape' is used.
+</vl>
+
+
+<h1> raw-article-buffer and preview-buffer
+<node> Two buffers for an article
+<p>
+tm-view managements two buffers, one is for raw message called
+<concept>raw-article-buffer</concept>, another one is to preview for
+user called <concept>preview-buffer</concept>.  major-mode of
+raw-article-buffer is same as major-mode for article of original MUA,
+major-mode of preview-buffer is <a
+node="mime/viewer-mode"><code>mime/viewer-mode</code></a>.
+<p>
+When called <code>mime/viewer-mode</code>, tm-view analyzes
+raw-article-buffer, and sets its result to the variable
+<code>mime::article/content-info</code>.
+<p>
+After that, tm-view create a preview-buffer corresponded to the
+raw-article-buffer.  As this time, tm-view modifies header and body of
+each parts of the message by specified conditions.  Filter program for
+header is called <a
+node="content-header"><concept>header-filter</concept></a>, filter
+program for body is called <a
+node="content-body"><concept>content-filter</concept></a>, and they
+are called <concept>filter</concept>.
+<p>
+When preview-buffer is made, buffer local variable of preview-buffer
+<code>mime::preview/content-list</code> is made to register structure
+of preview-buffer.  tm-view manages message by
+<code>mime::article/content-info</code> in raw-article-buffer and
+<code>mime::preview/content-list</code> in preview-buffer.
+<p>
+<memo title="Notice">
+In this document, I call ``content-type'' as content-type/subtype of
+Content-Type field.
+</memo>
+
+
+<h2> buffer local variables of raw-article-buffer
+<node> raw-article-buffer
+<p>
+<define type="Structure" name="mime::content-info">
+<args> rcnum point-min point-max type parameters encoding children
+<p>
+structure to represent MIME content in raw-article-buffer.  It is
+called by <concept>content-info</concept>.
+<p>
+Please use reference function
+<code>mime::content-info/SLOT-NAME</code> to reference slot of
+content-info.  Their argument is only content-info.
+<p>
+Following is a list of slots of the structure:
+
+<vl>
+<dt>rcnum<dd>``reversed content-number'' (list)
+</dd>
+<dt>point-min<dd>beginning point of region in raw-article-buffer
+</dd>
+<dt>point-max<dd>end point of region in raw-article-buffer
+</dd>
+<dt>type<dd>content-type/sub-type (string or nil)
+</dd>
+<dt>parameters<dd>parameter of Content-Type field (association list)
+</dd>
+<dt>encoding<dd>Content-Transfer-Encoding (string or nil)
+</dd>
+<dt>children<dd>parts included in this part (list of content-infos)
+</dd>
+</vl>
+<p>
+If a part includes other parts in its contents, such as multipart or
+message/rfc822, content-infos of other parts are included in
+<var>children</var>, so content-info become a tree.
+</define>
+
+<defvar name="mime::article/content-info">
+<p>
+result of MIME parsing of raw-article-buffer (content-info)
+</defvar>
+
+<defvar name="mime::article/preview-buffer">
+<p>
+preview-buffer corresponded by this buffer
+</defvar>
+
+<defun name="mime-article/point-content-number">
+<args> point <opts> cinfo
+<p>
+In a region managed by content-info <var>cinfo</var>, it returns
+content-number corresponded by <var>point</var>.
+<p>
+If <var>cinfo</var> is omitted,
+<code>mime::article/content-info</code> is used as default value.
+</defun>
+
+<defun name="mime-article/rcnum-to-cinfo">
+<args> rcnum <opts> cinfo
+<p>
+In a region managed by content-info <var>cinfo</var>, it returns
+content-info corresponded by reversed-content-number <var>rcnum</var>.
+<p>
+If <var>cinfo</var> is omitted,
+<code>mime::article/content-info</code> is used as default value.
+</defun>
+
+<defun name="mime-article/cnum-to-cinfo">
+<args> rcnum <opts> cinfo
+<p>
+In a region managed by content-info <var>cinfo</var>, it returns
+content-info corresponded by content-number <var>rcnum</var>.
+<p>
+If <var>cinfo</var> is omitted,
+<code>mime::article/content-info</code> is used as default value.
+</defun>
+
+<defun name="mime/flatten-content-info">
+<args> <opts> cinfo
+<p>
+It returns flatten list of content-info from content-info
+<var>cinfo</var> tree.
+<p>
+If <var>cinfo</var> is omitted,
+<code>mime::article/content-info</code> is used as default value.
+</defun>
+
+
+<h2> Buffer local variables of preview-buffer
+<node> preview-buffer
+<p>
+<defvar name="mime::preview/mother-buffer">
+<p>
+Mother buffer of this preview-buffer.
+</defvar>
+
+<define type="Structure" name="mime::preview-content-info">
+<args> point-min point-max buffer content-info
+<p>
+structure to represent MIME content in preview-buffer.  It is called
+by <concept>preview-content-info</concept>.
+<p>
+Please use reference function
+<code>mime::preview-content-info/SLOT-NAME</code> to reference slot of
+preview-content-info.  Their argument is only preview-content-info.
+<p>
+Following is a list of slots of the structure:
+
+<vl>
+<dt>point-min<dd>beginning point of region in preview-buffer
+</dd>
+<dt> point-max<dd>end point of region in preview-buffer
+</dd>
+<dt>buffer<dd>raw-article-buffer corresponding a part
+</dd>
+<dt>content-info<dd>content-info corresponding a part
+</dd>
+</vl>
+</define>
+
+
+<defvar name="mime::preview/content-list">
+<p>
+List of preview-content-info to represent structure of this
+preview-buffer.
+</defvar>
+
+
+<defvar name="mime::preview/article-buffer">
+<p>
+raw-article-buffer corresponded by this preview-buffer.
+</defvar>
+
+
+<defvar name="mime::preview/original-major-mode">
+<p>
+major-mode of original buffer.
+</defvar>
+
+
+<defvar name="mime::preview/original-window-configuration">
+<p>
+window-configuration just before made this preview-buffer.
+</defvar>
+
+
+<defun name="mime-preview/point-pcinfo">
+<args> point <opts> pcl
+<p>
+In a region of preview-buffer managed by preview-content-info
+<var>pcl</var>, it returns preview-content-info corresponded by
+<var>point</var>.
+<p>
+If <var>cinfo</var> is omitted,
+<code>mime::preview/content-list</code> is used.
+</defun>
+
+
+<h1> Functions to decode MIME message
+<node> API
+<p>
+tm-view provides some available functions to decode and navigate MIME
+message to each <a file="tm-en" node="MUA">MUA</a>s.
+<p>
+There are 2 kinds of functions, one is for MIME preview, another one
+is to decode RFC 1522 <dref file="tm-en">encoded-word</dref>.
+
+
+<h2> Function to preview MIME message
+<node> API about MIME preview
+<p>
+
+<define type="Command" name="mime/viewer-mode">
+<opts> mother ctl encoding ibuf obuf mother-keymap
+<p>
+Parse <var>ibuf</var> as a MIME message, and create preview-buffer
+into <var>obuf</var> to display to user, then enter <a
+node="mime/viewer-mode"><code>mime/viewer-mode</code></a>.
+<p>
+If <var>ibuf</var> is omitted, current buffer is used.
+<p>
+<var>mother</var> is used to specify original raw-article-buffer.  It
+may be useful when a raw-article-buffer is assembled from
+message/partial messages.
+<p>
+<var>ctl</var> is used to specify <dref file="tm-en">Content-Type
+field</dref> information.  Its format is output format of
+<code>mime/Content-Type</code>.  When <var>ctl</var> is specified,
+tm-view uses it instead of Content-Type field of the
+raw-article-buffer.
+<p>
+<var>encoding</var> is used to specify field-body of
+Content-Transfer-Encoding field.  When is is specified, tm-view uses
+it instead of Content-Type field of the raw-article-buffer.
+<p>
+If <var>mother-keymap</var> is specified, keymap of
+<code>mime/viewer-mode</code> includes it.
+</define>
+
+
+<h2> encoded-word decoder
+<node> encoded-word decoding
+<p>
+tm-view has functions to decode RFC 1522 <dref
+file="tm-en">encoded-word</dref>.
+
+
+<define type="Command" name="mime/decode-message-header">
+<p>
+It decodes encoded-words in message header of current buffer.
+<p>
+If an encoded-word is broken or invalid, or it has non supported <a
+file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded.
+</define>
+
+
+<define type="Command" name="mime-eword/decode-region">
+<args> start end <opts> unfolding must-unfold
+<p>
+It decodes encoded-words in region <var>start</var> to <var>end</var>.
+<p>
+If an encoded-word is broken or invalid, or it has non supported <a
+file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded.
+<p>
+If <var>unfolding</var> is non-nil, it unfolds folded fields.
+<p>
+If <var>must-fold</var> is non-nil and decoded result of an
+encoded-word has folding or raw CR or LF, it unfolds or delete raw CR
+or LF.
+</define>
+
+
+<defun name="mime-eword/decode-string">
+<args> string <opts> must-unfold
+<p>
+It decodes encoded-words in <var>string</var> and returns decoded
+string.
+<p>
+If an encoded-word is broken or invalid, or it has non supported <a
+file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded.
+<p>
+If <var>string</var> is folded, it unfolds <var>string</var> before
+decoding.
+<p>
+If <var>must-fold</var> is non-nil and decoded result of an
+encoded-word has folding or raw CR or LF, it unfolds or delete raw CR
+or LF.
+</defun>
+
+
+<h1> Concept Index
+<node> Concept Index
+
+<cindex>
+
+
+<h1> Function Index
+<node> Function Index
+
+<findex>
+
+
+<h1> Variable Index
+<node> Variable Index
+
+<vindex>
+
+</body>
diff --git a/doc/tm-view-en.texi b/doc/tm-view-en.texi
new file mode 100644 (file)
index 0000000..79d3f8b
--- /dev/null
@@ -0,0 +1,1045 @@
+\input texinfo.tex
+@setfilename tm-view-en.info
+@settitle{tm-view 7.77 Reference Manual (English Version)}
+@titlepage
+@title tm-view 7.77 Reference Manual (English Version)
+@author MORIOKA Tomohiko <morioka@@jaist.ac.jp>
+@subtitle 1996/10/11
+@end titlepage
+@node Top, Introduction, (dir), (dir)
+@top tm-view 7.77 Reference Manual (English Version)
+
+@ifinfo
+
+This file documents tm-view, a MIME Viewer for GNU Emacs.
+@end ifinfo
+
+@menu
+* Introduction::                What is tm-view?
+* MIME display::                Structure of display in mime/viewer-mode
+* mime/viewer-mode::            Navigation in mime/viewer-mode
+* method::                      Mechanism of decoding
+* Two buffers for an article::  raw-article-buffer and preview-buffer
+* API::                         Functions to decode MIME message
+* Concept Index::               
+* Function Index::              
+* Variable Index::              
+@end menu
+
+@node Introduction, MIME display, Top, Top
+@chapter What is tm-view?
+
+The tm-view is a general MIME viewer running on GNU Emacs.@refill
+
+tm-view provides the major-mode called @code{mime/viewer-mode}
+(@ref{mime/viewer-mode}) to read MIME message for MUA.  MUA
+(@ref{(tm-en)MUA}) implementer can use it to add MIME function.@refill
+
+tm-view is a user interface kernel to view and navigate MIME message.
+tm-view drives some programs to navigate each content-type
+(@ref{(tm-en)content-type})s, they are called
+@cindex{method}@strong{method} (@ref{method}).  tm-view calls some
+programs to display each contents and headers in preview buffer, they
+are called @cindex{filter}@strong{filter} (@ref{Two buffers for an
+article}).  Method and filters are tm-view application program.  They
+expand tm-view to treat various kinds of MIME types.
+
+
+@node MIME display, mime/viewer-mode, Introduction, Top
+@chapter Structure of display in mime/viewer-mode
+
+In mime/viewer-mode (@ref{mime/viewer-mode}), following are displayed
+for each parts:@refill
+
+@example
+       [content-button]
+       (content-header)
+       
+       (content-body)
+       (content-separator)
+@end example
+
+You can change design or stop to display if you specify for each
+conditions, such as content-types.@refill
+
+Example:
+
+@example
+From: morioka@@jaist.ac.jp (MORIOKA Tomohiko)
+Subject: Re: Question
+Newsgroups: zxr.message.mime
+Date: 22 Oct 93 11:02:44
+Mime-Version: 1.0
+Organization: Japan Advanced Institute of Science and Technology,
+        Ishikawa, Japan
+
+[1  (text/plain)]
+  How to compose MIME message in MIME-Edit mode.
+
+  Press `C-c C-x ?' then help message will be displayed:
+
+C-c C-x C-t    insert a text message.
+C-c C-x TAB    insert a (binary) file.
+C-c C-x C-e    insert a reference to external body.
+C-c C-x C-v    insert a voice message.
+C-c C-x C-y    insert a mail or news message.
+C-c C-x RET    insert a mail message.
+C-c C-x C-s    insert a signature file at end.
+C-c C-x t      insert a new MIME tag.
+C-c C-x a      enclose as multipart/alternative.
+C-c C-x p      enclose as multipart/parallel.
+C-c C-x m      enclose as multipart/mixed.
+C-c C-x d      enclose as multipart/digest.
+C-c C-x s      enclose as PGP signed.
+C-c C-x e      enclose as PGP encrypted.
+C-c C-x C-k    insert PGP public key.
+C-c C-x C-p    preview editing MIME message.
+...
+
+So press `C-c C-x C-i' and specify file name you want to include.
+
+  MIME encoding for binary file is normally Base64.
+
+[2  (image/gif)]
+
+[3  (text/plain)]
+
+  In this way, it is finish a message attaching a picture.
+
+======================== A cup of Russian tea ========================
+============  * not by jam, not by marmalade, by honey *  ============
+============               MORIOKA Tomohiko               ============
+=============== Internet E-mail: <morioka@@jaist.ac.jp> ===============
+@end example
+
+
+
+@menu
+* content-button::              
+* content-header::              
+* content-body::                
+* content-separator::           
+@end menu
+
+@node content-button, content-header, MIME display, MIME display
+@section content-button
+
+content-subject displays abstract for the part.  It is placed in top of
+the part.@refill
+
+In default, it is displayed following design:
+
+@example
+        [1.3 test (text/plain)]
+@end example
+
+
+First number field represents position of a content in the part.  It is
+called @cindex{content-number}@strong{content-number}.  It can be
+considered as the chapter number in the message.@refill
+
+Second string part represents title.  It is created by following:
+
+@enumerate
+@item
+name paramater or x-name parameter in Content-Type field
+(@ref{(tm-en)Content-Type field})
+@item
+Content-Description field (@ref{(tm-en)Content-Description field}) or
+Subject field
+@item
+ filename of uuencode
+@end enumerate
+
+
+If they are not exists, space is displayed.@refill
+
+Third parenthesis part represents content-type/subtype of the part.  If
+it is non-MIME part, @code{nil} is displayed.@refill
+
+Content-button is used like icon when content-header
+(@ref{content-header}) and content-body (@ref{content-body}) are hidden.
+For example:
+
+@example
+        [2  (image/gif)]
+@end example
+
+@noindent
+if you press @kbd{v} key, GIF image is displayed.
+
+If mouse operations are available, you can press content-button by mouse
+button-2 (center button of 3 button-mouse) to play, similarly to press
+@kbd{v} key. (cf. @ref{mime/viewer-mode}) @refill
+
+By the way, it is annoying to display content-button if content-header
+is displayed.  So tm-view provides a mechanism to specify conditions
+to display content-button.
+
+
+@defvar mime-viewer/content-button-ignored-ctype-list
+
+List of content-types.@refill
+
+If content-type of a part is a member of this list, its content-button
+is not displayed.
+@end defvar
+
+
+
+@node content-header, content-body, content-button, MIME display
+@section content-header
+
+A content header displays the header portion of a part in the
+preview-buffer.  However it is annoying to display header for every
+parts, so tm-view provides a mechanism to specify its condition.@refill
+
+When the function @code{mime-viewer/header-visible-p} returns @code{t}
+for reversed-content-number of a part, content-header is
+displayed.@refill
+
+This judge function returns @code{t} when a part is root or content-type
+of its parent is a member of the variable
+@code{mime-viewer/childrens-header-showing-Content-Type-list}.@refill
+
+If you want to change this condition, please redefine it.  Notice that
+it refers variable
+@code{mime-viewer/childrens-header-showing-Content-Type-list}, however
+if you redefine function @code{mime-viewer/header-visible-p}, it may not
+work.  So if you want to redefine it, it should be refer variable
+@code{mime-viewer/childrens-header-showing-Content-Type-list}.@refill
+
+When content-header is displayed, content-header are formated by the
+program called by
+@cindex{content-header-filter}@strong{content-header-filter}.
+Content-header-filter is searched from variable
+@code{mime-viewer/content-header-filter-alist}.  Its key is major-mode
+of the raw-article-buffer (@ref{raw-article-buffer}).  If not found,
+function @code{mime-viewer/default-content-header-filter} is
+called.@refill
+
+
+@defvar mime-viewer/childrens-header-showing-Content-Type-list
+
+List of content-types.  If content-type of parent of a part is a member
+of this variable, its content-header is displayed.  Default value is
+@code{'("message/rfc822" "message/news")}.@refill
+
+This variable is referred by the function
+@code{mime-viewer/header-visible-p}.
+@end defvar
+
+
+
+@defun mime-viewer/header-visible-p rcnum cinfo  &optional  ctype
+
+Returns @code{t} if a part which reversed-content-number is @var{rcnum}
+in content-info @var{cinfo} is displayed.@refill
+
+If you know content-type, you can specify by @var{ctype}.
+@end defun
+
+
+
+@defvar mime-viewer/content-header-filter-alist
+
+Association-list whose key is major-mode of a raw-article-buffer, value
+is content-header-filter.
+@end defvar
+
+
+
+@defun mime-viewer/default-content-header-filter
+
+It is called when content-header-filter is not found in variable
+@code{mime-viewer/content-header-filter-alist}.@refill
+
+It refers @code{mime-viewer/ignored-field-regexp}.
+@end defun
+
+
+
+@defvar mime-viewer/ignored-field-list
+
+List of regular expression to represent invisible fields even if
+content-header is displayed.@refill
+
+Variable @code{mime-viewer/ignored-field-regexp} is created from
+it.@refill
+
+Please use function @code{tm:add-fields} or @code{tm:delete-fields} to
+set it.
+@end defvar
+
+
+
+@node content-body, content-separator, content-header, MIME display
+@section content-body
+
+@cindex{content-body}@strong{content-body} represents content of the
+part.@refill
+
+tm-view does not display raw content body.  For example, if a content
+has binary, it is hidden.  If a content has text/enriched, it is
+formated.  Namely content body is hidden or formated.@refill
+
+Function @code{mime-viewer/body-visible-p} is a judge function whether
+content-body of a content is displayed.  If it returns @code{nil},
+content-body is hidden.  In default, it returns non-@code{nil} when
+content-type of a part is a member of variable
+@code{mime-viewer/default-showing-Content-Type-list}.@refill
+
+When content-body of a content is displayed, content-body is formated by
+@cindex{content-filter}@strong{content-filter}.  Content-filter is
+searched from variable @code{mime-viewer/content-filter-alist}.  At this
+time, major-mode of the raw-article-buffer (@ref{raw-article-buffer}) is
+used as the key.
+
+If it is not found, function
+@code{mime-viewer/default-content-filter} is called.
+
+
+@defvar mime-viewer/default-showing-Content-Type-list
+
+List of content-type.  If content-type of a part is a member of this
+variable, its body is displayed.
+@end defvar
+
+
+
+@defun mime-viewer/body-visible-p rcnum cinfo  &optional  ctype
+
+Return non-@code{nil}, if content-type of a part is displayed.
+@var{rcnum} is reversed-content-number of a part.  @var{cinfo} is
+content-info of the message.  If you know content-type of a part, you
+can specify it as argument @var{ctype}.
+@end defun
+
+
+
+@defvar mime-viewer/content-filter-alist
+
+Association-list whose key is major-mode of a raw-article-buffer, value
+is content-filter.
+@end defvar
+
+
+
+@defun mime-viewer/default-content-filter rcnum cinfo ctype params subj
+
+It is called when content-body of a part should be displayed and
+content-filter is not found in
+@code{mime-viewer/content-filter-alist}.@refill
+
+In default, it does nothing.
+@end defun
+
+
+
+@node content-separator,  , content-body, MIME display
+@section content-separator
+
+@cindex{content-separator}@strong{content-separator} is displayed to
+represent boundary of contents.@refill
+
+Content-separator is displayed by function
+@code{mime-viewer/default-content-separator}.  In default, it displays
+line-break when content-header and content-body are not
+displayed.@refill
+
+If you want to change this condition, please redefine this function.
+
+
+@defun mime-viewer/default-content-separator rcnum cinfo ctype params subj
+
+Display content-separator.  @var{cnum} is content-number of a content.
+@var{cinfo} is content-info of the message.  @var{ctype} is content-type
+of a content.  @var{params} is Content-Type field parameters of a
+content.  @var{subj} is subject.@refill
+
+In default, it displays line-break when content-header and content-body
+are not displayed.
+@end defun
+
+
+
+@node mime/viewer-mode, method, MIME display, Top
+@chapter Navigation in mime/viewer-mode
+
+@code{mime/viewer-mode} has following functions:@refill
+
+@table @kbd
+@item @key{u}
+goes to the upper content (returns to the Summary mode if the cursor
+is sitting on the top content (*1))
+
+@item @key{p}
+goes to the previous content
+
+@item @key{n}
+goes to the next content
+
+@item @key{SPC}
+scrolls up
+
+@item @key{M-SPC}
+scrolls down
+
+@item @key{DEL}
+scrolls down
+
+@item @key{RET}
+goes to the next line
+
+@item @key{M-RET}
+goes to the previous line
+
+@item @key{<}
+goes to the beginning of message
+
+@item @key{>}
+goes to the end of message
+
+@item @key{v}
+playbacks a part (*2)
+
+@item @key{e}
+extracts a file from a part (*2)
+
+@item @key{C-c C-p}
+prints a part (*2)
+
+@item @key{f}
+displays X-Face in the message
+
+@item @key{mouse-button-2}
+drives mouse button in preview-buffer.
+
+For content-button, it playbacks a part (*2)@refill
+
+For URL-button, it drives WWW browser@refill
+
+@end table
+
+@noindent
+@strong{[Notice]}
+@quotation
+
+(*1) Not return to the Summary mode unless tm-view has been setup using
+tm-mh-e, tm-vm, gnus-mime, tm-gnus, tm-rmail etc.@refill
+
+(*2) Actual playback/extract/print will be performed by a method.
+@end quotation
+
+
+
+@node method, Two buffers for an article, mime/viewer-mode, Top
+@chapter Mechanism of decoding
+
+In @code{mime/viewer-mode}, you can do play (@kbd{v}), extract
+(@kbd{e}), or print (@kbd{C-c C-p}) for each parts.  These operations
+are called @cindex{decoding operation(s) (for a part)}@strong{decoding
+operation(s) (for a part)}.  And kind of decoding operations are called
+@cindex{decoding-mode}@strong{decoding-mode}.@refill
+
+When decoding operation is driven, tm-view calls a procedure matched for
+the condition, such as content-type (@ref{(tm-en)content-type}) of the
+part or its environment.  This procedure is called
+@cindex{method}@strong{method}.@refill
+
+There are two kinds of methods.  One is Emacs Lisp function, called
+@cindex{internal method}@strong{internal method}.  Another one is
+external program, called @cindex{external method}@strong{external
+method}.@refill
+
+Internal method operates in Emacs, so it can do carefully.@refill
+
+External method is called as asynchronous process, so Emacs does not
+wait while method is running.  So it is good for big data, such as
+audio, image or video.
+
+
+@menu
+* decoding-condition::          Setting decoding condition for parts
+* environment variables::       Environment variables
+@end menu
+
+@node decoding-condition, environment variables, method, method
+@section Setting decoding condition for parts
+
+When decoding operation is driven, tm-view calls a method matched for
+the condition searched from the variable
+@code{mime/content-decoding-condition}.@refill
+
+Variable @code{mime/content-decoding-condition} is defined as a list
+with the following syntax:@refill
+
+@lisp
+        (condition_1 condition_2 ...)
+@end lisp
+
+Each condition are association-list with the following syntax:@refill
+
+@lisp
+        ((field-type_1 . value_1)
+         (field-type_2 . value_2)
+         ...)
+@end lisp
+
+For example, if you want to call the external method named tm-plain to
+decode every text/plain (@ref{(tm-en)text/plain}) type parts, you can
+define the condition like:@refill
+
+@lisp
+        ((type . "text/plain")
+         (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
+@end lisp
+
+This condition definition will match all parts whose content-type
+(@ref{(tm-en)content-type}) are text/plain.  Here is an another
+example:@refill
+
+@lisp
+        ((type . "text/plain")
+         (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)
+         (mode . "play"))
+@end lisp
+
+This will match the part whose type is text/plain and the mode is
+play.@refill
+
+Here is an another example:@refill
+
+@lisp
+        ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)
+         (mode . "play"))
+@end lisp
+
+This will match all parts which have a mode of play.@refill
+
+The conditions defined in a variable
+@code{mime/content-decoding-condition} are examined from top to
+bottom.  The first matching condition becomes valid and the method
+specified in that condition definition will be executed.
+
+
+@menu
+* method value::                Format of method value
+* Example of decoding-condition::  
+@end menu
+
+@node method value, Example of decoding-condition, decoding-condition, decoding-condition
+@subsection Format of method value
+
+You can specify the method field of the decoding-condition definition in
+two different ways,@refill
+
+@lisp
+        (method . SYMBOL)
+@end lisp
+
+@noindent
+or
+
+@lisp
+        (method  STRING  FLAG  arg1  arg2  ...)
+@end lisp
+
+@noindent
+can be accepted.
+
+When a symbol is specified in the method field, a function whose name is
+SYMBOL will be called as an internal method.@refill
+
+When a list is specified in the method field, it will be called as an
+external method.@refill
+
+The list below shows the meaning of the parameters when the external
+method is specified in the method field.@refill
+
+@table @samp
+@item STRING
+name of an external method
+
+@item FLAG
+If @code{t}, both the content-header and the content-body
+are passed to an external method.
+
+If @code{nil}, only the content-body is passed to an external
+method.@refill
+
+@item ARGUMENTs
+list of arguments passed to an external method
+
+@end table
+
+An argument passed to an external method can be in one of the following
+formats:@refill
+
+@table @samp
+@item STRING
+string itself
+
+@item 'SYMBOL
+value gotten using SYMBOL as a key from decoding-condition
+
+@item 'STRING
+value gotten using STRING as a key from decoding-condition
+
+@end table
+
+@code{'SYMBOL} can be one of the following:@refill
+
+@table @samp
+@item 'file
+name of a file holding the original content
+
+@item 'type
+content-type/sub-type of Content-Type field
+
+@item 'encoding
+field body of Content-Transfer-Encoding field
+
+@item 'mode
+decoding-mode
+
+@item 'name
+name of a file created by decode operation
+
+@end table
+
+
+@code{'STRING} is used to search a parameter of the Content-Type
+field whose name matches with it, and pass the value of that parameter
+to the external method.
+
+
+@node Example of decoding-condition,  , method value, decoding-condition
+@subsection Example of decoding-condition
+
+Following is an example of decoding-condition:
+
+@lisp
+(defvar mime/content-decoding-condition
+  '(((type . "text/plain")
+     (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "text/x-latex")
+     (method "tm-latex" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "audio/basic")
+     (method "tm-au"    nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/gif")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/jpeg")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/tiff")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-tiff")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-xbm")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-pic")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "video/mpeg")`
+     (method "tm-mpeg"  nil 'file 'type 'encoding 'mode 'name))
+    ((type . "application/octet-stream")
+     (method "tm-file"  nil 'file 'type 'encoding 'mode 'name))
+    ((type . "message/partial")
+     (method . mime/decode-message/partial-region))
+    ((method "metamail" t
+             "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play"))
+    ))
+@end lisp
+
+
+For example, if you want to use metamail to decode any contents,
+
+@lisp
+(setq mime/content-decoding-condition
+      '(
+        ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file))
+       ))
+@end lisp
+
+@noindent
+will work.
+
+Variable @code{mime/content-decoding-condition} provides you of very
+flexible way to define the conditions of decoding.  It can be simple if
+you only need the a few decoding methods, while it can be very
+complicated if you want to use the separate decoding method for each
+type/mode combination.@refill
+
+Following function may be useful to set decoding-condition.  It is a
+function of @file{tl-atype.el}.
+
+
+@defun set-atype symbol alist
+
+Add condition @var{alist} to @var{symbol}.
+
+@noindent
+@strong{[Example]}
+@quotation
+
+@lisp
+(set-atype 'mime/content-decoding-condition
+          '((type . "message/external-body")
+            ("access-type" . "anon-ftp")
+            (method . mime/decode-message/external-ftp)
+            ))
+@end lisp
+@end quotation
+@end defun
+
+
+
+@node environment variables,  , decoding-condition, method
+@section Environment variables
+
+Standard methods of tm-view reference some environment variables.  You
+can specify them to customize.
+
+@table @var
+@item TM_TMP_DIR
+Directory for temporary files or extracted files.  If it is omitted,
+@file{/tmp/} is used.
+
+@item VIDEO_DITHER
+Dither for mpeg_play.  If it is omitted, `gray' is used.
+
+@item TM_WWW_BROWSER
+WWW browser name.  If it is omitted, `netscape' is used.
+
+@end table
+
+
+
+@node Two buffers for an article, API, method, Top
+@chapter raw-article-buffer and preview-buffer
+
+tm-view managements two buffers, one is for raw message called
+@cindex{raw-article-buffer}@strong{raw-article-buffer}, another one is
+to preview for user called
+@cindex{preview-buffer}@strong{preview-buffer}.  major-mode of
+raw-article-buffer is same as major-mode for article of original MUA,
+major-mode of preview-buffer is @code{mime/viewer-mode}
+(@ref{mime/viewer-mode}).@refill
+
+When called @code{mime/viewer-mode}, tm-view analyzes
+raw-article-buffer, and sets its result to the variable
+@code{mime::article/content-info}.@refill
+
+After that, tm-view create a preview-buffer corresponded to the
+raw-article-buffer.  As this time, tm-view modifies header and body of
+each parts of the message by specified conditions.  Filter program for
+header is called @cindex{header-filter}@strong{header-filter}
+(@ref{content-header}), filter program for body is called
+@cindex{content-filter}@strong{content-filter} (@ref{content-body}), and
+they are called @cindex{filter}@strong{filter}.@refill
+
+When preview-buffer is made, buffer local variable of preview-buffer
+@code{mime::preview/content-list} is made to register structure of
+preview-buffer.  tm-view manages message by
+@code{mime::article/content-info} in raw-article-buffer and
+@code{mime::preview/content-list} in preview-buffer.@refill
+
+@noindent
+@strong{[Notice]}
+@quotation
+In this document, I call ``content-type'' as content-type/subtype of
+Content-Type field.
+@end quotation
+
+
+
+@menu
+* raw-article-buffer::          buffer local variables of raw-article-buffer
+* preview-buffer::              Buffer local variables of preview-buffer
+@end menu
+
+@node raw-article-buffer, preview-buffer, Two buffers for an article, Two buffers for an article
+@section buffer local variables of raw-article-buffer
+
+@deffn{Structure} mime::content-info rcnum point-min point-max type parameters encoding children
+
+structure to represent MIME content in raw-article-buffer.  It is called
+by @cindex{content-info}@strong{content-info}.@refill
+
+Please use reference function @code{mime::content-info/SLOT-NAME} to
+reference slot of content-info.  Their argument is only
+content-info.@refill
+
+Following is a list of slots of the structure:
+
+@table @var
+@item rcnum
+``reversed content-number'' (list)
+
+@item point-min
+beginning point of region in raw-article-buffer
+
+@item point-max
+end point of region in raw-article-buffer
+
+@item type
+content-type/sub-type (string or nil)
+
+@item parameters
+parameter of Content-Type field (association list)
+
+@item encoding
+Content-Transfer-Encoding (string or nil)
+
+@item children
+parts included in this part (list of content-infos)
+
+@end table
+
+If a part includes other parts in its contents, such as multipart or
+message/rfc822, content-infos of other parts are included in
+@var{children}, so content-info become a tree.
+@end deffn
+
+
+@defvar mime::article/content-info
+
+result of MIME parsing of raw-article-buffer (content-info)
+@end defvar
+
+
+@defvar mime::article/preview-buffer
+
+preview-buffer corresponded by this buffer
+@end defvar
+
+
+@defun mime-article/point-content-number point  &optional  cinfo
+
+In a region managed by content-info @var{cinfo}, it returns
+content-number corresponded by @var{point}.@refill
+
+If @var{cinfo} is omitted, @code{mime::article/content-info} is used as
+default value.
+@end defun
+
+
+@defun mime-article/rcnum-to-cinfo rcnum  &optional  cinfo
+
+In a region managed by content-info @var{cinfo}, it returns content-info
+corresponded by reversed-content-number @var{rcnum}.@refill
+
+If @var{cinfo} is omitted, @code{mime::article/content-info} is used as
+default value.
+@end defun
+
+
+@defun mime-article/cnum-to-cinfo rcnum  &optional  cinfo
+
+In a region managed by content-info @var{cinfo}, it returns content-info
+corresponded by content-number @var{rcnum}.@refill
+
+If @var{cinfo} is omitted, @code{mime::article/content-info} is used as
+default value.
+@end defun
+
+
+@defun mime/flatten-content-info  &optional  cinfo
+
+It returns flatten list of content-info from content-info @var{cinfo}
+tree.@refill
+
+If @var{cinfo} is omitted, @code{mime::article/content-info} is used as
+default value.
+@end defun
+
+
+
+@node preview-buffer,  , raw-article-buffer, Two buffers for an article
+@section Buffer local variables of preview-buffer
+
+@defvar mime::preview/mother-buffer
+
+Mother buffer of this preview-buffer.
+@end defvar
+
+
+@deffn{Structure} mime::preview-content-info point-min point-max buffer content-info
+
+structure to represent MIME content in preview-buffer.  It is called by
+@cindex{preview-content-info}@strong{preview-content-info}.@refill
+
+Please use reference function
+@code{mime::preview-content-info/SLOT-NAME} to reference slot of
+preview-content-info.  Their argument is only
+preview-content-info.@refill
+
+Following is a list of slots of the structure:
+
+@table @var
+@item point-min
+beginning point of region in preview-buffer
+
+@item  point-max
+end point of region in preview-buffer
+
+@item buffer
+raw-article-buffer corresponding a part
+
+@item content-info
+content-info corresponding a part
+
+@end table
+@end deffn
+
+
+
+@defvar mime::preview/content-list
+
+List of preview-content-info to represent structure of this
+preview-buffer.
+@end defvar
+
+
+
+@defvar mime::preview/article-buffer
+
+raw-article-buffer corresponded by this preview-buffer.
+@end defvar
+
+
+
+@defvar mime::preview/original-major-mode
+
+major-mode of original buffer.
+@end defvar
+
+
+
+@defvar mime::preview/original-window-configuration
+
+window-configuration just before made this preview-buffer.
+@end defvar
+
+
+
+@defun mime-preview/point-pcinfo point  &optional  pcl
+
+In a region of preview-buffer managed by preview-content-info @var{pcl},
+it returns preview-content-info corresponded by @var{point}.@refill
+
+If @var{cinfo} is omitted, @code{mime::preview/content-list} is used.
+@end defun
+
+
+
+@node API, Concept Index, Two buffers for an article, Top
+@chapter Functions to decode MIME message
+
+tm-view provides some available functions to decode and navigate MIME
+message to each MUA (@ref{(tm-en)MUA})s.@refill
+
+There are 2 kinds of functions, one is for MIME preview, another one is
+to decode RFC 1522 encoded-word (@ref{(tm-en)encoded-word}).
+
+
+@menu
+* API about MIME preview::      Function to preview MIME message
+* encoded-word decoding::       encoded-word decoder
+@end menu
+
+@node API about MIME preview, encoded-word decoding, API, API
+@section Function to preview MIME message
+
+
+@deffn{Command} mime/viewer-mode &optional  mother ctl encoding ibuf obuf mother-keymap
+
+Parse @var{ibuf} as a MIME message, and create preview-buffer into
+@var{obuf} to display to user, then enter @code{mime/viewer-mode}
+(@ref{mime/viewer-mode}).@refill
+
+If @var{ibuf} is omitted, current buffer is used.@refill
+
+@var{mother} is used to specify original raw-article-buffer.  It may be
+useful when a raw-article-buffer is assembled from message/partial
+messages.@refill
+
+@var{ctl} is used to specify Content-Type field
+(@ref{(tm-en)Content-Type field}) information.  Its format is output
+format of @code{mime/Content-Type}.  When @var{ctl} is specified,
+tm-view uses it instead of Content-Type field of the
+raw-article-buffer.@refill
+
+@var{encoding} is used to specify field-body of
+Content-Transfer-Encoding field.  When is is specified, tm-view uses it
+instead of Content-Type field of the raw-article-buffer.@refill
+
+If @var{mother-keymap} is specified, keymap of @code{mime/viewer-mode}
+includes it.
+@end deffn
+
+
+
+@node encoded-word decoding,  , API about MIME preview, API
+@section encoded-word decoder
+
+tm-view has functions to decode RFC 1522 encoded-word
+(@ref{(tm-en)encoded-word}).
+
+
+@deffn{Command} mime/decode-message-header
+
+It decodes encoded-words in message header of current buffer.@refill
+
+If an encoded-word is broken or invalid, or it has non supported MIME
+charset (@ref{(tm-en)MIME charset}), it is not decoded.
+@end deffn
+
+
+
+@deffn{Command} mime-eword/decode-region start end  &optional  unfolding must-unfold
+
+It decodes encoded-words in region @var{start} to @var{end}.@refill
+
+If an encoded-word is broken or invalid, or it has non supported MIME
+charset (@ref{(tm-en)MIME charset}), it is not decoded.@refill
+
+If @var{unfolding} is non-nil, it unfolds folded fields.@refill
+
+If @var{must-fold} is non-nil and decoded result of an encoded-word has
+folding or raw CR or LF, it unfolds or delete raw CR or LF.
+@end deffn
+
+
+
+@defun mime-eword/decode-string string  &optional  must-unfold
+
+It decodes encoded-words in @var{string} and returns decoded
+string.@refill
+
+If an encoded-word is broken or invalid, or it has non supported MIME
+charset (@ref{(tm-en)MIME charset}), it is not decoded.@refill
+
+If @var{string} is folded, it unfolds @var{string} before
+decoding.@refill
+
+If @var{must-fold} is non-nil and decoded result of an encoded-word has
+folding or raw CR or LF, it unfolds or delete raw CR or LF.
+@end defun
+
+
+
+@node Concept Index, Function Index, API, Top
+@chapter Concept Index
+
+@printindex cp
+
+@node Function Index, Variable Index, Concept Index, Top
+@chapter Function Index
+
+@printindex fn
+
+@node Variable Index,  , Function Index, Top
+@chapter Variable Index
+
+@printindex vr
+@bye
index 2a8af28..e07e816 100644 (file)
@@ -6,7 +6,7 @@
 ;; Author: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
 ;;         Artur Pioro <artur@flugor.if.uj.edu.pl>
 ;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Version: $Id: tm-bbdb.el,v 7.19 1996/10/22 05:28:23 shuhei-k Exp $
+;; Version: $Id: tm-bbdb.el,v 7.22 1996/11/30 18:40:09 shuhei-k Exp $
 ;; Keywords: mail, news, MIME, multimedia, multilingual, BBDB
 
 ;; This file is part of tm (Tools for MIME).
 
 ;;; Code:
 
-(require 'bbdb)
-(require 'bbdb-com)
 (require 'std11)
 (require 'tm-ew-d)
 (require 'tm-view)
-
+(require 'bbdb-com) ; (require 'bbdb) implicitly
 
 ;;; @ mail-extr
 ;;;
@@ -148,7 +146,7 @@ the user confirms the creation."
         ))))
 
 (defun tm-bbdb/annotate-sender (string)
-  "Add a line to the end of the Notes field of the BBDB record 
+  "Add a line to the end of the Notes field of the BBDB record
 corresponding to the sender of this message."
   (interactive
    (list (if bbdb-readonly-p
@@ -179,24 +177,28 @@ This buffer will be in bbdb-mode, with associated keybindings."
 (defun tm-bbdb/pop-up-bbdb-buffer (&optional offer-to-create)
   "Make the *BBDB* buffer be displayed along with the MIME preview window(s),
 displaying the record corresponding to the sender of the current message."
-  (bbdb-pop-up-bbdb-buffer
-   (function
-    (lambda (w)
-      (let ((b (current-buffer)))
-        (set-buffer (window-buffer w))
-        (prog1 (eq major-mode 'mime/viewer-mode)
-          (set-buffer b))))))
-  (let ((bbdb-gag-messages t)
-        (bbdb-use-pop-up nil)
-        (bbdb-electric-p nil))
-    (let ((record (tm-bbdb/update-record offer-to-create))
-          (bbdb-elided-display (bbdb-pop-up-elided-display))
-          (b (current-buffer)))
-      (bbdb-display-records (if record (list record) nil))
-      (or record
-          (delete-windows-on (get-buffer "*BBDB*")))
-      (set-buffer b)
-      record)))
+  (let ((framepop (eq temp-buffer-show-function 'framepop-display-buffer)))
+    (or framepop
+        (bbdb-pop-up-bbdb-buffer
+         (function
+          (lambda (w)
+            (let ((b (current-buffer)))
+              (set-buffer (window-buffer w))
+              (prog1 (eq major-mode 'mime/viewer-mode)
+                (set-buffer b)))))))
+    (let ((bbdb-gag-messages t)
+          (bbdb-use-pop-up nil)
+          (bbdb-electric-p nil))
+      (let ((record (tm-bbdb/update-record offer-to-create))
+            (bbdb-elided-display (bbdb-pop-up-elided-display))
+            (b (current-buffer)))
+        (if framepop
+            (if record
+                (bbdb-display-records (list record))
+              (framepop-banish))
+          (bbdb-display-records (if record (list record) nil)))
+        (set-buffer b)
+        record))))
 
 (defun tm-bbdb/define-keys ()
   (let ((mime/viewer-mode-map (current-local-map)))
@@ -220,9 +222,9 @@ displaying the record corresponding to the sender of the current message."
 (defun signature/set-bbdb-sigtype (sigtype addr)
   "Add sigtype information to BBDB."
   (let* ((bbdb-notice-hook nil)
-         (record (bbdb-annotate-message-sender 
+         (record (bbdb-annotate-message-sender
                   addr t
-                  (bbdb-invoke-hook-for-value 
+                  (bbdb-invoke-hook-for-value
                    bbdb/mail-auto-create-p)
                   t)))
     (if record
@@ -236,7 +238,7 @@ displaying the record corresponding to the sender of the current message."
          (addr (and to
                     (car (cdr (mail-extract-address-components to)))))
          (sigtype (signature/get-bbdb-sigtype addr))
-         return  
+         return
          )
     (if addr
         (if verbose
index 67d9b6e..7d341d0 100644 (file)
--- a/tm-def.el
+++ b/tm-def.el
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: tm-def.el,v 7.65 1996/10/28 08:43:40 morioka Exp $
+;; Version: $Id: tm-def.el,v 7.66 1996/11/26 18:00:45 shuhei-k Exp $
 ;; Keywords: mail, news, MIME, multimedia, definition
 
 ;; This file is part of tm (Tools for MIME).
 ;;;
 
 (defconst base64-token-regexp "[A-Za-z0-9+/=]")
+(defconst base64-token-padding-regexp "[A-Za-z0-9+/=]")
 
 (defconst mime/B-encoded-text-regexp
-  (concat "\\("
+  (concat "\\(\\("
          base64-token-regexp
          base64-token-regexp
          base64-token-regexp
          base64-token-regexp
-         "\\)+"))
+         "\\)*"
+         base64-token-regexp
+         base64-token-regexp
+         base64-token-padding-regexp
+         base64-token-padding-regexp
+          "\\)"))
+
 (defconst mime/B-encoding-and-encoded-text-regexp
   (concat "\\(B\\)\\?" mime/B-encoded-text-regexp))
 
index 4e73e16..15185ca 100644 (file)
@@ -6,7 +6,7 @@
 ;;         MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1994/08/21 renamed from mime.el
-;; Version: $Revision: 7.94 $
+;; Version: $Revision: 7.95 $
 ;; Keywords: mail, news, MIME, multimedia, multilingual
 
 ;; This file is part of tm (Tools for MIME).
 ;;; Commentary:
 
 ;; This is an Emacs minor mode for editing Internet multimedia
-;; messages formatted in MIME (RFC 1521 and RFC 1522). All messages in
-;; this mode are composed in the tagged MIME format, that are
-;; described in the following examples. The messages composed in the
-;; tagged MIME format are automatically translated into a MIME
-;; compliant message when exiting the mode.
+;; messages formatted in MIME (RFC 2045, 2046, 2047, 2048 and 2049).
+;; All messages in this mode are composed in the tagged MIME format,
+;; that are described in the following examples.  The messages
+;; composed in the tagged MIME format are automatically translated
+;; into a MIME compliant message when exiting the mode.
 
 ;; Mule (a multilingual extension to Emacs 18 and 19) has a capability
 ;; of handling multilingual text in limited ISO-2022 manner that is
 ;; based on early experiences in Japanese Internet community and
-;; resulted in RFC 1468 (ISO-2022-JP charset for MIME). In order to
+;; resulted in RFC 1468 (ISO-2022-JP charset for MIME).  In order to
 ;; enable multilingual capability in single text message in MIME,
 ;; charset of multilingual text written in Mule is declared as either
-;; `ISO-2022-JP-2' [RFC 1554] or `ISO-2022-INT-1'. Mule is required
+;; `ISO-2022-JP-2' [RFC 1554] or `ISO-2022-INT-1'.  Mule is required
 ;; for reading the such messages.
 
 ;; This MIME composer can work with Mail mode, mh-e letter Mode, and
 ;;;
 
 (defconst mime-editor/RCS-ID
-  "$Id: tm-edit.el,v 7.94 1996/11/16 07:51:41 morioka Exp $")
+  "$Id: tm-edit.el,v 7.95 1996/12/04 04:43:01 morioka Exp $")
 
 (defconst mime-editor/version (get-version-string mime-editor/RCS-ID))
 
index e69cc5c..9eec4d7 100644 (file)
@@ -1,4 +1,4 @@
-;;; tm-ew-d.el --- RFC 1522 based MIME encoded-word decoder for GNU Emacs
+;;; tm-ew-d.el --- RFC 2047 based encoded-word decoder for GNU Emacs
 
 ;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
 
@@ -9,8 +9,8 @@
 ;; Original: 1992/07/20 ENAMI Tsugutomo's `mime.el'.
 ;;     Renamed: 1993/06/03 to tiny-mime.el.
 ;;     Renamed: 1995/10/03 from tiny-mime.el. (split off encoder)
-;; Version: $Revision: 7.29 $
-;; Keywords: mail, news, MIME, RFC 1522, multilingual, encoded-word
+;; Version: $Revision: 7.34 $
+;; Keywords: encoded-word, MIME, multilingual, header, mail, news
 
 ;; This file is part of tm (Tools for MIME).
 
@@ -41,7 +41,7 @@
 ;;;
 
 (defconst tm-ew-d/RCS-ID
-  "$Id: tm-ew-d.el,v 7.29 1996/10/13 18:44:49 morioka Exp $")
+  "$Id: tm-ew-d.el,v 7.34 1996/12/04 04:49:14 morioka Exp $")
 (defconst mime/eword-decoder-version (get-version-string tm-ew-d/RCS-ID))
 
 
@@ -122,9 +122,7 @@ such as a version of Net$cape). [tm-ew-d.el]"
          (mime/unfolding)
        )
       (goto-char (point-min))
-      (while (re-search-forward
-             (concat (regexp-quote "?=") "\\s +" (regexp-quote "=?"))
-             nil t)
+      (while (re-search-forward "\\?=\\(\n*\\s +\\)+=\\?" nil t)
        (replace-match "?==?")
        )
       (goto-char (point-min))
@@ -157,14 +155,15 @@ such as a version of Net$cape). [tm-ew-d.el]"
   (let (field beg end)
     (while (re-search-forward std11-field-head-regexp nil t)
       (setq beg (match-beginning 0)
-           end (std11-field-end))
+            end (std11-field-end))
       (setq field (buffer-substring beg end))
       (if (string-match mime/encoded-word-regexp field)
-         (save-restriction
-           (narrow-to-region (goto-char beg) end)
-           (while (re-search-forward "\n[ \t]+" nil t)
-             (replace-match " ")
-             )
+          (save-restriction
+            (narrow-to-region (goto-char beg) end)
+            (while (re-search-forward "\n\\([ \t]\\)" nil t)
+              (replace-match
+               (match-string 1))
+              )
            (goto-char (point-max))
            ))
       )))
@@ -193,7 +192,9 @@ as a version of Net$cape). [tm-ew-d.el]"
                (text
                 (substring word (match-beginning 3) (match-end 3))
                 ))
-           (mime/decode-encoded-text charset encoding text must-unfold)
+            (condition-case err
+                (mime/decode-encoded-text charset encoding text must-unfold)
+              (error nil))
            ))
       word))
 
@@ -215,11 +216,13 @@ as a version of Net$cape). [tm-ew-d.el]"
   (let ((cs (mime-charset-to-coding-system charset)))
     (if cs
        (let ((dest
-              (cond ((string-equal "B" encoding)
-                     (base64-decode-string string))
-                    ((string-equal "Q" encoding)
-                     (q-encoding-decode-string string))
-                    (t (message "unknown encoding %s" encoding)
+               (cond ((and (string-equal "B" encoding)
+                           (string-match mime/B-encoded-text-regexp string))
+                      (base64-decode-string string))
+                     ((and (string-equal "Q" encoding)
+                           (string-match mime/Q-encoded-text-regexp string))
+                      (q-encoding-decode-string string))
+                    (t (message "Invalid encoded-word %s" encoding)
                        nil))))
          (if dest
              (progn
index 9d4b466..1cbab84 100644 (file)
@@ -1,10 +1,10 @@
-;;; tm-ew-e.el --- RFC 1522 based MIME encoded-word encoder for GNU Emacs
+;;; tm-ew-e.el --- RFC 2047 based encoded-word encoder for GNU Emacs
 
 ;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Revision: 7.55 $
-;; Keywords: mail, news, MIME, RFC 1522, multilingual, encoded-word
+;; Version: $Revision: 7.56 $
+;; Keywords: encoded-word, MIME, multilingual, header, mail, news
 
 ;; This file is part of tm (Tools for MIME).
 
@@ -35,7 +35,7 @@
 ;;;
 
 (defconst tm-ew-e/RCS-ID
-  "$Id: tm-ew-e.el,v 7.55 1996/10/01 13:36:22 morioka Exp $")
+  "$Id: tm-ew-e.el,v 7.56 1996/12/04 04:48:37 morioka Exp $")
 (defconst mime-eword/encoder-version (get-version-string tm-ew-e/RCS-ID))