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