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