update.
[elisp/flim.git] / TESTPAT
1 ;----------------------------------------------------------------------------
2 ;-------- This sequece of HYPHEN-MINUS is 76 bytes long. --------------------
3 ;----------------------------------------------------------------------------
4
5 ; options:
6 ;encode-sticked-comment-as-atom         ; violate policy preventing structure
7 ;ignore-75bytes-limit                   ; violate RFC2047
8 ;ignore-76bytes-limit                   ; violate RFC2047
9 ;permit-sticked-comment                 ; violate RFC2047
10 ;permit-sticked-special                 ; violate RFC2047
11 ;separate-sticked-comment               ; violate policy preserving absence of space
12 ;separate-sticked-special               ; violate policy preserving absence of space
13 ;zero-characters-encoded-word-hack      ; violate common sense (very tricky)
14 ;quoted-encoded-word                    ; violate character sequence semantics
15
16 ;;; test driver for FLAM (and FLIM)
17
18 (defun decode-flam (src dsts &rest opts)
19   (setq eword-lexical-analyze-cache nil)
20   (setq eword-decode-sticked-encoded-word
21     (or (memq 'permit-sticked-comment opts)
22         (memq 'permit-sticked-special opts)))
23   (setq eword-decode-quoted-encoded-word nil)
24   (with-temp-buffer
25     (insert src "\n" mail-header-separator)
26     (eword-decode-header 'us-ascii mail-header-separator)
27     (goto-char (point-min))
28     (std11-narrow-to-header mail-header-separator)
29     (std11-field-end)
30     (let ((result (buffer-substring (point-min) (point))))
31       (if (member result dsts) t result))))
32
33 (defun encode-flam (src dsts &rest opts)
34   (setq eword-lexical-analyze-cache nil)
35   (setq eword-decode-sticked-encoded-word nil)
36   (setq eword-decode-quoted-encoded-word nil)
37   (with-temp-buffer
38     (insert src "\n" mail-header-separator)
39     (goto-char (point-min))
40     (eword-encode-header 'us-ascii)
41     (goto-char (point-min))
42     (std11-narrow-to-header mail-header-separator)
43     (std11-field-end)
44     (let ((result (buffer-substring (point-min) (point))))
45       (if (member result dsts) t result))))
46
47 (setq decode-test 'decode-flam)
48 (setq encode-test 'encode-flam)
49
50 (setq decode-succ-count 0)
51 (setq decode-all-count 0)
52 (defun decode (src dsts &rest opts)
53   (if (stringp dsts) (setq dsts (list dsts)))
54   (setq decode-all-count (1+ decode-all-count))
55   (let ((res (condition-case nil
56                (apply decode-test src dsts opts)
57                (error nil))))
58     (if (eq res t)
59       (setq decode-succ-count (1+ decode-succ-count))
60       (insert (format "\n;fail;%S" res)))
61     res))
62
63 (setq encode-succ-count 0)
64 (setq encode-all-count 0)
65 (defun encode (src dsts &rest opts)
66   (if (stringp dsts) (setq dsts (list dsts)))
67   (setq encode-all-count (1+ decode-all-count))
68   (let ((res (condition-case nil
69                (apply encode-test src dsts opts)
70                (error nil))))
71     (if (eq res t)
72       (setq encode-succ-count (1+ encode-succ-count))
73       (insert (format "\n;fail;%S" res)))
74     res))
75
76 (defun report ()
77   (insert
78     (format "\n\"Decode: %d/%d  Encode: %d/%d\""
79       decode-succ-count decode-all-count
80       encode-succ-count encode-all-count)))
81
82 ;;;start-test;;;
83
84
85 ;; Section 1: Decoding examples from RFC2047
86
87 (decode
88 "From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>"
89 "From: Keith Moore <moore@cs.utk.edu>")
90
91 (decode
92 "To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>"
93 "To: Keld J\e.A\eNxrn Simonsen <keld@dkuug.dk>")\e*B
94
95 (decode
96 "CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>"
97 "CC: Andr\e.A\eNi Pirard <PIRARD@vm1.ulg.ac.be>")\e*B
98
99 (decode
100 "Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
101  =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?="
102 "Subject: If you can read this you understand the example.")
103
104 (decode
105 "From: =?ISO-8859-1?Q?Olle_J=E4rnefors?= <ojarnef@admin.kth.se>"
106 "From: Olle J\e.A\eNdrnefors <ojarnef@admin.kth.se>")\e*B
107
108 (decode
109 "From: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= <paf@nada.kth.se>"
110 "From: Patrik F\e.A\eNdltstr\eNvm <paf@nada.kth.se>")\e*B
111
112 (decode
113 "From: Nathaniel Borenstein <nsb@thumper.bellcore.com>
114         (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)"
115 "From: Nathaniel Borenstein <nsb@thumper.bellcore.com>  (\e.H\eNm\eNe\eNl\eNy \eNo\eNa \eNi\eNl\eNh\eNt\eNp)")\e*B
116 ; FLAM
117
118 (decode
119 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=)"
120 "From: foo@bar.baz (a)")
121
122 (decode
123 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= b)"
124 "From: foo@bar.baz (a b)")
125
126 (decode
127 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
128 "From: foo@bar.baz (ab)")
129
130 (decode
131 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)"
132 "From: foo@bar.baz (ab)")
133
134 (decode
135 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=
136         =?ISO-8859-1?Q?b?=)"
137 "From: foo@bar.baz (ab)")
138
139 (decode
140 "From: foo@bar.baz (=?ISO-8859-1?Q?a_b?=)"
141 "From: foo@bar.baz (a b)")
142
143 (decode
144 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)"
145 "From: foo@bar.baz (a b)")
146
147 (decode
148 "Subject: (=?ISO-8859-1?Q?a?=)"
149 "Subject: (=?ISO-8859-1?Q?a?=)")
150
151 (decode
152 "Subject: (=?ISO-8859-1?Q?a?= b)"
153 "Subject: (=?ISO-8859-1?Q?a?= b)")
154
155 (decode
156 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
157 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)")
158
159 (decode
160 "Subject: (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)"
161 "Subject: (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)")
162
163 (decode
164 "Subject: (=?ISO-8859-1?Q?a?=
165         =?ISO-8859-1?Q?b?=)"
166 "Subject: (=?ISO-8859-1?Q?a?=   =?ISO-8859-1?Q?b?=)")
167
168 (decode
169 "Subject: (=?ISO-8859-1?Q?a_b?=)"
170 "Subject: (=?ISO-8859-1?Q?a_b?=)")
171
172 (decode
173 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)"
174 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)")
175
176 ;; Section 2: Decoding trivial inputs.
177
178 (decode
179 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
180 "From: \e$B$"\e(B <akr@jaist.ac.jp>")
181
182 (decode
183 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?=
184  <akr@jaist.ac.jp>"
185 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
186
187 (decode
188 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=
189  =?ISO-2022-JP?B?GyRCJCQbKEI=?=
190  <akr@jaist.ac.jp>"
191 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
192
193 (decode
194 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=
195         =?ISO-2022-JP?B?GyRCJCQbKEI=?=
196  <akr@jaist.ac.jp>"
197 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
198
199 (decode
200 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=
201  =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=
202  =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
203 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)")
204
205 (decode
206 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
207 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
208
209 (decode
210 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>"
211 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>")
212
213 (decode
214 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>"
215 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>")
216
217 (decode
218 "From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" <akr@jaist.ac.jp>"
219 "From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" <akr@jaist.ac.jp>")
220
221 (decode
222 "From: \"\\\"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\\\"\\\\\" <akr@jaist.ac.jp>"
223 "From: \"\\\"\\\\\" \e$B$"\e(B \"\\\"\\\\\" <akr@jaist.ac.jp>")
224
225 (decode
226 "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>"
227 "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>")
228 ; FLAM
229
230 (decode
231 "From: =?ISO-2022-JP?Q?=1B=24BAA=1B=28B?= <akr@jaist.ac.jp>"
232 "From: \e$BAA\e(B <akr@jaist.ac.jp>")
233
234 (decode
235 "From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) <akr@jaist.ac.jp>"
236 "From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) <akr@jaist.ac.jp>")
237
238 (decode
239 "From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)"
240 "From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)")
241
242 (decode
243 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>"
244 "From: \"\e$B$"\e(B(\e$B$"\e(B)\" <akr@jaist.ac.jp>")
245
246 (decode
247 "From: =?US-ASCII?Q?=28?= <akr@jaist.ac.jp>, =?US-ASCII?Q?=29?= <akr@jaist.ac.jp>"
248 "From: \"(\" <akr@jaist.ac.jp>, \")\" <akr@jaist.ac.jp>")
249
250 (decode
251 "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= <akr@jaist.ac.jp>"
252 "From: \"a\\\"b\e$B$"\e(Bc\\\\\" <akr@jaist.ac.jp>")
253
254 (decode
255 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?="
256 "Subject: \e$B$"\e(B")
257
258 (decode
259 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?="
260 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
261
262 (decode
263 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b"
264 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b")
265
266 (decode
267 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b"
268 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b")
269
270 (decode
271 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?="
272 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
273
274 (decode
275 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)"
276 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)")
277
278 (decode
279 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)"
280 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)")
281
282 (decode
283 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?="
284 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
285
286 (decode
287 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\""
288 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"")
289
290 (decode
291 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\""
292 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"")
293
294 (decode
295 "Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
296 "Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
297
298 (decode
299 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:"
300 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:")
301
302 (decode
303 "Subject: =?ISO-2022-JP?B??="
304 "Subject: =?ISO-2022-JP?B??=")
305
306 (decode
307 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a
308  =?ISO-2022-JP?B?GyRCJCQbKEI=?="
309 "Subject: \e$B$"\e(B a \e$B$$\e(B")
310
311 (decode
312 "Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=
313  =?US-ASCII?Q?____________________________________________________________?=
314  =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?="
315 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B")
316
317 (decode
318 "From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= <akr@jaist.ac.jp>"
319 "From: \"abcdefghijklmnopqrst\e.A\eN!()\\\"\\\\\" <akr@jaist.ac.jp>")\e*B
320
321 (decode
322 "Subject: ?= =?"
323 "Subject: ?= =?")
324
325 (decode
326 "Subject: \" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \""
327 "Subject: \" \e$B$"\e(B \"")
328
329 (decode
330 "From: \"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\" <akr@jaist.ac.jp>"
331 "From: \"\\\\\" \e$B$"\e(B \"\" <akr@jaist.ac.jp>")
332
333 (decode
334 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B_=1B$B$\"=1B(B?="
335 "Subject: \e$B$"\e(B \e$B$"\e(B")
336
337 (decode
338 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?="
339 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?=")
340
341 (decode
342 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?="
343 "Subject: \e$B$"\e(B a \e.H\eN`")\e*B
344
345 (decode
346 "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
347 "Subject: \e.H\eN`\e$BNm\e(B")\e*B
348
349 (decode
350 "Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
351 "Subject: \e.H\eN` \e$BNm\e(B")\e*B
352
353 (decode
354 "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?="
355 "Subject: \e.F\eNC\e$B4X?t\e(B")\e*B
356
357 (decode
358 "Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?="
359 "Subject: \e.F\eNC\e$B4X?t\e(B")\e*B
360
361 (decode
362 "Subject: =?Shift_JIS?B?gqA=?="
363 "Subject: \e$B$"\e(B"
364 'quoted-encoded-word)
365
366 (decode
367 "Subject: =?EUC-JP?B?pKI=?="
368 "Subject: \e$B$"\e(B"
369 'quoted-encoded-word)
370
371 (decode
372 "Subject: = =?ISO-2022-JP?B?GyRCJCIbKEI=?="
373 "Subject: = \e$B$"\e(B")
374
375 (decode
376 "Subject: =? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
377 "Subject: =? \e$B$"\e(B")
378
379 (decode
380 "Subject: =?ISO-2022-JP =?ISO-2022-JP?B?GyRCJCIbKEI=?="
381 "Subject: =?ISO-2022-JP \e$B$"\e(B")
382
383 (decode
384 "Subject: =?ISO-2022-JP? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
385 "Subject: =?ISO-2022-JP? \e$B$"\e(B")
386
387 (decode
388 "Subject: =?ISO-2022-JP?B =?ISO-2022-JP?B?GyRCJCIbKEI=?="
389 "Subject: =?ISO-2022-JP?B \e$B$"\e(B")
390
391 (decode
392 "Subject: =?ISO-2022-JP?B? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
393 "Subject: =?ISO-2022-JP?B? \e$B$"\e(B")
394
395 (decode
396 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI =?ISO-2022-JP?B?GyRCJCIbKEI=?="
397 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI \e$B$"\e(B")
398
399 (decode
400 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
401 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= \e$B$"\e(B")
402
403 (decode
404 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
405 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? \e$B$"\e(B")
406
407 (decode
408 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
409 "Subject: \e$B$"$"\e(B")
410
411 (decode
412 "Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?="
413 "Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
414
415 (decode
416 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=="
417 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==")
418
419 ;; Section 3: Decoding melancholy inputs.
420
421 (decode
422 "From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
423 "From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
424 ; FLAM
425
426 (decode
427 "From: akr@jaist.ac.jp
428  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\\a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)"
429 "From: akr@jaist.ac.jp (\e$B$"\e(B\\a\e$B$$\e(B)")
430 ; FLAM
431
432 (decode
433 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
434 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
435
436 (decode
437 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
438 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>")
439
440 (decode
441 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
442 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>")
443
444 (decode
445 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
446 "From: (a)\e$B$"\e(B <akr@jaist.ac.jp>"
447 'permit-sticked-comment)
448
449 (decode
450 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
451 "From: \e$B$"\e(B(b) <akr@jaist.ac.jp>"
452 'permit-sticked-comment)
453
454 (decode
455 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
456 "From: (a)\e$B$"\e(B(b) <akr@jaist.ac.jp>"
457 'permit-sticked-comment)
458
459 (decode
460 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
461 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
462
463 (decode
464 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>"
465 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>")
466
467 (decode
468 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>"
469 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>")
470
471 (decode
472 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)
473  <akr@jaist.ac.jp>"
474 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
475 'permit-sticked-comment)
476
477 (decode
478 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
479 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
480
481 (decode
482 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
483 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
484 'permit-sticked-special)
485
486 (decode
487 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
488 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
489
490 (decode
491 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
492 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
493 'permit-sticked-special)
494
495 (decode
496 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
497 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
498
499 (decode
500 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
501 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
502 'permit-sticked-special)
503
504 (decode
505 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
506 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;")
507
508 (decode
509 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
510 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
511 'permit-sticked-special)
512
513 (decode
514 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
515 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;")
516
517 (decode
518 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
519 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
520 'ignore-76bytes-limit 'permit-sticked-special)
521
522 (decode
523 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
524 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>")
525
526 (decode
527 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
528 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
529 'ignore-76bytes-limit 'permit-sticked-special)
530
531 (decode
532 "Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?="
533 "Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
534
535 (decode
536 "Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?="
537 "Subject:\e$B$"\e(B"
538 'permit-sticked-special)
539
540 ;; Section 4: Decoding invalid inputs.
541
542 (decode
543 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?=
544  <akr@jaist.ac.jp>"
545 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= <akr@jaist.ac.jp>")
546
547 (decode
548 "From: akr@jaist.ac.jp
549  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)"
550 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)")
551 ; FLAM
552
553 (decode
554 "From: akr@jaist.ac.jp
555  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
556 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)")
557 ; FLAM
558
559 (decode
560 "From: akr@jaist.ac.jp
561  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
562 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
563 'ignore-76bytes-limit)
564
565 (decode
566 "Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
567 "Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
568
569 (decode
570 "Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?="
571 "Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
572
573 (decode
574 "Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
575 "Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
576
577 (decode
578 "Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?="
579 "Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
580
581 (decode
582 "Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
583 "Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
584
585 (decode
586 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?="
587 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
588
589 (decode
590 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?="
591 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
592
593 (decode
594 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
595 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
596
597 (decode
598 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?="
599 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
600
601 (decode
602 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?="
603 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?=")
604
605 (decode
606 "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?="
607 "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=")
608
609 ;; Section 5: Encoding trivial inputs.
610
611 (encode
612 "From: \e$B$"\e(B <akr@jaist.ac.jp>"
613 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
614
615 (encode
616 "From: \"\e$B$"\e(B(\e$B$"\e(B)\" <akr@jaist.ac.jp>"
617 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>")
618 ; FLAM
619
620 (encode
621 "From: \"a\\\"b\e$B$"\e(Bc\\\\\" <akr@jaist.ac.jp>"
622 "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= <akr@jaist.ac.jp>")
623 ; FLAM
624
625 (encode
626 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B"
627 "Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=
628  =?US-ASCII?Q?____________________________________________________________?=
629  =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?=")
630 ; FLAM
631
632 (encode
633 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B"
634 "Subject: =?ISO-2022-JP?B?GyQpQrCkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDS3w=="
635 'ignore-76bytes-limit 'ignore-75bytes-limit)
636 ; FLAM
637
638 (encode
639 "From: \e.A\eN! <akr@jaist.ac.jp>"\e*B
640 "From: =?ISO-8859-1?Q?=A1?= <akr@jaist.ac.jp>")
641
642 (encode
643 "From: \"abcdefghijklmnopqrst\e.A\eN!()\\\"\\\\\" <akr@jaist.ac.jp>"\e*B
644 "From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= <akr@jaist.ac.jp>")
645 ; FLAM
646
647 (encode
648 "From: akr@jaist.ac.jp (abcdefghijklmnopqrst\e.A\eN!\\(\\)\"\\\\)"\e*B
649 "From: akr@jaist.ac.jp (=?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29\"=5C?=)")
650 ; FLAM
651
652 (encode
653 "Subject: \e$B$"\e(B a \e.H\eN`"\e*B
654 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?=")
655
656 (encode
657 "Subject: \e.H\eN`\e$BNm\e(B"\e*B
658 "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=")
659 ; FLAM
660
661 (encode
662 "Subject: \e.H\eN` \e$BNm\e(B"\e*B
663 '("Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
664   "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?IBskQk5tGyhC?="))
665
666 (encode
667 "Subject: \e.F\eNC\e$B4X?t\e(B"\e*B
668 '("Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?="
669   "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?="))
670
671 ;; Section 6: Encoding melancholy inputs.
672
673 (encode
674 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
675 "From: akr@jaist.ac.jp
676  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
677 'ignore-76bytes-limit)
678 ; FLAM
679
680 (encode
681 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
682 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=
683  =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=
684  =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
685 'zero-characters-encoded-word-hack)
686 ; FLAM
687
688 (encode
689 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
690 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>"
691 'encode-sticked-comment-as-atom)
692 ; FLAM
693
694 (encode
695 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
696 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)
697  <akr@jaist.ac.jp>"
698 'permit-sticked-comment)
699 ; FLAM
700
701 (encode
702 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
703 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)
704  <akr@jaist.ac.jp>"
705 'separate-sticked-comment)
706 ; FLAM
707
708 (encode
709 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
710 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
711 'permit-sticked-special)
712 ; FLAM
713
714 (encode
715 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
716 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
717 'separate-sticked-special)
718
719 (encode
720 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
721 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
722 'permit-sticked-special)
723 ; FLAM
724
725 (encode
726 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
727 "To: <akr@jaist.ac.jp>, =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
728 'separate-sticked-special)
729
730 (encode
731 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
732 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
733 'permit-sticked-special)
734 ; FLAM
735
736 (encode
737 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
738 "To: akr@jaist.ac.jp, =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
739 'separate-sticked-special)
740
741 (encode
742 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
743 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
744 'permit-sticked-special)
745 ; FLAM
746
747 (encode
748 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
749 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= :akr@jaist.ac.jp;"
750 'separate-sticked-special)
751 ; FLAM
752
753 (encode
754 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
755 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
756 'ignore-76bytes-limit 'permit-sticked-special)
757 ; FLAM
758
759 (encode
760 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
761 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=
762  =?ISO-2022-JP?B?GyhC?=<akr@jaist.ac.jp>;"
763 'zero-characters-encoded-word-hack 'permit-sticked-special)
764 ; FLAM
765
766 (encode
767 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
768 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=
769  <akr@jaist.ac.jp>;"
770 'separate-sticked-special)
771 ; FLAM
772
773 (encode
774 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
775 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
776 'ignore-76bytes-limit 'permit-sticked-special)
777 ; FLAM
778
779 (encode
780 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
781 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=
782  =?ISO-2022-JP?B?GyhC?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=
783  =?ISO-2022-JP?B?GyhC?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
784 'zero-characters-encoded-word-hack 'permit-sticked-special)
785 ; FLAM
786
787 (encode
788 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
789 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=
790  <foo@bar>, =?ISO-2022-JP?B?GyRCJCYbKEI=?= <foo@bar>;,
791  =?ISO-2022-JP?B?GyRCJCgbKEI=?= <foo@bar>"
792 'separate-sticked-special)
793 ; FLAM
794
795 ;; Section 7: Using quoted-encoded-words.
796 ;
797 ;; quoted-encoded-word \e$BI=8=\e(B
798
799 ; RFC2047 \e$B$N%G%3!<%@$O@x:_E*$K\e(B(\e$B%G%3!<%I7k2L$G$J$/\e(B) encoded-word \e$B$=$N$b$N$r\e(B
800\e$B=PNO$7$J$1$l$P$J$i$J$$$3$H$,$"$k!#\e(B
801 ;
802 ; 1. \e$BCN$i$J$$\e(B charset \e$B$b$7$/$O\e(B encoding \e$B$,;XDj$5$l$F$$$?$H$-!#\e(B
803 ;  =?unknown-charset?known-encoding?some-encoded-text?=
804 ;  =?known-charset?unknown-encoding?some-encoded-text?=
805 ;  =?unknown-charset?unknown-encoding?some-encoded-text?=
806 ;
807 ; 2. \e$B%G%3!<%I$G$-$F$bFbMF$,7uF]$9$.$k$H$-!#\e(B
808 ;  Non ASCII \e$B3HD%\e(B RFC822 \e$B$NCf$K\e(B =?US-ASCII?Q?=0D=0A=0D=0A?= \e$B$N%G%3!<%I\e(B
809\e$B7k2L$rKd$a9~$`$N$O4m81$9$.$k!#\e(B
810 ;
811\e$B$^$?!"%G%3!<%@$O\e(B encoded-word \e$B$N$h$&$K$_$($k%G%3!<%I7k2L$r=PNO$7$J$1\e(B
812\e$B$l$P$J$i$J$$$3$H$b$"$k!#\e(B
813 ;
814 ;  =?US-ASCII?Q?=3D=3FUS-ASCII=3FQ=3Ftext=3F=3D?=
815 ;
816\e$B%G%3!<%@$,C1$J$kJ8;zNs$r=PNO$9$k>l9g!"C1=c$K$d$k$H\e(B encoded-word \e$B$=$N$b$N$H\e(B
817 ; encoded-word \e$B$N$h$&$K$_$($kJ8;zNs$r6hJL$G$-$J$$!#\e(B
818\e$B$3$3$G$OJ8;zNsCf$G$=$l$i$r3N<B$K6hJL$7$FI=8=$9$kJ}K!$r<($9!#\e(B
819 ;
820 ; rule 1: \e$BJ8;zNsCf$G\e(B =?charset?encoding?text?= \e$B$H$$$&%Q%?!<%s$K\e(B
821 ;  \e$B%^%C%A$7$J$$ItJ,$O$=$NItJ,$N$^$^$NFbMF$rI=$9!#\e(B
822
823 ; rule 2: \e$BJ8;zNsCf$G\e(B =?charset?encoding?text?= \e$B$H$$$&%Q%?!<%s$K\e(B
824 ;  \e$B%^%C%A$9$kItJ,$O\e(B charset \e$B$N@hF,$K\e(B '*' \e$B$,$$$/$DIU$$$F$$$k$+$GFbMF$N\e(B
825 ;  \e$B2r<a$rJQ$($k!#\e(B
826 ;
827 ;  \e$B6v?t$N>l9g\e(B(0, 2, 4, ...): charset \e$B$N@hF,$N\e(B '*' \e$B$N?t$rH>J,$K$7$?J8;zNs\e(B
828 ;  \e$B4q?t$N>l9g\e(B(1, 3, 5, ...): charset \e$B$N@hF,$N\e(B '*' \e$B$N?t$rH>J,\e(B(\e$B>.?tE@0J2<\e(B
829 ;   \e$B@Z<N$F\e(B)\e$B$K$7$F!"$=$l$r\e(B encoded-word \e$B$H;W$C$F%G%3!<%I$7$?J8;zNs!#\e(B
830 ;
831 ; NOTE: '*' \e$B$r\e(B quoted-encoded-word \e$BI=8=$N\e(B quote \e$BJ8;z$H8F$V!#\e(B
832 ;
833 ; NOTE: \e$B8=;~E@\e(B(1998/07/19)\e$B$G\e(B IANA \e$B$N%l%8%9%H%j$K$O\e(B '*' \e$B$r4^$`\e(B charset \e$B$O\e(B
834 ;  \e$BEPO?$5$l$F$$$J$$$N$G!"$=$l$i$N\e(B charset \e$B$r;H$C$?\e(B
835 ;  encoded-word \e$B$rI=8=$9$k$K$O\e(B '*' \e$B$r\e(B 1\e$B$D$D$1$k$3$H$K$J$k!#\e(B
836 ;
837 ;  =?US-ASCII?Q?abcdef?= \e$B$H$$$&\e(Bencoded-word : =?*US-ASCII?Q?abcdef?=
838 ;
839 ;  =?US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B         : =?US-ASCII?Q?abcdef?=
840 ;  =?*US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B        : =?**US-ASCII?Q?abcdef?=
841 ;  =?**US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B     : =?****US-ASCII?Q?abcdef?=
842 ;  =?***US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B    : =?******US-ASCII?Q?abcdef?=
843 ;  =?US-ASCII*?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B      : =?US-ASCII*?Q?abcdef?=
844 ;  =?U*S-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B      : =?U*S-ASCII?Q?abcdef?=
845 ;
846 ; NOTE: encoded-word \e$B$K8+$($kJ8;zNs$G\e(B '*' \e$B$,G\A}$5$l$k$N$O\e(B charset \e$B$N\e(B
847 ;  \e$B@hF,$@$1$G$"$j!"\e(Bencoding \e$B$d\e(B encoded-text \e$B$O$?$H$(\e(B '*' \e$B$,F~$C$F$$$F$b\e(B
848 ;  \e$BJQ2=$7$J$$!#$^$?!"\e(Bcharset \e$BCf$G$b\e(B \e$B@hF,0J30$N\e(B '*' \e$B$OJQ2=$7$J$$!#\e(B
849 ;
850 ; rule 3: \e$BJ8;zNsA4BN$NFbMF$O!"\e(Brule 1 \e$B$H\e(B rule 2 \e$B$G2r<a$7$?3FItJ,$N\e(B
851 ;   \e$BJ8;zNs$rC1=c$KO"7k$7$?J8;zNs$H$9$k!#\e(B
852 ;
853 ; NOTE: RFC2047 \e$B$G$O\e(B encoded-word \e$B$,6uGr$G6h@Z$i$l$J$1$l$P$J$i$J$$$H$+!"\e(B
854 ;  encoded-word \e$B$O\e(B 75bytes \e$B0J2<$G$J$1$l$P$J$i$J$$$H$+!"\e(B
855 ;  encoded-word \e$B$,4^$^$l$k9T$O\e(B 76bytes \e$B0J2<$G$J$1$l$P$J$i$J$$$J$I$H$$$&\e(B
856 ;  \e$B5,Ls$,$"$k$,!"\e(Bquoted-encoded-word \e$BI=8=$G$O$=$l$i$O:NMQ$7$J$$!#\e(B
857 ;  \e$BC1=c$K\e(B encoded-word \e$BFbIt$NJ8K!$@$1$rMxMQ$9$k!#\e(B
858 ;  (\e$BK\<AE*$K$O0[$J$kJ8K!$r:NMQ$9$k$3$H$b2DG=$G$"$k$,!"\e(BRFC2047 \e$B$K7I0U$r\e(B
859 ;  \e$BI=$7$F\e(B encoded-word \e$B$NJ8K!$r:NMQ$9$k!#\e(B)
860 ;
861 ; NOTE: quoted-encoded-word \e$BI=8=$7$?J8;zNs$NO"7k$O0BA4$G$O$J$$!#\e(B
862 ;  =?*US-ASCII?Q?ab \e$B$H\e(B cd?= \e$B$H$$$&\e(B quoted-encoded-word \e$BI=8=$7$?J8;zNs$O\e(B
863 ;  \e$B$=$l$>$l$=$NJ8;zNs$=$N$b$N$rI=8=$9$k$,!"$=$l$i$rO"7k$7$?J8;zNs\e(B
864 ;  =?*US-ASCII?Q?abcd?= \e$B$O\e(B abcd \e$B$H$$$&J8;zNs$rI=8=$9$k$3$H$K$J$j!"\e(B
865 ;  \e$B$=$l$>$l$NFbMF$NO"7k$H$O$J$i$J$$!#\e(B
866 ;
867 ;  \e$B$3$l$O$H$/$K\e(B Non ASCII \e$B3HD%\e(B RFC822 \e$B$NCf$K\e(B quoted-encoded-word \e$BI=8=$r\e(B
868 ;  \e$BKd$a9~$`$H$-$K5$$rIU$1$J$1$l$P$J$i$J$$!#\e(B(\e$BKd$a9~$s$@7k2L$O@5$7$$\e(B
869 ;  quoted-encoded-word \e$BI=8=$H$O$J$i$J$$$+$bCN$l$J$$!#\e(B)
870
871 (decode
872 "Subject: =?Unknown-Charset?B?gqA=?="
873 "Subject: =?*Unknown-Charset?B?gqA=?="
874 'quoted-encoded-word)
875 ; FLAM
876
877 (decode
878 "Subject: =?US-ASCII?G?H4sIAMsIsjUCA0tMSk5JTQMA7zmOSwYAAAA?="
879 "Subject: =?*US-ASCII?G?H4sIAMsIsjUCA0tMSk5JTQMA7zmOSwYAAAA?="
880 'quoted-encoded-word)
881 ; FLAM
882
883 (decode
884 "Subject: =?US-ASCII?Unknown-Encoding?H4sIAMsIsjUCA0tMSk5JTQMA7zmOSwYAAAA?="
885 "Subject: =?*US-ASCII?Unknown-Encoding?H4sIAMsIsjUCA0tMSk5JTQMA7zmOSwYAAAA?="
886 'quoted-encoded-word)
887 ; FLAM
888
889 (decode
890 "Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?="
891 "Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?="
892 'quoted-encoded-word)
893 ; FLAM
894
895 (decode
896 "Subject: =?Unknown-Charset?B?gqA=?=  =?Unknown-Charset?B?gqA=?="
897 "Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?="
898 'quoted-encoded-word)
899 ; FLAM
900
901 (decode
902 "Subject: =?Unknown-Charset?B?gqA=?=
903  =?Unknown-Charset?B?gqA=?="
904 "Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?="
905 'quoted-encoded-word)
906 ; FLAM
907
908 (decode
909 "Subject: =?Unknown-Charset?B?gqA=?=
910         =?Unknown-Charset?B?gqA=?="
911 "Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?="
912 'quoted-encoded-word)
913 ; FLAM
914
915 (decode
916 "Subject: a=?Unknown-Charset?B?gqA=?="
917 "Subject: a=?Unknown-Charset?B?gqA=?="
918 'quoted-encoded-word)
919
920 (decode
921 "Subject: =?Unknown-Charset?B?gqA=?=b"
922 "Subject: =?Unknown-Charset?B?gqA=?=b"
923 'quoted-encoded-word)
924
925 (decode
926 "Subject: a=?Unknown-Charset?B?gqA=?=b"
927 "Subject: a=?Unknown-Charset?B?gqA=?=b"
928 'quoted-encoded-word)
929
930 (decode
931 "Subject: a =?Unknown-Charset?B?gqA=?= b"
932 "Subject: a =?*Unknown-Charset?B?gqA=?= b"
933 'quoted-encoded-word)
934 ; FLAM
935
936 (decode
937 "Subject: =?ISO-2022-JP?B?DQoNCg==?="
938 "Subject: =?*US-ASCII?Q?=0D=0A=0D=0A?="
939 'quoted-encoded-word)
940 ; FLAM
941
942 (decode
943 "Subject: =?US-ASCII?Q?a=0D=0A_b?="
944 "Subject: a=?*US-ASCII?Q?=0D=0A?= b"
945 'quoted-encoded-word)
946 ; FLAM
947
948 ;;;end-test;;;
949
950 (report)
951
952 ;----------------------------------------------------------------------------