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