(Header encoder/decoder): Add description about
[elisp/flim.git] / mime-en.sgml
1 <!doctype sinfo system>
2 <head>
3 <title>FLIM 1.10 Manual about MIME Features
4 <author>MORIOKA Tomohiko <mail>morioka@jaist.ac.jp</mail>
5 <date>1998/07/01
6
7 <toc>
8 </head>
9
10 <body>
11
12 <abstract>
13 <p>
14 This file documents MIME features of FLIM, a Internet message
15 parsing/encoding library for GNU Emacs.
16 </abstract>
17
18
19 <h1> What is FLIM?
20 <node> Introduction
21 <p>
22 FLIM is a library to provide basic features about message
23 representation or encoding.
24
25
26 <h1> How to use MIME features
27 <node> How to use
28 <p>
29 Please eval following to use MIME features provided by FLIM:
30
31 <lisp>
32 (require 'mime)
33 </lisp>
34
35
36 <h1> Message and Entity
37 <node> Entity
38 <p>
39 According to <dref>RFC 2045</dref>, `The term ``entity'', refers
40 specifically to the MIME-defined header fields and contents of either
41 a message or one of the parts in the body of a multipart entity.'  In
42 this document, the term <concept>entity</concept> indicates all of
43 header fields and body.
44 <p>
45 The definition of RFC 2045 indicates that a MIME message is a tree,
46 and each node of the tree is an entity.  Namely MIME extends message
47 to tree structure.
48 <p>
49 FLIM uses <concept>mime-entity</concept> structure to represent
50 information of entity.  In this document, it is called simply
51 `mime-entity'.
52
53
54 <h2> Functions to create mime-entity
55 <node> Entity creation
56 <p>
57 <defun name="mime-open-entity">
58           <opts> type location
59 <p>
60 Open an entity and return it.
61 <p>
62 <var>type</var> is representation-type. <cf node="mm-backend">
63 <p>
64 <var>location</var> is location of entity.  Specification of it is
65 depended on representation-type.
66 </defun>
67
68 <defun name="mime-parse-buffer">
69           <opts> buffer type
70 <p>
71 Parse <var>buffer</var> as message, and set the result to buffer local
72 variable <code>mime-message-structure</code> of <var>buffer</var> as
73 mime-entity.
74 <p>
75 If <var>buffer</var> is omitted, current buffer is used.
76 <p>
77 <var>type</var> is representation-type of created mime-entity. <cf
78 node="mm-backend"> Default value is <var>buffer</var>.
79 </defun>
80
81
82 <h2> Features about message tree
83 <node> Entity hierarchy
84 <p>
85 Structure of a MIME message is tree.
86 <p>
87 In the tree, root node is the entity indicates all of the message.  In
88 this document, it is called <concept>root-entity</concept> or
89 <concept>message</concept>.  In FLIM, it is indicated by buffer local
90 variable <code>mime-message-structure</code>.
91 <p>
92 Each entity except root-entity has a parent.  An entity may have
93 children.  We can indicate an entity by relative position from a base
94 entity, based on the parent-child relationship.
95 <p>
96 In addition, we can indicate an entity by absolute position of the
97 message.
98 <p>
99 Each entity, which is a node of the tree, can be numbered by
100 depth and left-to-right order of the depth.
101 <verb>
102
103                               +-------+
104                               |  nil  |
105                               +---+---+
106               +-------------------+-------------------+
107             +-+-+               +-+-+               +-+-+
108             | 0 |               | 1 |               | 2 |
109             +-+-+               +-+-+               +-+-+
110               |         +---------+---------+         |
111            +--+--+   +--+--+   +--+--+   +--+--+   +--+--+
112            | 0.0 |   | 1.0 |   | 1.1 |   | 1.2 |   | 2.0 |
113            +-----+   +-----+   +-----+   +-----+   +-----+
114
115 </verb>
116 <p>
117 Namely, if depth of a node is n, the node has a node-number, which is
118 consists of n integers.  In this document, it is called
119 <concept>entity-number</concept>.  An entity-number is represented by
120 list of integer, like <code>(1 2 3)</code>.
121 <p>
122 mime-entity has also <concept>node-id</concept>.  A node-id is
123 represented by reversed list of entity-number.  For example, node-id
124 corresponding with 1.2.3 is <code>(3 2 1)</code>.
125 <p>
126 Each entity can be indicated by entity-number or node-id in
127 <code>mime-message-structure</code>.
128
129 <defvar name="mime-message-structure">
130 <p>
131 Buffer local variable to store mime-entity structure of message.
132 </defvar>
133
134 <defun name="mime-entity-children">
135           <args> entity
136 <p>
137 Return list of entities included in the <var>entity</var>.
138 </defun>
139
140 <defun name="mime-entity-parent">
141           <args> entity <opts> message
142 <p>
143 Return parent entity of the <var>entity</var>.
144 <p>
145 If <var>message</var> is specified, it is regarded as root instead of
146 <code>mime-message-structure</code>.
147 </defun>
148
149 <defun name="mime-root-entity-p">
150           <args> entity
151 <p>
152 Return non-<code>nil</code> if <var>entity</var> is root entity
153 (message).
154 </defun>
155
156 <defun name="mime-entity-node-id">
157           <args> entity
158 <p>
159 Return node-id of <var>entity</var>.
160 </defun>
161
162 <defun name="mime-entity-number">
163           <args> entity
164 <p>
165 Return entity-number of <var>entity</var>.
166 </defun>
167
168 <defun name="mime-find-entity-from-number">
169             <args> entity-number <opts> message
170 <p>
171 Return entity from <var>entity-number</var> in <var>message</var>.
172 <p>
173 If <var>message</var> is not specified,
174 <code>mime-message-structure</code> is used.
175 </defun>
176
177 <defun name="mime-find-entity-from-node-id">
178             <args> entity-node-id <opts> message
179 <p>
180 Return entity from <var>entity-node-id</var> in <var>message</var>.
181 <p>
182 If <var>message</var> is not specified,
183 <code>mime-message-structure</code> is used.
184 </defun>
185
186
187 <h2> Functions about attributes of mime-entity
188 <node> Entity Attributes
189 <p>
190 <defun name="mime-entity-content-type">
191             <args> entity
192 <p>
193 Return content-type of <var>entity</var>.
194 <cf node="mime-content-type">
195 </defun>
196
197 <defun name="mime-entity-content-disposition">
198             <args> entity
199 <p>
200 Return content-disposition of <var>entity</var>. <cf
201 node="mime-content-disposition">
202 </defun>
203
204 <defun name="mime-entity-filename">
205             <args> entity
206 <p>
207 Return file name of <var>entity</var>.
208 </defun>
209
210 <defun name="mime-entity-encoding">
211             <args> entity <opts> default-encoding
212 <p>
213 Return content-transfer-encoding of <var>entity</var>.
214 <cf node="Content-Transfer-Encoding">
215 <p>
216 If the <var>entity</var> does not have Content-Transfer-Encoding
217 field, this function returns <var>default-encoding</var>.  If it is
218 nil, <code>"7bit"</code> is used as default value.
219 </defun>
220
221 <defun name="mime-entity-cooked-p">
222             <args> entity
223 <p>
224 Return non-nil if contents of <var>entity</var> has been already
225 code-converted.
226 </defun>
227
228
229 <h2> Information of entity header
230 <node> Entity-header
231 <p>
232 <defun name="mime-fetch-field">
233             <args> field-name <opts> entity
234 <p>
235 Return field-body of <var>field-name</var> field in header of
236 <var>entity</var>.
237 <p>
238 The results is network representation.
239 <p>
240 If <var>entity</var> is omitted, <code>mime-message-structure</code>
241 is used as default value.
242 <p>
243 If <var>field-name</var> field is not found, this function returns
244 <code>nil</code>.
245 </defun>
246
247 <defun name="mime-read-field">
248             <args> field-name <opts> entity
249 <p>
250 Parse <var>field-name</var> field in header of <var>entity</var>, and
251 return the result.
252 <p>
253 Format of result is depended on kind of field.  For non-structured
254 field, this function returns string.  For structured field, it returns
255 list corresponding with structure of the field.
256 <p>
257 Strings in the result will be converted to internal representation of
258 Emacs.
259 <p>
260 If <var>entity</var> is omitted, <code>mime-message-structure</code>
261 is used as default value.
262 <p>
263 If <var>field-name</var> field is not found, this function returns
264 <code>nil</code>.
265 </defun>
266
267
268 <h2> Text presentation of entity
269 <node> entity formatting
270 <p>
271 <defun name="mime-insert-header">
272             <args> entity <opts> invisible-fields visible-fields
273 <p>
274 Insert before point a decoded contents of header of <var>entity</var>.
275 <p>
276 <var>invisible-fields</var> is list of regexps to match field-name to
277 hide.  <var>visible-fields</var> is list of regexps to match
278 field-name to hide.
279 <p>
280 If a field-name is matched with some elements of
281 <var>invisible-fields</var> and matched with none of
282 <var>visible-fields</var>, this function don't insert the field.
283 <p>
284 Each <dref>encoded-word</dref> in the header is decoded.  ``Raw non
285 us-ascii characters'' are also decoded as
286 <code>default-mime-charset</code>.
287 </defun>
288
289 <defun name="mime-insert-text-content">
290             <args> entity
291 <p>
292 Insert before point a contents of <var>entity</var> as text entity.
293 <p>
294 Contents of the <var>entity</var> are decoded as <dref>MIME
295 charset</dref>.  If the <var>entity</var> does not have charset
296 parameter of Content-Type field, <code>default-mime-charset</code> is
297 used as default value.
298 </defun>
299
300 <defvar name="default-mime-charset">
301 <p>
302 Symbol to indicate default value of <dref>MIME charset</dref>.
303 <p>
304 It is used when MIME charset is not specified.
305 <p>
306 It is originally variable of APEL.
307 </defvar>
308
309
310 <h2> Contents of Entity
311 <node> Entity-content
312 <p>
313 <defun name="mime-entity-content">
314             <args> entity
315 <p>
316 Return content of <var>entity</var> as byte sequence.
317 </defun>
318
319 <defun name="mime-write-entity-content">
320             <args> entity filename
321 <p>
322 Write content of <var>entity</var> into <var>filename</var>.
323 </defun>
324
325 <defun name="mime-write-entity">
326             <args> entity filename
327 <p>
328 Write representation of <var>entity</var> into <var>filename</var>.
329 </defun>
330
331 <defun name="mime-write-entity-body">
332             <args> entity filename
333 <p>
334 Write body of <var>entity</var> into <var>filename</var>.
335 </defun>
336
337
338 <h2> Entity as buffer representation
339 <node> Entity buffer
340 <p>
341 <defun name="mime-entity-buffer">
342             <args> entity
343 <p>
344 Return buffer, which contains <var>entity</var>.
345 </defun>
346
347 <defun name="mime-entity-point-min">
348             <args> entity
349 <p>
350 Return the start point of <var>entity</var> in the buffer which
351 contains <var>entity</var>.
352 </defun>
353
354 <defun name="mime-entity-point-max">
355             <args> entity
356 <p>
357 Return the end point of <var>entity</var> in the buffer which
358 contains <var>entity</var>.
359 </defun>
360
361 <defun name="mime-entity-header-start">
362             <args> entity
363 <p>
364 Return the start point of header of <var>entity</var> in the buffer
365 which contains <var>entity</var>.
366 </defun>
367
368 <defun name="mime-entity-header-end">
369             <args> entity
370 <p>
371 Return the end point of header of <var>entity</var> in the buffer
372 which contains <var>entity</var>.
373 </defun>
374
375 <defun name="mime-entity-body-start">
376             <args> entity
377 <p>
378 Return the start point of body of <var>entity</var> in the buffer
379 which contains <var>entity</var>.
380 </defun>
381
382 <defun name="mime-entity-body-end">
383             <args> entity
384 <p>
385 Return the end point of body of <var>entity</var> in the buffer which
386 contains <var>entity</var>.
387 </defun>
388
389
390 <h2> Entity representations and implementations
391 <node> mm-backend
392 <p>
393 Entity is an abstraction.  It is designed to use various data
394 representations for their purposes.
395 <p>
396 Each entity has <concept>representation-type</concept>.  It must be
397 specified when an entity is created. <cf node="Entity Creation">
398 <p>
399 Functions about entity are implemented by request processing to the
400 entity.  Each entity knows its representation-type.  Each entity calls
401 processing function corresponding with the representation-type.  Such
402 kind of function is called <concept>entity processing
403 method</concept>.  A module, consists of them corresponding with a
404 representation-type, is called <concept>mm-backend</concept>.
405 <p>
406 Module name of each mm-backend consists of the prefix <code>mm</code>
407 and its representation-type.  The module is required automatically
408 when its entity is created at first.
409
410
411 <h3> Message-passing for entity
412 <node> Request for entity
413 <p>
414 <defun name="mime-entity-send">
415               <args> entity message <rest> args
416 <p>
417 Send <var>message</var> to <var>entity</var> with <var>args</var>, and
418 return the result.
419 <p>
420 <var>args</var> is arguments of the <var>message</var>.
421 </defun>
422
423
424 <h3> Definition of mm-backend
425 <node> mm-backend module
426 <p>
427 <defmacro name="mm-define-backend">
428 <args> type
429 <opts> parents
430 <p>
431 Define <var>type</var> as a mm-backend.
432 <p>
433 If <var>PARENTS</var> is specified, <var>type</var> inherits parents.
434 Each parent must be representation-type.
435 <p>
436 Example:
437 <p>
438 <lisp>
439 (mm-define-backend chao (generic))
440 </lisp>
441 </defmacro>
442
443 <defmacro name="mm-define-method">
444 <args> name args <rest> body
445 <p>
446 Define <var>name</var> as a method function of (nth 1 (car
447 <var>args</var>)) backend.
448 <p>
449 <var>args</var> is like an argument list of lambda, but (car
450 <var>args</var>) must be specialized parameter.  (car (car
451 <var>args</var>)) is name of variable and (nth 1 (car
452 <var>args</var>)) is name of backend (representation-type).
453 <p>
454 Example:
455 <p>
456 <lisp>
457 (mm-define-method entity-cooked-p ((entity chao)) nil)
458 </lisp>
459 </defmacro>
460
461
462 <h1> Information of Content-Type field
463 <node> Content-Type
464 <p>
465 <concept>Content-Type field</concept> is a field to indicate kind of
466 contents or data format, such as <dref>media-type</dref> and MIME
467 charset.  It is defined in <dref>RFC 2045</dref>.
468
469 <memo>
470 <p>
471 Historically, Content-Type field was proposed in RFC 1049.  In it,
472 Content-Type did not distinguish type and subtype, and there are no
473 mechanism to represent kind of character code like MIME charset.
474 </memo>
475
476 <p>
477 FLIM provides parser for Content-Type field and structure
478 <concept>mime-content-type</concept> to store information of
479 Content-Type field.
480
481
482 <h2> Format of Content-Type field
483 <node> Content-Type field
484 <p>
485 Format of Content-Type field is defined as follows:
486
487 <quote>
488 ``Content-Type'' ``:'' <concept>type</concept> ``/''
489 <concept>subtype</concept> *( ``;'' <concept>parameter</concept> )
490 </quote>
491 <p>
492 For example:
493
494 <quote>
495 <verb>
496 Content-Type: image/jpeg
497 </verb>
498 </quote>
499
500 <quote>
501 <verb>
502 Content-Type: text/plain; charset=iso-2022-jp
503 </verb>
504 </quote>
505 <p>
506 `type' and `subtype' indicate format of an entity.  In this document,
507 pair of them is called `media-type'.  `image/jpeg' or `text/plain' is
508 a media-type.
509
510 <memo>
511 <p>
512 If an entity does not have Content-Type field, it is regarded as
513 following:
514
515 <quote>
516 <verb>
517 Content-Type: text/plain; charset=us-ascii
518 </verb>
519 </quote>
520
521 <noindent>
522 <cf node="us-ascii">
523 </memo>
524
525
526 <h2> mime-content-type structure
527 <node> mime-content-type
528 <p>
529 <define type="Structure" name="mime-content-type">
530 <p>
531 Structure to store information of a Content-Type field.
532 <p>
533 Applications should use reference functions
534 <code>mime-content-type-SLOT</code> to refer information of the
535 structure.
536 <p>
537 Slots of the structure are following:
538
539 <vl>
540 <dt>primary-type<dd>primary type of media-type (symbol).
541 </dd>
542 <dt>subtype<dd>subtype of media-type (symbol).
543 </dd>
544 <dt>parameters<dd>parameters of Content-Type field (association-list).
545 </dd>
546 </vl>
547 </define>
548
549 <defun name="make-mime-content-type">
550           <args> type subtype
551           <opts> parameters
552 <p>Constructor of content-type.
553 </defun>
554
555 <defun name="mime-content-type-parameter">
556 <args> content-type parameter
557 <p>
558 Return value of <var>parameter</var> of <var>content-type</var>.
559 </defun>
560
561
562 <h2> Parser
563 <node> Content-Type parser
564 <p>
565 <defun name="mime-parse-Content-Type">
566             <args> string
567 <p>
568 Parse <var>string</var> as a field-body of Content-Type field, and
569 return the result as <dref>mime-content-type</dref> structure.
570 </defun>
571
572 <defun name="mime-read-Content-Type">
573 <p>
574 Parse Content-Type field of the current buffer, and return the result
575 as <dref>mime-content-type</dref> structure.
576 <p>
577 Return <code>nil</code> if Content-Type field is not found.
578 </defun>
579
580
581 <h2> Utility functions
582 <node> Content-Type utility
583 <p>
584 <defun name="mime-type/subtype-string">
585             <args> type <opts> subtype
586 <p>
587 Return type/subtype string from <var>type</var> and
588 <var>subtype</var>.
589 </defun>
590
591
592 <h1> Information of Content-Disposition field
593 <node> Content-Disposition
594 <p>
595 <concept>Content-Disposition field</concept> is an optional field to
596 specify presentation of an entity or attributes of an entity, such as
597 file name.
598
599 <rfc number="2183" type="Standards Track"
600           author="S. Dorner, K. Moore and R. Troost"
601           title="Communicating Presentation Information in Internet
602           Messages: The Content-Disposition Header" date="August
603           1997">
604 <p>
605 FLIM provides parser for Content-Disposition field and structure
606 <concept>mime-content-disposition</concept> to store information of
607 Content-Disposition field.
608
609
610 <h2> mime-content-disposition structure
611 <node> mime-content-disposition
612 <p>
613 <define type="Structure" name="mime-content-disposition">
614 <p>
615 Structure to store information of a Content-Disposition field.
616 <p>
617 Applications should use reference functions
618 <code>mime-content-disposition-SLOT</code> to refer information of the
619 structure.
620 <p>
621 Slots of the structure are following:
622
623 <vl>
624 <dt>disposition-type<dd>disposition-type (symbol).
625 </dd>
626 <dt>parameters<dd>parameters of Content-Disposition field
627 (association-list).
628 </dd>
629 </vl>
630 </define>
631
632 <defun name="mime-content-disposition-parameter">
633 <args> content-disposition parameter
634 <p>
635 Return value of <var>parameter</var> of
636 <var>content-disposition</var>.
637 </defun>
638
639 <defun name="mime-content-disposition-filename">
640 <args> content-disposition
641 <p>
642 Return filename of <var>content-disposition</var>.
643 </defun>
644
645
646 <h2> Parser for Content-Disposition field
647 <node> Content-Disposition parser
648 <p>
649 <defun name="mime-parse-Content-Disposition">
650             <args> string
651 <p>
652 Parse <var>string</var> as field-body of Content-Disposition field,
653 and return the result as <dref>mime-content-disposition</dref>
654 structure.
655 </defun>
656
657 <defun name="mime-read-Content-Disposition">
658 <p>
659 Parse Content-Disposition field of the current buffer, and return the
660 result as <dref>mime-content-disposition</dref> structure.
661 <p>
662 Return <code>nil</code> if Content-Disposition field is not found.
663 </defun>
664
665
666 <h1> Encoding Method
667 <node> Content-Transfer-Encoding
668 <p>
669 <concept>Content-Transfer-Encoding field</concept> is a header field
670 to indicate body encoding of a entity.
671 <p>
672 FLIM provides parser functions for Content-Transfer-Encoding field.
673 They represent information of Content-Transfer-Encoding field as
674 string.
675 <p>
676 In addition, FLIM provides encoder/decoder functions by
677 Content-Transfer-Encoding.
678
679
680 <h2> Parser
681 <node> Content-Transfer-Encoding parser
682 <p>
683 <defun name="mime-parse-Content-Transfer-Encoding">
684             <args> string
685 <p>
686 Parse <var>string</var> as a field-body of Content-Transfer-Encoding
687 field, and return the result.
688 </defun>
689
690 <defun name="mime-read-Content-Transfer-Encoding">
691             <opts>default-encoding
692 <p>
693 Parse Content-Transfer-Encoding field of the current buffer, and
694 return the result.
695 <p>
696 Return <var>default-encoding</var> if Content-Transfer-Encoding field
697 is not found.  If it is not specified, <code>nil</code> is used as the
698 default value.
699 </defun>
700
701
702 <h2> Encoder/decoder
703 <node> encoder/decoder
704 <p>
705 <defun name="mime-encode-region">
706             <args> start end encoding
707 <p>
708 Encode region <var>start</var> to <var>end</var> of current buffer
709 using <var>encoding</var>.
710 </defun>
711
712 <defun name="mime-decode-region">
713             <args> start end encoding
714 <p>
715 Decode region <var>start</var> to <var>end</var> of current buffer
716 using <var>encoding</var>.
717 </defun>
718
719
720 <defun name="mime-decode-string">
721             <args> string encoding
722 <p>
723 Decode <var>string</var> which is encoded in <var>encoding</var>, and
724 return the result.
725 </defun>
726
727
728 <defun name="mime-insert-encoded-file">
729             <args> filename encoding
730 <p>
731 Insert file <var>FILENAME</var> encoded by <var>ENCODING</var> format.
732 </defun>
733
734 <defun name="mime-write-decoded-region">
735               <args> start end filename encoding
736 <p>
737 Decode and write current region encoded by <var>encoding</var> into
738 <var>filename</var>.
739 <p>
740 <var>start</var> and <var>end</var> are buffer positions.
741 </defun>
742
743
744 <h2> Other utilities
745 <node> Encoding information
746 <p>
747 <defun name="mime-encoding-list">
748             <opts> SERVICE
749 <p>
750 Return list of Content-Transfer-Encoding.
751 <p>
752 If <var>service</var> is specified, it returns available list of
753 Content-Transfer-Encoding for it.
754 </defun>
755
756 <defun name="mime-encoding-alist">
757             <opts> SERVICE
758 <p>
759 Return table of Content-Transfer-Encoding for completion.
760 <p>
761 If <var>service</var> is specified, it returns available list of
762 Content-Transfer-Encoding for it.
763 </defun>
764
765
766 <h2> How to write encoder/decoder module
767 <node> mel-backend
768 <p>
769 <defmacro name="mel-define-method">
770 <args> name args <rest> body
771 <p>
772 Define <var>name</var> as a method function of (nth 1 (car (last
773 <var>args</var>))) backend.
774 <p>
775 <var>args</var> is like an argument list of lambda, but (car (last
776 <var>args</var>)) must be specialized parameter.  (car (car (last
777 <var>args</var>))) is name of variable and (nth 1 (car (last
778 <var>args</var>))) is name of backend (encoding).
779 <p>
780 Example:
781 <p>
782 <lisp>
783 (mel-define-method mime-write-decoded-region (start end filename
784                                                     (nil "base64"))
785   "Decode and write current region encoded by base64 into FILENAME.
786 START and END are buffer positions."
787   (interactive
788    (list (region-beginning) (region-end)
789          (read-file-name "Write decoded region to file: ")))
790   (let ((str (buffer-substring start end)))
791     (with-temp-buffer
792       (insert (decode-base64-string str))
793       (write-region-as-binary (point-min) (point-max) filename)
794       )))
795 </lisp>
796 </defmacro>
797
798 <defmacro name="mel-define-method-function">
799 <args> spec function
800 <p>
801 Set <var>spec</var>'s function definition to <var>function</var>.
802 <p>
803 First element of <var>spec</var> is service.
804 <p>
805 Rest of <var>args</var> is like an argument list of lambda, but (car
806 (last <var>args</var>)) must be specialized parameter.  (car (car
807 (last <var>args</var>))) is name of variable and (nth 1 (car (last
808 <var>args</var>))) is name of backend (encoding).
809 <p>
810 Example:
811 <p>
812 <lisp>
813 (mel-define-method-function (mime-encode-string string (nil "base64"))
814                             'encode-base64-string)
815 </lisp>
816 </defmacro>
817
818
819 <h2> How to add encoding/decoding service
820 <node> generic function for mel-backend
821 <p>
822 <defmacro name="mel-define-service">
823 <args> name
824 <opts> args doc-string
825 <p>
826 Define <var>name</var> as a service for Content-Transfer-Encodings.
827 <p>
828 If <var>args</var> is specified, <var>name</var> is defined as a
829 generic function for the service.
830 <p>
831 Example:
832 <p>
833 <lisp>
834 (mel-define-service encoded-text-encode-string (string encoding)
835   "Encode STRING as encoded-text using ENCODING.
836 ENCODING must be string.")
837 </lisp>
838 </defmacro>
839
840
841 <h1> Network representation of header
842 <node> encoded-word
843 <p>
844 encoded-word \e$B$O\e(B header \e$B$GHs\e(B <dref>ASCII</dref> \e$BJ8;z$rI=8=$9$k$?$a$N7A\e(B
845 \e$B<0$G!"\e(B<concept>RFC 2047</concept> \e$B$GDj5A$5$l$F$$$^$9!#\e(B
846 <p>
847 <rfc number="2047" type="Standards Track" author="K. Moore"
848               title="MIME (Multipurpose Internet Mail Extensions) Part
849               Three: Message Header Extensions for Non-ASCII Text"
850               date="November 1996" obsolete="1521,1522,1590">
851 <p>
852 \e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B 
853 <dref>ASCII</dref> \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B
854 <p>
855 FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
856
857
858 <h2> Header encoding/decoding
859 <node> Header encoder/decoder
860 <p>
861 <defun name="eword-decode-header">
862             <opts> code-conversion separator
863 <p>
864 Decode MIME encoded-words in header fields.
865 <p>
866 If <var>code-conversion</var> is <code>nil</code>, only encoded-words
867 are decoded.  If <var>code-conversion</var> is a <dref>MIME
868 charset</dref>, non-ASCII bit patterns are decoded as the MIME
869 charset.  Otherwise non-ASCII bit patterns are decoded as the
870 <code>default-mime-charset</code>. <cf node="entity formatting">
871 <p>
872 If <var>separator</var> is not <code>nil</code>, it is used as header
873 separator.
874 </defun>
875
876 <defun name="eword-encode-header">
877             <opts> code-conversion
878 <p>
879 Encode header fields to network representation, such as MIME
880 encoded-word.
881 <p>
882 Each field is encoded as corresponding method specified by variable
883 <code>eword-field-encoding-method-alist</code>.
884 </defun>
885
886 <defvar name="eword-field-encoding-method-alist">
887 <p>
888 Association list to specify field encoding method.  Each element looks
889 like (FIELD . METHOD).
890 <p>
891 If METHOD is <code>mime</code>, the FIELD will be encoded into MIME
892 format (encoded-word).
893 <p>
894 If METHOD is <code>nil</code>, the FIELD will not be encoded.
895 <p>
896 If METHOD is a MIME charset, the FIELD will be encoded as the charset
897 when it must be convert into network-code.
898 <p>
899 Otherwise the FIELD will be encoded as variable
900 <code>default-mime-charset</code> when it must be convert into
901 network-code.
902 </defvar>
903
904
905 <h1> Various Customization
906 <node> custom
907 <p>
908 <define type="group" name="mime">
909 <p>
910 MIME \e$B4XO"5!G=$K4X$9$k\e(B group.
911 <p>
912 <code>mail</code> \e$B$H\e(B <code>news</code> \e$B$KB0$9$k!#\e(B
913 </define>
914
915 <defvar name="mime-temp-directory">
916 <p>
917 MIME \e$B5!G=$K4X$9$k<BAu$,0l;~E*$K;HMQ$9$k\e(B file \e$B$r:n@.$9$k\e(B directory.
918 <p>
919 \e$B4D6-JQ?t\e(B <code>MIME_TMP_DIR</code>, <code>TM_TMP_DIR</code>,
920 <code>TMPDIR</code>, <code>TMP</code> \e$B$b$7$/$O\e(B <code>TEMP</code> \e$B$,@_Dj\e(B
921 \e$B$5$l$F$$$?>l9g!"$=$l$r=i4|CM$H$7$FMQ$$$k!#2?$b@_Dj$5$l$F$$$J$$>l9g!"\e(B
922 <code>"/tmp/"</code> \e$B$rMQ$$$k!#\e(B
923 </defvar>
924
925
926 <h1> Appendix
927 <node> Appendix
928
929 <h2> Glossary
930 <node> Glossary
931
932 <h3> 7bit
933 <node> 7bit
934 <p>
935 <concept>7bit</concept> means any integer between 0 .. 127.
936 <p>
937 Any data represented by 7bit integers is called <concept>7bit
938 data</concept>.
939 <p>
940 Textual string consisted of Control characters between 0 .. 31 and
941 127, and space represented by 32, and graphic characters between 33
942 .. 236 are called <concept>7bit (textual) string</concept>.
943 <p>
944 Conventional Internet <a node="MTA">MTA</a> can translate 7bit data,
945 so it is no need to translate by <a
946 node="Quoted-Printable">Quoted-Printable</a> or <a
947 node="Base64">Base64</a> for 7bit data.
948 <p>
949 However if there are too long lines, it can not translate by 7bit MTA
950 even if it is 7bit data.  <dref>RFC 821</dref> and <dref>RFC
951 2045</dref> require lines in 7bit data must be less than 998 bytes.
952 So if a ``7bit data'' has a line more than 999 bytes, it is regarded
953 as <dref>binary</dref>.  For example, Postscript file should be
954 encoded by Quoted-Printable.
955
956
957 <h3> 8bit
958 <node> 8bit
959 <p>
960 <concept>8bit</concept> means any integer between 0 .. 255.
961 <p>
962 Any data represented by 8bit integers is called <concept>8bit
963 data</concept>.
964 <p>
965 Textual string consisted of Control characters between 0 .. 31, 127,
966 and 128 .. 159, and space represented by 32, and graphic characters
967 between 33 .. 236 and 160 .. 255 are called <concept>8bit (textual)
968 string</concept>.
969 <p>
970 For example, <dref>iso-8859-1</dref> or <dref>euc-kr</dref> are
971 coded-character-set represented by 8bit textual string.
972 <p>
973 Traditional Internet <a node="MTA">MTA</a> can translate only
974 <dref>7bit</dref> data, so if a 8bit data will be translated such MTA,
975 it must be encoded by <dref>Quoted-Printable</dref> or
976 <dref>Base64</dref>.
977 <p>
978 However 8bit MTA are increasing today.
979 <p>
980 However if there are too long lines, it can not translate by 8bit MTA
981 even if it is 8bit data.  <dref>RFC 2045</dref> require lines in 8bit
982 data must be less than 998 bytes.  So if a ``8bit data'' has a line
983 more than 999 bytes, it is regarded as <dref>binary</dref>, so it must
984 be encoded by Base64 or Quoted-Printable.
985
986
987 <h3> ASCII
988 <node> ASCII
989 <p>
990 <concept>ASCII</concept> is a 94-character set contains primary latin
991 characters (A-Z, a-z), numbers and some characters.  It is a standard
992 of the United States of America.  It is a variant of <a node="ISO
993 646">ISO 646</a>.
994
995 <standard abbrev="ASCII" title-en="Coded Character Set -- 7-Bit
996               American Standard Code for Information Interchange"
997               number="ANSI X3.4" year="1986">
998
999
1000 <h3> Base64
1001 <node> Base64
1002 <p>
1003 <concept>Base64</concept> is a transfer encoding method of
1004 <dref>MIME</dref> defined in <dref>RFC 2045</dref>.
1005 <p>
1006 The encoding process represents 24-bit groups of input bits as output
1007 strings of 4 encoded characters.  Encoded characters represent integer
1008 0 .. 63 or <concept>pad</concept>.  Base64 data must be 4 * n bytes,
1009 so pad is used to adjust size.
1010 <p>
1011 These 65 characters are subset of all versions of ISO 646, including
1012 US-ASCII, and all versions of EBCDIC.  So it is safe even if it is
1013 translated by non-Internet gateways.
1014
1015
1016 <h3> binary
1017 <node> binary
1018 <p>
1019 Any byte stream is called <concept>binary</concept>.
1020 <p>
1021 It does not require structureof lines.  It differs from from <a
1022 node="8bit">8bit</a>.
1023 <p>
1024 In addition, if line structured data contain too long line (more than
1025 998 bytes), it is regarded as binary.
1026
1027
1028 <h3> Coded character set, Character code
1029 <node> coded character set
1030 <p>
1031 A set of unambiguous rules that establishes a character set and the
1032 one-to-one relationship between the characters of the set and their
1033 bit combinations.
1034
1035
1036 <h3> media-type
1037 <node> media-type
1038 <p>
1039 <concept>media-type</concept> specifies the nature of the data in the
1040 body of <dref>MIME</dref> <dref>entity</dref>.  It consists of
1041 <concept>type</concept> and <concept>subtype</concept>.  It is defined
1042 in <dref>RFC 2046</dref>.
1043 <p>
1044 Currently there are following standard primary-types:
1045
1046 <ul>
1047 <li><concept>text</concept>
1048 </li>
1049 <li><concept>image</concept>
1050 </li>
1051 <li><concept>audio</concept>
1052 </li>
1053 <li><concept>video</concept>
1054 </li>
1055 <li><concept>application</concept>
1056 </li>
1057 <li><a node="multipart"><concept>multipart</concept></a>
1058 </li>
1059 <li><concept>message</concept>
1060 </ul>
1061
1062 <p>
1063 And there are various subtypes, for example, application/octet-stream,
1064 audio/basic, image/jpeg, <dref>multipart/mixed</dref>,
1065 <dref>text/plain</dref>, video/mpeg...
1066
1067 <p>
1068 You can refer registered media types at <a
1069 href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types">MEDIA
1070 TYPES</a>.
1071 <p>
1072 In addition, you can use private type or subtype using
1073 <concept>x-token</concept>, which as the prefix `x-'.  However you can
1074 not use them in public.
1075 <p>
1076 <cf node="Content-Type field">
1077
1078
1079 <h3> message
1080 <node> message
1081 <p>
1082 In this document, it means mail defined in <dref>RFC 822</dref> and
1083 news message defined in <dref>RFC 1036</dref>.
1084
1085
1086 <h3> MIME
1087 <node> MIME
1088 <p>
1089 MIME stands for <concept>Multipurpose Internet Mail
1090 Extensions</concept>, it is an extension for <dref>RFC 822</dref>.
1091 <p>
1092 According to RFC 2045:
1093 <p>
1094 STD 11, RFC 822, defines a message representation protocol specifying
1095 considerable detail about US-ASCII message headers, and leaves the
1096 message content, or message body, as flat US-ASCII text.  This set of
1097 documents, collectively called the Multipurpose Internet Mail
1098 Extensions, or MIME, redefines the format of messages to allow for
1099
1100 <ol>
1101 <li>textual message bodies in character sets other than US-ASCII,
1102 </li>
1103 <li>an extensible set of different formats for non-textual message
1104 bodies,
1105 </li>
1106 <li>multi-part message bodies, and
1107 </li>
1108 <li>textual header information in character sets other than US-ASCII.
1109 </ol>
1110
1111 <p>
1112 It is defined in <dref>RFC 2045</dref>, <dref>RFC 2046</dref>, <a
1113 node="encoded-word">RFC 2047</a>, <dref>RFC 2048</dref> and <dref>RFC
1114 2049</dref>.
1115
1116
1117 <h3> MIME charset
1118 <node> MIME charset
1119 <p>
1120 <a node="coded character set">Coded character set</a> used in
1121 <dref>Content-Type field</dref> or charset parameter of <a
1122 node="encoded-word">encoded-word</a>.
1123 <p>
1124 It is defined in <dref>RFC 2045</dref>.
1125 <p>
1126 <dref>iso-2022-jp</dref> or <dref>euc-kr</dref> are kinds of it.  (In
1127 this document, MIME charsets are written by small letters to
1128 distinguish <dref>graphic character set</dref>.  For example, ISO
1129 8859-1 is a graphic character set, and iso-8859-1 is a MIME charset)
1130
1131
1132 <h3> MTA
1133 <node> MTA
1134 <p>
1135 <concept>Message Transfer Agent</concept>.  It means mail transfer
1136 programs (ex. sendmail) and news servers.
1137 <p>
1138 <cf node="MUA">
1139
1140
1141 <h3> MUA
1142 <node> MUA
1143 <p>
1144 <concept>Message User Agent</concept>.  It means mail readers and news
1145 readers.
1146 <p>
1147 <cf node="MTA">
1148
1149
1150 <h3> Quoted-Printable
1151 <node> Quoted-Printable
1152 <p>
1153 <concept>Quoted-Printable</concept> is a transfer encoding method of
1154 <dref>MIME</dref> defined in <dref>RFC 2045</dref>.
1155 <p>
1156 If the data being encoded are mostly US-ASCII text, the encoded form
1157 of the data remains largely recognizable by humans.
1158 <p>
1159 <cf node="Base64">
1160
1161
1162 <h3> RFC 822
1163 <node> RFC 822
1164 <p>
1165 A RFC defines format of Internet mail message, mainly <concept>message
1166 header</concept>.
1167
1168 <memo>
1169 <p>
1170 news message is based on RFC 822, so <concept>Internet
1171 message</concept> may be more suitable than <concept>Internet
1172 mail</concept> .
1173 </memo>
1174
1175 <rfc number="822" type="STD 11" author="D. Crocker" title="Standard
1176               for the Format of ARPA Internet Text Messages"
1177               date="August 1982">
1178
1179
1180 <h3> RFC 1036
1181 <node> RFC 1036
1182 <p>
1183 A RFC defines format of USENET message.  It is a subset of <dref>RFC
1184 822</dref>.  It is not Internet standard, but a lot of netnews
1185 excepting Usenet uses it.
1186
1187 <rfc name="USENET" number="1036" author="M. Horton and R. Adams"
1188               title="Standard for Interchange of USENET Messages"
1189               date="December 1987" obsolete="850">
1190
1191
1192 <h3> RFC 2045
1193 <node> RFC 2045
1194 <p>
1195 <rfc number="2045" type="Standards Track" author="N. Freed and
1196               N. Borenstein" title="Multipurpose Internet Mail
1197               Extensions (MIME) Part One: Format of Internet Message
1198               Bodies" date="November 1996" obsolete="1521, 1522,
1199               1590">
1200
1201
1202 <h3> RFC 2046
1203 <node> RFC 2046
1204 <p>
1205 <rfc number="2046" type="Standards Track" author="N. Freed and
1206               N. Borenstein" title="Multipurpose Internet Mail
1207                  Extensions (MIME) Part Two: Media Types"
1208                  date="November 1996" obsolete="1521, 1522, 1590">
1209
1210
1211 <h3> RFC 2048
1212 <node> RFC 2048
1213 <p>
1214 <rfc number="2048" type="Standards Track" author="N. Freed, J. Klensin
1215               and J. Postel" title="Multipurpose Internet Mail
1216               Extensions (MIME) Part Four: Registration Procedures"
1217               date="November 1996" obsolete="1521, 1522, 1590">
1218
1219
1220 <h3> RFC 2049
1221 <node> RFC 2049
1222 <p>
1223 <rfc number="2049" type="Standards Track" author="N. Freed and
1224               N. Borenstein" title="Multipurpose Internet Mail
1225               Extensions (MIME) Part Five: Conformance Criteria and
1226               Examples" date="November 1996" obsolete="1521, 1522,
1227               1590">
1228
1229
1230 <h3> plain text
1231 <node> plain text
1232 <p>
1233 A textual data represented by only <dref>coded character set</dref>.
1234 It does not have information about font or typesetting.
1235 <cf node="text/plain">
1236
1237
1238 <h3> us-ascii
1239 <node> us-ascii
1240 <p>
1241 A <a node="MIME charset">MIME charset</a> for primary Latin script
1242 mainly written by English or other languages.
1243 <p>
1244 It is a 7bit <dref>coded character set</dref> based on <dref>ISO
1245 2022</dref>, it contains only
1246 <dref>ASCII</dref> and <dref>code extension</dref> is not allowed.
1247 <p>
1248 It is standard coded character set of Internet mail.  If MIME charset
1249 is not specified, <concept>us-ascii</concept> is used as default.
1250 <p>
1251 In addition, <concept>ASCII</concept> of <dref>RFC 822</dref> should
1252 be interpreted as us-ascii.
1253
1254
1255 <h2> How to report bugs
1256 <node> Bug report
1257 <p>
1258 If you write bug-reports and/or suggestions for improvement, please
1259 send them to the tm Mailing List:
1260
1261 <ul>
1262 <li> Japanese <mail>bug-tm-ja@chamonix.jaist.ac.jp</mail>
1263 <li> English <mail>bug-tm-en@chamonix.jaist.ac.jp</mail>
1264 </ul>
1265
1266 <p>
1267 Notice that, we do not welcome bug reports about too old version.
1268 Bugs in old version might be fixed.  So please try latest version at
1269 first.
1270 <p>
1271 You should write <concept>good bug report</concept>.  If you write
1272 only ``FLIM does not work'', we can not find such situations.  At
1273 least, you should write name, type, variants and version of OS, emacs,
1274 APEL, FLIM, SEMI and MUA, and setting.  In addition, if error occurs,
1275 to send backtrace is very important. <cf file="emacs" node="Bugs">
1276 <p>
1277 Bug may not appear only your environment, but also in a lot of
1278 environment (otherwise it might not bug).  Therefor if you send mail
1279 to author directly, we must write a lot of mails.  So please send mail
1280 to address for tm bugs instead of author.
1281
1282 <p>
1283 Via the tm ML, you can report FLIM bugs, obtain the latest release of
1284 FLIM, and discuss future enhancements to FLIM.  To join the tm ML,
1285 send empty e-mail to:
1286
1287 <ul>
1288 <li> Japanese <mail>tm-ja-help@chamonix.jaist.ac.jp</mail>
1289 <li> English  <mail>tm-en-help@chamonix.jaist.ac.jp</mail>
1290 </ul>
1291
1292
1293 <h2> CVS based development
1294 <node> CVS
1295 <p>
1296 FLIM \e$B$N\e(B file \e$B$O\e(B CVS \e$B$r;H$C$F4IM}$5$l$F$$$^$9!#$3$N$?$a!"0J2<$NJ}K!$G:G\e(B
1297 \e$B?7$N\e(B FLIM \e$B$rF~<j$9$k$3$H$,$G$-$^$9!'\e(B
1298
1299 <verb>
1300 (0) cvs login
1301
1302     % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
1303         login
1304
1305     CVS password: [CR] # NULL string
1306
1307 (1) checkout
1308
1309     % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
1310         checkout [-r TAG] flim
1311 </verb>
1312
1313 <p>
1314 CVS \e$B$rMQ$$$?3+H/$K;22C$7$?$$J}$O\e(B
1315
1316 <ul>
1317 <li> <mail>cvs@chamonix.jaist.ac.jp</mail>
1318 </ul>
1319
1320 <noindent>
1321 \e$B$^$G!"\e(Baccount \e$BL>$H\e(B UNIX \e$B$N\e(B passwd \e$B$HF1$87A<0$N\e(B crypt \e$B2=$5$l$?\e(B password
1322 \e$B$r1h$($F8fO"Mm$/$@$5$$!#\e(B
1323
1324
1325 <h2> History of FLIM
1326 <node> History
1327 <p>
1328 FLIM \e$B$N\e(B code \e$B$N:G8E$NItJ,$O\e(B \e$B1]JB\e(B \e$B;LCR\e(B \e$B;a$,=q$$$?\e(B <file>mime.el</file>
1329 \e$B$K5/8;$7$^$9!#$3$N>.$5$J\e(B program \e$B$O\e(B Nemacs \e$B$GF0:n$9$k\e(B iso-2022-jp \e$B$N\e(B 
1330 B-encoding \e$B@lMQ$N\e(B encoded-word \e$B$NI|9f2=%W%m%0%i%`$G$7$?!#\e(B
1331 <p>
1332 \e$B$=$N8e!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B <file>mime.el</file> \e$B$r85$K\e(B
1333 <file>tiny-mime.el</file> \e$B$H$$$&%W%m%0%i%`$r=q$-$^$9!#$3$l$O!"\e(BNemacs 
1334 \e$B$H\e(B Mule \e$B$GF0:n$9$k\e(B encoded-word \e$B$NId9f2=!&I|9f2=%W%m%0%i%`$G$7$?!#\e(B
1335 <file>tiny-mime.el</file> \e$B$O\e(B B-encoding \e$B$@$1$G$J$/\e(B Q-encoding \e$B$b\e(B
1336 support \e$B$7!"$^$?!"\e(BMULE \e$B$G07$&$3$H$,$G$-$k$5$^$6$^$J\e(B <dref>MIME
1337 charset</dref> \e$B$rF1;~$K;H$&$3$H$,$G$-$^$7$?!#$3$N;~!"\e(BNemacs \e$B$H\e(B Mule \e$B$N\e(B
1338 \e$BAPJ}$r\e(B support \e$B$9$k$?$a$KMQ$$$i$l$?%F%/%K%C%/$O8e$K\e(B emu package \e$B$K$^$H\e(B
1339 \e$B$a$i$l$^$9!#\e(B
1340 <p>
1341 \e$B$3$N:"!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B <file>tiny-mime.el</file> \e$B$r$5$^$6$^$J\e(B MUA \e$B$G;H$&\e(B
1342 \e$B$?$a$N@_Dj=8$bG[I[$7$F$$$^$7$?$,!"$=$l$i$O8e$K\e(B
1343 <file>tiny-mime.el</file> \e$B$H$H$b$K#1$D$N\e(B package \e$B$K$^$H$a$i$l!"\e(Btm \e$B$H$$\e(B
1344 \e$B$&L>A0$GG[I[$5$l$^$9!#\e(B
1345 <p>
1346 \e$B<i2,\e(B \e$BCNI'\e(B \e$B$O$d$,$F!"\e(BMIME message \e$B$r1\Mw$9$k$?$a$N%W%m%0%i%`$G$"$k\e(B
1347 <file>tm-body.el</file> \e$B$r=q$-$^$9!#$3$l$O!"$9$0$K\e(B
1348 <file>tm-view.el</file> \e$B$H$$$&L>A0$KJQ$o$j$^$7$?$,!"$d$,$F!"$3$l$,\e(B
1349 <file>tiny-mime.el</file> \e$B$KBe$o$C$F!"\e(Btm \e$B$NCf3K$H$J$j$^$9!#\e(B
1350 <p>
1351 <file>tm-view.el</file> \e$B$OEvA3!"\e(BContent-Transfer-Encoding \e$B$r07$&I,MW$,\e(B
1352 \e$B$"$j$^$9!#$3$NL\E*$N$?$a$K!"\e(BMEL \e$B$,@0Hw$5$l$O$8$a$^$7$?!#\e(BBase64 \e$B$K4X$7\e(B
1353 \e$B$F$O\e(B <file>tiny-mime.el</file> \e$B$N\e(B code \e$B$,0\$5$l!"$^$?!"?7$?$K\e(B
1354 Quoted-Printable \e$B$N\e(B code \e$B$,DI2C$5$l$^$7$?!#$3$l$i$,\e(B
1355 <file>mel-b.el</file> \e$B$H\e(B <file>mel-q.el</file> \e$B$K$J$j$^$7$?!#\e(B
1356 <p>
1357 \e$B$^$?!"8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B uuencode \e$BMQ$N\e(B <file>mel-u.el</file> \e$B$,\e(B
1358 \e$BDI2C$5$l!"$=$N8e$K!">.NS\e(B \e$B=$J?\e(B \e$B;a$K$h$C$F\e(B x-gzip64 \e$BMQ$N\e(B
1359 <file>mel-g.el</file> \e$B$,DI2C$5$l$^$7$?!#\e(B
1360 <p>
1361 tm \e$B$G$O8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B <file>tiny-mime.el</file> \e$B$N:F<BAu$,9T\e(B
1362 \e$B$o$l!"$3$N2aDx$G!"\e(BSTD 11 \e$B$N\e(B parser \e$B$,=q$+$l$^$7$?!#$3$l$O!"8=:_$N\e(B 
1363 <file>std11.el</file> \e$B$KEv$?$j$^$9!#$^$?!"$3$N2aDx$G\e(B 
1364 <file>tiny-mime.el</file> \e$B$OI|9f2=$r9T$&\e(B <file>tm-ew-d.el</file> \e$B$HId\e(B
1365 \e$B9f2=$r9T$&\e(B <file>tm-ew-e.el</file> \e$B$KJ,$1$i$l$^$7$?!#$3$NN><T$,8=:_$N\e(B 
1366 <file>eword-decode.el</file> \e$B$H\e(B <file>eword-encode.el</file> \e$B$N@hAD$K\e(B
1367 \e$BEv$?$j$^$9!#\e(B
1368 <p>
1369 \e$B8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$i$K$h$C$F\e(B tm \e$B$NA4LL=q$-49$(:n6H$,9T$o$l!"$3$N2aDx$G!"\e(B
1370 tm \e$B$O\e(B APEL, MEL, SEMI, EMH, RMAIL-MIME, Gnus-MIME \e$B$J$I$KJ,$1$i$l$^$7$?!#\e(B
1371 \e$B$3$N$&$A$N\e(B MEL \e$B$,\e(B FLIM \e$B$ND>@\$N@hAD$KEv$?$j$^$9!#\e(B
1372 <p>
1373 \e$B8e$K!"\e(BAPEL \e$B$+$i\e(B <file>std11.el</file> \e$B$,0\$5$l!"$^$?!"\e(B
1374 <file>mailcap.el</file>, <file>eword-decode.el</file> \e$B$*$h$S\e(B 
1375 <file>eword-encode.el</file> \e$B$,\e(B SEMI \e$B$+$i0\$5$l!"\e(Bpackage \e$B$NL>A0$,\e(B FLIM
1376 \e$B$H$J$j$^$9!#\e(B
1377 <p>
1378 \e$B$3$ND>A0$+$iEDCf\e(B \e$BE/\e(B \e$B;a$,$h$j\e(B RFC \e$B$KCi<B$J<BAu$r=q$-;O$a!"$3$l$O!"8=:_!"\e(B
1379 FLIM \e$B$N;^$G$"$k\e(B ``FLIM-FLAM'' \e$B$H$J$C$F$$$^$9!#\e(B
1380
1381
1382 <h1> Concept Index
1383 <node> Concept Index
1384
1385 <cindex>
1386
1387
1388 <h1> Function Index
1389 <node> Function Index
1390
1391 <findex>
1392
1393
1394 <h1> Variable Index
1395 <node> Variable Index
1396
1397 <vindex>
1398
1399 </body>