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}
6 @title FLIM 1.10 Manual about MIME Features
7 @author MORIOKA Tomohiko <morioka@@jaist.ac.jp>
10 @node Top, Introduction, (dir), (dir)
11 @top FLIM 1.10 Manual about MIME Features
15 This file documents MIME features of FLIM, a Internet message
16 parsing/encoding library for GNU Emacs.
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
34 @node Introduction, How to use, Top, Top
35 @chapter What is FLIM?
37 FLIM is a library to provide basic features about message
38 representation or encoding.
41 @node How to use, Entity, Introduction, Top
42 @chapter How to use MIME features
44 Please eval following to use MIME features provided by FLIM:
52 @node Entity, Content-Type, How to use, Top
53 @chapter Message and Entity
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
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
67 FLIM uses @strong{mime-entity} structure to represent
68 information of entity. In this document, it is called simply
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
83 @node Entity creation, Entity hierarchy, Entity, Entity
84 @section Functions to create mime-entity
86 @defun mime-open-entity &optional type location
88 Open an entity and return it.@refill
90 @var{type} is representation-type. (cf. @ref{mm-backend}) @refill
92 @var{location} is location of entity. Specification of it is depended
93 on representation-type.
97 @defun mime-parse-buffer &optional buffer type
99 Parse @var{buffer} as message, and set the result to buffer local
100 variable @code{mime-message-structure} of @var{buffer} as
103 If @var{buffer} is omitted, current buffer is used.@refill
105 @var{type} is representation-type of created
106 mime-entity. (cf. @ref{mm-backend})
107 Default value is @var{buffer}.
112 @node Entity hierarchy, Entity Attributes, Entity creation, Entity
113 @section Features about message tree
115 @cindex entity-number
119 Structure of a MIME message is tree.@refill
121 In the tree, root node is the entity indicates all of the message. In
122 this document, it is called @strong{root-entity} or @strong{message}.
123 In FLIM, it is indicated by buffer local variable
124 @code{mime-message-structure}.@refill
126 Each entity except root-entity has a parent. An entity may have
127 children. We can indicate an entity by relative position from a base
128 entity, based on the parent-child relationship.@refill
130 In addition, we can indicate an entity by absolute position of the
133 Each entity, which is a node of the tree, can be numbered by
134 depth and left-to-right order of the depth.
140 +-------------------+-------------------+
144 | +---------+---------+ |
145 +--+--+ +--+--+ +--+--+ +--+--+ +--+--+
146 | 0.0 | | 1.0 | | 1.1 | | 1.2 | | 2.0 |
147 +-----+ +-----+ +-----+ +-----+ +-----+
150 Namely, if depth of a node is n, the node has a node-number, which is
151 consists of n integers. In this document, it is called
152 @strong{entity-number}. An entity-number is represented by list of
153 integer, like @code{(1 2 3)}.@refill
155 mime-entity has also @strong{node-id}. A node-id is represented by
156 reversed list of entity-number. For example, node-id corresponding with
157 1.2.3 is @code{(3 2 1)}.@refill
159 Each entity can be indicated by entity-number or node-id in
160 @code{mime-message-structure}.
162 @defvar mime-message-structure
164 Buffer local variable to store mime-entity structure of message.
168 @defun mime-entity-children entity
170 Return list of entities included in the @var{entity}.
174 @defun mime-entity-parent entity &optional message
176 Return parent entity of the @var{entity}.@refill
178 If @var{message} is specified, it is regarded as root instead of
179 @code{mime-message-structure}.
183 @defun mime-root-entity-p entity
185 Return non-@code{nil} if @var{entity} is root entity (message).
189 @defun mime-entity-node-id entity
191 Return node-id of @var{entity}.
195 @defun mime-entity-number entity
197 Return entity-number of @var{entity}.
201 @defun mime-find-entity-from-number entity-number &optional message
203 Return entity from @var{entity-number} in @var{message}.@refill
205 If @var{message} is not specified, @code{mime-message-structure} is
210 @defun mime-find-entity-from-node-id entity-node-id &optional message
212 Return entity from @var{entity-node-id} in @var{message}.@refill
214 If @var{message} is not specified, @code{mime-message-structure} is
220 @node Entity Attributes, Entity-header, Entity hierarchy, Entity
221 @section Functions about attributes of mime-entity
223 @defun mime-entity-content-type entity
225 Return content-type of @var{entity}. (cf. @ref{mime-content-type})
229 @defun mime-entity-content-disposition entity
231 Return content-disposition of
232 @var{entity}. (cf. @ref{mime-content-disposition})
236 @defun mime-entity-filename entity
238 Return file name of @var{entity}.
242 @defun mime-entity-encoding entity &optional default-encoding
244 Return content-transfer-encoding of @var{entity}.
245 (cf. @ref{Content-Transfer-Encoding}) @refill
247 If the @var{entity} does not have Content-Transfer-Encoding field, this
248 function returns @var{default-encoding}. If it is nil, @code{"7bit"} is
249 used as default value.
253 @defun mime-entity-cooked-p entity
255 Return non-nil if contents of @var{entity} has been already
261 @node Entity-header, entity formatting, Entity Attributes, Entity
262 @section Information of entity header
264 @defun mime-fetch-field field-name &optional entity
266 Return field-body of @var{field-name} field in header of
269 The results is network representation.@refill
271 If @var{entity} is omitted, @code{mime-message-structure} is used as
272 default value.@refill
274 If @var{field-name} field is not found, this function returns
279 @defun mime-read-field field-name &optional entity
281 Parse @var{field-name} field in header of @var{entity}, and return the
284 Format of result is depended on kind of field. For non-structured
285 field, this function returns string. For structured field, it returns
286 list corresponding with structure of the field.@refill
288 Strings in the result will be converted to internal representation of
291 If @var{entity} is omitted, @code{mime-message-structure} is used as
292 default value.@refill
294 If @var{field-name} field is not found, this function returns
300 @node entity formatting, Entity-content, Entity-header, Entity
301 @section Text presentation of entity
303 @defun mime-insert-header entity &optional invisible-fields visible-fields
305 Insert before point a decoded contents of header of @var{entity}.@refill
307 @var{invisible-fields} is list of regexps to match field-name to hide.
308 @var{visible-fields} is list of regexps to match field-name to
311 If a field-name is matched with some elements of @var{invisible-fields}
312 and matched with none of @var{visible-fields}, this function don't
313 insert the field.@refill
315 Each encoded-word (@ref{encoded-word}) in the header is decoded. ``Raw
316 non us-ascii characters'' are also decoded as
317 @code{default-mime-charset}.
321 @defun mime-insert-text-content entity
323 Insert before point a contents of @var{entity} as text entity.@refill
325 Contents of the @var{entity} are decoded as MIME charset (@ref{MIME charset}). If the @var{entity} does not have charset parameter of
326 Content-Type field, @code{default-mime-charset} is used as default
331 @defvar default-mime-charset
333 Symbol to indicate default value of MIME-charset
334 (@ref{MIME-charset}).@refill
336 It is used when MIME-charset is not specified.@refill
338 It is originally variable of APEL.
343 @node Entity-content, Entity buffer, entity formatting, Entity
344 @section Contents of Entity
346 @defun mime-entity-content entity
348 Return content of @var{entity} as byte sequence.
352 @defun mime-write-entity-content entity filename
354 Write content of @var{entity} into @var{filename}.
358 @defun mime-write-entity entity filename
360 Write representation of @var{entity} into @var{filename}.
364 @defun mime-write-entity-body entity filename
366 Write body of @var{entity} into @var{filename}.
371 @node Entity buffer, mm-backend, Entity-content, Entity
372 @section Entity as buffer representation
374 @defun mime-entity-buffer entity
376 Return buffer, which contains @var{entity}.
380 @defun mime-entity-point-min entity
382 Return the start point of @var{entity} in the buffer which contains
387 @defun mime-entity-point-max entity
389 Return the end point of @var{entity} in the buffer which contains
394 @defun mime-entity-header-start entity
396 Return the start point of header of @var{entity} in the buffer which
397 contains @var{entity}.
401 @defun mime-entity-header-end entity
403 Return the end point of header of @var{entity} in the buffer which
404 contains @var{entity}.
408 @defun mime-entity-body-start entity
410 Return the start point of body of @var{entity} in the buffer which
411 contains @var{entity}.
415 @defun mime-entity-body-end entity
417 Return the end point of body of @var{entity} in the buffer which
418 contains @var{entity}.
423 @node mm-backend, , Entity buffer, Entity
424 @section Entity representations and implementations
426 @cindex entity processing method
427 @cindex representation-type
429 Entity is an abstraction. It is designed to use various data
430 representations for their purposes.@refill
432 Each entity has @strong{representation-type}. It must be specified when
433 an entity is created. (cf. @ref{Entity Creation}) @refill
435 Functions about entity are implemented by request processing to the
436 entity. Each entity knows its representation-type. Each entity calls
437 processing function corresponding with the representation-type. Such
438 kind of function is called @strong{entity processing method}. A module,
439 consists of them corresponding with a representation-type, is called
440 @strong{mm-backend}.@refill
442 Module name of each mm-backend consists of the prefix @code{mm}
443 and its representation-type. The module is required automatically
444 when its entity is created at first.
448 * Request for entity:: Message-passing for entity
449 * mm-backend module:: Definition of mm-backend
452 @node Request for entity, mm-backend module, mm-backend, mm-backend
453 @subsection Message-passing for entity
455 @defun mime-entity-send entity message &rest args
457 Send @var{message} to @var{entity} with @var{args}, and return the
460 @var{args} is arguments of the @var{message}.
465 @node mm-backend module, , Request for entity, mm-backend
466 @subsection Definition of mm-backend
468 @defmac mm-define-backend type &optional parents
470 Define @var{type} as a mm-backend.@refill
472 If @var{PARENTS} is specified, @var{type} inherits parents. Each parent
473 must be representation-type.@refill
478 (mm-define-backend chao (generic))
483 @defmac mm-define-method name args &rest body
485 Define @var{name} as a method function of (nth 1 (car @var{args}))
488 @var{args} is like an argument list of lambda, but (car @var{args}) must
489 be specialized parameter. (car (car @var{args})) is name of variable
490 and (nth 1 (car @var{args})) is name of backend
491 (representation-type).@refill
496 (mm-define-method entity-cooked-p ((entity chao)) nil)
502 @node Content-Type, Content-Disposition, Entity, Top
503 @chapter Information of Content-Type field
504 @cindex mime-content-type
505 @cindex Content-Type field
507 @strong{Content-Type field} is a field to indicate kind of contents or
508 data format, such as media-type (@ref{media-type}) and MIME charset. It
509 is defined in RFC 2045 (@ref{RFC 2045}).
515 Historically, Content-Type field was proposed in RFC 1049. In it,
516 Content-Type did not distinguish type and subtype, and there are no
517 mechanism to represent kind of character code like MIME charset.
521 FLIM provides parser for Content-Type field and structure
522 @strong{mime-content-type} to store information of
527 * Content-Type field:: Format of Content-Type field
528 * mime-content-type:: mime-content-type structure
529 * Content-Type parser:: Parser
530 * Content-Type utility:: Utility functions
533 @node Content-Type field, mime-content-type, Content-Type, Content-Type
534 @section Format of Content-Type field
539 Format of Content-Type field is defined as follows:
542 ``Content-Type'' ``:'' @strong{type} ``/''
543 @strong{subtype} *( ``;'' @strong{parameter} )
550 Content-Type: image/jpeg
557 Content-Type: text/plain; charset=iso-2022-jp
561 `type' and `subtype' indicate format of an entity. In this document,
562 pair of them is called `media-type'. `image/jpeg' or `text/plain' is
569 If an entity does not have Content-Type field, it is regarded as
574 Content-Type: text/plain; charset=us-ascii
584 @node mime-content-type, Content-Type parser, Content-Type field, Content-Type
585 @section mime-content-type structure
587 @deffn{Structure} mime-content-type
589 Structure to store information of a Content-Type field.@refill
591 Applications should use reference functions
592 @code{mime-content-type-SLOT} to refer information of the
595 Slots of the structure are following:
599 primary type of media-type (symbol).
602 subtype of media-type (symbol).
605 parameters of Content-Type field (association-list).
611 @defun make-mime-content-type type subtype
614 Constructor of content-type.
618 @defun mime-content-type-parameter content-type parameter
620 Return value of @var{parameter} of @var{content-type}.
625 @node Content-Type parser, Content-Type utility, mime-content-type, Content-Type
628 @defun mime-parse-Content-Type string
630 Parse @var{string} as a field-body of Content-Type field, and return the
631 result as mime-content-type (@ref{mime-content-type}) structure.
635 @defun mime-read-Content-Type
637 Parse Content-Type field of the current buffer, and return the result as
638 mime-content-type (@ref{mime-content-type}) structure.@refill
640 Return @code{nil} if Content-Type field is not found.
645 @node Content-Type utility, , Content-Type parser, Content-Type
646 @section Utility functions
648 @defun mime-type/subtype-string type &optional subtype
650 Return type/subtype string from @var{type} and @var{subtype}.
655 @node Content-Disposition, Content-Transfer-Encoding, Content-Type, Top
656 @chapter Information of Content-Disposition field
657 @cindex mime-content-disposition
659 @cindex Standards Track
660 @cindex Content-Disposition field
662 @strong{Content-Disposition field} is an optional field to
663 specify presentation of an entity or attributes of an entity, such as
670 S. Dorner, K. Moore and R. Troost, ``Communicating Presentation
671 Information in Internet Messages: The Content-Disposition Header'',
672 August 1997, Standards Track.
675 FLIM provides parser for Content-Disposition field and structure
676 @strong{mime-content-disposition} to store information of
677 Content-Disposition field.
681 * mime-content-disposition:: mime-content-disposition structure
682 * Content-Disposition parser:: Parser for Content-Disposition field
685 @node mime-content-disposition, Content-Disposition parser, Content-Disposition, Content-Disposition
686 @section mime-content-disposition structure
688 @deffn{Structure} mime-content-disposition
690 Structure to store information of a Content-Disposition field.@refill
692 Applications should use reference functions
693 @code{mime-content-disposition-SLOT} to refer information of the
696 Slots of the structure are following:
699 @item disposition-type
700 disposition-type (symbol).
703 parameters of Content-Disposition field
710 @defun mime-content-disposition-parameter content-disposition parameter
712 Return value of @var{parameter} of @var{content-disposition}.
716 @defun mime-content-disposition-filename content-disposition
718 Return filename of @var{content-disposition}.
723 @node Content-Disposition parser, , mime-content-disposition, Content-Disposition
724 @section Parser for Content-Disposition field
726 @defun mime-parse-Content-Disposition string
728 Parse @var{string} as field-body of Content-Disposition field, and
729 return the result as mime-content-disposition
730 (@ref{mime-content-disposition}) structure.
734 @defun mime-read-Content-Disposition
736 Parse Content-Disposition field of the current buffer, and return the
737 result as mime-content-disposition (@ref{mime-content-disposition})
740 Return @code{nil} if Content-Disposition field is not found.
745 @node Content-Transfer-Encoding, encoded-word, Content-Disposition, Top
746 @chapter Encoding Method
747 @cindex Content-Transfer-Encoding field
749 @strong{Content-Transfer-Encoding field} is a header field to indicate
750 body encoding of a entity.@refill
752 FLIM provides parser functions for Content-Transfer-Encoding field.
753 They represent information of Content-Transfer-Encoding field as
756 In addition, FLIM provides encoder/decoder functions by
757 Content-Transfer-Encoding.
761 * Content-Transfer-Encoding parser:: Parser
762 * encoder/decoder:: Encoder/decoder
763 * Encoding information:: Other utilities
764 * mel-backend:: How to write encoder/decoder module
765 * generic function for mel-backend:: How to add encoding/decoding service
768 @node Content-Transfer-Encoding parser, encoder/decoder, Content-Transfer-Encoding, Content-Transfer-Encoding
771 @defun mime-parse-Content-Transfer-Encoding string
773 Parse @var{string} as a field-body of Content-Transfer-Encoding field,
774 and return the result.
778 @defun mime-read-Content-Transfer-Encoding &optional default-encoding
780 Parse Content-Transfer-Encoding field of the current buffer, and return
783 Return @var{default-encoding} if Content-Transfer-Encoding field is not
784 found. If it is not specified, @code{nil} is used as the default value.
789 @node encoder/decoder, Encoding information, Content-Transfer-Encoding parser, Content-Transfer-Encoding
790 @section Encoder/decoder
792 @defun mime-encode-region start end encoding
794 Encode region @var{start} to @var{end} of current buffer using
799 @defun mime-decode-region start end encoding
801 Decode region @var{start} to @var{end} of current buffer using
807 @defun mime-decode-string string encoding
809 Decode @var{string} which is encoded in @var{encoding}, and return the
815 @defun mime-insert-encoded-file filename encoding
817 Insert file @var{FILENAME} encoded by @var{ENCODING} format.
821 @defun mime-write-decoded-region start end filename encoding
823 Decode and write current region encoded by @var{encoding} into
824 @var{filename}.@refill
826 @var{start} and @var{end} are buffer positions.
831 @node Encoding information, mel-backend, encoder/decoder, Content-Transfer-Encoding
832 @section Other utilities
834 @defun mime-encoding-list &optional SERVICE
836 Return list of Content-Transfer-Encoding.@refill
838 If @var{service} is specified, it returns available list of
839 Content-Transfer-Encoding for it.
843 @defun mime-encoding-alist &optional SERVICE
845 Return table of Content-Transfer-Encoding for completion.@refill
847 If @var{service} is specified, it returns available list of
848 Content-Transfer-Encoding for it.
853 @node mel-backend, generic function for mel-backend, Encoding information, Content-Transfer-Encoding
854 @section How to write encoder/decoder module
856 @defmac mel-define-method name args &rest body
858 Define @var{name} as a method function of (nth 1 (car (last
859 @var{args}))) backend.@refill
861 @var{args} is like an argument list of lambda, but (car (last
862 @var{args})) must be specialized parameter. (car (car (last
863 @var{args}))) is name of variable and (nth 1 (car (last @var{args}))) is
864 name of backend (encoding).@refill
869 (mel-define-method mime-write-decoded-region (start end filename
871 "Decode and write current region encoded by base64 into FILENAME.
872 START and END are buffer positions."
874 (list (region-beginning) (region-end)
875 (read-file-name "Write decoded region to file: ")))
876 (let ((str (buffer-substring start end)))
878 (insert (decode-base64-string str))
879 (write-region-as-binary (point-min) (point-max) filename)
885 @defmac mel-define-method-function spec function
887 Set @var{spec}'s function definition to @var{function}.@refill
889 First element of @var{spec} is service.@refill
891 Rest of @var{args} is like an argument list of lambda, but (car (last
892 @var{args})) must be specialized parameter. (car (car (last
893 @var{args}))) is name of variable and (nth 1 (car (last @var{args}))) is
894 name of backend (encoding).@refill
899 (mel-define-method-function (mime-encode-string string (nil "base64"))
900 'encode-base64-string)
906 @node generic function for mel-backend, , mel-backend, Content-Transfer-Encoding
907 @section How to add encoding/decoding service
909 @defmac mel-define-service name &optional args doc-string
911 Define @var{name} as a service for Content-Transfer-Encodings.@refill
913 If @var{args} is specified, @var{name} is defined as a generic function
914 for the service.@refill
919 (mel-define-service encoded-text-encode-string (string encoding)
920 "Encode STRING as encoded-text using ENCODING.
921 ENCODING must be string.")
927 @node encoded-word, custom, Content-Transfer-Encoding, Top
928 @chapter Network representation of header
930 @cindex Standards Track
933 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
934 \e$B$G!"
\e(B@strong{RFC 2047}
\e$B$GDj5A$5$l$F$$$^$9!#
\e(B@refill
940 K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Three:
941 Message Header Extensions for Non-ASCII Text'', November 1996, Standards
942 Track (obsolete RFC 1521,1522,1590).
945 \e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"
\e(Bencoded-word
\e$B$rMQ$$$:$KHs
\e(B ASCII
946 (@ref{ASCII})
\e$BJ8;z$r
\e(B header
\e$B$KF~$l$?5-;v$bB8:_$7$^$9!#
\e(B@refill
948 FLIM
\e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#
\e(B
952 * Header encoder/decoder:: Header encoding/decoding
955 @node Header encoder/decoder, , encoded-word, encoded-word
956 @section Header encoding/decoding
958 @defun eword-encode-header &optional code-conversion separator
960 Decode MIME encoded-words in header fields.@refill
962 If @var{code-conversion} is @code{nil}, it decodes only encoded-words.
963 If it is mime-charset, it decodes non-ASCII bit patterns as the
964 mime-charset. Otherwise it decodes non-ASCII bit patterns as the
965 default-mime-charset.@refill
967 If @var{separator} is not nil, it is used as header separator.
971 @defun eword-encode-header &optional code-conversion
973 Encode header fields to network representation, such as MIME
976 It refer variable @code{eword-field-encoding-method-alist}.
981 @node custom, Appendix, encoded-word, Top
982 @chapter Various Customization
986 MIME
\e$B4XO"5!G=$K4X$9$k
\e(B group.@refill
988 @code{mail}
\e$B$H
\e(B @code{news}
\e$B$KB0$9$k!#
\e(B
992 @defvar mime-temp-directory
994 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
997 \e$B4D6-JQ?t
\e(B @code{MIME_TMP_DIR}, @code{TM_TMP_DIR}, @code{TMPDIR},
998 @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
999 \e$BMQ$$$k!#2?$b@_Dj$5$l$F$$$J$$>l9g!"
\e(B@code{"/tmp/"}
\e$B$rMQ$$$k!#
\e(B
1004 @node Appendix, Concept Index, custom, Top
1010 * Bug report:: How to report bugs
1011 * CVS:: CVS based development
1012 * History:: History of FLIM
1015 @node Glossary, Bug report, Appendix, Appendix
1025 * coded character set:: Coded character set, Character code
1032 * Quoted-Printable::
1043 @node 7bit, 8bit, Glossary, Glossary
1045 @cindex 7bit (textual) string
1049 @strong{7bit} means any integer between 0 .. 127.@refill
1051 Any data represented by 7bit integers is called @strong{7bit data}.@refill
1053 Textual string consisted of Control characters between 0 .. 31 and 127,
1054 and space represented by 32, and graphic characters between 33 .. 236
1055 are called @strong{7bit (textual) string}.@refill
1057 Conventional Internet MTA (@ref{MTA}) can translate 7bit data, so it is
1058 no need to translate by Quoted-Printable (@ref{Quoted-Printable}) or
1059 Base64 (@ref{Base64}) for 7bit data.@refill
1061 However if there are too long lines, it can not translate by 7bit MTA
1062 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
1063 ``7bit data'' has a line more than 999 bytes, it is regarded as binary
1064 (@ref{binary}). For example, Postscript file should be encoded by
1068 @node 8bit, ASCII, 7bit, Glossary
1070 @cindex 8bit (textual) string
1074 @strong{8bit} means any integer between 0 .. 255.@refill
1076 Any data represented by 8bit integers is called @strong{8bit data}.@refill
1078 Textual string consisted of Control characters between 0 .. 31, 127, and
1079 128 .. 159, and space represented by 32, and graphic characters between
1080 33 .. 236 and 160 .. 255 are called @strong{8bit (textual) string}.@refill
1082 For example, iso-8859-1 (@ref{iso-8859-1}) or euc-kr (@ref{euc-kr}) are
1083 coded-character-set represented by 8bit textual string.@refill
1085 Traditional Internet MTA (@ref{MTA}) can translate only 7bit
1086 (@ref{7bit}) data, so if a 8bit data will be translated such MTA, it
1087 must be encoded by Quoted-Printable (@ref{Quoted-Printable}) or Base64
1088 (@ref{Base64}).@refill
1090 However 8bit MTA are increasing today.@refill
1092 However if there are too long lines, it can not translate by 8bit MTA
1093 even if it is 8bit data. RFC 2045 (@ref{RFC 2045}) require lines in
1094 8bit data must be less than 998 bytes. So if a ``8bit data'' has a line
1095 more than 999 bytes, it is regarded as binary (@ref{binary}), so it must
1096 be encoded by Base64 or Quoted-Printable.
1099 @node ASCII, Base64, 8bit, Glossary
1101 @cindex ANSI X3.4:1986
1105 @strong{ASCII} is a 94-character set contains primary latin characters
1106 (A-Z, a-z), numbers and some characters. It is a standard of the United
1107 States of America. It is a variant of ISO 646 (@ref{ISO 646}).
1113 ``Coded Character Set -- 7-Bit American Standard Code for Information
1114 Interchange'', ANSI X3.4:1986.
1119 @node Base64, binary, ASCII, Glossary
1124 @strong{Base64} is a transfer encoding method of MIME (@ref{MIME})
1125 defined in RFC 2045 (@ref{RFC 2045}).@refill
1127 The encoding process represents 24-bit groups of input bits as output
1128 strings of 4 encoded characters. Encoded characters represent integer 0
1129 .. 63 or @strong{pad}. Base64 data must be 4 * n bytes, so pad is used
1130 to adjust size.@refill
1132 These 65 characters are subset of all versions of ISO 646, including
1133 US-ASCII, and all versions of EBCDIC. So it is safe even if it is
1134 translated by non-Internet gateways.
1137 @node binary, coded character set, Base64, Glossary
1141 Any byte stream is called @strong{binary}.@refill
1143 It does not require structureof lines. It differs from from 8bit
1144 (@ref{8bit}).@refill
1146 In addition, if line structured data contain too long line (more than
1147 998 bytes), it is regarded as binary.
1150 @node coded character set, media-type, binary, Glossary
1151 @subsection Coded character set, Character code
1153 A set of unambiguous rules that establishes a character set and the
1154 one-to-one relationship between the characters of the set and their
1158 @node media-type, message, coded character set, Glossary
1159 @subsection media-type
1172 @strong{media-type} specifies the nature of the data in the body of MIME
1173 (@ref{MIME}) entity (@ref{entity}). It consists of @strong{type} and
1174 @strong{subtype}. It is defined in RFC 2046 (@ref{RFC 2046}).@refill
1176 Currently there are following standard primary-types:
1188 @strong{application}
1190 @strong{multipart} (@ref{multipart})
1196 And there are various subtypes, for example, application/octet-stream,
1197 audio/basic, image/jpeg, multipart/mixed (@ref{multipart/mixed}),
1198 text/plain (@ref{text/plain}), video/mpeg... @refill
1200 You can refer registered media types at MEDIA TYPES
1201 (ftp://ftp.isi.edu/in-notes/iana/assignments/media-types).@refill
1203 In addition, you can use private type or subtype using @strong{x-token},
1204 which as the prefix `x-'. However you can not use them in
1207 (cf. @ref{Content-Type field})
1211 @node message, MIME, media-type, Glossary
1214 In this document, it means mail defined in RFC 822 (@ref{RFC 822}) and
1215 news message defined in RFC 1036 (@ref{RFC 1036}).
1218 @node MIME, MIME charset, message, Glossary
1220 @cindex Multipurpose Internet Mail Extensions
1222 MIME stands for @strong{Multipurpose Internet Mail Extensions}, it is an
1223 extension for RFC 822 (@ref{RFC 822}).@refill
1225 According to RFC 2045:@refill
1227 STD 11, RFC 822, defines a message representation protocol specifying
1228 considerable detail about US-ASCII message headers, and leaves the
1229 message content, or message body, as flat US-ASCII text. This set of
1230 documents, collectively called the Multipurpose Internet Mail
1231 Extensions, or MIME, redefines the format of messages to allow for
1235 textual message bodies in character sets other than US-ASCII,
1237 an extensible set of different formats for non-textual message
1240 multi-part message bodies, and
1242 textual header information in character sets other than US-ASCII.
1246 It is defined in RFC 2045 (@ref{RFC 2045}), RFC 2046 (@ref{RFC 2046}),
1247 RFC 2047 (@ref{encoded-word}), RFC 2048 (@ref{RFC 2048}) and RFC 2049
1251 @node MIME charset, MTA, MIME, Glossary
1252 @subsection MIME charset
1254 Coded character set (@ref{coded character set}) used in Content-Type
1255 field (@ref{Content-Type field}) or charset parameter of encoded-word
1256 (@ref{encoded-word}).@refill
1258 It is defined in RFC 2045 (@ref{RFC 2045}).@refill
1260 iso-2022-jp (@ref{iso-2022-jp}) or euc-kr (@ref{euc-kr}) are kinds of
1261 it. (In this document, MIME charsets are written by small letters to
1262 distinguish graphic character set (@ref{graphic character set}). For
1263 example, ISO 8859-1 is a graphic character set, and iso-8859-1 is a MIME
1267 @node MTA, MUA, MIME charset, Glossary
1269 @cindex Message Transfer Agent
1271 @strong{Message Transfer Agent}. It means mail transfer programs
1272 (ex. sendmail) and news servers.@refill
1278 @node MUA, Quoted-Printable, MTA, Glossary
1280 @cindex Message User Agent
1282 @strong{Message User Agent}. It means mail readers and news
1289 @node Quoted-Printable, RFC 822, MUA, Glossary
1290 @subsection Quoted-Printable
1291 @cindex Quoted-Printable
1293 @strong{Quoted-Printable} is a transfer encoding method of MIME
1294 (@ref{MIME}) defined in RFC 2045 (@ref{RFC 2045}).@refill
1296 If the data being encoded are mostly US-ASCII text, the encoded form of
1297 the data remains largely recognizable by humans.@refill
1303 @node RFC 822, RFC 1036, Quoted-Printable, Glossary
1307 @cindex Internet mail
1308 @cindex Internet message
1309 @cindex message header
1311 A RFC defines format of Internet mail message, mainly @strong{message header}.
1317 news message is based on RFC 822, so @strong{Internet message} may be
1318 more suitable than @strong{Internet mail} .
1326 D. Crocker, ``Standard for the Format of ARPA Internet Text Messages'',
1327 August 1982, STD 11.
1332 @node RFC 1036, RFC 2045, RFC 822, Glossary
1333 @subsection RFC 1036
1337 A RFC defines format of USENET message. It is a subset of RFC 822
1338 (@ref{RFC 822}). It is not Internet standard, but a lot of netnews
1339 excepting Usenet uses it.
1345 M. Horton and R. Adams, ``Standard for Interchange of USENET Messages'',
1346 December 1987, (obsolete RFC 850).
1351 @node RFC 2045, RFC 2046, RFC 1036, Glossary
1352 @subsection RFC 2045
1354 @cindex Standards Track
1360 N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
1361 (MIME) Part One: Format of Internet Message Bodies'', November 1996,
1362 Standards Track (obsolete RFC 1521, 1522, 1590).
1367 @node RFC 2046, RFC 2048, RFC 2045, Glossary
1368 @subsection RFC 2046
1370 @cindex Standards Track
1376 N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
1377 (MIME) Part Two: Media Types'', November 1996, Standards Track (obsolete
1378 RFC 1521, 1522, 1590).
1383 @node RFC 2048, RFC 2049, RFC 2046, Glossary
1384 @subsection RFC 2048
1386 @cindex Standards Track
1392 N. Freed, J. Klensin and J. Postel, ``Multipurpose Internet Mail
1393 Extensions (MIME) Part Four: Registration Procedures'', November 1996,
1394 Standards Track (obsolete RFC 1521, 1522, 1590).
1399 @node RFC 2049, plain text, RFC 2048, Glossary
1400 @subsection RFC 2049
1402 @cindex Standards Track
1408 N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
1409 (MIME) Part Five: Conformance Criteria and Examples'', November 1996,
1410 Standards Track (obsolete RFC 1521, 1522, 1590).
1415 @node plain text, us-ascii, RFC 2049, Glossary
1416 @subsection plain text
1418 A textual data represented by only coded character set (@ref{coded character set}). It does not have information about font or
1419 typesetting. (cf. @ref{text/plain})
1423 @node us-ascii, , plain text, Glossary
1424 @subsection us-ascii
1428 A MIME charset (@ref{MIME charset}) for primary Latin script mainly
1429 written by English or other languages.@refill
1431 It is a 7bit coded character set (@ref{coded character set}) based on
1432 ISO 2022 (@ref{ISO 2022}), it contains only ASCII (@ref{ASCII}) and code
1433 extension (@ref{code extension}) is not allowed.@refill
1435 It is standard coded character set of Internet mail. If MIME charset is
1436 not specified, @strong{us-ascii} is used as default.@refill
1438 In addition, @strong{ASCII} of RFC 822 (@ref{RFC 822}) should be
1439 interpreted as us-ascii.
1442 @node Bug report, CVS, Glossary, Appendix
1443 @section How to report bugs
1444 @cindex good bug report
1446 If you write bug-reports and/or suggestions for improvement, please
1447 send them to the tm Mailing List:
1451 Japanese <bug-tm-ja@@chamonix.jaist.ac.jp>
1453 English <bug-tm-en@@chamonix.jaist.ac.jp>
1457 Notice that, we do not welcome bug reports about too old version. Bugs
1458 in old version might be fixed. So please try latest version at
1461 You should write @strong{good bug report}. If you write only ``FLIM
1462 does not work'', we can not find such situations. At least, you should
1463 write name, type, variants and version of OS, emacs, APEL, FLIM, SEMI
1464 and MUA, and setting. In addition, if error occurs, to send backtrace
1465 is very important. (cf. @ref{(emacs)Bugs}) @refill
1467 Bug may not appear only your environment, but also in a lot of
1468 environment (otherwise it might not bug). Therefor if you send mail
1469 to author directly, we must write a lot of mails. So please send mail
1470 to address for tm bugs instead of author.
1472 Via the tm ML, you can report FLIM bugs, obtain the latest release of
1473 FLIM, and discuss future enhancements to FLIM. To join the tm ML,
1474 send empty e-mail to:
1478 Japanese <tm-ja-help@@chamonix.jaist.ac.jp>
1480 English <tm-en-help@@chamonix.jaist.ac.jp>
1485 @node CVS, History, Bug report, Appendix
1486 @section CVS based development
1488 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
1489 \e$B?7$N
\e(B FLIM
\e$B$rF~<j$9$k$3$H$,$G$-$^$9!'
\e(B
1494 % cvs -d :pserver:anonymous@@chamonix.jaist.ac.jp:/hare/cvs/root \
1497 CVS password: [CR] # NULL string
1501 % cvs -d :pserver:anonymous@@chamonix.jaist.ac.jp:/hare/cvs/root \
1502 checkout [-r TAG] flim
1506 CVS
\e$B$rMQ$$$?3+H/$K;22C$7$?$$J}$O
\e(B
1510 <cvs@@chamonix.jaist.ac.jp>
1514 \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
1515 \e$B$r1h$($F8fO"Mm$/$@$5$$!#
\e(B
1518 @node History, , CVS, Appendix
1519 @section History of FLIM
1521 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
1522 \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
1523 \e$B@lMQ$N
\e(B encoded-word
\e$B$NI|9f2=%W%m%0%i%`$G$7$?!#
\e(B@refill
1525 \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
1526 \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
1527 \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
1528 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
1529 charset (@ref{MIME charset})
\e$B$rF1;~$K;H$&$3$H$,$G$-$^$7$?!#$3$N;~!"
\e(B
1530 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
1531 package
\e$B$K$^$H$a$i$l$^$9!#
\e(B@refill
1533 \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
1534 \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
1535 package
\e$B$K$^$H$a$i$l!"
\e(Btm
\e$B$H$$$&L>A0$GG[I[$5$l$^$9!#
\e(B@refill
1537 \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
1538 @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
1539 \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
1540 \e$B3K$H$J$j$^$9!#
\e(B@refill
1542 @file{tm-view.el}
\e$B$OEvA3!"
\e(BContent-Transfer-Encoding
\e$B$r07$&I,MW$,$"$j$^$9!#
\e(B
1543 \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
1544 @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
1545 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
1546 \e$B$^$7$?!#
\e(B@refill
1548 \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
1549 \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
1550 \e$B$7$?!#
\e(B@refill
1552 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
1553 \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
1554 @file{std11.el}
\e$B$KEv$?$j$^$9!#$^$?!"$3$N2aDx$G
\e(B @file{tiny-mime.el}
\e$B$OI|
\e(B
1555 \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
1556 \e$B$^$7$?!#$3$NN><T$,8=:_$N
\e(B @file{eword-decode.el}
\e$B$H
\e(B
1557 @file{eword-encode.el}
\e$B$N@hAD$KEv$?$j$^$9!#
\e(B@refill
1559 \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
1560 \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
1561 \e$B$N$&$A$N
\e(B MEL
\e$B$,
\e(B FLIM
\e$B$ND>@\$N@hAD$KEv$?$j$^$9!#
\e(B@refill
1563 \e$B8e$K!"
\e(BAPEL
\e$B$+$i
\e(B @file{std11.el}
\e$B$,0\$5$l!"$^$?!"
\e(B@file{mailcap.el},
1564 @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
1565 package
\e$B$NL>A0$,
\e(B FLIM
\e$B$H$J$j$^$9!#
\e(B@refill
1567 \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
1568 FLIM
\e$B$N;^$G$"$k
\e(B ``FLIM-FLAM''
\e$B$H$J$C$F$$$^$9!#
\e(B
1571 @node Concept Index, Function Index, Appendix, Top
1572 @chapter Concept Index
1576 @node Function Index, Variable Index, Concept Index, Top
1577 @chapter Function Index
1581 @node Variable Index, , Function Index, Top
1582 @chapter Variable Index