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