* Sync up with flim-1_9_2. doodle-1_9_4
authorakr <akr>
Tue, 15 Sep 1998 08:17:05 +0000 (08:17 +0000)
committerakr <akr>
Tue, 15 Sep 1998 08:17:05 +0000 (08:17 +0000)
* mime-def.el (mime-library-version): Bump up to FLAM-DOODLE
1.9.4.

16 files changed:
ChangeLog
DOODLE-VERSION
FLIM-CFG
FLIM-MK
FLIM-VERSION
Makefile
README.en
eword-decode.el
eword-encode.el
mime-def.el
mime-en.sgml
mime-en.texi
mime-ja.sgml
mime-ja.texi
mime.el
std11.el

index 0d8aebb..6708346 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+1998-09-01  Tanaka Akira      <akr@jaist.ac.jp>
+
+       * Sync up with flim-1_9_2.
+
+       * mime-def.el (mime-library-version): Bump up to FLAM-DOODLE
+       1.9.4.
+
 1998-09-14  Tanaka Akira      <akr@jaist.ac.jp>
 
        * mel-ccl.el (mel-ccl-try-to-read-crlf): New compile-time
@@ -49,7 +56,7 @@
 
 1998-09-10  Tanaka Akira      <akr@jaist.ac.jp>
 
-       * mime-def.el (mime-library-version-string): bump up to
+       * mime-def.el (mime-library-version-string): Bump up to
        FLAM-DOODLE 1.9.3.
 
 1998-09-10  Tanaka Akira      <akr@jaist.ac.jp>
 
        * Sync up with flim-1_9_1.
 
-       * mime-def.el (mime-library-version-string): bump up to
+       * mime-def.el (mime-library-version-string): Bump up to
        FLAM-DOODLE 1.9.2.
 
 1998-08-28  Tanaka Akira      <akr@jaist.ac.jp>
 
 1998-08-18  Tanaka Akira      <akr@jaist.ac.jp>
 
-       * mime-def.el (mime-library-version-string): bump up to
+       * mime-def.el (mime-library-version-string): Bump up to
        FLAM-DOODLE 1.9.1.
 
 1998-08-18  Tanaka Akira      <akr@jaist.ac.jp>
 
 1998-08-16  Tanaka Akira      <akr@jaist.ac.jp>
 
-       * mime-def.el (mime-library-version-string): bump up to FLIM-FLAM 1.9.1.
+       * mime-def.el (mime-library-version-string): Bump up to FLIM-FLAM 1.9.1.
 
 1998-07-22  Tanaka Akira      <akr@jaist.ac.jp>
 
        * eword-decode.el: Copied from AKEMI branch of SEMI.
 
 \f
+1998-09-15  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * FLIM: Version 1.9.2 (Shin-Tanabe) was released.
+
+       * README.en (Installation): Add `install as a XEmacs package'.
+
+1998-09-15  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-en.sgml (Encoding Method): Translate.
+
+1998-09-15  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * eword-encode.el (eword-encode-msg-id-to-rword-list): New
+       function.
+       (eword-encode-in-reply-to-to-rword-list): New function.
+       (eword-encode-in-reply-to): New function.
+       (eword-encode-field): Use `eword-encode-in-reply-to' for
+       `In-Reply-To' field.
+
+       * std11.el (std11-parse-in-reply-to): New function.
+
+1998-09-14  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * eword-decode.el (eword-decode-structured-field-list): Add
+       `User-Agent'.
+
+1998-09-11  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile (package): Don't update auto-autoloads.el and
+       custom-load.el.
+
+       * FLIM-MK (compile-flim-package): Update auto-autoloads.el and
+       custom-load.el.
+
+1998-09-11  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-def.el: Abolish function `butlast' and `nbutlast'.
+
+       * mime-def.el (mime-library-version): New constant.
+       (mime-library-version-string): Refer `mime-library-version'.
+
+1998-09-11  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile (XEMACS): New variable.
+       (PACKAGEDIR): New variable.
+       (package): New target.
+       (install-package): New target.
+
+       * FLIM-CFG (PACKAGEDIR): New variable.
+
+       * FLIM-MK (config-flim-package): New function.
+       (compile-flim-package): New function.
+       (install-flim-package): New function.
+
+1998-09-10  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-en.sgml (Content-Type field): Translate.
+       (mime-content-type): Translate.
+       (Content-Type parser): Translate.
+       (Content-Disposition): Translate.
+       (mime-content-disposition): Translate.
+       (Content-Disposition parser): Translate.
+
+1998-09-10  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Makefile (GOMI): Add Texinfo related garbages.
+       (clean): Delete historical setting.
+
+1998-09-03  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-en.sgml (mm-backend): Translate.
+       (Request for entity): Likewise.
+       (mm-backend module): Likewise.
+
+       * mime.el (mime-entity-send): Add DOC-string.
+
+1998-09-01  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-en.sgml (Entity hierarchy): Translate.
+
+1998-09-01  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-en.sgml, mime-ja.sgml (Entity): Rearrangement.
+
+\f
 1998-08-31  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
-       * FLIM: Version 1.9.1 (Tonosh\e.D\eNr) was released.\e*B
+       * FLIM: Version 1.9.1 (Tonosh\e-Dò)\e-A was released.
 
        * mime-en.sgml (mm-backend): Translate a little.
 
 \f
 1998-07-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
-       * FLIM-Chao: Version 1.8.0 (Shij\e.D\eNr) was released.\e*B
+       * FLIM-Chao: Version 1.8.0 (Shij\e-Dò)\e-A was released.
 
 1998-07-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
 \f
 1998-07-01  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
-       * FLIM: Version 1.8.0 (\e.D\eNRkubo) was released.\e*B
+       * FLIM: Version 1.8.0 (\e-DÒkubo)\e-A was released.
 
        * README.en: Delete `How to use'.
 
 \f
 1998-06-28  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
-       * FLIM-Chao: Version 1.7.0 (Goj\e.D\eNr) was released.\e*B
+       * FLIM-Chao: Version 1.7.0 (Goj\e-Dò)\e-A was released.
 
 1998-06-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
 \f
 1998-06-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
-       * FLIM: Version 1.4.1 (Momoyama-Gory\e.D\eNrmae) was released.\e*B
+       * FLIM: Version 1.4.1 (Momoyama-Gory\e-Dòmae)\e-A was released.
 
 1998-06-18  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
 \f
 1998-05-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
-       * FLIM: Version 1.2.0 (J\e.D\eN~j\eNr) was released.\e*B
+       * FLIM: Version 1.2.0 (J\e-Dþjò)\e-A was released.
 
        * README.en (What's FLIM): Delete description about
        std11-parse.el; add description about mailcap.el.
 \f
 1998-05-05  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
-       * FLIM: Version 1.1.0 (T\e.D\eNrji) was released.\e*B
+       * FLIM: Version 1.1.0 (T\e-Dòji)\e-A was released.
 
 1998-05-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
 \f
 1998-04-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
-       * FLIM: Version 1.0.1 (Ky\e.D\eNrto) was released.\e*B
+       * FLIM: Version 1.0.1 (Ky\e-Dòto)\e-A was released.
 
        * mime-def.el (mime-spadework-module-version-string): New
        constant.
index 88847ba..f6572cf 100644 (file)
@@ -17,7 +17,7 @@ Order is not significant.
   11 \e$B2+C0\e(B        \e$B$o$&$?$s\e(B          10R5.5/14.0     FLAM-DOODLE 1.9.1
   12 \e$B??Hl\e(B        \e$B$^$R\e(B                      10R6.0/11.0     FLAM-DOODLE 1.9.2
   13 \e$(DT`\e(B         \e$B$=$R\e(B                      2.5YR7.0/11.0   FLAM-DOODLE 1.9.3
-  14 \e$B3A\e(B          \e$B$+$-\e(B                      10R6.5/10.0
+  14 \e$B3A\e(B          \e$B$+$-\e(B                      10R6.5/10.0     FLAM-DOODLE 1.9.4
   15 \e$B?<;Y;R\e(B      \e$B$3$-$/$A$J$7\e(B              10YR7.5/8.0
   16 \e$B4;;R\e(B        \e$B$3$&$8\e(B                    7.5YR7.0/11.0
   17 \e$B5`MU\e(B        \e$B$/$A$P\e(B                    10YR7.5/10.0
index 0e81588..37ddd2a 100644 (file)
--- a/FLIM-CFG
+++ b/FLIM-CFG
 
 (setq FLIM_DIR (expand-file-name FLIM_PREFIX LISPDIR))
 
+(defvar PACKAGEDIR
+  (if (boundp 'early-packages)
+      (let ((dirs (append (if early-package-load-path
+                             early-packages)
+                         (if late-package-load-path
+                             late-packages)
+                         (if last-package-load-path
+                             last-packages)))
+           dir)
+       (while (not (file-exists-p
+                    (setq dir (car dirs))))
+         (setq dirs (cdr dirs)))
+       dir)))
+
 ;;; FLIM-CFG ends here
diff --git a/FLIM-MK b/FLIM-MK
index b76594e..3909556 100644 (file)
--- a/FLIM-MK
+++ b/FLIM-MK
@@ -1,6 +1,6 @@
 ;;; -*-Emacs-Lisp-*-
 ;;;
-;;; $Id: FLIM-MK,v 1.1 1998-04-13 13:08:14 morioka Exp $
+;;; $Id: FLIM-MK,v 1.1.16.1 1998-09-15 08:16:45 akr Exp $
 ;;;
 
 (defun config-flim ()
@@ -31,4 +31,40 @@ LISPDIR=%s\n" PREFIX LISPDIR))
   (install-elisp-modules flim-modules "./" FLIM_DIR)
   )
 
+(defun config-flim-package ()
+  (let (package-dir)
+    (and (setq package-dir (car command-line-args-left))
+        (or (string= "NONE" package-dir)
+            (defvar PACKAGEDIR package-dir)
+            ))
+    (setq command-line-args-left (cdr command-line-args-left))
+    (load-file "FLIM-CFG")
+    (load-file "FLIM-ELS")
+    (setq flim-modules (append flim-modules
+                              '(auto-autoloads custom-load)))
+    (princ (format "PACKAGEDIR=%s\n" PACKAGEDIR))
+    ))
+
+(defun compile-flim-package ()
+  (config-flim-package)
+
+  (setq autoload-package-name "flim")
+  (add-to-list 'command-line-args-left ".")
+  (batch-update-directory)
+
+  (add-to-list 'command-line-args-left ".")
+  (Custom-make-dependencies)
+
+  (compile-elisp-modules flim-modules ".")
+  )
+
+(defun install-flim-package ()
+  (config-flim-package)
+  (install-elisp-modules flim-modules
+                        "./"
+                        (expand-file-name FLIM_PREFIX
+                                          (expand-file-name "lisp"
+                                                            PACKAGEDIR)))
+  )
+
 ;;; FLIM-MK ends here
index 7e93731..0bd50b4 100644 (file)
@@ -4,43 +4,43 @@
 
 ;;-------------------------------------------------------------------------
 ;;     Kinki Nippon Railway    \e$(B6a5&F|K\E4F;\e(B     http://www.kintetsu.co.jp/
-;;     Ky\e-Dòto\e-A Line                \e$(B5~ET@~\e(B
+;;     Ky\e-Dòto Line           \e$(B5~ET@~\e(B\e-A
 ;;-------------------------------------------------------------------------
-1.0.1  Ky\e-Dòto\e-A                     \e$(B5~ET\e(B             ; <=> JR, \e$(B5~ET;T8rDL6I\e(B
-1.1.0  T\e-Dòji\e-A                      \e$(BEl;{\e(B
-1.2.0  J\e-Dþjò\e-A                      \e$(B==>r\e(B
+1.0.1  Ky\e-Dòto                        \e$(B5~ET\e(B             ; <=> JR, \e$(B5~ET;T8rDL6I\e(B\e-A
+1.1.0  T\e-Dòji                 \e$(BEl;{\e(B\e-A
+1.2.0  J\e-Dþjò                 \e$(B==>r\e(B\e-A
 1.2.1  Kamitobaguchi           \e$(B>eD;1)8}\e(B
 1.2.2  Takeda                  \e$(BC]ED\e(B             ; = \e$(B5~ET;T8rDL6I\e(B \e$(B1(4]@~\e(B
 1.3.0  Fushimi                 \e$(BIz8+\e(B
 1.4.0  Kintetsu-Tambabashi     \e$(B6aE4C0GH66\e(B       ; <=> \e$(B5~:e\e(B \e$(BC0GH66\e(B
-1.4.1  Momoyama-Gory\e-Dòmae\e-A \e$(BEm;38fNMA0\e(B
+1.4.1  Momoyama-Gory\e-Dòmae    \e$(BEm;38fNMA0\e(B\e-A
 1.5.0  Mukaijima               \e$(B8~Eg\e(B
 1.6.0  Ogura                   \e$(B>.AR\e(B
 1.7.0  Iseda                   \e$(B0K@*ED\e(B
-1.8.0  \e-DÒkubo\e-A                     \e$(BBg5WJ]\e(B
+1.8.0  \e-DÒkubo                        \e$(BBg5WJ]\e(B\e-A
 1.8.1  Kutsukawa               \e$(B5WDE@n\e(B
 1.9.0  Terada                  \e$(B;{ED\e(B
-1.9.1  Tonosh\e-Dò\e-A                   \e$(BIYLnAq\e(B
------  Shin-Tanabe             \e$(B?7EDJU\e(B
------  K\e-Dòdo\e-A                      \e$(B6=8M\e(B
+1.9.1  Tonosh\e-Dò                      \e$(BIYLnAq\e(B\e-A
+1.9.2  Shin-Tanabe             \e$(B?7EDJU\e(B
+-----  K\e-Dòdo                 \e$(B6=8M\e(B\e-A
 -----  Miyamaki                \e$(B;0;3LZ\e(B
 -----  Kintetsu-Miyazu         \e$(B6aE45\DE\e(B
 -----  Komada                  \e$(B9}ED\e(B
------  Shin-H\e-Dòsono\e-A               \e$(B?7=K1`\e(B
+-----  Shin-H\e-Dòsono          \e$(B?7=K1`\e(B\e-A
 -----  Kizugawadai             \e$(BLZDE@nBf\e(B
 -----  Yamadagawa              \e$(B;3ED@n\e(B
 -----  Takanohara              \e$(B9b$N86\e(B
------  Heij\e-Dò\e-A                     \e$(BJ?>k\e(B
+-----  Heij\e-Dò                        \e$(BJ?>k\e(B\e-A
 -----  Saidaiji                \e$(B@>Bg;{\e(B
 ;;-------------------------------------------------------------------------
 ;;     Kinki Nippon Railway    \e$(B6a5&F|K\E4F;\e(B     http://www.kintetsu.co.jp/
-;;     Ky\e-Dòto\e-A Line                \e$(B3`86@~\e(B
+;;     Ky\e-Dòto Line           \e$(B3`86@~\e(B\e-A
 ;;-------------------------------------------------------------------------
        (Saidaiji)              (\e$(B@>Bg;{\e(B)
 -----  Amagatsuji              \e$(BFt%vDT\e(B
------  Nishinoky\e-Dò\e-A                \e$(B@>$N5~\e(B
------  Kuj\e-Dò\e-A                      \e$(B6e>r\e(B
------  Kintetsu-K\e-Dòriyama\e-A \e$(B6aE474;3\e(B
+-----  Nishinoky\e-Dò           \e$(B@>$N5~\e(B\e-A
+-----  Kuj\e-Dò                 \e$(B6e>r\e(B\e-A
+-----  Kintetsu-K\e-Dòriyama    \e$(B6aE474;3\e(B\e-A
 
 
 [Chao Version names]
@@ -53,8 +53,8 @@
 ;;-------------------------------------------------------------------------
 1.2.0  Takeda                  \e$(BC]ED\e(B             ; = \e$(B6aE4\e(B \e$(B5~ET@~\e(B
 1.3.0  Kuinabashi              \e$(B$/$$$J66\e(B
-1.4.0  J\e-Dþjò\e-A                      \e$(B==>r\e(B
-1.6.0  Kuj\e-Dò\e-A                      \e$(B6e>r\e(B
-1.6.1  Ky\e-Dòto\e-A                     \e$(B5~ET\e(B             ; <=> JR, \e$(B6aE4\e(B
-1.7.0  Goj\e-Dò\e-A                      \e$(B8^>r\e(B
-1.8.0  Shij\e-Dò\e-A                     \e$(B;M>r\e(B
+1.4.0  J\e-Dþjò                 \e$(B==>r\e(B\e-A
+1.6.0  Kuj\e-Dò                 \e$(B6e>r\e(B\e-A
+1.6.1  Ky\e-Dòto                        \e$(B5~ET\e(B             ; <=> JR, \e$(B6aE4\e(B\e-A
+1.7.0  Goj\e-Dò                 \e$(B8^>r\e(B\e-A
+1.8.0  Shij\e-Dò                        \e$(B;M>r\e(B\e-A
index 1eb017c..b787062 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 #
 
 PACKAGE = flim
-VERSION = 1.9.1
+VERSION = 1.9.2
 
 TAR    = tar
 RM     = /bin/rm -f
@@ -12,11 +12,15 @@ CP  = /bin/cp -p
 EMACS  = emacs
 FLAGS   = -batch -q -no-site-file -eval "$${EVALARGS:-nil}"
 FLAGS_CURDIR   = $(FLAGS) -eval '(setq load-path (cons "." load-path))'
+XEMACS = xemacs
 
 PREFIX = NONE
 LISPDIR = NONE
+PACKAGEDIR = NONE
 
-GOMI   = *.elc
+GOMI   = *.elc \
+         *.cp *.cps *.ky *.kys *.fn *.fns *.vr *.vrs \
+         *.pg *.pgs *.tp *.tps *.toc *.aux *.log
 FILES  = README.?? Makefile FLIM-MK FLIM-CFG FLIM-ELS *.el ChangeLog
 
 
@@ -26,6 +30,13 @@ elc: ew-parse.el
 install:       elc
        $(EMACS) $(FLAGS) -l FLIM-MK -f install-flim $(PREFIX) $(LISPDIR)
 
+
+package:
+       $(XEMACS) $(FLAGS) -f compile-flim-package $(PACKAGEDIR)
+
+install-package:       package
+       $(XEMACS) $(FLAGS) -f install-flim-package $(PACKAGEDIR)
+
 clean:
        -$(RM) $(GOMI)
 
index 74bf582..9cf5025 100644 (file)
--- a/README.en
+++ b/README.en
@@ -87,6 +87,28 @@ Installation
   You can specify other optional settings by editing the file
   FLIM-CFG.  Please read comments in it.
 
+(1-c) install as a XEmacs package
+
+  If you want to install to XEmacs package directory, please do
+  following:
+
+       % make install-package
+
+  You can specify the emacs command name, for example
+
+       % make install-package XEMACS=xemacs-21
+
+  If `XEMACS=...' is omitted, XEMACS=xemacs is used.
+
+  You can specify the package directory, for example:
+
+       % make install PACKAGEDIR=~/.xemacs
+
+  If `PACKAGEDIR=...' is omitted, the first existing package
+  directory is used.
+
+  Notice that XEmacs package system requires XEmacs 21.0 or later.
+
 
 load-path (for Emacs or MULE)
 =============================
index 077ae78..dffad52 100644 (file)
@@ -397,7 +397,7 @@ Each field name must be symbol."
   '(Reply-To Resent-Reply-To From Resent-From Sender Resent-Sender
             To Resent-To Cc Resent-Cc Bcc Resent-Bcc Dcc
             Mime-Version Content-Type Content-Transfer-Encoding
-            Content-Disposition)
+            Content-Disposition User-Agent)
   "*List of field-names to decode as structured field.
 Each field name must be symbol."
   :group 'eword-decode
@@ -413,7 +413,7 @@ If SEPARATOR is not nil, it is used as header separator."
   (interactive "*")
   (rotate-memo args-eword-decode-header (list code-conversion))
   (unless code-conversion
-    (message "eword-decode-header is called with no code-conversion")
+    (message "eword-decode-header is called without code-conversion")
     (sit-for 2))
   (if (and code-conversion
           (not (mime-charset-to-coding-system code-conversion)))
index 7b2c1b9..d7b77eb 100644 (file)
@@ -529,6 +529,24 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
          ))
     dest))
 
+(defsubst eword-encode-msg-id-to-rword-list (msg-id)
+  (cons '("<" nil nil)
+       (append (eword-encode-addr-seq-to-rword-list (cdr msg-id))
+               '((">" nil nil)))))
+
+(defsubst eword-encode-in-reply-to-to-rword-list (in-reply-to)
+  (let (dest)
+    (while in-reply-to
+      (setq dest
+           (append dest
+                   (let ((elt (car in-reply-to)))
+                     (if (eq (car elt) 'phrase)
+                         (eword-encode-phrase-to-rword-list (cdr elt))
+                       (eword-encode-msg-id-to-rword-list elt)
+                       ))))
+      (setq in-reply-to (cdr in-reply-to)))
+    dest))
+
 
 ;;; @ application interfaces
 ;;;
@@ -556,6 +574,15 @@ Optional argument COLUMN is start-position of the field."
         (std11-parse-addresses-string string))
        )))
 
+(defun eword-encode-in-reply-to (string &optional column)
+  "Encode header field STRING as In-Reply-To field, and return the result.
+Optional argument COLUMN is start-position of the field."
+  (car (eword-encode-rword-list
+       (or column 13)
+       (eword-encode-in-reply-to-to-rword-list
+        (std11-parse-in-reply-to
+         (std11-lexical-analyze string))))))
+
 (defun eword-encode-structured-field-body (string &optional column)
   "Encode header field STRING as structured field, and return the result.
 Optional argument COLUMN is start-position of the field."
@@ -595,9 +622,12 @@ encoded-word.  ASCII token is not encoded."
                                (eword-encode-address-list
                                field-body (+ (length field-name) 2))
                               )
+                             ((eq field-name-symbol 'In-Reply-To)
+                               (eword-encode-in-reply-to
+                               field-body (+ (length field-name) 2))
+                              )
                              ((memq field-name-symbol
-                                    '(In-Reply-To
-                                      Mime-Version User-Agent))
+                                    '(Mime-Version User-Agent))
                                (eword-encode-structured-field-body
                                field-body (+ (length field-name) 2))
                               )
index b5744c9..0f695dd 100644 (file)
 
 ;;; Code:
 
+(defconst mime-library-version
+  '("FLAM-DOODLE" "\e$B3A\e(B 10R6.5/10.0" 1 9 4)
+  "Implementation name, version name and numbers of MIME-library package.")
+
 (defconst mime-library-version-string
-  "FLAM-DOODLE 1.9.3 - \"\e$(DT`\e(B\" 2.5YR7.0/11.0")
+  `,(concat (car mime-library-version) " "
+           (mapconcat #'number-to-string
+                      (cddr mime-library-version) ".")
+           " - \"" (cadr mime-library-version) "\""))
 
 
 ;;; @ variables
 ;;; @ required functions
 ;;;
 
-(unless (fboundp 'butlast)
-  (defun butlast (x &optional n)
-    "Returns a copy of LIST with the last N elements removed."
-    (if (and n (<= n 0)) x
-      (nbutlast (copy-sequence x) n)))
-  
-  (defun nbutlast (x &optional n)
-    "Modifies LIST to remove the last N elements."
-    (let ((m (length x)))
-      (or n (setq n 1))
-      (and (< n m)
-          (progn
-            (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil))
-            x))))
-  )
-
 (defsubst eliminate-top-spaces (string)
   "Eliminate top sequence of space or tab in STRING."
   (if (string-match "^[ \t]+" string)
index d7a7a3a..ed4b19f 100644 (file)
@@ -42,46 +42,13 @@ a message or one of the parts in the body of a multipart entity.'  In
 this document, the term <concept>entity</concept> indicates all of
 header fields and body.
 <p>
-The definition of RFC 2045 indicates that a MIME message is a tree.
-An message is a tree, each node is an entity, like following figure.
-Namely MIME extends message to tree structure.
+The definition of RFC 2045 indicates that a MIME message is a tree,
+and each node of the tree is an entity.  Namely MIME extends message
+to tree structure.
 <p>
 FLIM uses <concept>mime-entity</concept> structure to represent
 information of entity.  In this document, it is called simply
 `mime-entity'.
-<p>
-\e$BA0=R$N$h$&$K!"\e(Bmessage \e$BCf$N3F\e(B entity \e$B$OLZ$N@a$KEv$?$j$^$9$,!"$3$NLZ$K$O\e(B
-\e$B?<$5$HF1$8?<$5$NCf$N=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
-<verb>
-
-                              \e$B(#(!(!(!($\e(B
-                              \e$B("\e(B  nil \e$B("\e(B
-                              \e$B(&(!(((!(%\e(B
-              \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
-            \e$B(#(*($\e(B              \e$B(#(*($\e(B              \e$B(#(*($\e(B
-            \e$B("#0("\e(B              \e$B("#1("\e(B              \e$B("#2("\e(B
-            \e$B(&(((%\e(B              \e$B(&(((%\e(B              \e$B(&(((%\e(B
-              \e$B("\e(B        \e$B(#(!(!(!(!(+(!(!(!(!($\e(B        \e$B("\e(B
-          \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
-          \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
-          \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
-
-</verb>
-<p>
-<noindent>\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
-\e$B$r\e(B <concept>entity-number</concept> \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
-\e$B$7$F$O\e(B <code>(1 2 3)</code> \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
-<p>
-mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B <concept>node-id</concept> \e$B$rMQ$$$^$9!#\e(B
-node-id \e$B$O$A$g$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number
-1.2.3 \e$B$KBP1~$9$k\e(B node-id \e$B$O\e(B <code>(3 2 1)</code> \e$B$G$9!#\e(B
-<p>
-\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
-\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
-local \e$BJQ?t\e(B <code>mime-message-structure</code> \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
-\e$B$=$7$F!"\e(Bentity-number \e$B$d\e(B node-id \e$B$rMQ$$$k$3$H$G\e(B 
-<code>mime-message-structure</code> \e$B$K$*$1$k\e(B entity \e$B$NAjBPE*$J0LCV4X78$r\e(B
-\e$B07$&$3$H$,$G$-$^$9!#\e(B
 
 
 <h2> Functions to create mime-entity
@@ -115,6 +82,50 @@ node="mm-backend"> Default value is <var>buffer</var>.
 <h2> Features about message tree
 <node> Entity hierarchy
 <p>
+Structure of a MIME message is tree.
+<p>
+In the tree, root node is the entity indicates all of the message.  In
+this document, it is called <concept>root-entity</concept> or
+<concept>message</concept>.  In FLIM, it is indicated by buffer local
+variable <code>mime-message-structure</code>.
+<p>
+Each entity except root-entity has a parent.  An entity may have
+children.  We can indicate an entity by relative position from a base
+entity, based on the parent-child relationship.
+<p>
+In addition, we can indicate an entity by absolute position of the
+message.
+<p>
+Each entity, which is a node of the tree, can be numbered by
+depth and left-to-right order of the depth.
+<verb>
+
+                              +-------+
+                              |  nil  |
+                              +---+---+
+              +-------------------+-------------------+
+            +-+-+               +-+-+               +-+-+
+            | 0 |               | 1 |               | 2 |
+            +-+-+               +-+-+               +-+-+
+              |         +---------+---------+         |
+           +--+--+   +--+--+   +--+--+   +--+--+   +--+--+
+           | 0.0 |   | 1.0 |   | 1.1 |   | 1.2 |   | 2.0 |
+           +-----+   +-----+   +-----+   +-----+   +-----+
+
+</verb>
+<p>
+Namely, if depth of a node is n, the node has a node-number, which is
+consists of n integers.  In this document, it is called
+<concept>entity-number</concept>.  An entity-number is represented by
+list of integer, like <code>(1 2 3)</code>.
+<p>
+mime-entity has also <concept>node-id</concept>.  A node-id is
+represented by reversed list of entity-number.  For example, node-id
+corresponding with 1.2.3 is <code>(3 2 1)</code>.
+<p>
+Each entity can be indicated by entity-number or node-id in
+<code>mime-message-structure</code>.
+
 <defvar name="mime-message-structure">
 <p>
 Buffer local variable to store mime-entity structure of message.
@@ -357,18 +368,16 @@ representations for their purposes.
 Each entity has <concept>representation-type</concept>.  It must be
 specified when an entity is created. <cf node="Entity Creation">
 <p>
-\e$BA0@a$^$G$K=R$Y$FMh$?\e(B entity \e$B$KBP$9$k=hM}$O!"\e(Bentity \e$B$KBP$7$F$=$N=hM}$r0M\e(B
-\e$BMj$9$k$3$H$K$h$C$F<B8=$5$l$F$$$^$9!#\e(BEntity \e$B$O<+J,$N\e(B 
-representation-type \e$B$rCN$C$F$*$j!"$=$N\e(B representation-type \e$B$K1~$8$F<B:]\e(B
-\e$B$N=hM}$r9T$&4X?t$r8F$S=P$7$^$9!#$3$N$h$&$J4X?t$r\e(B <concept>entity \e$B=hM}\e(B
-method</concept> \e$B$H8F$S$^$9!#$^$?!"\e(Brepresentation-type \e$BKh$K$3$N$h$&$J4X\e(B
-\e$B?t$r$^$H$a$?$b$N$r\e(B <concept>mm-backend</concept> \e$B$H8F$S$^$9!#\e(B
+Functions about entity are implemented by request processing to the
+entity.  Each entity knows its representation-type.  Each entity calls
+processing function corresponding with the representation-type.  Such
+kind of function is called <concept>entity processing
+method</concept>.  A module, consists of them corresponding with a
+representation-type, is called <concept>mm-backend</concept>.
 <p>
-mm-backend \e$B$O\e(B representation-type \e$B$NL>A0$N@hF,$K\e(B <code>mm</code> \e$B$H$$$&\e(B
-\e$B@\F,<-$rIU$1$?4X?tL>$+$i$J$k\e(B module \e$B$G!"$=$N\e(B module \e$BL>$OF1MM$K\e(B
-representation-type \e$B$NL>A0$N@hF,$K\e(B <code>mm</code> \e$B$rIU$1$?$b$N$K$J$C$F\e(B
-\e$B$$$^$9!#$3$N\e(B module \e$B$O\e(B representation-type \e$B$N\e(B entity \e$B$,:G=i$K@8@.$5$l$k\e(B
-\e$B;~$K<+F0E*$K\e(B require \e$B$5$l$^$9!#\e(B
+Module name of each mm-backend consists of the prefix <code>mm</code>
+and its representation-type.  The module is required automatically
+when its entity is created at first.
 
 
 <h3> Message-passing for entity
@@ -377,18 +386,19 @@ representation-type \e$B$NL>A0$N@hF,$K\e(B <code>mm</code> \e$B$rIU$1$?$b$N$K$J$C$F
 <defun name="mime-entity-send">
              <args> entity message <rest> args
 <p>
-<var>entity</var> \e$B$K\e(B <var>message</var> \e$B$rAw$k!#\e(B
+Send <var>message</var> to <var>entity</var> with <var>args</var>, and
+return the result.
 <p>
-<var>args</var> \e$B$O\e(B <var>message</var> \e$B$N0z?t$G$"$k!#\e(B
+<var>args</var> is arguments of the <var>message</var>.
 </defun>
 
 
 <h3> How to make mm-backend
 <node> mm-backend module
 <p>
-\e$B!J$9$_$^$;$s!#$=$N$&$A=q$-$^$9\e(B (^_^;\e$B!K\e(B
+(It is not written yet, sorry. (^_^;)
 <p>
-\e$B!J$H$j$"$($:!"\e(Bmm*.el \e$B$r;29M$K$7$F$/$@$5$$!K\e(B
+(Please read mm*.el)
 
 
 <h1> Information of Content-Type field
@@ -414,14 +424,14 @@ Content-Type field.
 <h2> Format of Content-Type field
 <node> Content-Type field
 <p>
-Content-Type \e$BMs$N7A<0$O0J2<$N$h$&$KDj5A$5$l$F$$$^$9!'\e(B
+Format of Content-Type field is defined as follows:
 
 <quote>
 ``Content-Type'' ``:'' <concept>type</concept> ``/''
 <concept>subtype</concept> *( ``;'' <concept>parameter</concept> )
 </quote>
 <p>
-\e$BNc$($P!"\e(B
+For example:
 
 <quote>
 <verb>
@@ -429,25 +439,20 @@ Content-Type: image/jpeg
 </verb>
 </quote>
 
-<noindent>
-\e$B$d\e(B
-
 <quote>
 <verb>
 Content-Type: text/plain; charset=iso-2022-jp
 </verb>
 </quote>
-
-<noindent>
-\e$B$J$I$N$h$&$KMQ$$$i$l$^$9!#\e(B
 <p>
-\e$B$3$3$G!"\e(B`type' \e$B$H\e(B `subtype' \e$B$O\e(B entity \e$B$N7A<0$r<($9$b$N$G!"N><T$rAm>N$7\e(B
-\e$B$F!"\e(B`media-type' \e$B$H8F$V$3$H$K$7$^$9!#>e5-$NNc$K$*$1$k\e(B `image/jpeg' \e$B$d\e(B
-`text/plain' \e$B$O\e(B media-type \e$B$N#1$D$G$9!#\e(B
+`type' and `subtype' indicate format of an entity.  In this document,
+pair of them is called `media-type'.  `image/jpeg' or `text/plain' is
+a media-type.
 
 <memo>
 <p>
-Content-Type \e$BMs$N$J$$\e(B entity \e$B$O\e(B
+If an entity does not have Content-Type field, it is regarded as
+following:
 
 <quote>
 <verb>
@@ -456,7 +461,7 @@ Content-Type: text/plain; charset=us-ascii
 </quote>
 
 <noindent>
-\e$B$H$7$F2r<a$5$l$k!#\e(B<cf node="us-ascii">
+<cf node="us-ascii">
 </memo>
 
 
@@ -465,19 +470,20 @@ Content-Type: text/plain; charset=us-ascii
 <p>
 <define type="Structure" name="mime-content-type">
 <p>
-Content-Type \e$BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#\e(B
+Structure to store information of a Content-Type field.
 <p>
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B <code>mime-content-type-\e$BMWAGL>\e(B</code> \e$B$H$$$&L>\e(B
-\e$BA0$N;2>H4X?t$rMQ$$$k!#\e(B
+Applications should use reference functions
+<code>mime-content-type-SLOT</code> to refer information of the
+structure.
 <p>
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
+Slots of the structure are following:
 
 <vl>
-<dt>primary-type<dd>media-type \e$B$N<g7?\e(B (symbol).
+<dt>primary-type<dd>primary type of media-type (symbol).
 </dd>
-<dt>subtype<dd>media-type \e$B$NI{7?\e(B (symbol).
+<dt>subtype<dd>subtype of media-type (symbol).
 </dd>
-<dt>parameters<dd>Content-Type \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
+<dt>parameters<dd>parameters of Content-Type field (association-list).
 </dd>
 </vl>
 </define>
@@ -485,13 +491,13 @@ Content-Type \e$BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#\e(B
 <defun name="make-mime-content-type">
          <args> type subtype
          <opts> parameters
-<p>content-type \e$B$N@8@.;R!#\e(B
+<p>Constructor of content-type.
 </defun>
 
 <defun name="mime-content-type-parameter">
 <args> content-type parameter
 <p>
-<var>content-type</var> \e$B$N\e(B <var>parameter</var> \e$B$NCM$rJV$9!#\e(B
+Return value of <var>parameter</var> of <var>content-type</var>.
 </defun>
 
 
@@ -501,14 +507,15 @@ Content-Type \e$BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#\e(B
 <defun name="mime-parse-Content-Type">
          <args> string
 <p>
-<var>string</var> \e$B$r\e(B content-type \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
+Parse <var>string</var> as field-body of Content-Type field.
 </defun>
 
 <defun name="mime-read-Content-Type">
 <p>
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Type \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
+Read field-body of Content-Type field from current-buffer,
+and return parsed it.
 <p>
-Content-Type \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
+Return <code>nil</code> if Content-Type field is not found.
 </defun>
 
 
@@ -526,8 +533,9 @@ Return type/subtype string from <var>type</var> and
 <h1> Information of Content-Disposition field
 <node> Content-Disposition
 <p>
-<concept>Content-Disposition \e$BMs\e(B</concept> \e$B$O\e(B entity \e$B$NI=<($d\e(B file \e$BL>$J$I\e(B
-\e$B$NB0@-$K$J$I$K4X$9$k>pJs$r5-=R$9$k$?$a$N$b$N$G$9!#\e(B
+<concept>Content-Disposition field</concept> is an optional field to
+specify presentation of an entity or attributes of an entity, such as
+file name.
 
 <rfc number="2183" type="Standards Track"
              author="S. Dorner, K. Moore and R. Troost"
@@ -535,9 +543,9 @@ Return type/subtype string from <var>type</var> and
              Internet Messages: The Content-Disposition Header"
              date="August 1997">
 <p>
-FLIM \e$B$O\e(B Content-Disposition \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Disposition 
-\e$BMs$N2r@O7k2L$r3JG<$9$k9=B$BN\e(B 
-<concept>mime-content-disposition</concept> \e$B$rDs6!$7$^$9!#\e(B
+FLIM provides parser for Content-Disposition field and structure
+<concept>mime-content-disposition</concept> to store information of
+Content-Disposition field.
 
 
 <h2> mime-content-disposition structure
@@ -545,17 +553,19 @@ FLIM \e$B$O\e(B Content-Disposition \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Dispositi
 <p>
 <define type="Structure" name="mime-content-disposition">
 <p>
-Content-Disposition \e$BMs$N2r@O7k2L$r<}$a$k$?$a$N9=B$BN!#\e(B
+Structure to store information of a Content-Disposition field.
 <p>
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B <code>mime-content-disposition-\e$BMWAGL>\e(B</code> \e$B$H\e(B
-\e$B$$$&L>A0$N;2>H4X?t$rMQ$$$k!#\e(B
+Applications should use reference functions
+<code>mime-content-disposition-SLOT</code> to refer information of the
+structure.
 <p>
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
+Slots of the structure are following:
 
 <vl>
 <dt>disposition-type<dd>disposition-type (symbol).
 </dd>
-<dt>parameters<dd>Content-Disposition \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
+<dt>parameters<dd>parameters of Content-Disposition field
+(association-list).
 </dd>
 </vl>
 </define>
@@ -563,13 +573,14 @@ Content-Disposition \e$BMs$N2r@O7k2L$r<}$a$k$?$a$N9=B$BN!#\e(B
 <defun name="mime-content-disposition-parameter">
 <args> content-disposition parameter
 <p>
-<var>content-disposition</var> \e$B$N\e(B <var>parameter</var> \e$B$NCM$rJV$9!#\e(B
+Return value of <var>parameter</var> of
+<var>content-disposition</var>.
 </defun>
 
 <defun name="mime-content-disposition-filename">
 <args> content-disposition
 <p>
-<var>content-disposition</var> \e$B$N\e(B filename \e$B$NCM$rJV$9!#\e(B
+Return filename of <var>content-disposition</var>.
 </defun>
 
 
@@ -579,28 +590,30 @@ Content-Disposition \e$BMs$N2r@O7k2L$r<}$a$k$?$a$N9=B$BN!#\e(B
 <defun name="mime-parse-Content-Disposition">
            <args> string
 <p>
-<var>string</var> \e$B$r\e(B content-disposition \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
+Parse <var>string</var> as field-body of Content-Disposition field,
+and return the result.
 </defun>
 
 <defun name="mime-read-Content-Disposition">
 <p>
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Disposition \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
+Read field-body of Content-Disposition field from current-buffer,
 <p>
-Content-Disposition \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
+Return nil if Content-Disposition field is not found.
 </defun>
 
 
 <h1> Encoding Method
 <node> Content-Transfer-Encoding
 <p>
-<concept>Content-Transfer-Encoding \e$BMs\e(B</concept> \e$B$O\e(B entity \e$B$NId9f2=K!$r5-\e(B
-\e$B=R$9$k$?$a$N$b$N$G$9!#\e(B
+<concept>Content-Transfer-Encoding field</concept> is a header field
+to indicate body encoding of a entity.
 <p>
-FLIM \e$B$G$O\e(B Content-Transfer-Encoding \e$BMs$r9=J82r@O$9$k4X?t$rDs6!$7$^$9!#$3\e(B
-\e$B$l$i$N4X?t$O\e(B Content-Transfer-Encoding \e$BMs$N>pJs$OJ8;zNs$GI=8=$7$^$9!#\e(B
+FLIM provides parser functions for Content-Transfer-Encoding field.
+They represent information of Content-Transfer-Encoding field as
+string.
 <p>
-\e$B$^$?!"\e(BContent-Transfer-Encoding \e$B$K4p$E$$$FId9f2=!&I|9f2=$r9T$&4X?t$bDs\e(B
-\e$B6!$5$l$^$9!#\e(B
+In addition, FLIM provides encoder/decoder functions by
+Content-Transfer-Encoding.
 
 
 <h2> Parser
index 72dd84d..f3bbf8a 100644 (file)
@@ -50,8 +50,6 @@ Please eval following to use MIME features provided by FLIM:
 
 @node Entity, Content-Type, How to use, Top
 @chapter Message and Entity
-@cindex node-id
-@cindex entity-number
 @cindex mime-entity
 @cindex entity
 
@@ -61,45 +59,13 @@ message or one of the parts in the body of a multipart entity.'  In this
 document, the term @strong{entity} indicates all of header fields and
 body.@refill
 
-The definition of RFC 2045 indicates that a MIME message is a tree.  An
-message is a tree, each node is an entity, like following figure.
-Namely MIME extends message to tree structure.@refill
-
-FLIM uses @strong{mime-entity} structure to represent information of
-entity.  In this document, it is called simply `mime-entity'.@refill
-
-\e$BA0=R$N$h$&$K!"\e(Bmessage \e$BCf$N3F\e(B entity \e$B$OLZ$N@a$KEv$?$j$^$9$,!"$3$NLZ$K$O\e(B
-\e$B?<$5$HF1$8?<$5$NCf$N=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
-@example
-
-                              \e$B(#(!(!(!($\e(B
-                              \e$B("\e(B  nil \e$B("\e(B
-                              \e$B(&(!(((!(%\e(B
-              \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
-            \e$B(#(*($\e(B              \e$B(#(*($\e(B              \e$B(#(*($\e(B
-            \e$B("#0("\e(B              \e$B("#1("\e(B              \e$B("#2("\e(B
-            \e$B(&(((%\e(B              \e$B(&(((%\e(B              \e$B(&(((%\e(B
-              \e$B("\e(B        \e$B(#(!(!(!(!(+(!(!(!(!($\e(B        \e$B("\e(B
-          \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
-          \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
-          \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
-@end example
+The definition of RFC 2045 indicates that a MIME message is a tree, and
+each node of the tree is an entity.  Namely MIME extends message to tree
+structure.@refill
 
-@noindent
-\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
-\e$B$r\e(B @strong{entity-number} \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
-\e$B$7$F$O\e(B @code{(1 2 3)} \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
-
-mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B @strong{node-id} \e$B$rMQ$$$^$9!#\e(Bnode-id \e$B$O$A$g\e(B
-\e$B$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number 1.2.3 \e$B$KBP1~$9$k\e(B 
-node-id \e$B$O\e(B @code{(3 2 1)} \e$B$G$9!#\e(B@refill
-
-\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
-\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
-local \e$BJQ?t\e(B @code{mime-message-structure} \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
-\e$B$=$7$F!"\e(Bentity-number \e$B$d\e(B node-id \e$B$rMQ$$$k$3$H$G\e(B 
-@code{mime-message-structure} \e$B$K$*$1$k\e(B entity \e$B$NAjBPE*$J0LCV4X78$r\e(B
-\e$B07$&$3$H$,$G$-$^$9!#\e(B
+FLIM uses @strong{mime-entity} structure to represent
+information of entity.  In this document, it is called simply
+`mime-entity'.
 
 
 @menu
@@ -142,6 +108,53 @@ mime-entity. (cf. @ref{mm-backend}) Default value is @var{buffer}.
 
 @node Entity hierarchy, Entity Attributes, Entity creation, Entity
 @section Features about message tree
+@cindex node-id
+@cindex entity-number
+@cindex message
+@cindex root-entity
+
+Structure of a MIME message is tree.@refill
+
+In the tree, root node is the entity indicates all of the message.  In
+this document, it is called @strong{root-entity} or @strong{message}.
+In FLIM, it is indicated by buffer local variable
+@code{mime-message-structure}.@refill
+
+Each entity except root-entity has a parent.  An entity may have
+children.  We can indicate an entity by relative position from a base
+entity, based on the parent-child relationship.@refill
+
+In addition, we can indicate an entity by absolute position of the
+message.@refill
+
+Each entity, which is a node of the tree, can be numbered by
+depth and left-to-right order of the depth.
+@example
+
+                              +-------+
+                              |  nil  |
+                              +---+---+
+              +-------------------+-------------------+
+            +-+-+               +-+-+               +-+-+
+            | 0 |               | 1 |               | 2 |
+            +-+-+               +-+-+               +-+-+
+              |         +---------+---------+         |
+           +--+--+   +--+--+   +--+--+   +--+--+   +--+--+
+           | 0.0 |   | 1.0 |   | 1.1 |   | 1.2 |   | 2.0 |
+           +-----+   +-----+   +-----+   +-----+   +-----+
+@end example
+
+Namely, if depth of a node is n, the node has a node-number, which is
+consists of n integers.  In this document, it is called
+@strong{entity-number}.  An entity-number is represented by list of
+integer, like @code{(1 2 3)}.@refill
+
+mime-entity has also @strong{node-id}.  A node-id is represented by
+reversed list of entity-number.  For example, node-id corresponding with
+1.2.3 is @code{(3 2 1)}.@refill
+
+Each entity can be indicated by entity-number or node-id in
+@code{mime-message-structure}.
 
 @defvar mime-message-structure
 
@@ -378,7 +391,7 @@ contains @var{entity}.
 @node mm-backend,  , Entity buffer, Entity
 @section Entity representations and implementations
 @cindex mm-backend
-@cindex entity \e$B=hM}\e(B method
+@cindex entity processing method
 @cindex representation-type
 
 Entity is an abstraction.  It is designed to use various data
@@ -387,18 +400,16 @@ representations for their purposes.@refill
 Each entity has @strong{representation-type}.  It must be specified when
 an entity is created. (cf. @ref{Entity Creation}) @refill
 
-\e$BA0@a$^$G$K=R$Y$FMh$?\e(B entity \e$B$KBP$9$k=hM}$O!"\e(Bentity \e$B$KBP$7$F$=$N=hM}$r0M\e(B
-\e$BMj$9$k$3$H$K$h$C$F<B8=$5$l$F$$$^$9!#\e(BEntity \e$B$O<+J,$N\e(B representation-type 
-\e$B$rCN$C$F$*$j!"$=$N\e(B representation-type \e$B$K1~$8$F<B:]$N=hM}$r9T$&4X?t$r8F\e(B
-\e$B$S=P$7$^$9!#$3$N$h$&$J4X?t$r\e(B @strong{entity \e$B=hM}\e(Bmethod} \e$B$H8F$S$^$9!#$^$?!"\e(B
-representation-type \e$BKh$K$3$N$h$&$J4X?t$r$^$H$a$?$b$N$r\e(B 
-@strong{mm-backend} \e$B$H8F$S$^$9!#\e(B@refill
+Functions about entity are implemented by request processing to the
+entity.  Each entity knows its representation-type.  Each entity calls
+processing function corresponding with the representation-type.  Such
+kind of function is called @strong{entity processing method}.  A module,
+consists of them corresponding with a representation-type, is called
+@strong{mm-backend}.@refill
 
-mm-backend \e$B$O\e(B representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$H$$$&\e(B
-\e$B@\F,<-$rIU$1$?4X?tL>$+$i$J$k\e(B module \e$B$G!"$=$N\e(B module \e$BL>$OF1MM$K\e(B
-representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$rIU$1$?$b$N$K$J$C$F\e(B
-\e$B$$$^$9!#$3$N\e(B module \e$B$O\e(B representation-type \e$B$N\e(B entity \e$B$,:G=i$K@8@.$5$l$k\e(B
-\e$B;~$K<+F0E*$K\e(B require \e$B$5$l$^$9!#\e(B
+Module name of each mm-backend consists of the prefix @code{mm}
+and its representation-type.  The module is required automatically
+when its entity is created at first.
 
 
 @menu
@@ -411,9 +422,10 @@ representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$rIU$1$?$b$N$K$J$C$F\e(B
 
 @defun mime-entity-send entity message  &rest  args
 
-@var{entity} \e$B$K\e(B @var{message} \e$B$rAw$k!#\e(B@refill
+Send @var{message} to @var{entity} with @var{args}, and return the
+result.@refill
 
-@var{args} \e$B$O\e(B @var{message} \e$B$N0z?t$G$"$k!#\e(B
+@var{args} is arguments of the @var{message}.
 @end defun
 
 
@@ -421,9 +433,9 @@ representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$rIU$1$?$b$N$K$J$C$F\e(B
 @node mm-backend module,  , Request for entity, mm-backend
 @subsection How to make mm-backend
 
-\e$B!J$9$_$^$;$s!#$=$N$&$A=q$-$^$9\e(B (^_^;\e$B!K\e(B@refill
+(It is not written yet, sorry. (^_^;)@refill
 
-\e$B!J$H$j$"$($:!"\e(Bmm*.el \e$B$r;29M$K$7$F$/$@$5$$!K\e(B
+(Please read mm*.el)
 
 
 @node Content-Type, Content-Disposition, Entity, Top
@@ -463,14 +475,14 @@ Content-Type field.
 @cindex subtype
 @cindex type
 
-Content-Type \e$BMs$N7A<0$O0J2<$N$h$&$KDj5A$5$l$F$$$^$9!'\e(B
+Format of Content-Type field is defined as follows:
 
 @quotation
 ``Content-Type'' ``:'' @strong{type} ``/''
 @strong{subtype} *( ``;'' @strong{parameter} )
 @end quotation
 
-\e$BNc$($P!"\e(B
+For example:
 
 @quotation
 @example
@@ -478,8 +490,6 @@ Content-Type: image/jpeg
 @end example
 @end quotation
 
-@noindent
-\e$B$d\e(B
 
 @quotation
 @example
@@ -487,18 +497,16 @@ Content-Type: text/plain; charset=iso-2022-jp
 @end example
 @end quotation
 
-@noindent
-\e$B$J$I$N$h$&$KMQ$$$i$l$^$9!#\e(B
-
-\e$B$3$3$G!"\e(B`type' \e$B$H\e(B `subtype' \e$B$O\e(B entity \e$B$N7A<0$r<($9$b$N$G!"N><T$rAm>N$7\e(B
-\e$B$F!"\e(B`media-type' \e$B$H8F$V$3$H$K$7$^$9!#>e5-$NNc$K$*$1$k\e(B `image/jpeg' \e$B$d\e(B
-`text/plain' \e$B$O\e(B media-type \e$B$N#1$D$G$9!#\e(B
+`type' and `subtype' indicate format of an entity.  In this document,
+pair of them is called `media-type'.  `image/jpeg' or `text/plain' is
+a media-type.
 
 @noindent
 @strong{[Memo]}
 @quotation
 
-Content-Type \e$BMs$N$J$$\e(B entity \e$B$O\e(B
+If an entity does not have Content-Type field, it is regarded as
+following:
 
 @quotation
 @example
@@ -507,7 +515,7 @@ Content-Type: text/plain; charset=us-ascii
 @end quotation
 
 @noindent
-\e$B$H$7$F2r<a$5$l$k!#\e(B(cf. @ref{us-ascii})
+(cf. @ref{us-ascii})
 @end quotation
 
 
@@ -517,22 +525,23 @@ Content-Type: text/plain; charset=us-ascii
 
 @deffn{Structure} mime-content-type
 
-Content-Type \e$BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#\e(B@refill
+Structure to store information of a Content-Type field.@refill
 
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B @code{mime-content-type-\e$BMWAGL>\e(B} \e$B$H$$$&L>A0$N;2\e(B
-\e$B>H4X?t$rMQ$$$k!#\e(B@refill
+Applications should use reference functions
+@code{mime-content-type-SLOT} to refer information of the
+structure.@refill
 
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
+Slots of the structure are following:
 
 @table @var
 @item primary-type
-media-type \e$B$N<g7?\e(B (symbol).
+primary type of media-type (symbol).
 
 @item subtype
-media-type \e$B$NI{7?\e(B (symbol).
+subtype of media-type (symbol).
 
 @item parameters
-Content-Type \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
+parameters of Content-Type field (association-list).
 
 @end table
 @end deffn
@@ -541,13 +550,13 @@ Content-Type \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
 @defun make-mime-content-type type subtype
           &optional  parameters
 
-content-type \e$B$N@8@.;R!#\e(B
+Constructor of content-type.
 @end defun
 
 
 @defun mime-content-type-parameter content-type parameter
 
-@var{content-type} \e$B$N\e(B @var{parameter} \e$B$NCM$rJV$9!#\e(B
+Return value of @var{parameter} of @var{content-type}.
 @end defun
 
 
@@ -557,15 +566,16 @@ content-type \e$B$N@8@.;R!#\e(B
 
 @defun mime-parse-Content-Type string
 
-@var{string} \e$B$r\e(B content-type \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
+Parse @var{string} as field-body of Content-Type field.
 @end defun
 
 
 @defun mime-read-Content-Type
 
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Type \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B@refill
+Read field-body of Content-Type field from current-buffer, and return
+parsed it.@refill
 
-Content-Type \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
+Return @code{nil} if Content-Type field is not found.
 @end defun
 
 
@@ -585,10 +595,11 @@ Return type/subtype string from @var{type} and @var{subtype}.
 @cindex mime-content-disposition
 @cindex RFC 2183
 @cindex Standards Track
-@cindex Content-Disposition \e$BMs\e(B
+@cindex Content-Disposition field
 
-@strong{Content-Disposition \e$BMs\e(B} \e$B$O\e(B entity \e$B$NI=<($d\e(B file \e$BL>$J$I\e(B
-\e$B$NB0@-$K$J$I$K4X$9$k>pJs$r5-=R$9$k$?$a$N$b$N$G$9!#\e(B
+@strong{Content-Disposition field} is an optional field to
+specify presentation of an entity or attributes of an entity, such as
+file name.
 
 
 @noindent
@@ -599,9 +610,9 @@ Information in Internet Messages: The Content-Disposition Header'',
 August 1997, Standards Track.
 @end quotation
 
-FLIM \e$B$O\e(B Content-Disposition \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Disposition 
-\e$BMs$N2r@O7k2L$r3JG<$9$k9=B$BN\e(B 
-@strong{mime-content-disposition} \e$B$rDs6!$7$^$9!#\e(B
+FLIM provides parser for Content-Disposition field and structure
+@strong{mime-content-disposition} to store information of
+Content-Disposition field.
 
 
 @menu
@@ -614,19 +625,21 @@ FLIM \e$B$O\e(B Content-Disposition \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Dispositi
 
 @deffn{Structure} mime-content-disposition
 
-Content-Disposition \e$BMs$N2r@O7k2L$r<}$a$k$?$a$N9=B$BN!#\e(B@refill
+Structure to store information of a Content-Disposition field.@refill
 
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B @code{mime-content-disposition-\e$BMWAGL>\e(B} \e$B$H$$$&L>\e(B
-\e$BA0$N;2>H4X?t$rMQ$$$k!#\e(B@refill
+Applications should use reference functions
+@code{mime-content-disposition-SLOT} to refer information of the
+structure.@refill
 
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
+Slots of the structure are following:
 
 @table @var
 @item disposition-type
 disposition-type (symbol).
 
 @item parameters
-Content-Disposition \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
+parameters of Content-Disposition field
+(association-list).
 
 @end table
 @end deffn
@@ -634,13 +647,13 @@ Content-Disposition \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
 
 @defun mime-content-disposition-parameter content-disposition parameter
 
-@var{content-disposition} \e$B$N\e(B @var{parameter} \e$B$NCM$rJV$9!#\e(B
+Return value of @var{parameter} of @var{content-disposition}.
 @end defun
 
 
 @defun mime-content-disposition-filename content-disposition
 
-@var{content-disposition} \e$B$N\e(B filename \e$B$NCM$rJV$9!#\e(B
+Return filename of @var{content-disposition}.
 @end defun
 
 
@@ -650,33 +663,33 @@ Content-Disposition \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
 
 @defun mime-parse-Content-Disposition string
 
-@var{string} \e$B$r\e(B content-disposition \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
+Parse @var{string} as field-body of Content-Disposition field, and
+return the result.
 @end defun
 
 
 @defun mime-read-Content-Disposition
 
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Disposition \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
-@refill
+Read field-body of Content-Disposition field from current-buffer,@refill
 
-Content-Disposition \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
+Return nil if Content-Disposition field is not found.
 @end defun
 
 
 
 @node Content-Transfer-Encoding, encoded-word, Content-Disposition, Top
 @chapter Encoding Method
-@cindex Content-Transfer-Encoding \e$BMs\e(B
+@cindex Content-Transfer-Encoding field
 
-@strong{Content-Transfer-Encoding \e$BMs\e(B} \e$B$O\e(B entity \e$B$NId9f2=K!$r5-=R$9$k$?$a\e(B
-\e$B$N$b$N$G$9!#\e(B@refill
+@strong{Content-Transfer-Encoding field} is a header field to indicate
+body encoding of a entity.@refill
 
-FLIM \e$B$G$O\e(B Content-Transfer-Encoding \e$BMs$r9=J82r@O$9$k4X?t$rDs6!$7$^$9!#$3\e(B
-\e$B$l$i$N4X?t$O\e(B Content-Transfer-Encoding \e$BMs$N>pJs$OJ8;zNs$GI=8=$7$^$9!#\e(B
-@refill
+FLIM provides parser functions for Content-Transfer-Encoding field.
+They represent information of Content-Transfer-Encoding field as
+string.@refill
 
-\e$B$^$?!"\e(BContent-Transfer-Encoding \e$B$K4p$E$$$FId9f2=!&I|9f2=$r9T$&4X?t$bDs\e(B
-\e$B6!$5$l$^$9!#\e(B
+In addition, FLIM provides encoder/decoder functions by
+Content-Transfer-Encoding.
 
 
 @menu
index c3cfb08..8240d6b 100644 (file)
@@ -47,45 +47,11 @@ field \e$B$HFbMF$r;X$9!W$H$J$C$F$$$^$9!#$3$3$G$O!"\e(BMIME \e$B$GDj5A$5$l$?\e(B head
 field \e$B0J30$NA4$F$N\e(B header \e$B$H\e(B body \e$B$r;X$98l$H$7$F\e(B 
 <concept>entity</concept>\e$B$rMQ$$$k$3$H$K$7$^$9!#\e(B
 <p>
-RFC 2045 \e$B$NDj5A$O!"\e(BMIME message \e$B$,\e(B entity \e$B$rC10L$H$9$kLZ9=B$$G$"$k$3$H$r\e(B
-\e$B<($7$F$$$^$9!#\e(Bmessage \e$B$O2<?^$G<($9$h$&$JLZ$H$J$j!"\e(Bentity \e$B$O$3$NLZ$K$*$1\e(B
-\e$B$k@a$H$J$j$^$9!#$D$^$j!"\e(BMIME \e$B$O\e(B message \e$B$rLZ9=B$$K3HD%$7$?Lu$G$9!#\e(B
+RFC 2045 \e$B$NDj5A$O!"\e(BMIME message \e$B$,\e(B entity \e$B$r@a$H$9$kLZ9=B$$G$"$k$3$H$r\e(B
+\e$B<($7$F$$$^$9!#$D$^$j!"\e(BMIME \e$B$O\e(B message \e$B$rLZ9=B$$K3HD%$7$?Lu$G$9!#\e(B
 <p>
 FLIM \e$B$O\e(B entity \e$B$N>pJs$rI=8=$9$k$?$a$K\e(B<concept>mime-entity</concept> \e$B9=\e(B
 \e$BB$BN$rMQ$$$^$9!#0J2<$G$OC1$K\e(B mime-entity \e$B$H8F$V$3$H$K$7$^$9!#\e(B
-<p>
-\e$BA0=R$N$h$&$K!"\e(Bmessage \e$BCf$N3F\e(B entity \e$B$OLZ$N@a$KEv$?$j$^$9$,!"$3$NLZ$K$O\e(B
-\e$B?<$5$HF1$8?<$5$NCf$N=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
-<verb>
-
-                              \e$B(#(!(!(!($\e(B
-                              \e$B("\e(B  nil \e$B("\e(B
-                              \e$B(&(!(((!(%\e(B
-              \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
-            \e$B(#(*($\e(B              \e$B(#(*($\e(B              \e$B(#(*($\e(B
-            \e$B("#0("\e(B              \e$B("#1("\e(B              \e$B("#2("\e(B
-            \e$B(&(((%\e(B              \e$B(&(((%\e(B              \e$B(&(((%\e(B
-              \e$B("\e(B        \e$B(#(!(!(!(!(+(!(!(!(!($\e(B        \e$B("\e(B
-          \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
-          \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
-          \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
-
-</verb>
-<p>
-<noindent>\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
-\e$B$r\e(B <concept>entity-number</concept> \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
-\e$B$7$F$O\e(B <code>(1 2 3)</code> \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
-<p>
-mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B <concept>node-id</concept> \e$B$rMQ$$$^$9!#\e(B
-node-id \e$B$O$A$g$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number
-1.2.3 \e$B$KBP1~$9$k\e(B node-id \e$B$O\e(B <code>(3 2 1)</code> \e$B$G$9!#\e(B
-<p>
-\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
-\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
-local \e$BJQ?t\e(B <code>mime-message-structure</code> \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
-\e$B$=$7$F!"\e(Bentity-number \e$B$d\e(B node-id \e$B$rMQ$$$k$3$H$G\e(B 
-<code>mime-message-structure</code> \e$B$K$*$1$k\e(B entity \e$B$NAjBPE*$J0LCV4X78$r\e(B
-\e$B07$&$3$H$,$G$-$^$9!#\e(B
 
 
 <h2> Entity \e$B$N@8@.\e(B
@@ -119,6 +85,51 @@ node="mm-backend">
 <h2> Entity \e$B3,AX\e(B
 <node> Entity hierarchy
 <p>
+MIME message \e$B$O\e(B entity \e$B$rC10L$H$9$kLZ9=B$$K$J$C$F$$$^$9!#\e(B
+<p>
+\e$B$3$NLZ$K$*$$$F:,$H$J$k@a$O\e(B message \e$BA4BN$rI=$9\e(B entity \e$B$G$9!#$3$3$G$O!"\e(B
+\e$B$3$l$r\e(B <concept>root-entity</concept> \e$B$b$7$/$O\e(B
+<concept>message</concept> \e$B$H8F$S$^$9!#\e(B
+<p>
+root-entity \e$B0J30$N\e(B entity \e$B$O?F$r;}$A$^$9!#$^$?!"\e(Bentity \e$B$O;R6!$r;}$D$+\e(B
+\e$B$bCN$l$^$;$s!#$3$N?F;R4X78$r9M$($k$3$H$G\e(B entity \e$B$NAjBP4X78$r07$&$3$H$,\e(B
+\e$B$G$-$^$9!#\e(B
+<p>
+\e$B0lJ}!"\e(Bentity \e$B$N\e(B message \e$B$K$*$1$k0LCV$r9M$($k$3$H$b$G$-$^$9!#\e(B
+<p>
+entity \e$B$O$3$NLZ$K$*$1$k@a$H$J$j$^$9$,!"$3$NLZ$K$O?<$5$HF1$8?<$5$NCf$N\e(B
+\e$B=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
+<verb>
+
+                              \e$B(#(!(!(!($\e(B
+                              \e$B("\e(B  nil \e$B("\e(B
+                              \e$B(&(!(((!(%\e(B
+              \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
+            \e$B(#(*($\e(B              \e$B(#(*($\e(B              \e$B(#(*($\e(B
+            \e$B("#0("\e(B              \e$B("#1("\e(B              \e$B("#2("\e(B
+            \e$B(&(((%\e(B              \e$B(&(((%\e(B              \e$B(&(((%\e(B
+              \e$B("\e(B        \e$B(#(!(!(!(!(+(!(!(!(!($\e(B        \e$B("\e(B
+          \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
+          \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
+          \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
+
+</verb>
+<p>
+<noindent>\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
+\e$B$r\e(B <concept>entity-number</concept> \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
+\e$B$7$F$O\e(B <code>(1 2 3)</code> \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
+<p>
+mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B <concept>node-id</concept> \e$B$rMQ$$$^$9!#\e(B
+node-id \e$B$O$A$g$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number
+1.2.3 \e$B$KBP1~$9$k\e(B node-id \e$B$O\e(B <code>(3 2 1)</code> \e$B$G$9!#\e(B
+<p>
+\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
+\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
+local \e$BJQ?t\e(B <code>mime-message-structure</code> \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
+<p>
+<code>mime-message-structure</code> \e$B$r5/E@$K\e(B entity-number \e$B$d\e(B node-id 
+\e$B$G<($5$l$k\e(B entity \e$B$r<h$j=P$9$3$H$,$G$-$^$9!#\e(B
+
 <defvar name="mime-message-structure">
 <p>
 \e$B8=:_$N\e(B buffer \e$B$K$*$1$k\e(B message \e$BA4BN$N\e(B mime-entity \e$B9=B$BN$r3JG<$9$k\e(B
index 7474bc2..c2df06a 100644 (file)
@@ -55,8 +55,6 @@ FLIM \e$B$NDs6!$9$k\e(B MIME \e$B5!G=$r;H$&$?$a$K$O\e(B
 
 @node Entity, Content-Type, How to use, Top
 @chapter Message \e$B$H\e(B Entity
-@cindex node-id
-@cindex entity-number
 @cindex mime-entity
 @cindex entity
 
@@ -66,46 +64,11 @@ field \e$B$HFbMF$r;X$9!W$H$J$C$F$$$^$9!#$3$3$G$O!"\e(BMIME \e$B$GDj5A$5$l$?\e(B head
 field \e$B0J30$NA4$F$N\e(B header \e$B$H\e(B body \e$B$r;X$98l$H$7$F\e(B @strong{entity}\e$B$rMQ$$$k\e(B
 \e$B$3$H$K$7$^$9!#\e(B@refill
 
-RFC 2045 \e$B$NDj5A$O!"\e(BMIME message \e$B$,\e(B entity \e$B$rC10L$H$9$kLZ9=B$$G$"$k$3$H$r\e(B
-\e$B<($7$F$$$^$9!#\e(Bmessage \e$B$O2<?^$G<($9$h$&$JLZ$H$J$j!"\e(Bentity \e$B$O$3$NLZ$K$*$1\e(B
-\e$B$k@a$H$J$j$^$9!#$D$^$j!"\e(BMIME \e$B$O\e(B message \e$B$rLZ9=B$$K3HD%$7$?Lu$G$9!#\e(B
-@refill
+RFC 2045 \e$B$NDj5A$O!"\e(BMIME message \e$B$,\e(B entity \e$B$r@a$H$9$kLZ9=B$$G$"$k$3$H$r<(\e(B
+\e$B$7$F$$$^$9!#$D$^$j!"\e(BMIME \e$B$O\e(B message \e$B$rLZ9=B$$K3HD%$7$?Lu$G$9!#\e(B@refill
 
-FLIM \e$B$O\e(B entity \e$B$N>pJs$rI=8=$9$k$?$a$K\e(B@strong{mime-entity} \e$B9=B$BN$rMQ$$$^\e(B
-\e$B$9!#0J2<$G$OC1$K\e(B mime-entity \e$B$H8F$V$3$H$K$7$^$9!#\e(B@refill
-
-\e$BA0=R$N$h$&$K!"\e(Bmessage \e$BCf$N3F\e(B entity \e$B$OLZ$N@a$KEv$?$j$^$9$,!"$3$NLZ$K$O\e(B
-\e$B?<$5$HF1$8?<$5$NCf$N=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
-@example
-
-                              \e$B(#(!(!(!($\e(B
-                              \e$B("\e(B  nil \e$B("\e(B
-                              \e$B(&(!(((!(%\e(B
-              \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
-            \e$B(#(*($\e(B              \e$B(#(*($\e(B              \e$B(#(*($\e(B
-            \e$B("#0("\e(B              \e$B("#1("\e(B              \e$B("#2("\e(B
-            \e$B(&(((%\e(B              \e$B(&(((%\e(B              \e$B(&(((%\e(B
-              \e$B("\e(B        \e$B(#(!(!(!(!(+(!(!(!(!($\e(B        \e$B("\e(B
-          \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
-          \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
-          \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
-@end example
-
-@noindent
-\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
-\e$B$r\e(B @strong{entity-number} \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
-\e$B$7$F$O\e(B @code{(1 2 3)} \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
-
-mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B @strong{node-id} \e$B$rMQ$$$^$9!#\e(Bnode-id \e$B$O$A$g\e(B
-\e$B$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number 1.2.3 \e$B$KBP1~$9$k\e(B 
-node-id \e$B$O\e(B @code{(3 2 1)} \e$B$G$9!#\e(B@refill
-
-\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
-\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
-local \e$BJQ?t\e(B @code{mime-message-structure} \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
-\e$B$=$7$F!"\e(Bentity-number \e$B$d\e(B node-id \e$B$rMQ$$$k$3$H$G\e(B 
-@code{mime-message-structure} \e$B$K$*$1$k\e(B entity \e$B$NAjBPE*$J0LCV4X78$r\e(B
-\e$B07$&$3$H$,$G$-$^$9!#\e(B
+FLIM \e$B$O\e(B entity \e$B$N>pJs$rI=8=$9$k$?$a$K\e(B@strong{mime-entity} \e$B9=\e(B
+\e$BB$BN$rMQ$$$^$9!#0J2<$G$OC1$K\e(B mime-entity \e$B$H8F$V$3$H$K$7$^$9!#\e(B
 
 
 @menu
@@ -147,6 +110,54 @@ on representation-type.
 
 @node Entity hierarchy, Entity Attributes, Entity creation, Entity
 @section Entity \e$B3,AX\e(B
+@cindex node-id
+@cindex entity-number
+@cindex message
+@cindex root-entity
+
+MIME message \e$B$O\e(B entity \e$B$rC10L$H$9$kLZ9=B$$K$J$C$F$$$^$9!#\e(B@refill
+
+\e$B$3$NLZ$K$*$$$F:,$H$J$k@a$O\e(B message \e$BA4BN$rI=$9\e(B entity \e$B$G$9!#$3$3$G$O!"$3\e(B
+\e$B$l$r\e(B @strong{root-entity} \e$B$b$7$/$O\e(B@strong{message} \e$B$H8F$S$^$9!#\e(B@refill
+
+root-entity \e$B0J30$N\e(B entity \e$B$O?F$r;}$A$^$9!#$^$?!"\e(Bentity \e$B$O;R6!$r;}$D$+$b\e(B
+\e$BCN$l$^$;$s!#$3$N?F;R4X78$r9M$($k$3$H$G\e(B entity \e$B$NAjBP4X78$r07$&$3$H$,$G$-\e(B
+\e$B$^$9!#\e(B@refill
+
+\e$B0lJ}!"\e(Bentity \e$B$N\e(B message \e$B$K$*$1$k0LCV$r9M$($k$3$H$b$G$-$^$9!#\e(B@refill
+
+entity \e$B$O$3$NLZ$K$*$1$k@a$H$J$j$^$9$,!"$3$NLZ$K$O?<$5$HF1$8?<$5$NCf$N\e(B
+\e$B=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
+@example
+
+                              \e$B(#(!(!(!($\e(B
+                              \e$B("\e(B  nil \e$B("\e(B
+                              \e$B(&(!(((!(%\e(B
+              \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
+            \e$B(#(*($\e(B              \e$B(#(*($\e(B              \e$B(#(*($\e(B
+            \e$B("#0("\e(B              \e$B("#1("\e(B              \e$B("#2("\e(B
+            \e$B(&(((%\e(B              \e$B(&(((%\e(B              \e$B(&(((%\e(B
+              \e$B("\e(B        \e$B(#(!(!(!(!(+(!(!(!(!($\e(B        \e$B("\e(B
+          \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
+          \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
+          \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
+@end example
+
+@noindent
+\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
+\e$B$r\e(B @strong{entity-number} \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
+\e$B$7$F$O\e(B @code{(1 2 3)} \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
+
+mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B @strong{node-id} \e$B$rMQ$$$^$9!#\e(Bnode-id \e$B$O$A$g\e(B
+\e$B$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number 1.2.3 \e$B$KBP1~$9$k\e(B 
+node-id \e$B$O\e(B @code{(3 2 1)} \e$B$G$9!#\e(B@refill
+
+\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
+\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
+local \e$BJQ?t\e(B @code{mime-message-structure} \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B@refill
+
+@code{mime-message-structure} \e$B$r5/E@$K\e(B entity-number \e$B$d\e(B node-id 
+\e$B$G<($5$l$k\e(B entity \e$B$r<h$j=P$9$3$H$,$G$-$^$9!#\e(B
 
 @defvar mime-message-structure
 
diff --git a/mime.el b/mime.el
index 9200173..dfb13fe 100644 (file)
--- a/mime.el
+++ b/mime.el
@@ -73,9 +73,10 @@ current-buffer, and return it.")
   (mime-find-function service
                      (mime-entity-representation-type-internal entity)))
 
-(defsubst mime-entity-send (entity service &rest args)
+(defsubst mime-entity-send (entity message &rest args)
+  "Send MESSAGE to ENTITY with ARGS, and return the result."
   (apply (mime-find-function
-         service (mime-entity-representation-type-internal entity))
+         message (mime-entity-representation-type-internal entity))
         entity
         args))
 
index 080cae2..d62b88b 100644 (file)
--- a/std11.el
+++ b/std11.el
@@ -683,6 +683,21 @@ If BOUNDARY is not nil, it is used as message header separator.
              (cdr ret))
       )))
 
+(defun std11-parse-in-reply-to (tokens)
+  "Parse lexical TOKENS as In-Reply-To field, and return the result."
+  (let ((ret (or (std11-parse-msg-id tokens)
+                (std11-parse-phrase tokens))))
+    (if ret
+       (let ((dest (list (car ret))))
+         (setq tokens (cdr ret))
+         (while (setq ret (or (std11-parse-msg-id tokens)
+                              (std11-parse-phrase tokens)))
+           (setq dest (cons (car ret) dest))
+           (setq tokens (cdr ret))
+           )
+         (nreverse dest)
+         ))))
+
 
 ;;; @ composer
 ;;;