+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
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.
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
(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
;;; -*-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 ()
(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
;;-------------------------------------------------------------------------
;; 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]
;;-------------------------------------------------------------------------
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
#
PACKAGE = flim
-VERSION = 1.9.1
+VERSION = 1.9.2
TAR = tar
RM = /bin/rm -f
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
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)
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)
=============================
'(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
(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)))
))
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
;;;
(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."
(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))
)
;;; 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)
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
<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.
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
<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
<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>
</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>
</quote>
<noindent>
-\e$B$H$7$F2r<a$5$l$k!#\e(B<cf node="us-ascii">
+<cf node="us-ascii">
</memo>
<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>
<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>
<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>
<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"
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
<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>
<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>
<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
@node Entity, Content-Type, How to use, Top
@chapter Message and Entity
-@cindex node-id
-@cindex entity-number
@cindex mime-entity
@cindex entity
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
@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
@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
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
@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
@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
@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
@end example
@end quotation
-@noindent
-\e$B$d\e(B
@quotation
@example
@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
@end quotation
@noindent
-\e$B$H$7$F2r<a$5$l$k!#\e(B(cf. @ref{us-ascii})
+(cf. @ref{us-ascii})
@end quotation
@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
@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
@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
@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
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
@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
@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
@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
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
<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
@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
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
@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
(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))
(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
;;;