Merge flim-1_11_0.
[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}) Default value is @var{buffer}.
107 @end defun
108
109
110
111 @node Entity hierarchy, Entity Attributes, Entity creation, Entity
112 @section Features about message tree
113 @cindex node-id
114 @cindex entity-number
115 @cindex message
116 @cindex root-entity
117
118 Structure of a MIME message is tree.@refill
119
120 In the tree, root node is the entity indicates all of the message.  In
121 this document, it is called @strong{root-entity} or @strong{message}.
122 In FLIM, it is indicated by buffer local variable
123 @code{mime-message-structure}.@refill
124
125 Each entity except root-entity has a parent.  An entity may have
126 children.  We can indicate an entity by relative position from a base
127 entity, based on the parent-child relationship.@refill
128
129 In addition, we can indicate an entity by absolute position of the
130 message.@refill
131
132 Each entity, which is a node of the tree, can be numbered by
133 depth and left-to-right order of the depth.
134 @example
135
136                               +-------+
137                               |  nil  |
138                               +---+---+
139               +-------------------+-------------------+
140             +-+-+               +-+-+               +-+-+
141             | 0 |               | 1 |               | 2 |
142             +-+-+               +-+-+               +-+-+
143               |         +---------+---------+         |
144            +--+--+   +--+--+   +--+--+   +--+--+   +--+--+
145            | 0.0 |   | 1.0 |   | 1.1 |   | 1.2 |   | 2.0 |
146            +-----+   +-----+   +-----+   +-----+   +-----+
147 @end example
148
149 Namely, if depth of a node is n, the node has a node-number, which is
150 consists of n integers.  In this document, it is called
151 @strong{entity-number}.  An entity-number is represented by list of
152 integer, like @code{(1 2 3)}.@refill
153
154 mime-entity has also @strong{node-id}.  A node-id is represented by
155 reversed list of entity-number.  For example, node-id corresponding with
156 1.2.3 is @code{(3 2 1)}.@refill
157
158 Each entity can be indicated by entity-number or node-id in
159 @code{mime-message-structure}.
160
161 @defvar mime-message-structure
162
163 Buffer local variable to store mime-entity structure of message.
164 @end defvar
165
166
167 @defun mime-entity-children entity
168
169 Return list of entities included in the @var{entity}.
170 @end defun
171
172
173 @defun mime-entity-parent entity  &optional  message
174
175 Return parent entity of the @var{entity}.@refill
176
177 If @var{message} is specified, it is regarded as root instead of
178 @code{mime-message-structure}.
179 @end defun
180
181
182 @defun mime-root-entity-p entity
183
184 Return non-@code{nil} if @var{entity} is root entity (message).
185 @end defun
186
187
188 @defun mime-entity-node-id entity
189
190 Return node-id of @var{entity}.
191 @end defun
192
193
194 @defun mime-entity-number entity
195
196 Return entity-number of @var{entity}.
197 @end defun
198
199
200 @defun mime-find-entity-from-number entity-number  &optional  message
201
202 Return entity from @var{entity-number} in @var{message}.@refill
203
204 If @var{message} is not specified, @code{mime-message-structure} is
205 used.
206 @end defun
207
208
209 @defun mime-find-entity-from-node-id entity-node-id  &optional  message
210
211 Return entity from @var{entity-node-id} in @var{message}.@refill
212
213 If @var{message} is not specified, @code{mime-message-structure} is
214 used.
215 @end defun
216
217
218
219 @node Entity Attributes, Entity-header, Entity hierarchy, Entity
220 @section Functions about attributes of mime-entity
221
222 @defun mime-entity-content-type entity
223
224 Return content-type of @var{entity}.  (cf. @ref{mime-content-type})
225 @end defun
226
227
228 @defun mime-entity-content-disposition entity
229
230 Return content-disposition of
231 @var{entity}. (cf. @ref{mime-content-disposition})
232 @end defun
233
234
235 @defun mime-entity-filename entity
236
237 Return file name of @var{entity}.
238 @end defun
239
240
241 @defun mime-entity-encoding entity  &optional  default-encoding
242
243 Return content-transfer-encoding of @var{entity}.
244 (cf. @ref{Content-Transfer-Encoding}) @refill
245
246 If the @var{entity} does not have Content-Transfer-Encoding field, this
247 function returns @var{default-encoding}.  If it is nil, @code{"7bit"} is
248 used as default value.
249 @end defun
250
251
252 @defun mime-entity-cooked-p entity
253
254 Return non-nil if contents of @var{entity} has been already
255 code-converted.
256 @end defun
257
258
259
260 @node Entity-header, entity formatting, Entity Attributes, Entity
261 @section Information of entity header
262
263 @defun mime-fetch-field field-name  &optional  entity
264
265 Return field-body of @var{field-name} field in header of
266 @var{entity}.@refill
267
268 The results is network representation.@refill
269
270 If @var{entity} is omitted, @code{mime-message-structure} is used as
271 default value.@refill
272
273 If @var{field-name} field is not found, this function returns
274 @code{nil}.
275 @end defun
276
277
278 @defun mime-read-field field-name  &optional  entity
279
280 Parse @var{field-name} field in header of @var{entity}, and return the
281 result.@refill
282
283 Format of result is depended on kind of field.  For non-structured
284 field, this function returns string.  For structured field, it returns
285 list corresponding with structure of the field.@refill
286
287 Strings in the result will be converted to internal representation of
288 Emacs.@refill
289
290 If @var{entity} is omitted, @code{mime-message-structure} is used as
291 default value.@refill
292
293 If @var{field-name} field is not found, this function returns
294 @code{nil}.
295 @end defun
296
297
298
299 @node entity formatting, Entity-content, Entity-header, Entity
300 @section Text presentation of entity
301
302 @defun mime-insert-header entity  &optional  invisible-fields visible-fields
303
304 Insert before point a decoded contents of header of @var{entity}.@refill
305
306 @var{invisible-fields} is list of regexps to match field-name to hide.
307 @var{visible-fields} is list of regexps to match field-name to
308 hide.@refill
309
310 If a field-name is matched with some elements of @var{invisible-fields}
311 and matched with none of @var{visible-fields}, this function don't
312 insert the field.@refill
313
314 Each encoded-word (@ref{encoded-word}) in the header is decoded.  ``Raw
315 non us-ascii characters'' are also decoded as
316 @code{default-mime-charset}.
317 @end defun
318
319
320 @defun mime-insert-text-content entity
321
322 Insert before point a contents of @var{entity} as text entity.@refill
323
324 Contents of the @var{entity} are decoded as MIME charset (@ref{MIME charset}).  If the @var{entity} does not have charset parameter of
325 Content-Type field, @code{default-mime-charset} is used as default
326 value.
327 @end defun
328
329
330 @defvar default-mime-charset
331
332 Symbol to indicate default value of MIME-charset
333 (@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 field-body of Content-Type field.
630 @end defun
631
632
633 @defun mime-read-Content-Type
634
635 Read field-body of Content-Type field from current-buffer, and return
636 parsed it.@refill
637
638 Return @code{nil} if Content-Type field is not found.
639 @end defun
640
641
642
643 @node Content-Type utility,  , Content-Type parser, Content-Type
644 @section Utility functions
645
646 @defun mime-type/subtype-string type  &optional  subtype
647
648 Return type/subtype string from @var{type} and @var{subtype}.
649 @end defun
650
651
652
653 @node Content-Disposition, Content-Transfer-Encoding, Content-Type, Top
654 @chapter Information of Content-Disposition field
655 @cindex mime-content-disposition
656 @cindex RFC 2183
657 @cindex Standards Track
658 @cindex Content-Disposition field
659
660 @strong{Content-Disposition field} is an optional field to
661 specify presentation of an entity or attributes of an entity, such as
662 file name.
663
664
665 @noindent
666 [RFC 2183]
667 @quotation
668 S. Dorner, K. Moore and R. Troost, ``Communicating Presentation
669 Information in Internet Messages: The Content-Disposition Header'',
670 August 1997, Standards Track.
671 @end quotation
672
673 FLIM provides parser for Content-Disposition field and structure
674 @strong{mime-content-disposition} to store information of
675 Content-Disposition field.
676
677
678 @menu
679 * mime-content-disposition::    mime-content-disposition structure
680 * Content-Disposition parser::  Parser for Content-Disposition field
681 @end menu
682
683 @node mime-content-disposition, Content-Disposition parser, Content-Disposition, Content-Disposition
684 @section mime-content-disposition structure
685
686 @deffn{Structure} mime-content-disposition
687
688 Structure to store information of a Content-Disposition field.@refill
689
690 Applications should use reference functions
691 @code{mime-content-disposition-SLOT} to refer information of the
692 structure.@refill
693
694 Slots of the structure are following:
695
696 @table @var
697 @item disposition-type
698 disposition-type (symbol).
699
700 @item parameters
701 parameters of Content-Disposition field
702 (association-list).
703
704 @end table
705 @end deffn
706
707
708 @defun mime-content-disposition-parameter content-disposition parameter
709
710 Return value of @var{parameter} of @var{content-disposition}.
711 @end defun
712
713
714 @defun mime-content-disposition-filename content-disposition
715
716 Return filename of @var{content-disposition}.
717 @end defun
718
719
720
721 @node Content-Disposition parser,  , mime-content-disposition, Content-Disposition
722 @section Parser for Content-Disposition field
723
724 @defun mime-parse-Content-Disposition string
725
726 Parse @var{string} as field-body of Content-Disposition field, and
727 return the result.
728 @end defun
729
730
731 @defun mime-read-Content-Disposition
732
733 Read field-body of Content-Disposition field from current-buffer,@refill
734
735 Return nil if Content-Disposition field is not found.
736 @end defun
737
738
739
740 @node Content-Transfer-Encoding, encoded-word, Content-Disposition, Top
741 @chapter Encoding Method
742 @cindex Content-Transfer-Encoding field
743
744 @strong{Content-Transfer-Encoding field} is a header field to indicate
745 body encoding of a entity.@refill
746
747 FLIM provides parser functions for Content-Transfer-Encoding field.
748 They represent information of Content-Transfer-Encoding field as
749 string.@refill
750
751 In addition, FLIM provides encoder/decoder functions by
752 Content-Transfer-Encoding.
753
754
755 @menu
756 * Content-Transfer-Encoding parser::  Parser
757 * encoder/decoder::             Encoder/decoder
758 * Encoding information::        Other utilities
759 * mel-backend::                 How to write encoder/decoder module
760 * generic function for mel-backend::  How to add encoding/decoding service
761 @end menu
762
763 @node Content-Transfer-Encoding parser, encoder/decoder, Content-Transfer-Encoding, Content-Transfer-Encoding
764 @section Parser
765
766 @defun mime-parse-Content-Transfer-Encoding string
767
768 @var{string} \e$B$r\e(B content-transfer-encoding \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
769 @end defun
770
771
772 @defun mime-read-Content-Transfer-Encoding &optional default-encoding
773
774 \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
775 \e$BJV$9!#\e(B@refill
776
777 Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O\e(B@var{default-encoding} \e$B$r\e(B
778 \e$BJV$9!#\e(B
779 @end defun
780
781
782
783 @node encoder/decoder, Encoding information, Content-Transfer-Encoding parser, Content-Transfer-Encoding
784 @section Encoder/decoder
785
786 @defun mime-encode-region start end encoding
787
788 Encode region @var{start} to @var{end} of current buffer using
789 @var{encoding}.
790 @end defun
791
792
793 @defun mime-decode-region start end encoding
794
795 Decode region @var{start} to @var{end} of current buffer using
796 @var{encoding}.
797 @end defun
798
799
800
801 @defun mime-decode-string string encoding
802
803 @var{string} \e$B$r\e(B @var{encoding} \e$B$H$7$FI|9f$7$?7k2L$rJV$7$^$9!#\e(B
804 @end defun
805
806
807
808 @defun mime-insert-encoded-file filename encoding
809
810 Insert file @var{FILENAME} encoded by @var{ENCODING} format.
811 @end defun
812
813
814 @defun mime-write-decoded-region start end filename encoding
815
816 Decode and write current region encoded by @var{encoding} into
817 @var{filename}.@refill
818
819 @var{start} and @var{end} are buffer positions.
820 @end defun
821
822
823
824 @node Encoding information, mel-backend, encoder/decoder, Content-Transfer-Encoding
825 @section Other utilities
826
827 @defun mime-encoding-list &optional  SERVICE
828
829 Return list of Content-Transfer-Encoding.@refill
830
831 If @var{service} is specified, it returns available list of
832 Content-Transfer-Encoding for it.
833 @end defun
834
835
836 @defun mime-encoding-alist &optional  SERVICE
837
838 Return table of Content-Transfer-Encoding for completion.@refill
839
840 If @var{service} is specified, it returns available list of
841 Content-Transfer-Encoding for it.
842 @end defun
843
844
845
846 @node mel-backend, generic function for mel-backend, Encoding information, Content-Transfer-Encoding
847 @section How to write encoder/decoder module
848
849 @defmac mel-define-method name args  &rest  body
850
851 Define @var{name} as a method function of (nth 1 (car (last
852 @var{args}))) backend.@refill
853
854 @var{args} is like an argument list of lambda, but (car (last
855 @var{args})) must be specialized parameter.  (car (car (last
856 @var{args}))) is name of variable and (nth 1 (car (last @var{args}))) is
857 name of backend (encoding).@refill
858
859 Example:@refill
860
861 @lisp
862 (mel-define-method mime-write-decoded-region (start end filename
863                                                     (nil "base64"))
864   "Decode and write current region encoded by base64 into FILENAME.
865 START and END are buffer positions."
866   (interactive
867    (list (region-beginning) (region-end)
868          (read-file-name "Write decoded region to file: ")))
869   (let ((str (buffer-substring start end)))
870     (with-temp-buffer
871       (insert (decode-base64-string str))
872       (write-region-as-binary (point-min) (point-max) filename)
873       )))
874 @end lisp
875 @end defmac
876
877
878 @defmac mel-define-method-function spec function
879
880 Set @var{spec}'s function definition to @var{function}.@refill
881
882 First element of @var{spec} is service.@refill
883
884 Rest of @var{args} is like an argument list of lambda, but (car (last
885 @var{args})) must be specialized parameter.  (car (car (last
886 @var{args}))) is name of variable and (nth 1 (car (last @var{args}))) is
887 name of backend (encoding).@refill
888
889 Example:@refill
890
891 @lisp
892 (mel-define-method-function (mime-encode-string string (nil "base64"))
893                             'encode-base64-string)
894 @end lisp
895 @end defmac
896
897
898
899 @node generic function for mel-backend,  , mel-backend, Content-Transfer-Encoding
900 @section How to add encoding/decoding service
901
902 @defmac mel-define-service name &optional  args doc-string
903
904 Define @var{name} as a service for Content-Transfer-Encodings.@refill
905
906 If @var{args} is specified, @var{name} is defined as a generic function
907 for the service.@refill
908
909 Example:@refill
910
911 @lisp
912 (mel-define-service encoded-text-encode-string (string encoding)
913   "Encode STRING as encoded-text using ENCODING.
914 ENCODING must be string.")
915 @end lisp
916 @end defmac
917
918
919
920 @node encoded-word, custom, Content-Transfer-Encoding, Top
921 @chapter Network representation of header
922 @cindex RFC 2047
923 @cindex Standards Track
924 @cindex RFC 2047
925
926 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
927 \e$B$G!"\e(B@strong{RFC 2047} \e$B$GDj5A$5$l$F$$$^$9!#\e(B@refill
928
929
930 @noindent
931 [RFC 2047]
932 @quotation
933 K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Three:
934 Message Header Extensions for Non-ASCII Text'', November 1996, Standards
935 Track (obsolete RFC 1521,1522,1590).
936 @end quotation
937
938 \e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B ASCII
939 (@ref{ASCII}) \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B@refill
940
941 FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
942
943
944 @menu
945 * Header encoder/decoder::      Header encoding/decoding
946 @end menu
947
948 @node Header encoder/decoder,  , encoded-word, encoded-word
949 @section Header encoding/decoding
950
951 @defun eword-encode-header &optional  code-conversion separator
952
953 Decode MIME encoded-words in header fields.@refill
954
955 If @var{code-conversion} is @code{nil}, it decodes only encoded-words.
956 If it is mime-charset, it decodes non-ASCII bit patterns as the
957 mime-charset.  Otherwise it decodes non-ASCII bit patterns as the
958 default-mime-charset.@refill
959
960 If @var{separator} is not nil, it is used as header separator.
961 @end defun
962
963
964 @defun eword-encode-header &optional  code-conversion
965
966 Encode header fields to network representation, such as MIME
967 encoded-word.@refill
968
969 It refer variable @code{eword-field-encoding-method-alist}.
970 @end defun
971
972
973
974 @node custom, Appendix, encoded-word, Top
975 @chapter Various Customization
976
977 @deffn{group} mime
978
979 MIME \e$B4XO"5!G=$K4X$9$k\e(B group.@refill
980
981 @code{mail} \e$B$H\e(B @code{news} \e$B$KB0$9$k!#\e(B
982 @end deffn
983
984
985 @defvar mime-temp-directory
986
987 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 
988 directory.@refill
989
990 \e$B4D6-JQ?t\e(B @code{MIME_TMP_DIR}, @code{TM_TMP_DIR}, @code{TMPDIR},
991 @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
992 \e$BMQ$$$k!#2?$b@_Dj$5$l$F$$$J$$>l9g!"\e(B@code{"/tmp/"} \e$B$rMQ$$$k!#\e(B
993 @end defvar
994
995
996
997 @node Appendix, Concept Index, custom, Top
998 @chapter Appendix
999
1000
1001 @menu
1002 * Glossary::                    
1003 * Bug report::                  How to report bugs
1004 * CVS::                         CVS based development
1005 * History::                     History of FLIM
1006 @end menu
1007
1008 @node Glossary, Bug report, Appendix, Appendix
1009 @section Glossary
1010
1011
1012 @menu
1013 * 7bit::                        
1014 * 8bit::                        
1015 * ASCII::                       
1016 * Base64::                      
1017 * binary::                      
1018 * coded character set::         Coded character set, Character code
1019 * media-type::                  
1020 * message::                     
1021 * MIME::                        
1022 * MIME charset::                
1023 * MTA::                         
1024 * MUA::                         
1025 * Quoted-Printable::            
1026 * RFC 822::                     
1027 * RFC 1036::                    
1028 * RFC 2045::                    
1029 * RFC 2046::                    
1030 * RFC 2048::                    
1031 * RFC 2049::                    
1032 * plain text::                  
1033 * us-ascii::                    
1034 @end menu
1035
1036 @node 7bit, 8bit, Glossary, Glossary
1037 @subsection 7bit
1038 @cindex 7bit (textual) string
1039 @cindex 7bit data
1040 @cindex 7bit
1041
1042 @strong{7bit} means any integer between 0 .. 127.@refill
1043
1044 Any data represented by 7bit integers is called @strong{7bit data}.@refill
1045
1046 Textual string consisted of Control characters between 0 .. 31 and 127,
1047 and space represented by 32, and graphic characters between 33 .. 236
1048 are called @strong{7bit (textual) string}.@refill
1049
1050 Conventional Internet MTA (@ref{MTA}) can translate 7bit data, so it is
1051 no need to translate by Quoted-Printable (@ref{Quoted-Printable}) or
1052 Base64 (@ref{Base64}) for 7bit data.@refill
1053
1054 However if there are too long lines, it can not translate by 7bit MTA
1055 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
1056 ``7bit data'' has a line more than 999 bytes, it is regarded as binary
1057 (@ref{binary}).  For example, Postscript file should be encoded by
1058 Quoted-Printable.
1059
1060
1061 @node 8bit, ASCII, 7bit, Glossary
1062 @subsection 8bit
1063 @cindex 8bit (textual) string
1064 @cindex 8bit data
1065 @cindex 8bit
1066
1067 @strong{8bit} means any integer between 0 .. 255.@refill
1068
1069 Any data represented by 8bit integers is called @strong{8bit data}.@refill
1070
1071 Textual string consisted of Control characters between 0 .. 31, 127, and
1072 128 .. 159, and space represented by 32, and graphic characters between
1073 33 .. 236 and 160 .. 255 are called @strong{8bit (textual) string}.@refill
1074
1075 For example, iso-8859-1 (@ref{iso-8859-1}) or euc-kr (@ref{euc-kr}) are
1076 coded-character-set represented by 8bit textual string.@refill
1077
1078 Traditional Internet MTA (@ref{MTA}) can translate only 7bit
1079 (@ref{7bit}) data, so if a 8bit data will be translated such MTA, it
1080 must be encoded by Quoted-Printable (@ref{Quoted-Printable}) or Base64
1081 (@ref{Base64}).@refill
1082
1083 However 8bit MTA are increasing today.@refill
1084
1085 However if there are too long lines, it can not translate by 8bit MTA
1086 even if it is 8bit data.  RFC 2045 (@ref{RFC 2045}) require lines in
1087 8bit data must be less than 998 bytes.  So if a ``8bit data'' has a line
1088 more than 999 bytes, it is regarded as binary (@ref{binary}), so it must
1089 be encoded by Base64 or Quoted-Printable.
1090
1091
1092 @node ASCII, Base64, 8bit, Glossary
1093 @subsection ASCII
1094 @cindex ANSI X3.4:1986
1095 @cindex ASCII
1096 @cindex ASCII
1097
1098 @strong{ASCII} is a 94-character set contains primary latin characters
1099 (A-Z, a-z), numbers and some characters.  It is a standard of the United
1100 States of America.  It is a variant of ISO 646 (@ref{ISO 646}).
1101
1102
1103 @noindent
1104 [ASCII]
1105 @quotation
1106 ``Coded Character Set -- 7-Bit American Standard Code for Information
1107 Interchange'', ANSI X3.4:1986.
1108 @end quotation
1109
1110
1111
1112 @node Base64, binary, ASCII, Glossary
1113 @subsection Base64
1114 @cindex pad
1115 @cindex Base64
1116
1117 @strong{Base64} is a transfer encoding method of MIME (@ref{MIME})
1118 defined in RFC 2045 (@ref{RFC 2045}).@refill
1119
1120 The encoding process represents 24-bit groups of input bits as output
1121 strings of 4 encoded characters.  Encoded characters represent integer 0
1122 .. 63 or @strong{pad}.  Base64 data must be 4 * n bytes, so pad is used
1123 to adjust size.@refill
1124
1125 These 65 characters are subset of all versions of ISO 646, including
1126 US-ASCII, and all versions of EBCDIC.  So it is safe even if it is
1127 translated by non-Internet gateways.
1128
1129
1130 @node binary, coded character set, Base64, Glossary
1131 @subsection binary
1132 @cindex binary
1133
1134 Any byte stream is called @strong{binary}.@refill
1135
1136 It does not require structureof lines.  It differs from from 8bit
1137 (@ref{8bit}).@refill
1138
1139 In addition, if line structured data contain too long line (more than
1140 998 bytes), it is regarded as binary.
1141
1142
1143 @node coded character set, media-type, binary, Glossary
1144 @subsection Coded character set, Character code
1145
1146 A set of unambiguous rules that establishes a character set and the
1147 one-to-one relationship between the characters of the set and their
1148 bit combinations.
1149
1150
1151 @node media-type, message, coded character set, Glossary
1152 @subsection media-type
1153 @cindex x-token
1154 @cindex message
1155 @cindex multipart
1156 @cindex application
1157 @cindex video
1158 @cindex audio
1159 @cindex image
1160 @cindex text
1161 @cindex subtype
1162 @cindex type
1163 @cindex media-type
1164
1165 @strong{media-type} specifies the nature of the data in the body of MIME
1166 (@ref{MIME}) entity (@ref{entity}).  It consists of @strong{type} and
1167 @strong{subtype}.  It is defined in RFC 2046 (@ref{RFC 2046}).@refill
1168
1169 Currently there are following standard primary-types:
1170
1171 @itemize @bullet
1172 @item
1173 @strong{text}
1174 @item
1175 @strong{image}
1176 @item
1177 @strong{audio}
1178 @item
1179 @strong{video}
1180 @item
1181 @strong{application}
1182 @item
1183 @strong{multipart} (@ref{multipart})
1184 @item
1185 @strong{message}
1186 @end itemize
1187
1188
1189 And there are various subtypes, for example, application/octet-stream,
1190 audio/basic, image/jpeg, multipart/mixed (@ref{multipart/mixed}),
1191 text/plain (@ref{text/plain}), video/mpeg...  @refill
1192
1193 You can refer registered media types at MEDIA TYPES
1194 (ftp://ftp.isi.edu/in-notes/iana/assignments/media-types).@refill
1195
1196 In addition, you can use private type or subtype using @strong{x-token},
1197 which as the prefix `x-'.  However you can not use them in
1198 public.@refill
1199
1200 (cf. @ref{Content-Type field})
1201
1202
1203
1204 @node message, MIME, media-type, Glossary
1205 @subsection message
1206
1207 In this document, it means mail defined in RFC 822 (@ref{RFC 822}) and
1208 news message defined in RFC 1036 (@ref{RFC 1036}).
1209
1210
1211 @node MIME, MIME charset, message, Glossary
1212 @subsection MIME
1213 @cindex Multipurpose Internet Mail Extensions
1214
1215 MIME stands for @strong{Multipurpose Internet Mail Extensions}, it is an
1216 extension for RFC 822 (@ref{RFC 822}).@refill
1217
1218 According to RFC 2045:@refill
1219
1220 STD 11, RFC 822, defines a message representation protocol specifying
1221 considerable detail about US-ASCII message headers, and leaves the
1222 message content, or message body, as flat US-ASCII text.  This set of
1223 documents, collectively called the Multipurpose Internet Mail
1224 Extensions, or MIME, redefines the format of messages to allow for
1225
1226 @enumerate
1227 @item
1228 textual message bodies in character sets other than US-ASCII,
1229 @item
1230 an extensible set of different formats for non-textual message
1231 bodies,
1232 @item
1233 multi-part message bodies, and
1234 @item
1235 textual header information in character sets other than US-ASCII.
1236 @end enumerate
1237
1238
1239 It is defined in RFC 2045 (@ref{RFC 2045}), RFC 2046 (@ref{RFC 2046}),
1240 RFC 2047 (@ref{encoded-word}), RFC 2048 (@ref{RFC 2048}) and RFC 2049
1241 (@ref{RFC 2049}).
1242
1243
1244 @node MIME charset, MTA, MIME, Glossary
1245 @subsection MIME charset
1246
1247 Coded character set (@ref{coded character set}) used in Content-Type
1248 field (@ref{Content-Type field}) or charset parameter of encoded-word
1249 (@ref{encoded-word}).@refill
1250
1251 It is defined in RFC 2045 (@ref{RFC 2045}).@refill
1252
1253 iso-2022-jp (@ref{iso-2022-jp}) or euc-kr (@ref{euc-kr}) are kinds of
1254 it.  (In this document, MIME charsets are written by small letters to
1255 distinguish graphic character set (@ref{graphic character set}).  For
1256 example, ISO 8859-1 is a graphic character set, and iso-8859-1 is a MIME
1257 charset)
1258
1259
1260 @node MTA, MUA, MIME charset, Glossary
1261 @subsection MTA
1262 @cindex Message Transfer Agent
1263
1264 @strong{Message Transfer Agent}.  It means mail transfer programs
1265 (ex. sendmail) and news servers.@refill
1266
1267 (cf. @ref{MUA})
1268
1269
1270
1271 @node MUA, Quoted-Printable, MTA, Glossary
1272 @subsection MUA
1273 @cindex Message User Agent
1274
1275 @strong{Message User Agent}.  It means mail readers and news
1276 readers.@refill
1277
1278 (cf. @ref{MTA})
1279
1280
1281
1282 @node Quoted-Printable, RFC 822, MUA, Glossary
1283 @subsection Quoted-Printable
1284 @cindex Quoted-Printable
1285
1286 @strong{Quoted-Printable} is a transfer encoding method of MIME
1287 (@ref{MIME}) defined in RFC 2045 (@ref{RFC 2045}).@refill
1288
1289 If the data being encoded are mostly US-ASCII text, the encoded form of
1290 the data remains largely recognizable by humans.@refill
1291
1292 (cf. @ref{Base64})
1293
1294
1295
1296 @node RFC 822, RFC 1036, Quoted-Printable, Glossary
1297 @subsection RFC 822
1298 @cindex RFC 822
1299 @cindex STD 11
1300 @cindex Internet mail
1301 @cindex Internet message
1302 @cindex message header
1303
1304 A RFC defines format of Internet mail message, mainly @strong{message header}.
1305
1306 @noindent
1307 @strong{[Memo]}
1308 @quotation
1309
1310 news message is based on RFC 822, so @strong{Internet message} may be
1311 more suitable than @strong{Internet mail} .
1312 @end quotation
1313
1314
1315
1316 @noindent
1317 [RFC 822]
1318 @quotation
1319 D. Crocker, ``Standard for the Format of ARPA Internet Text Messages'',
1320 August 1982, STD 11.
1321 @end quotation
1322
1323
1324
1325 @node RFC 1036, RFC 2045, RFC 822, Glossary
1326 @subsection RFC 1036
1327 @cindex RFC 1036
1328 @cindex USENET
1329
1330 A RFC defines format of USENET message.  It is a subset of RFC 822
1331 (@ref{RFC 822}).  It is not Internet standard, but a lot of netnews
1332 excepting Usenet uses it.
1333
1334
1335 @noindent
1336 [USENET: RFC 1036]
1337 @quotation
1338 M. Horton and R. Adams, ``Standard for Interchange of USENET Messages'',
1339 December 1987, (obsolete RFC 850).
1340 @end quotation
1341
1342
1343
1344 @node RFC 2045, RFC 2046, RFC 1036, Glossary
1345 @subsection RFC 2045
1346 @cindex RFC 2045
1347 @cindex Standards Track
1348
1349
1350 @noindent
1351 [RFC 2045]
1352 @quotation
1353 N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
1354 (MIME) Part One: Format of Internet Message Bodies'', November 1996,
1355 Standards Track (obsolete RFC 1521, 1522, 1590).
1356 @end quotation
1357
1358
1359
1360 @node RFC 2046, RFC 2048, RFC 2045, Glossary
1361 @subsection RFC 2046
1362 @cindex RFC 2046
1363 @cindex Standards Track
1364
1365
1366 @noindent
1367 [RFC 2046]
1368 @quotation
1369 N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
1370 (MIME) Part Two: Media Types'', November 1996, Standards Track (obsolete
1371 RFC 1521, 1522, 1590).
1372 @end quotation
1373
1374
1375
1376 @node RFC 2048, RFC 2049, RFC 2046, Glossary
1377 @subsection RFC 2048
1378 @cindex RFC 2048
1379 @cindex Standards Track
1380
1381
1382 @noindent
1383 [RFC 2048]
1384 @quotation
1385 N. Freed, J. Klensin and J. Postel, ``Multipurpose Internet Mail
1386 Extensions (MIME) Part Four: Registration Procedures'', November 1996,
1387 Standards Track (obsolete RFC 1521, 1522, 1590).
1388 @end quotation
1389
1390
1391
1392 @node RFC 2049, plain text, RFC 2048, Glossary
1393 @subsection RFC 2049
1394 @cindex RFC 2049
1395 @cindex Standards Track
1396
1397
1398 @noindent
1399 [RFC 2049]
1400 @quotation
1401 N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
1402 (MIME) Part Five: Conformance Criteria and Examples'', November 1996,
1403 Standards Track (obsolete RFC 1521, 1522, 1590).
1404 @end quotation
1405
1406
1407
1408 @node plain text, us-ascii, RFC 2049, Glossary
1409 @subsection plain text
1410
1411 A textual data represented by only coded character set (@ref{coded character set}).  It does not have information about font or
1412 typesetting.  (cf. @ref{text/plain})
1413
1414
1415
1416 @node us-ascii,  , plain text, Glossary
1417 @subsection us-ascii
1418 @cindex ASCII
1419 @cindex us-ascii
1420
1421 A MIME charset (@ref{MIME charset}) for primary Latin script mainly
1422 written by English or other languages.@refill
1423
1424 It is a 7bit coded character set (@ref{coded character set}) based on
1425 ISO 2022 (@ref{ISO 2022}), it contains only ASCII (@ref{ASCII}) and code
1426 extension (@ref{code extension}) is not allowed.@refill
1427
1428 It is standard coded character set of Internet mail.  If MIME charset is
1429 not specified, @strong{us-ascii} is used as default.@refill
1430
1431 In addition, @strong{ASCII} of RFC 822 (@ref{RFC 822}) should be
1432 interpreted as us-ascii.
1433
1434
1435 @node Bug report, CVS, Glossary, Appendix
1436 @section How to report bugs
1437 @cindex good bug report
1438
1439 If you write bug-reports and/or suggestions for improvement, please
1440 send them to the tm Mailing List:
1441
1442 @itemize @bullet
1443 @item
1444  Japanese <bug-tm-ja@@chamonix.jaist.ac.jp>
1445 @item
1446  English <bug-tm-en@@chamonix.jaist.ac.jp>
1447 @end itemize
1448
1449
1450 Notice that, we do not welcome bug reports about too old version.  Bugs
1451 in old version might be fixed.  So please try latest version at
1452 first.@refill
1453
1454 You should write @strong{good bug report}.  If you write only ``FLIM
1455 does not work'', we can not find such situations.  At least, you should
1456 write name, type, variants and version of OS, emacs, APEL, FLIM, SEMI
1457 and MUA, and setting.  In addition, if error occurs, to send backtrace
1458 is very important. (cf. @ref{(emacs)Bugs}) @refill
1459
1460 Bug may not appear only your environment, but also in a lot of
1461 environment (otherwise it might not bug).  Therefor if you send mail
1462 to author directly, we must write a lot of mails.  So please send mail
1463 to address for tm bugs instead of author.
1464
1465 Via the tm ML, you can report FLIM bugs, obtain the latest release of
1466 FLIM, and discuss future enhancements to FLIM.  To join the tm ML,
1467 send empty e-mail to:
1468
1469 @itemize @bullet
1470 @item
1471  Japanese <tm-ja-help@@chamonix.jaist.ac.jp>
1472 @item
1473  English  <tm-en-help@@chamonix.jaist.ac.jp>
1474 @end itemize
1475
1476
1477
1478 @node CVS, History, Bug report, Appendix
1479 @section CVS based development
1480
1481 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
1482 \e$B?7$N\e(B FLIM \e$B$rF~<j$9$k$3$H$,$G$-$^$9!'\e(B
1483
1484 @example
1485 (0) cvs login
1486
1487     % cvs -d :pserver:anonymous@@chamonix.jaist.ac.jp:/hare/cvs/root \
1488         login
1489
1490     CVS password: [CR] # NULL string
1491
1492 (1) checkout
1493
1494     % cvs -d :pserver:anonymous@@chamonix.jaist.ac.jp:/hare/cvs/root \
1495         checkout [-r TAG] flim
1496 @end example
1497
1498
1499 CVS \e$B$rMQ$$$?3+H/$K;22C$7$?$$J}$O\e(B
1500
1501 @itemize @bullet
1502 @item
1503  <cvs@@chamonix.jaist.ac.jp>
1504 @end itemize
1505
1506 @noindent
1507 \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
1508 \e$B$r1h$($F8fO"Mm$/$@$5$$!#\e(B
1509
1510
1511 @node History,  , CVS, Appendix
1512 @section History of FLIM
1513
1514 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
1515 \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 
1516 \e$B@lMQ$N\e(B encoded-word \e$B$NI|9f2=%W%m%0%i%`$G$7$?!#\e(B@refill
1517
1518 \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
1519 \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
1520 \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 
1521 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
1522 charset (@ref{MIME charset}) \e$B$rF1;~$K;H$&$3$H$,$G$-$^$7$?!#$3$N;~!"\e(B
1523 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
1524 package \e$B$K$^$H$a$i$l$^$9!#\e(B@refill
1525
1526 \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
1527 \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 
1528 package \e$B$K$^$H$a$i$l!"\e(Btm \e$B$H$$$&L>A0$GG[I[$5$l$^$9!#\e(B@refill
1529
1530 \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
1531 @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
1532 \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
1533 \e$B3K$H$J$j$^$9!#\e(B@refill
1534
1535 @file{tm-view.el} \e$B$OEvA3!"\e(BContent-Transfer-Encoding \e$B$r07$&I,MW$,$"$j$^$9!#\e(B
1536 \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 
1537 @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 
1538 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
1539 \e$B$^$7$?!#\e(B@refill
1540
1541 \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
1542 \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
1543 \e$B$7$?!#\e(B@refill
1544
1545 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
1546 \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 
1547 @file{std11.el} \e$B$KEv$?$j$^$9!#$^$?!"$3$N2aDx$G\e(B @file{tiny-mime.el} \e$B$OI|\e(B
1548 \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
1549 \e$B$^$7$?!#$3$NN><T$,8=:_$N\e(B @file{eword-decode.el} \e$B$H\e(B 
1550 @file{eword-encode.el} \e$B$N@hAD$KEv$?$j$^$9!#\e(B@refill
1551
1552 \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 
1553 \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
1554 \e$B$N$&$A$N\e(B MEL \e$B$,\e(B FLIM \e$B$ND>@\$N@hAD$KEv$?$j$^$9!#\e(B@refill
1555
1556 \e$B8e$K!"\e(BAPEL \e$B$+$i\e(B @file{std11.el} \e$B$,0\$5$l!"$^$?!"\e(B@file{mailcap.el},
1557 @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
1558 package \e$B$NL>A0$,\e(B FLIM\e$B$H$J$j$^$9!#\e(B@refill
1559
1560 \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
1561 FLIM \e$B$N;^$G$"$k\e(B ``FLIM-FLAM'' \e$B$H$J$C$F$$$^$9!#\e(B
1562
1563
1564 @node Concept Index, Function Index, Appendix, Top
1565 @chapter Concept Index
1566
1567 @printindex cp
1568
1569 @node Function Index, Variable Index, Concept Index, Top
1570 @chapter Function Index
1571
1572 @printindex fn
1573
1574 @node Variable Index,  , Function Index, Top
1575 @chapter Variable Index
1576
1577 @printindex vr
1578 @bye