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