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