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